diff --git a/CHANGELOG.md b/CHANGELOG.md index 773807b3..4b5f4936 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,4 @@ - [Optimize:optimize spring annotation.](https://github.com/Tencent/spring-cloud-tencent/pull/689) - [docs:update PR template.](https://github.com/Tencent/spring-cloud-tencent/pull/692) - [Code optimize & add junit tests.](https://github.com/Tencent/spring-cloud-tencent/pull/702) +- [Test:support environment variable metadata test.](https://github.com/Tencent/spring-cloud-tencent/pull/711) diff --git a/spring-cloud-tencent-commons/pom.xml b/spring-cloud-tencent-commons/pom.xml index 495fc4a1..e8cbc5ec 100644 --- a/spring-cloud-tencent-commons/pom.xml +++ b/spring-cloud-tencent-commons/pom.xml @@ -105,6 +105,12 @@ 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 f14a4943..2cf15671 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 @@ -13,7 +13,6 @@ * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. - * */ package com.tencent.cloud.common.metadata; @@ -109,8 +108,9 @@ 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)) { - String sourceKey; + && !key.equals(ENV_METADATA_CONTENT_TRANSITIVE) + && !key.equals(ENV_METADATA_CONTENT_DISPOSABLE)) { + String sourceKey = ""; if (key.equals(ENV_TRAFFIC_CONTENT_RAW_TRANSHEADERS)) { sourceKey = key; envNotReportMetadata.put(sourceKey, value); 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 35fb5ad2..cadc7b80 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; @@ -47,6 +49,12 @@ public class StaticMetadataManagerTest { @Mock private MetadataLocalProperties metadataLocalProperties; + /** + * EnvironmentVariablesRule. + */ + @Rule + public EnvironmentVariablesRule rule = new EnvironmentVariablesRule(); + @Test public void testParseConfigMetadata() { Map content = new HashMap<>(); @@ -146,6 +154,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 6d8c0f41..c73659c4 100644 --- a/spring-cloud-tencent-dependencies/pom.xml +++ b/spring-cloud-tencent-dependencies/pom.xml @@ -79,6 +79,7 @@ 3.16.1 1.69 31.0.1-jre + 2.0.1 3.2.0 @@ -265,6 +266,13 @@ byte-buddy ${byte-buddy.version} + + + uk.org.webcompere + system-stubs-junit4 + ${system-stubs-junit4.version} + test +