Skip to content

Commit 9d6488f

Browse files
authored
fix: map properties error (#580)
1 parent b367c39 commit 9d6488f

File tree

11 files changed

+53
-7
lines changed

11 files changed

+53
-7
lines changed

arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/model/ArexMocker.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public ArexMocker(MockCategoryType categoryType) {
3939
this.categoryType = categoryType;
4040
this.appId = System.getProperty(ConfigConstants.SERVICE_NAME);
4141
this.recordVersion = System.getProperty(ConfigConstants.AGENT_VERSION);
42-
this.tags = (Map<String, String>) System.getProperties().getOrDefault(ConfigConstants.MOCKER_TAGS, Collections.emptyMap());
4342
}
4443

4544
/**

arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/util/StringUtil.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,20 @@ private static void indent(StringBuilder sb, int indent) {
106106
}
107107
}
108108

109+
public static String mapToString(Map<String, String> map) {
110+
if (MapUtils.isEmpty(map)) {
111+
return StringUtil.EMPTY;
112+
}
113+
StringBuilder stringBuilder = new StringBuilder();
114+
for (Map.Entry<String, String> entry : map.entrySet()) {
115+
stringBuilder.append(entry.getKey())
116+
.append("=")
117+
.append(entry.getValue())
118+
.append(";");
119+
}
120+
return stringBuilder.toString();
121+
}
122+
109123
public static Map<String, String> asMap(String content) {
110124
if (isEmpty(content)) {
111125
return Collections.emptyMap();

arex-agent-bootstrap/src/test/java/io/arex/agent/bootstrap/util/StringUtilTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,4 +425,12 @@ void splitByLastSeparator() {
425425
actualResult = StringUtil.splitByLastSeparator(val, ',');
426426
assertArrayEquals(new String[] {"x,,y", "z"}, actualResult);
427427
}
428+
429+
@Test
430+
void mapToString() {
431+
Map<String, String> map = new HashMap<>();
432+
map.put("a", "b");
433+
map.put("c", "d");
434+
assertEquals("a=b;c=d;", StringUtil.mapToString(map));
435+
}
428436
}

arex-instrumentation-api/src/main/java/io/arex/inst/runtime/config/Config.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public static Config get() {
4747
private final String recordVersion;
4848
private final Set<String> includeServiceOperations;
4949
private final Set<String> coveragePackages = new ConcurrentHashSet<>();
50+
private final Map<String, String> mockerTags;
5051

5152
Config(boolean enableDebug, String serviceName, List<DynamicClassEntity> dynamicClassList,
5253
Map<String, String> properties,
@@ -60,6 +61,7 @@ public static Config get() {
6061
this.recordRate = recordRate;
6162
this.recordVersion = properties.get("arex.agent.version");
6263
this.includeServiceOperations = StringUtil.splitToSet(properties.get("includeServiceOperations"), SEPARATOR);
64+
this.mockerTags = StringUtil.asMap(System.getProperty(ConfigConstants.MOCKER_TAGS));
6365
buildCoveragePackages(properties);
6466
buildDynamicClassInfo();
6567
}
@@ -107,6 +109,10 @@ private void buildDynamicClassInfo() {
107109
this.dynamicAbstractClassList = list.toArray(StringUtil.EMPTY_STRING_ARRAY);
108110
}
109111

112+
public Map<String, String> getMockerTags() {
113+
return mockerTags;
114+
}
115+
110116
public Set<String> getCoveragePackages() {
111117
return coveragePackages;
112118
}

arex-instrumentation-api/src/main/java/io/arex/inst/runtime/util/MockUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public static ArexMocker createNettyProvider(String pattern) {
7878

7979
public static ArexMocker create(MockCategoryType categoryType, String operationName) {
8080
ArexMocker mocker = new ArexMocker(categoryType);
81+
mocker.setTags(Config.get().getMockerTags());
8182
long createTime = System.currentTimeMillis();
8283
ArexContext context = ContextManager.currentContext();
8384
if (context != null) {

arex-instrumentation-api/src/test/java/io/arex/inst/runtime/config/ConfigTest.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import io.arex.agent.bootstrap.constants.ConfigConstants;
44
import io.arex.agent.bootstrap.util.ConcurrentHashSet;
5+
import io.arex.agent.bootstrap.util.MapUtils;
6+
import io.arex.agent.bootstrap.util.StringUtil;
57
import io.arex.inst.runtime.context.RecordLimiter;
68
import io.arex.inst.runtime.listener.EventProcessor;
79
import io.arex.inst.runtime.model.ArexConstants;
810
import io.arex.inst.runtime.model.DynamicClassEntity;
911
import java.util.Arrays;
12+
import java.util.HashMap;
1013
import java.util.HashSet;
1114
import java.util.List;
1215

@@ -17,9 +20,9 @@
1720
import org.junit.jupiter.params.ParameterizedTest;
1821
import org.junit.jupiter.params.provider.Arguments;
1922
import org.junit.jupiter.params.provider.MethodSource;
20-
import org.mockito.MockedStatic;
2123
import org.mockito.Mockito;
2224

25+
import java.util.Map;
2326
import java.util.function.Predicate;
2427
import java.util.stream.Stream;
2528

@@ -147,4 +150,18 @@ void buildCoveragePackages() {
147150
System.clearProperty(ArexConstants.SPRING_SCAN_PACKAGES);
148151

149152
}
153+
154+
@Test
155+
void arexMockerTags() {
156+
ConfigBuilder configBuilder = ConfigBuilder.create("mock");
157+
configBuilder.build();
158+
assertTrue(MapUtils.isEmpty(Config.get().getMockerTags()));
159+
Map<String, String> tags = new HashMap<>();
160+
tags.put("key1", "value1");
161+
tags.put("key2", "value2");
162+
System.setProperty(ConfigConstants.MOCKER_TAGS, StringUtil.mapToString(tags));
163+
configBuilder.build();
164+
assertEquals("value1", Config.get().getMockerTags().get("key1"));
165+
assertEquals("value2", Config.get().getMockerTags().get("key2"));
166+
}
150167
}

arex-instrumentation-api/src/test/java/io/arex/inst/runtime/match/ReplayMatcherTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,4 @@ void match() {
5757
Mockito.when(MockUtils.methodRequestTypeHash(requestMocker)).thenReturn(2);
5858
assertNull(ReplayMatcher.match(requestMocker, MockStrategyEnum.FIND_LAST));
5959
}
60-
}
60+
}

arex-instrumentation-api/src/test/java/io/arex/inst/runtime/util/MergeRecordUtilTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,4 @@ static Stream<Arguments> recordRemainCase() {
141141
arguments(contextSupplier2.get(), asserts2)
142142
);
143143
}
144-
}
144+
}

arex-instrumentation-api/src/test/java/io/arex/inst/runtime/util/ReplayUtilTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,4 @@ static Stream<Arguments> replayAllMockerCase() {
9999
arguments(mocker2)
100100
);
101101
}
102-
}
102+
}

arex-instrumentation-foundation/src/main/java/io/arex/foundation/services/ConfigService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.arex.foundation.util.NetUtils;
1212
import io.arex.agent.bootstrap.util.StringUtil;
1313

14-
import java.util.Collections;
1514
import java.util.HashMap;
1615
import java.util.Map;
1716
import java.util.Objects;
@@ -136,7 +135,7 @@ public Map<String, String> getSystemProperties() {
136135
map.put(key, value);
137136
buildTags(mockerTags, key, value);
138137
}
139-
properties.put(ConfigConstants.MOCKER_TAGS, Collections.unmodifiableMap(mockerTags));
138+
System.setProperty(ConfigConstants.MOCKER_TAGS, StringUtil.mapToString(mockerTags));
140139
return map;
141140
}
142141

arex-instrumentation/httpclient/arex-httpclient-feign/src/test/java/io/arex/inst/httpclient/feign/FeignClientInstrumentationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import feign.Response;
77
import io.arex.agent.bootstrap.model.MockResult;
88
import io.arex.inst.httpclient.common.HttpClientExtractor;
9+
import io.arex.inst.runtime.config.ConfigBuilder;
910
import io.arex.inst.runtime.context.ContextManager;
1011
import io.arex.inst.runtime.context.RepeatedCollectManager;
1112
import io.arex.inst.runtime.util.IgnoreUtils;
@@ -24,6 +25,7 @@ static void setUp() {
2425
Mockito.mockStatic(IgnoreUtils.class);
2526
Mockito.mockStatic(ContextManager.class);
2627
Mockito.mockStatic(RepeatedCollectManager.class);
28+
ConfigBuilder.create("test").build();
2729
}
2830

2931
@AfterAll

0 commit comments

Comments
 (0)