Skip to content

Commit

Permalink
Rename coverage store classes
Browse files Browse the repository at this point in the history
  • Loading branch information
nikita-tkachenko-datadog committed Jul 5, 2024
1 parent 3762731 commit 0584623
Show file tree
Hide file tree
Showing 39 changed files with 142 additions and 138 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
import datadog.trace.civisibility.config.CachingJvmInfoFactory;
import datadog.trace.civisibility.config.JvmInfoFactory;
import datadog.trace.civisibility.config.JvmInfoFactoryImpl;
import datadog.trace.civisibility.coverage.CoverageProbeStoreFactory;
import datadog.trace.civisibility.coverage.NoopCoverageProbeStore;
import datadog.trace.civisibility.coverage.SegmentlessTestProbes;
import datadog.trace.civisibility.coverage.TestProbes;
import datadog.trace.civisibility.coverage.CoverageStoreFactory;
import datadog.trace.civisibility.coverage.NoopCoverageStore;
import datadog.trace.civisibility.coverage.files.FileLevelCoverageStore;
import datadog.trace.civisibility.coverage.lines.LineLevelCoverageStore;
import datadog.trace.civisibility.git.CILocalGitInfoBuilder;
import datadog.trace.civisibility.git.CIProviderGitInfoBuilder;
import datadog.trace.civisibility.git.GitClientGitInfoBuilder;
Expand Down Expand Up @@ -50,7 +50,7 @@ public class CiVisibilityServices {
final GitClient.Factory gitClientFactory;
final GitInfoProvider gitInfoProvider;
final MethodLinesResolver methodLinesResolver;
final CoverageProbeStoreFactory coverageProbeStoreFactory;
final CoverageStoreFactory coverageProbeStoreFactory;
final RepoIndexProvider.Factory repoIndexProviderFactory;
@Nullable final SignalClient.Factory signalClientFactory;

Expand Down Expand Up @@ -97,15 +97,15 @@ public class CiVisibilityServices {
}
}

