From 95e7c5d8980b590b6ab6e9724b2f0b30a88cfee2 Mon Sep 17 00:00:00 2001 From: wulingxiao <1251605638@qqcom> Date: Thu, 3 Nov 2022 23:15:25 +0800 Subject: [PATCH] feature:support support inject environment variable during test. --- .../metadata/StaticMetadataManager.java | 3 +- .../metadata/StaticMetadataManagerTest.java | 43 ++++++++++++------- .../EnvironmentVariableInjectedRunner.java | 1 + 3 files changed, 30 insertions(+), 17 deletions(-) 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 9581d8ca5..63ea080fb 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 3f363696c..1431fc851 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 @@ -23,7 +23,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.concurrent.locks.Lock; import com.tencent.cloud.common.metadata.config.MetadataLocalProperties; import com.tencent.cloud.common.spi.InstanceMetadataProvider; @@ -34,9 +33,6 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import org.springframework.util.CollectionUtils; import static org.mockito.Mockito.when; @@ -47,13 +43,12 @@ import static org.mockito.Mockito.when; * @author lepdou 2022-06-27 */ @RunWith(EnvironmentVariableInjectedRunner.class) -@EnvironmentVariables( - value = { - @EnvironmentVariable(name = "SCT_METADATA_CONTENT_TRANSITIVE", value = "tkey1,tkey2,tkey3"), - @EnvironmentVariable(name = "SCT_METADATA_CONTENT_DISPOSABLE", value = "dkey1,dkey2,dkey3"), - @EnvironmentVariable(name = "SCT_METADATA_CONTENT_KEY", value = "key") - } -) +@EnvironmentVariables({ + @EnvironmentVariable(name = "SCT_METADATA_CONTENT_TRANSITIVE", value = "transitiveKey"), + @EnvironmentVariable(name = "SCT_METADATA_CONTENT_DISPOSABLE", value = "disposableKey"), + @EnvironmentVariable(name = "SCT_METADATA_CONTENT_transitiveKey", value = "transitiveValue"), + @EnvironmentVariable(name = "SCT_METADATA_CONTENT_disposableKey", value = "disposableValue"), + @EnvironmentVariable(name = "SCT_TRAFFIC_CONTENT_RAW_TRANSHEADERS", value = "header1,header2,header3")}) public class StaticMetadataManagerTest { @Mock @@ -135,22 +130,19 @@ public class StaticMetadataManagerTest { new MockedMetadataProvider()); Map metadata = metadataManager.getMergedStaticMetadata(); - Assert.assertEquals(6, metadata.size()); + Assert.assertEquals(8, metadata.size()); Assert.assertEquals("v1", metadata.get("k1")); Assert.assertEquals("v22", metadata.get("k2")); Assert.assertEquals("v33", metadata.get("k3")); Map transitiveMetadata = metadataManager.getMergedStaticTransitiveMetadata(); - Assert.assertEquals(2, transitiveMetadata.size()); + Assert.assertEquals(3, transitiveMetadata.size()); 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())); - Map locationInfo = metadataManager.getLocationMetadata(); Assert.assertEquals("zone2", locationInfo.get("zone")); Assert.assertEquals("region1", locationInfo.get("region")); @@ -158,6 +150,25 @@ public class StaticMetadataManagerTest { } + @Test + public void testEnvMetadata() { + 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-commons/src/test/java/com/tencent/cloud/common/support/EnvironmentVariableInjectedRunner.java b/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/support/EnvironmentVariableInjectedRunner.java index 21cb78614..b48a97bd8 100644 --- a/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/support/EnvironmentVariableInjectedRunner.java +++ b/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/support/EnvironmentVariableInjectedRunner.java @@ -23,6 +23,7 @@ import java.util.Objects; import org.junit.Rule; import org.junit.runners.model.InitializationError; + import org.springframework.core.annotation.AnnotationUtils; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;