Skip to content

Commit a85ec5f

Browse files
Remove skip and shouldBeSkipped methods from TestEventsHandler in favor of isSkippable (#8286)
1 parent 19da739 commit a85ec5f

File tree

22 files changed

+76
-78
lines changed

22 files changed

+76
-78
lines changed

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestFrameworkModule.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,12 @@ TestSuiteImpl testSuiteStart(
3131
boolean isModified(TestSourceData testSourceData);
3232

3333
/**
34-
* Checks if a given test should be skipped with Intelligent Test Runner or not
34+
* Checks if a given test can be skipped with Intelligent Test Runner or not.
3535
*
3636
* @param test Test to be checked
3737
* @return {@code true} if the test can be skipped, {@code false} otherwise
3838
*/
39-
boolean shouldBeSkipped(TestIdentifier test);
40-
41-
/**
42-
* Checks if a given test can be skipped with Intelligent Test Runner or not. If the test is
43-
* considered skippable, the count of skippable tests is incremented.
44-
*
45-
* @param test Test to be checked
46-
* @return {@code true} if the test can be skipped, {@code false} otherwise
47-
*/
48-
boolean skip(TestIdentifier test);
39+
boolean isSkippable(TestIdentifier test);
4940

5041
@Nonnull
5142
TestRetryPolicy retryPolicy(TestIdentifier test, TestSourceData testSource);

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import datadog.trace.civisibility.source.LinesResolver;
3838
import datadog.trace.civisibility.source.SourcePathResolver;
3939
import datadog.trace.civisibility.source.SourceResolutionException;
40+
import datadog.trace.civisibility.test.ExecutionResults;
4041
import java.lang.reflect.Method;
4142
import java.util.Collection;
4243
import java.util.Collections;
@@ -50,6 +51,7 @@ public class TestImpl implements DDTest {
5051
private static final Logger log = LoggerFactory.getLogger(TestImpl.class);
5152

5253
private final CiVisibilityMetricCollector metricCollector;
54+
private final ExecutionResults executionResults;
5355
private final TestFrameworkInstrumentation instrumentation;
5456
private final AgentSpan span;
5557
private final DDTraceId sessionId;
@@ -78,11 +80,13 @@ public TestImpl(
7880
LinesResolver linesResolver,
7981
Codeowners codeowners,
8082
CoverageStore.Factory coverageStoreFactory,
83+
ExecutionResults executionResults,
8184
Consumer<AgentSpan> onSpanFinish) {
8285
this.instrumentation = instrumentation;
8386
this.metricCollector = metricCollector;
8487
this.sessionId = moduleSpanContext.getTraceId();
8588
this.suiteId = suiteId;
89+
this.executionResults = executionResults;
8690
this.onSpanFinish = onSpanFinish;
8791

8892
this.identifier = new TestIdentifier(testSuiteName, testName, testParameters);
@@ -258,6 +262,10 @@ public void end(@Nullable Long endTime) {
258262
span.finish();
259263
}
260264

265+
if (InstrumentationBridge.ITR_SKIP_REASON.equals(span.getTag(Tags.TEST_SKIP_REASON))) {
266+
executionResults.incrementTestsSkippedByItr();
267+
}
268+
261269
metricCollector.add(
262270
CiVisibilityCountMetric.EVENT_FINISHED,
263271
1,

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestSuiteImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import datadog.trace.civisibility.source.LinesResolver;
2323
import datadog.trace.civisibility.source.SourcePathResolver;
2424
import datadog.trace.civisibility.source.SourceResolutionException;
25+
import datadog.trace.civisibility.test.ExecutionResults;
2526
import datadog.trace.civisibility.utils.SpanUtils;
2627
import java.lang.reflect.Method;
2728
import java.util.Collection;
@@ -49,6 +50,7 @@ public class TestSuiteImpl implements DDTestSuite {
4950
private final Codeowners codeowners;
5051
private final LinesResolver linesResolver;
5152
private final CoverageStore.Factory coverageStoreFactory;
53+
private final ExecutionResults executionResults;
5254
private final boolean parallelized;
5355
private final Consumer<AgentSpan> onSpanFinish;
5456

@@ -69,6 +71,7 @@ public TestSuiteImpl(
6971
Codeowners codeowners,
7072
LinesResolver linesResolver,
7173
CoverageStore.Factory coverageStoreFactory,
74+
ExecutionResults executionResults,
7275
Consumer<AgentSpan> onSpanFinish) {
7376
this.moduleSpanContext = moduleSpanContext;
7477
this.moduleName = moduleName;
@@ -84,6 +87,7 @@ public TestSuiteImpl(
8487
this.codeowners = codeowners;
8588
this.linesResolver = linesResolver;
8689
this.coverageStoreFactory = coverageStoreFactory;
90+
this.executionResults = executionResults;
8791
this.onSpanFinish = onSpanFinish;
8892

8993
AgentTracer.SpanBuilder spanBuilder =
@@ -254,6 +258,7 @@ public TestImpl testStart(
254258
linesResolver,
255259
codeowners,
256260
coverageStoreFactory,
261+
executionResults,
257262
SpanUtils.propagateCiVisibilityTagsTo(span));
258263
}
259264
}

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/ProxyTestModule.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import datadog.trace.civisibility.ipc.TestFramework;
2626
import datadog.trace.civisibility.source.LinesResolver;
2727
import datadog.trace.civisibility.source.SourcePathResolver;
28+
import datadog.trace.civisibility.test.ExecutionResults;
2829
import datadog.trace.civisibility.test.ExecutionStrategy;
2930
import java.util.Collection;
3031
import java.util.TreeSet;
@@ -46,6 +47,7 @@ public class ProxyTestModule implements TestFrameworkModule {
4647
private final AgentSpanContext parentProcessModuleContext;
4748
private final String moduleName;
4849
private final ExecutionStrategy executionStrategy;
50+
private final ExecutionResults executionResults;
4951
private final SignalClient.Factory signalClientFactory;
5052
private final ChildProcessCoverageReporter childProcessCoverageReporter;
5153
private final Config config;
@@ -73,6 +75,7 @@ public ProxyTestModule(
7375
this.parentProcessModuleContext = parentProcessModuleContext;
7476
this.moduleName = moduleName;
7577
this.executionStrategy = executionStrategy;
78+
this.executionResults = new ExecutionResults();
7679
this.signalClientFactory = signalClientFactory;
7780
this.childProcessCoverageReporter = childProcessCoverageReporter;
7881
this.config = config;
@@ -100,13 +103,8 @@ public boolean isModified(TestSourceData testSourceData) {
100103
}
101104

102105
@Override
103-
public boolean shouldBeSkipped(TestIdentifier test) {
104-
return executionStrategy.shouldBeSkipped(test);
105-
}
106-
107-
@Override
108-
public boolean skip(TestIdentifier test) {
109-
return executionStrategy.skip(test);
106+
public boolean isSkippable(TestIdentifier test) {
107+
return executionStrategy.isSkippable(test);
110108
}
111109

112110
@Override
@@ -143,7 +141,7 @@ private void sendModuleExecutionResult() {
143141
boolean earlyFlakeDetectionEnabled = earlyFlakeDetectionSettings.isEnabled();
144142
boolean earlyFlakeDetectionFaulty =
145143
earlyFlakeDetectionEnabled && executionStrategy.isEFDLimitReached();
146-
long testsSkippedTotal = executionStrategy.getTestsSkipped();
144+
long testsSkippedTotal = executionResults.getTestsSkippedByItr();
147145

148146
signalClient.send(
149147
new ModuleExecutionResult(
@@ -185,6 +183,7 @@ public TestSuiteImpl testSuiteStart(
185183
codeowners,
186184
linesResolver,
187185
coverageStoreFactory,
186+
executionResults,
188187
this::propagateTestFrameworkData);
189188
}
190189

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/headless/HeadlessTestModule.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import datadog.trace.civisibility.domain.TestSuiteImpl;
2323
import datadog.trace.civisibility.source.LinesResolver;
2424
import datadog.trace.civisibility.source.SourcePathResolver;
25+
import datadog.trace.civisibility.test.ExecutionResults;
2526
import datadog.trace.civisibility.test.ExecutionStrategy;
2627
import datadog.trace.civisibility.utils.SpanUtils;
2728
import java.util.function.Consumer;
@@ -39,6 +40,7 @@ public class HeadlessTestModule extends AbstractTestModule implements TestFramew
3940

4041
private final CoverageStore.Factory coverageStoreFactory;
4142
private final ExecutionStrategy executionStrategy;
43+
private final ExecutionResults executionResults;
4244

4345
public HeadlessTestModule(
4446
AgentSpanContext sessionSpanContext,
@@ -67,6 +69,7 @@ public HeadlessTestModule(
6769
onSpanFinish);
6870
this.coverageStoreFactory = coverageStoreFactory;
6971
this.executionStrategy = executionStrategy;
72+
this.executionResults = new ExecutionResults();
7073
}
7174

7275
@Override
@@ -85,13 +88,8 @@ public boolean isModified(TestSourceData testSourceData) {
8588
}
8689

8790
@Override
88-
public boolean shouldBeSkipped(TestIdentifier test) {
89-
return executionStrategy.shouldBeSkipped(test);
90-
}
91-
92-
@Override
93-
public boolean skip(TestIdentifier test) {
94-
return executionStrategy.skip(test);
91+
public boolean isSkippable(TestIdentifier test) {
92+
return executionStrategy.isSkippable(test);
9593
}
9694

9795
@Override
@@ -111,7 +109,7 @@ public void end(@Nullable Long endTime) {
111109
setTag(Tags.TEST_ITR_TESTS_SKIPPING_ENABLED, true);
112110
setTag(Tags.TEST_ITR_TESTS_SKIPPING_TYPE, "test");
113111

114-
long testsSkippedTotal = executionStrategy.getTestsSkipped();
112+
long testsSkippedTotal = executionResults.getTestsSkippedByItr();
115113
setTag(Tags.TEST_ITR_TESTS_SKIPPING_COUNT, testsSkippedTotal);
116114
if (testsSkippedTotal > 0) {
117115
setTag(DDTags.CI_ITR_TESTS_SKIPPED, true);
@@ -154,6 +152,7 @@ public TestSuiteImpl testSuiteStart(
154152
codeowners,
155153
linesResolver,
156154
coverageStoreFactory,
155+
executionResults,
157156
SpanUtils.propagateCiVisibilityTagsTo(span));
158157
}
159158
}

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/manualapi/ManualApiTestModule.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import datadog.trace.civisibility.domain.TestSuiteImpl;
1515
import datadog.trace.civisibility.source.LinesResolver;
1616
import datadog.trace.civisibility.source.SourcePathResolver;
17+
import datadog.trace.civisibility.test.ExecutionResults;
1718
import datadog.trace.civisibility.utils.SpanUtils;
1819
import java.util.function.Consumer;
1920
import javax.annotation.Nullable;
@@ -25,6 +26,7 @@
2526
public class ManualApiTestModule extends AbstractTestModule implements DDTestModule {
2627

2728
private final CoverageStore.Factory coverageStoreFactory;
29+
private final ExecutionResults executionResults = new ExecutionResults();
2830

2931
public ManualApiTestModule(
3032
AgentSpanContext sessionSpanContext,
@@ -76,6 +78,7 @@ public TestSuiteImpl testSuiteStart(
7678
codeowners,
7779
linesResolver,
7880
coverageStoreFactory,
81+
executionResults,
7982
SpanUtils.propagateCiVisibilityTagsTo(span));
8083
}
8184
}

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/events/NoOpTestEventsHandler.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,7 @@ public void onTestIgnore(
9191
}
9292

9393
@Override
94-
public boolean skip(TestIdentifier test) {
95-
return false;
96-
}
97-
98-
@Override
99-
public boolean shouldBeSkipped(TestIdentifier test) {
94+
public boolean isSkippable(TestIdentifier test) {
10095
return false;
10196
}
10297

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/events/TestEventsHandlerImpl.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public void onTestStart(
187187
test.setTag(Tags.TEST_ITR_UNSKIPPABLE, true);
188188
metricCollector.add(CiVisibilityCountMetric.ITR_UNSKIPPABLE, 1, EventType.TEST);
189189

190-
if (testModule.shouldBeSkipped(thisTest)) {
190+
if (testModule.isSkippable(thisTest)) {
191191
test.setTag(Tags.TEST_ITR_FORCED_RUN, true);
192192
metricCollector.add(CiVisibilityCountMetric.ITR_FORCED_RUN, 1, EventType.TEST);
193193
}
@@ -260,16 +260,6 @@ public void onTestIgnore(
260260
onTestFinish(testDescriptor, null);
261261
}
262262

263-
@Override
264-
public boolean skip(TestIdentifier test) {
265-
return testModule.skip(test);
266-
}
267-
268-
@Override
269-
public boolean shouldBeSkipped(TestIdentifier test) {
270-
return testModule.shouldBeSkipped(test);
271-
}
272-
273263
@Override
274264
@Nonnull
275265
public TestRetryPolicy retryPolicy(TestIdentifier test, TestSourceData testSource) {
@@ -286,6 +276,11 @@ public boolean isFlaky(TestIdentifier test) {
286276
return testModule.isFlaky(test);
287277
}
288278

279+
@Override
280+
public boolean isSkippable(TestIdentifier test) {
281+
return testModule.isSkippable(test);
282+
}
283+
289284
@Override
290285
public void close() {
291286
testModule.end(null);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package datadog.trace.civisibility.test;
2+
3+
import java.util.concurrent.atomic.LongAdder;
4+
5+
public class ExecutionResults {
6+
7+
private final LongAdder testsSkippedByItr = new LongAdder();
8+
9+
public void incrementTestsSkippedByItr() {
10+
testsSkippedByItr.increment();
11+
}
12+
13+
public long getTestsSkippedByItr() {
14+
return testsSkippedByItr.sum();
15+
}
16+
}

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/test/ExecutionStrategy.java

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import java.util.Collection;
1717
import java.util.Map;
1818
import java.util.concurrent.atomic.AtomicInteger;
19-
import java.util.concurrent.atomic.LongAdder;
2019
import javax.annotation.Nonnull;
2120
import org.slf4j.Logger;
2221
import org.slf4j.LoggerFactory;
@@ -25,7 +24,6 @@ public class ExecutionStrategy {
2524

2625
private static final Logger LOGGER = LoggerFactory.getLogger(ExecutionStrategy.class);
2726

28-
private final LongAdder testsSkipped = new LongAdder();
2927
private final AtomicInteger earlyFlakeDetectionsUsed = new AtomicInteger(0);
3028
private final AtomicInteger autoRetriesUsed = new AtomicInteger(0);
3129

@@ -50,10 +48,6 @@ public ExecutionSettings getExecutionSettings() {
5048
return executionSettings;
5149
}
5250

53-
public long getTestsSkipped() {
54-
return testsSkipped.sum();
55-
}
56-
5751
public boolean isNew(TestIdentifier test) {
5852
Collection<TestIdentifier> knownTests = executionSettings.getKnownTests();
5953
return knownTests != null && !knownTests.contains(test.withoutParameters());
@@ -64,7 +58,7 @@ public boolean isFlaky(TestIdentifier test) {
6458
return flakyTests != null && flakyTests.contains(test.withoutParameters());
6559
}
6660

67-
public boolean shouldBeSkipped(TestIdentifier test) {
61+
public boolean isSkippable(TestIdentifier test) {
6862
if (test == null) {
6963
return false;
7064
}
@@ -78,15 +72,6 @@ public boolean shouldBeSkipped(TestIdentifier test) {
7872
&& testMetadata.isMissingLineCodeCoverage());
7973
}
8074

81-
public boolean skip(TestIdentifier test) {
82-
if (shouldBeSkipped(test)) {
83-
testsSkipped.increment();
84-
return true;
85-
} else {
86-
return false;
87-
}
88-
}
89-
9075
@Nonnull
9176
public TestRetryPolicy retryPolicy(TestIdentifier test, TestSourceData testSource) {
9277
if (test == null) {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import datadog.trace.civisibility.decorator.TestDecoratorImpl
1616
import datadog.trace.civisibility.source.LinesResolver
1717
import datadog.trace.civisibility.source.NoOpSourcePathResolver
1818
import datadog.trace.civisibility.telemetry.CiVisibilityMetricCollectorImpl
19+
import datadog.trace.civisibility.test.ExecutionResults
1920
import datadog.trace.civisibility.utils.SpanUtils
2021

2122
class TestImplTest extends SpanWriterTest {
@@ -97,6 +98,7 @@ class TestImplTest extends SpanWriterTest {
9798
def testFramework = TestFrameworkInstrumentation.OTHER
9899
def config = Config.get()
99100
def metricCollector = Stub(CiVisibilityMetricCollectorImpl)
101+
def executionResults = Stub(ExecutionResults)
100102
def testDecorator = new TestDecoratorImpl("component", "session-name", "test-command", [:])
101103

102104
def linesResolver = Stub(LinesResolver)
@@ -123,6 +125,7 @@ class TestImplTest extends SpanWriterTest {
123125
linesResolver,
124126
codeowners,
125127
coverageStoreFactory,
128+
executionResults,
126129
SpanUtils.DO_NOT_PROPAGATE_CI_VISIBILITY_TAGS
127130
)
128131
}

0 commit comments

Comments
 (0)