Skip to content

Commit bbcdb85

Browse files
committed
fix: map properties error
1 parent b367c39 commit bbcdb85

File tree

12 files changed

+59
-14
lines changed

12 files changed

+59
-14
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ public class ArexMocker implements Mocker {
3535
public ArexMocker() {
3636
}
3737

38-
public ArexMocker(MockCategoryType categoryType) {
38+
public ArexMocker(MockCategoryType categoryType, Map<String, String> arexMockerTags) {
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());
42+
this.tags = arexMockerTags == null ? Collections.emptyMap() : arexMockerTags;
4343
}
4444

4545
/**

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

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

109+
public static String mapToString(Map<String, String> map) {
110+
StringBuilder stringBuilder = new StringBuilder();
111+
for (Map.Entry<String, String> entry : map.entrySet()) {
112+
stringBuilder.append(entry.getKey())
113+
.append("=")
114+
.append(entry.getValue())
115+
.append(";");
116+
}
117+
return stringBuilder.toString();
118+
}
119+
109120
public static Map<String, String> asMap(String content) {
110121
if (isEmpty(content)) {
111122
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> arexMockerTags;
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.arexMockerTags = 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> getArexMockerTags() {
113+
return arexMockerTags;
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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public static ArexMocker createNettyProvider(String pattern) {
7777
}
7878

7979
public static ArexMocker create(MockCategoryType categoryType, String operationName) {
80-
ArexMocker mocker = new ArexMocker(categoryType);
80+
ArexMocker mocker = new ArexMocker(categoryType, Config.get().getArexMockerTags());
8181
long createTime = System.currentTimeMillis();
8282
ArexContext context = ContextManager.currentContext();
8383
if (context != null) {

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package io.arex.inst.runtime.config;
22

33
import io.arex.agent.bootstrap.constants.ConfigConstants;
4+
import io.arex.agent.bootstrap.util.CollectionUtil;
45
import io.arex.agent.bootstrap.util.ConcurrentHashSet;
6+
import io.arex.agent.bootstrap.util.MapUtils;
7+
import io.arex.agent.bootstrap.util.StringUtil;
58
import io.arex.inst.runtime.context.RecordLimiter;
69
import io.arex.inst.runtime.listener.EventProcessor;
710
import io.arex.inst.runtime.model.ArexConstants;
811
import io.arex.inst.runtime.model.DynamicClassEntity;
912
import java.util.Arrays;
13+
import java.util.HashMap;
1014
import java.util.HashSet;
1115
import java.util.List;
1216

@@ -20,6 +24,7 @@
2024
import org.mockito.MockedStatic;
2125
import org.mockito.Mockito;
2226

27+
import java.util.Map;
2328
import java.util.function.Predicate;
2429
import java.util.stream.Stream;
2530

@@ -147,4 +152,18 @@ void buildCoveragePackages() {
147152
System.clearProperty(ArexConstants.SPRING_SCAN_PACKAGES);
148153

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

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ static void tearDown() {
3636

3737
@Test
3838
void match() {
39-
ArexMocker requestMocker = new ArexMocker(MockCategoryType.DYNAMIC_CLASS);
39+
ArexMocker requestMocker = new ArexMocker(MockCategoryType.DYNAMIC_CLASS, Collections.emptyMap());
4040
requestMocker.setOperationName("mock");
4141
requestMocker.setTargetRequest(new Mocker.Target());
4242
requestMocker.setTargetResponse(new Mocker.Target());
@@ -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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ static void setUp() {
4949
Mockito.mockStatic(ContextManager.class);
5050
Mockito.mockStatic(Config.class);
5151
Mockito.when(Config.get()).thenReturn(Mockito.mock(Config.class));
52-
requestMocker = new ArexMocker(MockCategoryType.DYNAMIC_CLASS);
52+
requestMocker = new ArexMocker(MockCategoryType.DYNAMIC_CLASS, Collections.emptyMap());
5353
requestMocker.setOperationName("mock");
5454
requestMocker.setTargetRequest(new Mocker.Target());
5555
requestMocker.setTargetResponse(new Mocker.Target());
@@ -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/MockUtilsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ void methodSignatureHash() {
199199

200200
@Test
201201
void methodRequestTypeHash() {
202-
ArexMocker mocker = new ArexMocker(MockCategoryType.DYNAMIC_CLASS);
202+
ArexMocker mocker = new ArexMocker(MockCategoryType.DYNAMIC_CLASS, Collections.emptyMap());
203203
mocker.setTargetRequest(new Mocker.Target());
204204
mocker.getTargetRequest().setBody("mock");
205205
assertTrue(MockUtils.methodRequestTypeHash(mocker) > 0);

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static void setUp() {
3434
Mockito.mockStatic(ContextManager.class);
3535
Mockito.mockStatic(Config.class);
3636
Mockito.when(Config.get()).thenReturn(Mockito.mock(Config.class));
37-
requestMocker = new ArexMocker(MockCategoryType.DYNAMIC_CLASS);
37+
requestMocker = new ArexMocker(MockCategoryType.DYNAMIC_CLASS, Collections.emptyMap());
3838
requestMocker.setOperationName("mock");
3939
requestMocker.setTargetRequest(new Mocker.Target());
4040
requestMocker.setTargetResponse(new Mocker.Target());
@@ -56,15 +56,15 @@ void replayAllMocker(Runnable mocker) {
5656
}
5757

5858
static Stream<Arguments> replayAllMockerCase() {
59-
ArexMocker recordMocker1 = new ArexMocker(MockCategoryType.DYNAMIC_CLASS);
59+
ArexMocker recordMocker1 = new ArexMocker(MockCategoryType.DYNAMIC_CLASS, Collections.emptyMap());
6060
recordMocker1.setOperationName(ArexConstants.MERGE_RECORD_NAME);
6161
recordMocker1.setRecordId("mock");
6262
recordMocker1.setReplayId("mock");
6363
recordMocker1.setTargetRequest(new Mocker.Target());
6464
recordMocker1.setTargetResponse(new Mocker.Target());
6565
recordMocker1.getTargetResponse().setBody("mock");
6666
recordMocker1.setCreationTime(System.currentTimeMillis());
67-
ArexMocker recordMocker2 = new ArexMocker(MockCategoryType.DYNAMIC_CLASS);
67+
ArexMocker recordMocker2 = new ArexMocker(MockCategoryType.DYNAMIC_CLASS, Collections.emptyMap());
6868
recordMocker2.setOperationName(ArexConstants.MERGE_RECORD_NAME);
6969
recordMocker2.setRecordId("mock");
7070
recordMocker2.setReplayId("mock");
@@ -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)