test:trans-headers test

pull/646/head
wulingxiao 3 years ago
parent 70a1d88559
commit 8f0105a30e

@ -50,6 +50,12 @@
<artifactId>spring-cloud-starter-loadbalancer</artifactId> <artifactId>spring-cloud-starter-loadbalancer</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.github.stefanbirkner</groupId>
<artifactId>system-rules</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

@ -0,0 +1,50 @@
/*
* Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software distributed
* 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.metadata.support;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* DynamicEnvironmentVariable.
*
* @author lingxiao.wlx
*/
@Repeatable(DynamicEnvironmentVariables.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface DynamicEnvironmentVariable {
/**
* EnvironmentVariable name.
*
* @return EnvironmentVariable name.
*/
String name();
/**
* EnvironmentVariable value.
*
* @return EnvironmentVariable value.
*/
String value();
}

@ -0,0 +1,41 @@
/*
* Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software distributed
* 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.metadata.support;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* DynamicEnvironmentVariables for multiDynamicEnvironmentVariable.
*
* @author lingxiao.wlx
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface DynamicEnvironmentVariables {
/**
* DynamicEnvironmentVariable array.
*
* @return dynamicEnvironmentVariable array.
*/
DynamicEnvironmentVariable[] value();
}

@ -0,0 +1,64 @@
/*
* Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software distributed
* 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.metadata.support;
import java.util.Arrays;
import java.util.Objects;
import org.junit.Rule;
import org.junit.contrib.java.lang.system.EnvironmentVariables;
import org.junit.runners.model.InitializationError;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* Enhance {@link SpringJUnit4ClassRunner} to support add environment variables when Junit4 test run.
*
*
* @author lingxiao.wlx
* @see DynamicEnvironmentVariable
* @see DynamicEnvironmentVariables
*/
public class DynamicEnvironmentVariablesSpringJUnit4ClassRunner extends SpringJUnit4ClassRunner {
/**
* EnvironmentVariables.
*/
@Rule
public final EnvironmentVariables environmentVariables = new EnvironmentVariables();
public DynamicEnvironmentVariablesSpringJUnit4ClassRunner(Class<?> clazz) throws InitializationError {
super(clazz);
DynamicEnvironmentVariable dynamicEnvironmentVariable = AnnotationUtils.findAnnotation(clazz, DynamicEnvironmentVariable.class);
if (!Objects.isNull(dynamicEnvironmentVariable)) {
String key = dynamicEnvironmentVariable.name();
String value = dynamicEnvironmentVariable.value();
environmentVariables.set(key, value);
}
DynamicEnvironmentVariables dynamicEnvironmentVariables = AnnotationUtils.findAnnotation(clazz, DynamicEnvironmentVariables.class);
if (!Objects.isNull(dynamicEnvironmentVariables)) {
Arrays.stream(dynamicEnvironmentVariables.value()).forEach(
environmentVariable -> {
environmentVariables.set(environmentVariable.name(), environmentVariable.value());
}
);
}
}
}

@ -80,6 +80,7 @@
<byte-buddy.version>1.12.10</byte-buddy.version> <byte-buddy.version>1.12.10</byte-buddy.version>
<protobuf-java.version>3.16.1</protobuf-java.version> <protobuf-java.version>3.16.1</protobuf-java.version>
<bcprov-jdk15on.version>1.69</bcprov-jdk15on.version> <bcprov-jdk15on.version>1.69</bcprov-jdk15on.version>
<system-rules.version>1.16.1</system-rules.version>
<!-- Maven Plugin Versions --> <!-- Maven Plugin Versions -->
<maven-source-plugin.version>3.2.0</maven-source-plugin.version> <maven-source-plugin.version>3.2.0</maven-source-plugin.version>
@ -248,6 +249,13 @@
<version>${mocktio.version}</version> <version>${mocktio.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.github.stefanbirkner</groupId>
<artifactId>system-rules</artifactId>
<version>${system-rules.version}</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>

Loading…
Cancel
Save