Skip to content

Commit 8d0bb34

Browse files
Add tag to specify if the user is setting DD_SERVICE (#8318)
1 parent 64dca18 commit 8d0bb34

File tree

11 files changed

+151
-120
lines changed

11 files changed

+151
-120
lines changed

dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/domain/TestImplTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ class TestImplTest extends SpanWriterTest {
7171
def coverageStore = Mock(CoverageStore)
7272
coverageStore.getProbes() >> coverageProbes
7373

74-
def coveageStoreFactory = Stub(CoverageStore.Factory)
75-
coveageStoreFactory.create((TestIdentifier) _) >> coverageStore
74+
def coverageStoreFactory = Stub(CoverageStore.Factory)
75+
coverageStoreFactory.create((TestIdentifier) _) >> coverageStore
7676

77-
def test = givenATest(coveageStoreFactory)
77+
def test = givenATest(coverageStoreFactory)
7878

7979
when:
8080
test.setSkipReason("skipped")

dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/domain/headless/HeadlessTestModuleTest.groovy

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,38 @@ import datadog.trace.civisibility.codeowners.Codeowners
1010
import datadog.trace.civisibility.config.EarlyFlakeDetectionSettings
1111
import datadog.trace.civisibility.config.ExecutionSettings
1212
import datadog.trace.civisibility.decorator.TestDecorator
13+
import datadog.trace.civisibility.domain.SpanWriterTest
1314
import datadog.trace.civisibility.source.LinesResolver
1415
import datadog.trace.civisibility.source.SourcePathResolver
1516
import datadog.trace.civisibility.test.ExecutionStrategy
16-
import datadog.trace.test.util.DDSpecification
17-
18-
class HeadlessTestModuleTest extends DDSpecification {
1917

18+
class HeadlessTestModuleTest extends SpanWriterTest {
2019
def "test total retries limit is applied across test cases"() {
20+
given:
21+
def headlessTestModule = givenAHeadlessTestModule()
22+
23+
when:
24+
def retryPolicy1 = headlessTestModule.executionPolicy(new TestIdentifier("suite", "test-1", null), TestSourceData.UNKNOWN)
25+
26+
then:
27+
retryPolicy1.retry(false, 1L) // 2nd test execution, 1st retry globally
28+
!retryPolicy1.retry(false, 1L) // asking for 3rd test execution - local limit reached
29+
30+
when:
31+
def retryPolicy2 = headlessTestModule.executionPolicy(new TestIdentifier("suite", "test-2", null), TestSourceData.UNKNOWN)
32+
33+
then:
34+
retryPolicy2.retry(false, 1L) // 2nd test execution, 2nd retry globally (since previous test was retried too)
35+
!retryPolicy2.retry(false, 1L) // asking for 3rd test execution - local limit reached
36+
37+
when:
38+
def retryPolicy3 = headlessTestModule.executionPolicy(new TestIdentifier("suite", "test-3", null), TestSourceData.UNKNOWN)
39+
40+
then:
41+
!retryPolicy3.retry(false, 1L) // asking for 3rd retry globally - global limit reached
42+
}
43+
44+
private HeadlessTestModule givenAHeadlessTestModule() {
2145
def executionSettings = Stub(ExecutionSettings)
2246
executionSettings.getEarlyFlakeDetectionSettings() >> EarlyFlakeDetectionSettings.DEFAULT
2347
executionSettings.isFlakyTestRetriesEnabled() >> true
@@ -31,8 +55,7 @@ class HeadlessTestModuleTest extends DDSpecification {
3155

3256
def executionStrategy = new ExecutionStrategy(config, executionSettings, Stub(SourcePathResolver), Stub(LinesResolver))
3357

34-
given:
35-
def headlessTestModule = new HeadlessTestModule(
58+
new HeadlessTestModule(
3659
Stub(AgentSpanContext),
3760
"test-module",
3861
null,
@@ -46,27 +69,5 @@ class HeadlessTestModuleTest extends DDSpecification {
4669
executionStrategy,
4770
(span) -> { }
4871
)
49-
50-
when:
51-
def retryPolicy1 = headlessTestModule.executionPolicy(new TestIdentifier("suite", "test-1", null), TestSourceData.UNKNOWN)
52-
53-
then:
54-
retryPolicy1.retry(false, 1L) // 2nd test execution, 1st retry globally
55-
!retryPolicy1.retry(false, 1L) // asking for 3rd test execution - local limit reached
56-
57-
when:
58-
def retryPolicy2 = headlessTestModule.executionPolicy(new TestIdentifier("suite", "test-2", null), TestSourceData.UNKNOWN)
59-
60-
then:
61-
retryPolicy2.retry(false, 1L) // 2nd test execution, 2nd retry globally (since previous test was retried too)
62-
!retryPolicy2.retry(false, 1L) // asking for 3rd test execution - local limit reached
63-
64-
when:
65-
def retryPolicy3 = headlessTestModule.executionPolicy(new TestIdentifier("suite", "test-3", null), TestSourceData.UNKNOWN)
66-
67-
then:
68-
!retryPolicy3.retry(false, 1L) // asking for 3rd retry globally - global limit reached
6972
}
70-
71-
7273
}

dd-trace-api/src/main/java/datadog/trace/api/DDTags.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public class DDTags {
5858
public static final String LIBRARY_VERSION_TAG_KEY = "library_version";
5959
public static final String CI_ENV_VARS = "_dd.ci.env_vars";
6060
public static final String CI_ITR_TESTS_SKIPPED = "_dd.ci.itr.tests_skipped";
61+
public static final String TEST_IS_USER_PROVIDED_SERVICE = "_dd.test.is_user_provided_service";
6162
public static final String MEASURED = "_dd.measured";
6263
public static final String PID_TAG = "process_id";
6364
public static final String SCHEMA_VERSION_TAG_KEY = "_dd.trace_span_attribute_schema";

dd-trace-core/src/main/java/datadog/trace/civisibility/interceptor/CiVisibilityApmProtocolInterceptor.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import datadog.trace.api.Config;
44
import datadog.trace.api.DDSpanTypes;
5+
import datadog.trace.api.DDTags;
56
import datadog.trace.api.civisibility.CiVisibilityWellKnownTags;
67
import datadog.trace.api.interceptor.AbstractTraceInterceptor;
78
import datadog.trace.api.interceptor.MutableSpan;
@@ -47,6 +48,9 @@ public Collection<? extends MutableSpan> onTraceComplete(
4748
span.setTag(Tags.OS_ARCHITECTURE, wellKnownTags.getOsArch().toString());
4849
span.setTag(Tags.OS_PLATFORM, wellKnownTags.getOsPlatform().toString());
4950
span.setTag(Tags.OS_VERSION, wellKnownTags.getOsVersion().toString());
51+
span.setTag(
52+
DDTags.TEST_IS_USER_PROVIDED_SERVICE,
53+
wellKnownTags.getIsUserProvidedService().toString());
5054
}
5155
}
5256
return filteredTrace;

dd-trace-core/src/main/java/datadog/trace/civisibility/writer/ddintake/CiTestCycleMapperV1.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import datadog.communication.serialization.GrowableBuffer;
88
import datadog.communication.serialization.Writable;
99
import datadog.communication.serialization.msgpack.MsgPackWriter;
10+
import datadog.trace.api.DDTags;
1011
import datadog.trace.api.DDTraceId;
1112
import datadog.trace.api.civisibility.CiVisibilityWellKnownTags;
1213
import datadog.trace.api.civisibility.InstrumentationBridge;
@@ -41,6 +42,8 @@ public class CiTestCycleMapperV1 implements RemoteMapper {
4142
Tags.TEST_SESSION_ID.getBytes(StandardCharsets.UTF_8);
4243
private static final byte[] TEST_MODULE_ID = Tags.TEST_MODULE_ID.getBytes(StandardCharsets.UTF_8);
4344
private static final byte[] TEST_SUITE_ID = Tags.TEST_SUITE_ID.getBytes(StandardCharsets.UTF_8);
45+
private static final byte[] TEST_IS_USER_PROVIDED_SERVICE =
46+
DDTags.TEST_IS_USER_PROVIDED_SERVICE.getBytes(StandardCharsets.UTF_8);
4447
private static final byte[] ITR_CORRELATION_ID =
4548
Tags.ITR_CORRELATION_ID.getBytes(StandardCharsets.UTF_8);
4649

@@ -240,7 +243,7 @@ private void writeHeader() {
240243
headerWriter.startMap(1);
241244
/* 2,1 */
242245
headerWriter.writeUTF8(METADATA_ASTERISK);
243-
headerWriter.startMap(9);
246+
headerWriter.startMap(10);
244247
/* 2,1,1 */
245248
headerWriter.writeUTF8(ENV);
246249
headerWriter.writeUTF8(wellKnownTags.getEnv());
@@ -268,6 +271,9 @@ private void writeHeader() {
268271
/* 2,1,9 */
269272
headerWriter.writeUTF8(OS_VERSION);
270273
headerWriter.writeUTF8(wellKnownTags.getOsVersion());
274+
/* 2,1,10 */
275+
headerWriter.writeUTF8(TEST_IS_USER_PROVIDED_SERVICE);
276+
headerWriter.writeUTF8(wellKnownTags.getIsUserProvidedService());
271277
/* 3 */
272278
headerWriter.writeUTF8(EVENTS);
273279
headerWriter.startArray(eventCount);

dd-trace-core/src/test/groovy/datadog/trace/civisibility/writer/ddintake/CiTestCycleMapperV1PayloadTest.groovy

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
44
import datadog.communication.serialization.ByteBufferConsumer
55
import datadog.communication.serialization.FlushingBuffer
66
import datadog.communication.serialization.msgpack.MsgPackWriter
7+
import datadog.trace.api.DDTags
78
import datadog.trace.api.DDTraceId
89
import datadog.trace.api.civisibility.CiVisibilityWellKnownTags
910
import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes
@@ -47,7 +48,7 @@ class CiTestCycleMapperV1PayloadTest extends DDSpecification {
4748
CiVisibilityWellKnownTags wellKnownTags = new CiVisibilityWellKnownTags(
4849
"runtimeid", "my-env", "language",
4950
"my-runtime-name", "my-runtime-version", "my-runtime-vendor",
50-
"my-os-arch", "my-os-platform", "my-os-version")
51+
"my-os-arch", "my-os-platform", "my-os-version", "false")
5152
CiTestCycleMapperV1 mapper = new CiTestCycleMapperV1(wellKnownTags, false)
5253

5354
List<List<TraceGenerator.PojoSpan>> traces = generateRandomTraces(traceCount, lowCardinality)
@@ -94,7 +95,7 @@ class CiTestCycleMapperV1PayloadTest extends DDSpecification {
9495
def span = generateRandomSpan(InternalSpanTypes.TEST, [
9596
(Tags.TEST_SESSION_ID): DDTraceId.from(123),
9697
(Tags.TEST_MODULE_ID) : 456,
97-
(Tags.TEST_SUITE_ID) : 789
98+
(Tags.TEST_SUITE_ID) : 789,
9899
])
99100

100101
when:
@@ -114,7 +115,7 @@ class CiTestCycleMapperV1PayloadTest extends DDSpecification {
114115
def span = generateRandomSpan(InternalSpanTypes.TEST_SUITE_END, [
115116
(Tags.TEST_SESSION_ID): DDTraceId.from(123),
116117
(Tags.TEST_MODULE_ID) : 456,
117-
(Tags.TEST_SUITE_ID) : 789
118+
(Tags.TEST_SUITE_ID) : 789,
118119
])
119120

120121
when:
@@ -186,7 +187,7 @@ class CiTestCycleMapperV1PayloadTest extends DDSpecification {
186187
CiVisibilityWellKnownTags wellKnownTags = new CiVisibilityWellKnownTags(
187188
"runtimeid", "my-env", "language",
188189
"my-runtime-name", "my-runtime-version", "my-runtime-vendor",
189-
"my-os-arch", "my-os-platform", "my-os-version")
190+
"my-os-arch", "my-os-platform", "my-os-version", "false")
190191
CiTestCycleMapperV1 mapper = new CiTestCycleMapperV1(wellKnownTags, false)
191192

192193
ByteBufferConsumer consumer = new CaptureConsumer()
@@ -251,7 +252,7 @@ class CiTestCycleMapperV1PayloadTest extends DDSpecification {
251252
assertEquals(1, unpacker.unpackMapHeader())
252253
assertEquals("*", unpacker.unpackString())
253254

254-
assertEquals(9, unpacker.unpackMapHeader())
255+
assertEquals(10, unpacker.unpackMapHeader())
255256
assertEquals("env", unpacker.unpackString())
256257
assertEquals(wellKnownTags.env as String, unpacker.unpackString())
257258
assertEquals("runtime-id", unpacker.unpackString())
@@ -270,6 +271,8 @@ class CiTestCycleMapperV1PayloadTest extends DDSpecification {
270271
assertEquals(wellKnownTags.osPlatform as String, unpacker.unpackString())
271272
assertEquals(Tags.OS_VERSION, unpacker.unpackString())
272273
assertEquals(wellKnownTags.osVersion as String, unpacker.unpackString())
274+
assertEquals(DDTags.TEST_IS_USER_PROVIDED_SERVICE, unpacker.unpackString())
275+
assertEquals(wellKnownTags.isUserProvidedService as String, unpacker.unpackString())
273276

274277
assertEquals("events", unpacker.unpackString())
275278

dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterCombinedTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class DDIntakeWriterCombinedTest extends DDCoreSpecification {
4646
def wellKnownTags = new CiVisibilityWellKnownTags(
4747
"my-runtime-id", "my-env", "my-language",
4848
"my-runtime-name", "my-runtime-version", "my-runtime-vendor",
49-
"my-os-arch", "my-os-platform", "my-os-version")
49+
"my-os-arch", "my-os-platform", "my-os-version", "false")
5050

5151
def conditions = new PollingConditions(timeout: 5, initialDelay: 0, factor: 1.25)
5252
def monitoring = new MonitoringImpl(StatsDClient.NO_OP, 1, TimeUnit.SECONDS)

dd-trace-core/src/test/groovy/datadog/trace/common/writer/ddintake/DDEvpProxyApiTest.groovy

Lines changed: 47 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
55
import datadog.communication.serialization.ByteBufferConsumer
66
import datadog.communication.serialization.FlushingBuffer
77
import datadog.communication.serialization.msgpack.MsgPackWriter
8+
import datadog.trace.api.DDTags
89
import datadog.trace.api.civisibility.CiVisibilityWellKnownTags
910
import datadog.trace.api.intake.TrackType
1011
import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes
@@ -30,7 +31,7 @@ class DDEvpProxyApiTest extends DDCoreSpecification {
3031
static CiVisibilityWellKnownTags wellKnownTags = new CiVisibilityWellKnownTags(
3132
"my-runtime-id", "my-env", "my-language",
3233
"my-runtime-name", "my-runtime-version", "my-runtime-vendor",
33-
"my-os-arch", "my-os-platform", "my-os-version")
34+
"my-os-arch", "my-os-platform", "my-os-version", "false")
3435

3536
static String intakeSubdomain = "citestcycle-intake"
3637
static msgPackMapper = new ObjectMapper(new MessagePackFactory())
@@ -131,21 +132,22 @@ class DDEvpProxyApiTest extends DDCoreSpecification {
131132
where:
132133
// spotless:off
133134
trackType | apiVersion | evpProxyEndpoint | compressionEnabled | traces | expectedRequestBody
134-
TrackType.CITESTCYCLE | "v2" | V2_EVP_PROXY_ENDPOINT | false | [] | [:]
135+
TrackType.CITESTCYCLE | "v2" | V2_EVP_PROXY_ENDPOINT | false | [] | [:]
135136

136-
TrackType.CITESTCYCLE | "v2" | V2_EVP_PROXY_ENDPOINT | false | [[buildSpan(1L, "fakeType", ["service.name": "my-service"])]] | new TreeMap<>([
137+
TrackType.CITESTCYCLE | "v2" | V2_EVP_PROXY_ENDPOINT | false | [[buildSpan(1L, "fakeType", ["service.name": "my-service"])]] | new TreeMap<>([
137138
"version" : 1,
138139
"metadata": new TreeMap<>([
139140
"*": new TreeMap<>([
140-
"env" : "my-env",
141-
"runtime-id" : "my-runtime-id",
142-
"language" : "my-language",
143-
(Tags.RUNTIME_NAME) : "my-runtime-name",
144-
(Tags.RUNTIME_VERSION): "my-runtime-version",
145-
(Tags.RUNTIME_VENDOR) : "my-runtime-vendor",
146-
(Tags.OS_ARCHITECTURE): "my-os-arch",
147-
(Tags.OS_PLATFORM) : "my-os-platform",
148-
(Tags.OS_VERSION) : "my-os-version"
141+
"env" : "my-env",
142+
"runtime-id" : "my-runtime-id",
143+
"language" : "my-language",
144+
(Tags.RUNTIME_NAME) : "my-runtime-name",
145+
(Tags.RUNTIME_VERSION) : "my-runtime-version",
146+
(Tags.RUNTIME_VENDOR) : "my-runtime-vendor",
147+
(Tags.OS_ARCHITECTURE) : "my-os-arch",
148+
(Tags.OS_PLATFORM) : "my-os-platform",
149+
(Tags.OS_VERSION) : "my-os-version",
150+
(DDTags.TEST_IS_USER_PROVIDED_SERVICE): "false"
149151
])]),
150152
"events" : [new TreeMap<>([
151153
"type" : "span",
@@ -165,19 +167,20 @@ class DDEvpProxyApiTest extends DDCoreSpecification {
165167
])
166168
])]
167169
])
168-
TrackType.CITESTCYCLE | "v2" | V2_EVP_PROXY_ENDPOINT | false | [[buildSpan(1L, InternalSpanTypes.TEST, ["test_suite_id": 123L, "test_module_id": 456L])]] | new TreeMap<>([
170+
TrackType.CITESTCYCLE | "v2" | V2_EVP_PROXY_ENDPOINT | false | [[buildSpan(1L, InternalSpanTypes.TEST, ["test_suite_id": 123L, "test_module_id": 456L])]] | new TreeMap<>([
169171
"version" : 1,
170172
"metadata": new TreeMap<>([
171173
"*": new TreeMap<>([
172-
"env" : "my-env",
173-
"runtime-id": "my-runtime-id",
174-
"language" : "my-language",
175-
(Tags.RUNTIME_NAME): "my-runtime-name",
176-
(Tags.RUNTIME_VERSION): "my-runtime-version",
177-
(Tags.RUNTIME_VENDOR): "my-runtime-vendor",
178-
(Tags.OS_ARCHITECTURE): "my-os-arch",
179-
(Tags.OS_PLATFORM): "my-os-platform",
180-
(Tags.OS_VERSION): "my-os-version"
174+
"env" : "my-env",
175+
"runtime-id" : "my-runtime-id",
176+
"language" : "my-language",
177+
(Tags.RUNTIME_NAME) : "my-runtime-name",
178+
(Tags.RUNTIME_VERSION) : "my-runtime-version",
179+
(Tags.RUNTIME_VENDOR) : "my-runtime-vendor",
180+
(Tags.OS_ARCHITECTURE) : "my-os-arch",
181+
(Tags.OS_PLATFORM) : "my-os-platform",
182+
(Tags.OS_VERSION) : "my-os-version",
183+
(DDTags.TEST_IS_USER_PROVIDED_SERVICE): "false"
181184
])]),
182185
"events" : [new TreeMap<>([
183186
"type" : "test",
@@ -199,19 +202,20 @@ class DDEvpProxyApiTest extends DDCoreSpecification {
199202
])
200203
])]
201204
])
202-
TrackType.CITESTCYCLE | "v2" | V2_EVP_PROXY_ENDPOINT | false | [[buildSpan(1L, InternalSpanTypes.TEST_SUITE_END, ["test_suite_id": 123L, "test_module_id": 456L])]] | new TreeMap<>([
205+
TrackType.CITESTCYCLE | "v2" | V2_EVP_PROXY_ENDPOINT | false | [[buildSpan(1L, InternalSpanTypes.TEST_SUITE_END, ["test_suite_id": 123L, "test_module_id": 456L])]] | new TreeMap<>([
203206
"version" : 1,
204207
"metadata": new TreeMap<>([
205208
"*": new TreeMap<>([
206-
"env" : "my-env",
207-
"runtime-id": "my-runtime-id",
208-
"language" : "my-language",
209-
(Tags.RUNTIME_NAME): "my-runtime-name",
210-
(Tags.RUNTIME_VERSION): "my-runtime-version",
211-
(Tags.RUNTIME_VENDOR): "my-runtime-vendor",
212-
(Tags.OS_ARCHITECTURE): "my-os-arch",
213-
(Tags.OS_PLATFORM): "my-os-platform",
214-
(Tags.OS_VERSION): "my-os-version"
209+
"env" : "my-env",
210+
"runtime-id" : "my-runtime-id",
211+
"language" : "my-language",
212+
(Tags.RUNTIME_NAME) : "my-runtime-name",
213+
(Tags.RUNTIME_VERSION) : "my-runtime-version",
214+
(Tags.RUNTIME_VENDOR) : "my-runtime-vendor",
215+
(Tags.OS_ARCHITECTURE) : "my-os-arch",
216+
(Tags.OS_PLATFORM) : "my-os-platform",
217+
(Tags.OS_VERSION) : "my-os-version",
218+
(DDTags.TEST_IS_USER_PROVIDED_SERVICE): "false"
215219
])]),
216220
"events" : [new TreeMap<>([
217221
"type" : "test_suite_end",
@@ -230,19 +234,20 @@ class DDEvpProxyApiTest extends DDCoreSpecification {
230234
])
231235
])]
232236
])
233-
TrackType.CITESTCYCLE | "v2" | V4_EVP_PROXY_ENDPOINT | true | [[buildSpan(1L, InternalSpanTypes.TEST_MODULE_END, ["test_module_id": 456L])]] | new TreeMap<>([
237+
TrackType.CITESTCYCLE | "v2" | V4_EVP_PROXY_ENDPOINT | true | [[buildSpan(1L, InternalSpanTypes.TEST_MODULE_END, ["test_module_id": 456L])]] | new TreeMap<>([
234238
"version" : 1,
235239
"metadata": new TreeMap<>([
236240
"*": new TreeMap<>([
237-
"env" : "my-env",
238-
"runtime-id": "my-runtime-id",
239-
"language" : "my-language",
240-
(Tags.RUNTIME_NAME): "my-runtime-name",
241-
(Tags.RUNTIME_VERSION): "my-runtime-version",
242-
(Tags.RUNTIME_VENDOR): "my-runtime-vendor",
243-
(Tags.OS_ARCHITECTURE): "my-os-arch",
244-
(Tags.OS_PLATFORM): "my-os-platform",
245-
(Tags.OS_VERSION): "my-os-version"
241+
"env" : "my-env",
242+
"runtime-id" : "my-runtime-id",
243+
"language" : "my-language",
244+
(Tags.RUNTIME_NAME) : "my-runtime-name",
245+
(Tags.RUNTIME_VERSION) : "my-runtime-version",
246+
(Tags.RUNTIME_VENDOR) : "my-runtime-vendor",
247+
(Tags.OS_ARCHITECTURE) : "my-os-arch",
248+
(Tags.OS_PLATFORM) : "my-os-platform",
249+
(Tags.OS_VERSION) : "my-os-version",
250+
(DDTags.TEST_IS_USER_PROVIDED_SERVICE): "false"
246251
])]),
247252
"events" : [new TreeMap<>([
248253
"type" : "test_module_end",

0 commit comments

Comments
 (0)