private static CoverageProbeStoreFactory buildTestProbesFactory(
private static CoverageStoreFactory buildTestProbesFactory(
Config config, CiVisibilityMetricCollector metricCollector) {
if (!config.isCiVisibilityCodeCoverageEnabled()) {
return new NoopCoverageProbeStore.NoopCoverageProbeStoreFactory();
return new NoopCoverageStore.NoopCoverageProbeStoreFactory();
}
if (!config.isCiVisibilityCoverageSegmentsEnabled()) {
return new SegmentlessTestProbes.SegmentlessTestProbesFactory(metricCollector);
if (!config.isCiVisibilityCoverageLinesEnabled()) {
return new FileLevelCoverageStore.FileLevelCoverageStoreFactory(metricCollector);
}
return new TestProbes.TestProbesFactory(metricCollector);
return new LineLevelCoverageStore.LineLevelCoverageStoreFactory(metricCollector);
}

CiVisibilityRepoServices repoServices(Path path) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
import datadog.trace.api.git.GitInfoProvider;
import datadog.trace.bootstrap.ContextStore;
import datadog.trace.civisibility.config.JvmInfo;
import datadog.trace.civisibility.coverage.instrumentation.CoverageClassTransformer;
import datadog.trace.civisibility.coverage.instrumentation.CoverageInstrumentationFilter;
import datadog.trace.civisibility.coverage.instrumentation.probe.CoverageClassTransformer;
import datadog.trace.civisibility.coverage.instrumentation.probe.CoverageInstrumentationFilter;
import datadog.trace.civisibility.decorator.TestDecorator;
import datadog.trace.civisibility.decorator.TestDecoratorImpl;
import datadog.trace.civisibility.domain.BuildSystemSession;
Expand Down Expand Up @@ -89,10 +89,10 @@ public static void start(Instrumentation inst, SharedCommunicationObjects sco) {
JvmInfo.CURRENT_JVM, repoServices.moduleName);
if (executionSettings.isCodeCoverageEnabled()
&&
// coverage with code segments is built on top of Jacoco,
// so if segments are explicitly enabled,
// coverage with code lines is built on top of Jacoco,
// so if lines are explicitly enabled,
// we rely on Jacoco instrumentation rather than on our own coverage mechanism
!config.isCiVisibilityCoverageSegmentsEnabled()) {
!config.isCiVisibilityCoverageLinesEnabled()) {
Predicate<String> instrumentationFilter =
createCoverageInstrumentationFilter(config, executionSettings);
inst.addTransformer(new CoverageClassTransformer(instrumentationFilter));
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package datadog.trace.civisibility.coverage;

import datadog.trace.api.civisibility.config.TestIdentifier;
import datadog.trace.api.civisibility.coverage.CoverageStore;
import datadog.trace.civisibility.source.SourcePathResolver;

public interface CoverageStoreFactory extends CoverageStore.Registry {
CoverageStore create(TestIdentifier testIdentifier, SourcePathResolver sourcePathResolver);
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package datadog.trace.civisibility.coverage;

import datadog.trace.api.civisibility.config.TestIdentifier;
import datadog.trace.api.civisibility.coverage.CoverageProbeStore;
import datadog.trace.api.civisibility.coverage.CoverageStore;
import datadog.trace.api.civisibility.coverage.TestReport;
import datadog.trace.civisibility.source.SourcePathResolver;
import javax.annotation.Nullable;

public class NoopCoverageProbeStore implements CoverageProbeStore {
public static final CoverageProbeStore INSTANCE = new NoopCoverageProbeStore();
public class NoopCoverageStore implements CoverageStore {
public static final CoverageStore INSTANCE = new NoopCoverageStore();

@Override
public void record(Class<?> clazz) {}
Expand All @@ -29,12 +29,12 @@ public TestReport getReport() {
return null;
}

public static final class NoopCoverageProbeStoreFactory implements CoverageProbeStoreFactory {
public static final class NoopCoverageProbeStoreFactory implements CoverageStoreFactory {
@Override
public void setTotalProbeCount(String className, int totalProbeCount) {}

@Override
public CoverageProbeStore create(
public CoverageStore create(
TestIdentifier testIdentifier, SourcePathResolver sourcePathResolver) {
return INSTANCE;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
package datadog.trace.civisibility.coverage;

import datadog.trace.api.civisibility.config.TestIdentifier;
import datadog.trace.api.civisibility.coverage.CoverageProbeStore;
import datadog.trace.api.civisibility.coverage.CoverageStore;
import datadog.trace.civisibility.source.SourcePathResolver;
import java.util.Collection;

/**
* Coverage store factory returns no-op stores for skippable tests. This is done to reduce coverage
* overhead. The idea is that if a test is skippable then it means none of the files it covers were
* changed. If none of the files were changed then gathering coverage for the test make no sense,
* changed. If none of the files were changed then gathering coverage for the test makes no sense,
* because it will be the same as previously gathered coverage that the backend already has.
*/
public class SkippableAwareCoverageProbeStoreFactory implements CoverageProbeStoreFactory {
public class SkippableAwareCoverageStoreFactory implements CoverageStoreFactory {
private final Collection<TestIdentifier> skippableTests;
private final CoverageProbeStoreFactory delegate;
private final CoverageStoreFactory delegate;

public SkippableAwareCoverageProbeStoreFactory(
Collection<TestIdentifier> skippableTests, CoverageProbeStoreFactory delegate) {
public SkippableAwareCoverageStoreFactory(
Collection<TestIdentifier> skippableTests, CoverageStoreFactory delegate) {
this.skippableTests = skippableTests;
this.delegate = delegate;
}

@Override
public CoverageProbeStore create(
public CoverageStore create(
TestIdentifier testIdentifier, SourcePathResolver sourcePathResolver) {
if (skippableTests.contains(testIdentifier)) {
return NoopCoverageProbeStore.INSTANCE;
return NoopCoverageStore.INSTANCE;
} else {
return delegate.create(testIdentifier, sourcePathResolver);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package datadog.trace.civisibility.coverage;
package datadog.trace.civisibility.coverage.files;

import datadog.trace.api.civisibility.config.TestIdentifier;
import datadog.trace.api.civisibility.coverage.CoverageProbeStore;
import datadog.trace.api.civisibility.coverage.CoverageStore;
import datadog.trace.api.civisibility.coverage.TestReport;
import datadog.trace.api.civisibility.coverage.TestReportFileEntry;
import datadog.trace.api.civisibility.telemetry.CiVisibilityCountMetric;
import datadog.trace.api.civisibility.telemetry.CiVisibilityDistributionMetric;
import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector;
import datadog.trace.api.civisibility.telemetry.tag.CoverageErrorType;
import datadog.trace.api.civisibility.telemetry.tag.Library;
import datadog.trace.civisibility.coverage.CoverageStoreFactory;
import datadog.trace.civisibility.source.SourcePathResolver;
import java.util.ArrayList;
import java.util.Collection;
Expand All @@ -23,9 +24,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SegmentlessTestProbes implements CoverageProbeStore {
/** Only records the set of covered files, without more granular information such as lines */
public class FileLevelCoverageStore implements CoverageStore {

private static final Logger log = LoggerFactory.getLogger(SegmentlessTestProbes.class);
private static final Logger log = LoggerFactory.getLogger(FileLevelCoverageStore.class);

// test starts and finishes in the same thread,
// and in this thread we do not need to synchronize access
Expand All @@ -40,7 +42,7 @@ public class SegmentlessTestProbes implements CoverageProbeStore {
private final CiVisibilityMetricCollector metricCollector;
private volatile TestReport testReport;

SegmentlessTestProbes(
FileLevelCoverageStore(
SourcePathResolver sourcePathResolver, CiVisibilityMetricCollector metricCollector) {
this.sourcePathResolver = sourcePathResolver;
this.metricCollector = metricCollector;
Expand Down Expand Up @@ -164,11 +166,11 @@ public TestReport getReport() {
return testReport;
}

public static class SegmentlessTestProbesFactory implements CoverageProbeStoreFactory {
public static class FileLevelCoverageStoreFactory implements CoverageStoreFactory {

private final CiVisibilityMetricCollector metricCollector;

public SegmentlessTestProbesFactory(CiVisibilityMetricCollector metricCollector) {
public FileLevelCoverageStoreFactory(CiVisibilityMetricCollector metricCollector) {
this.metricCollector = metricCollector;
}

Expand All @@ -178,9 +180,9 @@ public void setTotalProbeCount(String className, int totalProbeCount) {
}

@Override
public CoverageProbeStore create(
public CoverageStore create(
TestIdentifier testIdentifier, SourcePathResolver sourcePathResolver) {
return new SegmentlessTestProbes(sourcePathResolver, metricCollector);
return new FileLevelCoverageStore(sourcePathResolver, metricCollector);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package datadog.trace.civisibility.coverage.instrumentation;
package datadog.trace.civisibility.coverage.instrumentation.probe;

import java.lang.instrument.ClassFileTransformer;
import java.security.ProtectionDomain;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package datadog.trace.civisibility.coverage.instrumentation;
package datadog.trace.civisibility.coverage.instrumentation.probe;

import java.util.function.Predicate;
import org.objectweb.asm.ClassVisitor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package datadog.trace.civisibility.coverage.instrumentation;
package datadog.trace.civisibility.coverage.instrumentation.probe;

import java.util.function.Predicate;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package datadog.trace.civisibility.coverage.instrumentation;
package datadog.trace.civisibility.coverage.instrumentation.probe;

import java.util.function.Predicate;
import org.objectweb.asm.MethodVisitor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package datadog.trace.civisibility.coverage.instrumentation;
package datadog.trace.civisibility.coverage.instrumentation.probe;

import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package datadog.trace.civisibility.coverage;
package datadog.trace.civisibility.coverage.lines;

import java.util.BitSet;
import org.jacoco.core.data.ExecutionData;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package datadog.trace.civisibility.coverage;
package datadog.trace.civisibility.coverage.lines;

import datadog.trace.api.civisibility.config.TestIdentifier;
import datadog.trace.api.civisibility.coverage.CoverageProbeStore;
import datadog.trace.api.civisibility.coverage.CoverageStore;
import datadog.trace.api.civisibility.coverage.TestReport;
import datadog.trace.api.civisibility.coverage.TestReportFileEntry;
import datadog.trace.api.civisibility.telemetry.CiVisibilityCountMetric;
import datadog.trace.api.civisibility.telemetry.CiVisibilityDistributionMetric;
import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector;
import datadog.trace.api.civisibility.telemetry.tag.CoverageErrorType;
import datadog.trace.api.civisibility.telemetry.tag.Library;
import datadog.trace.civisibility.coverage.CoverageStoreFactory;
import datadog.trace.civisibility.source.SourcePathResolver;
import datadog.trace.civisibility.source.Utils;
import java.io.InputStream;
Expand All @@ -27,9 +28,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestProbes implements CoverageProbeStore {
/** Records the set of covered files along with the lines covered for each file. */
public class LineLevelCoverageStore implements CoverageStore {

private static final Logger log = LoggerFactory.getLogger(TestProbes.class);
private static final Logger log = LoggerFactory.getLogger(LineLevelCoverageStore.class);

private static final Map<String, Integer> totalProbeCounts = new HashMap<>();

Expand All @@ -45,7 +47,8 @@ public class TestProbes implements CoverageProbeStore {
private final CiVisibilityMetricCollector metricCollector;
private volatile TestReport testReport;

TestProbes(SourcePathResolver sourcePathResolver, CiVisibilityMetricCollector metricCollector) {
LineLevelCoverageStore(
SourcePathResolver sourcePathResolver, CiVisibilityMetricCollector metricCollector) {
this.sourcePathResolver = sourcePathResolver;
this.metricCollector = metricCollector;
probeActivations = new IdentityHashMap<>();
Expand Down Expand Up @@ -192,11 +195,11 @@ public TestReport getReport() {
return testReport;
}

public static class TestProbesFactory implements CoverageProbeStoreFactory {
public static class LineLevelCoverageStoreFactory implements CoverageStoreFactory {

private final CiVisibilityMetricCollector metricCollector;

public TestProbesFactory(CiVisibilityMetricCollector metricCollector) {
public LineLevelCoverageStoreFactory(CiVisibilityMetricCollector metricCollector) {
this.metricCollector = metricCollector;
}

Expand All @@ -206,9 +209,9 @@ public void setTotalProbeCount(String className, int totalProbeCount) {
}

@Override
public CoverageProbeStore create(
public CoverageStore create(
TestIdentifier testIdentifier, SourcePathResolver sourcePathResolver) {
return new TestProbes(sourcePathResolver, metricCollector);
return new LineLevelCoverageStore(sourcePathResolver, metricCollector);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package datadog.trace.civisibility.coverage;
package datadog.trace.civisibility.coverage.lines;

import java.util.BitSet;
import org.jacoco.core.analysis.IClassCoverage;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import datadog.trace.bootstrap.instrumentation.api.Tags;
import datadog.trace.civisibility.InstrumentationType;
import datadog.trace.civisibility.codeowners.Codeowners;
import datadog.trace.civisibility.coverage.CoverageProbeStoreFactory;
import datadog.trace.civisibility.coverage.CoverageStoreFactory;
import datadog.trace.civisibility.decorator.TestDecorator;
import datadog.trace.civisibility.source.MethodLinesResolver;
import datadog.trace.civisibility.source.SourcePathResolver;
Expand All @@ -37,7 +37,7 @@ public abstract class AbstractTestSession {
protected final SourcePathResolver sourcePathResolver;
protected final Codeowners codeowners;
protected final MethodLinesResolver methodLinesResolver;
protected final CoverageProbeStoreFactory coverageProbeStoreFactory;
protected final CoverageStoreFactory coverageProbeStoreFactory;

public AbstractTestSession(
String projectName,
Expand All @@ -50,7 +50,7 @@ public AbstractTestSession(
SourcePathResolver sourcePathResolver,
Codeowners codeowners,
MethodLinesResolver methodLinesResolver,
CoverageProbeStoreFactory coverageProbeStoreFactory) {
CoverageStoreFactory coverageProbeStoreFactory) {
this.ciProvider = ciProvider;
this.instrumentationType = instrumentationType;
this.config = config;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package datadog.trace.civisibility.domain;

import datadog.trace.api.civisibility.coverage.CoverageProbeStore;
import datadog.trace.api.civisibility.coverage.CoverageStore;
import datadog.trace.api.civisibility.domain.TestContext;
import java.util.concurrent.CopyOnWriteArrayList;

public class TestContextImpl implements TestContext {

private final CoverageProbeStore probeStore;
private final CoverageStore probeStore;
private final CopyOnWriteArrayList<Entry> entries = new CopyOnWriteArrayList<>();

public TestContextImpl(CoverageProbeStore probeStore) {
public TestContextImpl(CoverageStore probeStore) {
this.probeStore = probeStore;
}

@Override
public CoverageProbeStore getCoverageProbeStore() {
public CoverageStore getCoverageProbeStore() {
return this.probeStore;
}

Expand Down
Loading

0 comments on commit 0584623

Please sign in to comment.