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 +