feature:support support inject environment variable during test.

pull/695/head
wulingxiao 3 years ago
parent df79539508
commit 95e7c5d898

@ -107,7 +107,8 @@ public class StaticMetadataManager {
String value = entry.getValue(); String value = entry.getValue();
if (StringUtils.isNotBlank(key) if (StringUtils.isNotBlank(key)
&& (key.startsWith(ENV_METADATA_PREFIX) || key.equals(ENV_TRAFFIC_CONTENT_RAW_TRANSHEADERS)) && (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 = ""; String sourceKey = "";
if (key.equals(ENV_TRAFFIC_CONTENT_RAW_TRANSHEADERS)) { if (key.equals(ENV_TRAFFIC_CONTENT_RAW_TRANSHEADERS)) {
sourceKey = key; sourceKey = key;

@ -23,7 +23,6 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.locks.Lock;
import com.tencent.cloud.common.metadata.config.MetadataLocalProperties; import com.tencent.cloud.common.metadata.config.MetadataLocalProperties;
import com.tencent.cloud.common.spi.InstanceMetadataProvider; import com.tencent.cloud.common.spi.InstanceMetadataProvider;
@ -34,9 +33,6 @@ import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.util.CollectionUtils;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@ -47,13 +43,12 @@ import static org.mockito.Mockito.when;
* @author lepdou 2022-06-27 * @author lepdou 2022-06-27
*/ */
@RunWith(EnvironmentVariableInjectedRunner.class) @RunWith(EnvironmentVariableInjectedRunner.class)
@EnvironmentVariables( @EnvironmentVariables({
value = { @EnvironmentVariable(name = "SCT_METADATA_CONTENT_TRANSITIVE", value = "transitiveKey"),
@EnvironmentVariable(name = "SCT_METADATA_CONTENT_TRANSITIVE", value = "tkey1,tkey2,tkey3"), @EnvironmentVariable(name = "SCT_METADATA_CONTENT_DISPOSABLE", value = "disposableKey"),
@EnvironmentVariable(name = "SCT_METADATA_CONTENT_DISPOSABLE", value = "dkey1,dkey2,dkey3"), @EnvironmentVariable(name = "SCT_METADATA_CONTENT_transitiveKey", value = "transitiveValue"),
@EnvironmentVariable(name = "SCT_METADATA_CONTENT_KEY", value = "key") @EnvironmentVariable(name = "SCT_METADATA_CONTENT_disposableKey", value = "disposableValue"),
} @EnvironmentVariable(name = "SCT_TRAFFIC_CONTENT_RAW_TRANSHEADERS", value = "header1,header2,header3")})
)
public class StaticMetadataManagerTest { public class StaticMetadataManagerTest {
@Mock @Mock
@ -135,22 +130,19 @@ public class StaticMetadataManagerTest {
new MockedMetadataProvider()); new MockedMetadataProvider());
Map<String, String> metadata = metadataManager.getMergedStaticMetadata(); Map<String, String> metadata = metadataManager.getMergedStaticMetadata();
Assert.assertEquals(6, metadata.size()); Assert.assertEquals(8, metadata.size());
Assert.assertEquals("v1", metadata.get("k1")); Assert.assertEquals("v1", metadata.get("k1"));
Assert.assertEquals("v22", metadata.get("k2")); Assert.assertEquals("v22", metadata.get("k2"));
Assert.assertEquals("v33", metadata.get("k3")); Assert.assertEquals("v33", metadata.get("k3"));
Map<String, String> transitiveMetadata = metadataManager.getMergedStaticTransitiveMetadata(); Map<String, String> transitiveMetadata = metadataManager.getMergedStaticTransitiveMetadata();
Assert.assertEquals(2, transitiveMetadata.size()); Assert.assertEquals(3, transitiveMetadata.size());
Assert.assertEquals("v1", metadata.get("k1")); Assert.assertEquals("v1", metadata.get("k1"));
Assert.assertEquals("v22", metadata.get("k2")); Assert.assertEquals("v22", metadata.get("k2"));
Assert.assertEquals("zone2", metadataManager.getZone()); Assert.assertEquals("zone2", metadataManager.getZone());
Assert.assertEquals("region1", metadataManager.getRegion()); Assert.assertEquals("region1", metadataManager.getRegion());
Assert.assertTrue(CollectionUtils.isEmpty(metadataManager.getAllEnvMetadata()));
Assert.assertTrue(CollectionUtils.isEmpty(metadataManager.getEnvTransitiveMetadata()));
Map<String, String> locationInfo = metadataManager.getLocationMetadata(); Map<String, String> locationInfo = metadataManager.getLocationMetadata();
Assert.assertEquals("zone2", locationInfo.get("zone")); Assert.assertEquals("zone2", locationInfo.get("zone"));
Assert.assertEquals("region1", locationInfo.get("region")); Assert.assertEquals("region1", locationInfo.get("region"));
@ -158,6 +150,25 @@ public class StaticMetadataManagerTest {
} }
@Test
public void testEnvMetadata() {
StaticMetadataManager metadataManager = new StaticMetadataManager(metadataLocalProperties, null);
Map<String, String> allEnvMetadata = metadataManager.getAllEnvMetadata();
Assert.assertTrue(allEnvMetadata.containsKey("transitiveKey"));
Assert.assertTrue(allEnvMetadata.containsKey("disposableKey"));
Map<String, String> envDisposableMetadata = metadataManager.getEnvDisposableMetadata();
Assert.assertTrue(envDisposableMetadata.containsKey("disposableKey"));
Assert.assertEquals(envDisposableMetadata.get("disposableKey"), "disposableValue");
Map<String, String> 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 { static class MockedMetadataProvider implements InstanceMetadataProvider {
@Override @Override

@ -23,6 +23,7 @@ import java.util.Objects;
import org.junit.Rule; import org.junit.Rule;
import org.junit.runners.model.InitializationError; import org.junit.runners.model.InitializationError;
import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

Loading…
Cancel
Save