diff --git a/CHANGELOG.md b/CHANGELOG.md
index 556dba46..8d54bb1f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,3 +6,4 @@
- [Optimize: Register the service with the ProviderAPI#registerInstance method.](https://github.com/Tencent/spring-cloud-tencent/pull/686)
- [docs:update PR template.](https://github.com/Tencent/spring-cloud-tencent/pull/690)
- [Optimize: remote deprecated method](https://github.com/Tencent/spring-cloud-tencent/pull/697)
+- [Test:support environment variable metadata test](https://github.com/Tencent/spring-cloud-tencent/pull/698)
diff --git a/spring-cloud-tencent-commons/pom.xml b/spring-cloud-tencent-commons/pom.xml
index 6cf993ed..5e373d14 100644
--- a/spring-cloud-tencent-commons/pom.xml
+++ b/spring-cloud-tencent-commons/pom.xml
@@ -99,6 +99,11 @@
spring-boot-actuator-autoconfigure
true
-
+
+ uk.org.webcompere
+ system-stubs-junit4
+ test
+
+
diff --git a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java
index 9581d8ca..63ea080f 100644
--- a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java
+++ b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java
@@ -107,7 +107,8 @@ public class StaticMetadataManager {
String value = entry.getValue();
if (StringUtils.isNotBlank(key)
&& (key.startsWith(ENV_METADATA_PREFIX) || key.equals(ENV_TRAFFIC_CONTENT_RAW_TRANSHEADERS))
- && !key.equals(ENV_METADATA_CONTENT_TRANSITIVE)) {
+ && !key.equals(ENV_METADATA_CONTENT_TRANSITIVE)
+ && !key.equals(ENV_METADATA_CONTENT_DISPOSABLE)) {
String sourceKey = "";
if (key.equals(ENV_TRAFFIC_CONTENT_RAW_TRANSHEADERS)) {
sourceKey = key;
diff --git a/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java b/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java
index 64aa20bc..4ca51fdc 100644
--- a/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java
+++ b/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java
@@ -27,10 +27,12 @@ import java.util.Set;
import com.tencent.cloud.common.metadata.config.MetadataLocalProperties;
import com.tencent.cloud.common.spi.InstanceMetadataProvider;
import org.junit.Assert;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
+import uk.org.webcompere.systemstubs.rules.EnvironmentVariablesRule;
import org.springframework.util.CollectionUtils;
@@ -48,6 +50,12 @@ public class StaticMetadataManagerTest {
@Mock
private MetadataLocalProperties metadataLocalProperties;
+ /**
+ * EnvironmentVariablesRule.
+ */
+ @Rule
+ public EnvironmentVariablesRule rule = new EnvironmentVariablesRule();
+
@Test
public void testParseConfigMetadata() {
Map content = new HashMap<>();
@@ -134,12 +142,12 @@ public class StaticMetadataManagerTest {
Assert.assertEquals("v1", metadata.get("k1"));
Assert.assertEquals("v22", metadata.get("k2"));
- Assert.assertEquals("zone2", metadataManager.getZone());
- Assert.assertEquals("region1", metadataManager.getRegion());
-
Assert.assertTrue(CollectionUtils.isEmpty(metadataManager.getAllEnvMetadata()));
Assert.assertTrue(CollectionUtils.isEmpty(metadataManager.getEnvTransitiveMetadata()));
+ Assert.assertEquals("zone2", metadataManager.getZone());
+ Assert.assertEquals("region1", metadataManager.getRegion());
+
Map locationInfo = metadataManager.getLocationMetadata();
Assert.assertEquals("zone2", locationInfo.get("zone"));
Assert.assertEquals("region1", locationInfo.get("region"));
@@ -147,6 +155,32 @@ public class StaticMetadataManagerTest {
}
+ @Test
+ public void testEnvMetadata() {
+ // set env
+ rule.set("SCT_METADATA_CONTENT_TRANSITIVE", "transitiveKey");
+ rule.set("SCT_METADATA_CONTENT_DISPOSABLE", "disposableKey");
+ rule.set("SCT_METADATA_CONTENT_transitiveKey", "transitiveValue");
+ rule.set("SCT_METADATA_CONTENT_disposableKey", "disposableValue");
+ rule.set("SCT_TRAFFIC_CONTENT_RAW_TRANSHEADERS", "header1,header2,header3");
+
+ StaticMetadataManager metadataManager = new StaticMetadataManager(metadataLocalProperties, null);
+ Map allEnvMetadata = metadataManager.getAllEnvMetadata();
+ Assert.assertTrue(allEnvMetadata.containsKey("transitiveKey"));
+ Assert.assertTrue(allEnvMetadata.containsKey("disposableKey"));
+
+ Map envDisposableMetadata = metadataManager.getEnvDisposableMetadata();
+ Assert.assertTrue(envDisposableMetadata.containsKey("disposableKey"));
+ Assert.assertEquals(envDisposableMetadata.get("disposableKey"), "disposableValue");
+
+ Map envTransitiveMetadata = metadataManager.getEnvTransitiveMetadata();
+ Assert.assertTrue(envTransitiveMetadata.containsKey("transitiveKey"));
+ Assert.assertEquals(envTransitiveMetadata.get("transitiveKey"), "transitiveValue");
+
+ String transHeaderFromEnv = metadataManager.getTransHeaderFromEnv();
+ Assert.assertEquals(transHeaderFromEnv, "header1,header2,header3");
+ }
+
static class MockedMetadataProvider implements InstanceMetadataProvider {
@Override
diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml
index 8126a44b..3c89b07c 100644
--- a/spring-cloud-tencent-dependencies/pom.xml
+++ b/spring-cloud-tencent-dependencies/pom.xml
@@ -80,6 +80,7 @@
1.12.10
3.16.1
1.69
+ 2.0.1
3.2.0
@@ -248,6 +249,13 @@
${mocktio.version}
test
+
+
+ uk.org.webcompere
+ system-stubs-junit4
+ ${system-stubs-junit4.version}
+ test
+