Search in sources :

Example 16 with TestExecution

use of com.teamscale.report.testwise.model.TestExecution in project teamscale-jacoco-agent by cqse.

the class Converter method runTestwiseCoverageReportGeneration.

/**
 * Converts one .exec binary coverage file, test details and test execution files to JSON testwise coverage.
 */
public void runTestwiseCoverageReportGeneration() throws IOException, CoverageGenerationException, AgentOptionParseException {
    List<TestDetails> testDetails = ReportUtils.readObjects(ETestArtifactFormat.TEST_LIST, TestDetails[].class, arguments.getInputFiles());
    List<TestExecution> testExecutions = ReportUtils.readObjects(ETestArtifactFormat.TEST_EXECUTION, TestExecution[].class, arguments.getInputFiles());
    List<File> jacocoExecutionDataList = ReportUtils.listFiles(ETestArtifactFormat.JACOCO, arguments.getInputFiles());
    ILogger logger = new CommandLineLogger();
    JaCoCoTestwiseReportGenerator generator = new JaCoCoTestwiseReportGenerator(arguments.getClassDirectoriesOrZips(), getWildcardIncludeExcludeFilter(), arguments.getDuplicateClassFileBehavior(), logger);
    TestInfoFactory testInfoFactory = new TestInfoFactory(testDetails, testExecutions);
    try (Benchmark benchmark = new Benchmark("Generating the testwise coverage report")) {
        logger.info("Writing report with " + testDetails.size() + " Details/" + testExecutions.size() + " Results");
        try (TestwiseCoverageReportWriter coverageWriter = new TestwiseCoverageReportWriter(testInfoFactory, arguments.getOutputFile(), arguments.getSplitAfter())) {
            for (File executionDataFile : jacocoExecutionDataList) {
                generator.convertAndConsume(executionDataFile, coverageWriter);
            }
        }
    }
}
Also used : TestInfoFactory(com.teamscale.report.testwise.model.factory.TestInfoFactory) TestExecution(com.teamscale.report.testwise.model.TestExecution) Benchmark(com.teamscale.jacoco.agent.util.Benchmark) ILogger(com.teamscale.report.util.ILogger) TestDetails(com.teamscale.client.TestDetails) File(java.io.File) CommandLineLogger(com.teamscale.report.util.CommandLineLogger) TestwiseCoverageReportWriter(com.teamscale.report.testwise.TestwiseCoverageReportWriter) JaCoCoTestwiseReportGenerator(com.teamscale.report.testwise.jacoco.JaCoCoTestwiseReportGenerator)

Example 17 with TestExecution

use of com.teamscale.report.testwise.model.TestExecution in project teamscale-jacoco-agent by cqse.

the class InternalImpactedTestEngine method runTestExecutor.

private void runTestExecutor(ExecutionRequest request) {
    List<TestDetails> availableTests = new ArrayList<>();
    List<TestExecution> testExecutions = new ArrayList<>();
    for (TestDescriptor engineTestDescriptor : request.getRootTestDescriptor().getChildren()) {
        Optional<String> engineId = engineTestDescriptor.getUniqueId().getEngineId();
        if (!engineId.isPresent()) {
            LOGGER.error(() -> "Engine id for test descriptor " + engineTestDescriptor + " not present. Skipping execution of the engine.");
            continue;
        }
        TestEngine testEngine = testEngineRegistry.getTestEngine(engineId.get());
        AvailableTests availableTestsForEngine = TestDescriptorUtils.getAvailableTests(testEngine, engineTestDescriptor);
        TestExecutorRequest testExecutorRequest = new TestExecutorRequest(testEngine, engineTestDescriptor, request.getEngineExecutionListener(), request.getConfigurationParameters());
        List<TestExecution> testExecutionsOfEngine = testExecutor.execute(testExecutorRequest);
        testExecutions.addAll(testExecutionsOfEngine);
        availableTests.addAll(availableTestsForEngine.getTestList());
    }
    testDataWriter.dumpTestDetails(availableTests);
    testDataWriter.dumpTestExecutions(testExecutions);
}
Also used : AvailableTests(com.teamscale.test_impacted.engine.executor.AvailableTests) TestExecution(com.teamscale.report.testwise.model.TestExecution) ArrayList(java.util.ArrayList) TestExecutorRequest(com.teamscale.test_impacted.engine.executor.TestExecutorRequest) TestEngine(org.junit.platform.engine.TestEngine) TestDetails(com.teamscale.client.TestDetails) TestDescriptor(org.junit.platform.engine.TestDescriptor)

Example 18 with TestExecution

use of com.teamscale.report.testwise.model.TestExecution in project teamscale-jacoco-agent by cqse.

the class TestwiseCoverageAgent method getTestExecution.

/**
 * Extracts a test execution object from the body if one is given.
 */
private Optional<TestExecution> getTestExecution(String testId, String body) {
    if (body.isEmpty()) {
        return Optional.empty();
    }
    try {
        TestExecution testExecution = testExecutionJsonAdapter.fromJson(body);
        if (testExecution == null) {
            logger.error("Given request body for /test/end deserialized to null: " + body);
            return Optional.empty();
        }
        testExecution.setUniformPath(testId);
        return Optional.of(testExecution);
    } catch (IOException e) {
        logger.error("Failed to store test execution: " + e.getMessage(), e);
        return Optional.empty();
    }
}
Also used : TestExecution(com.teamscale.report.testwise.model.TestExecution) IOException(java.io.IOException)

Aggregations

TestExecution (com.teamscale.report.testwise.model.TestExecution)18 TestDetails (com.teamscale.client.TestDetails)6 Test (org.junit.jupiter.api.Test)6 ArrayList (java.util.ArrayList)4 TestDescriptor (org.junit.platform.engine.TestDescriptor)4 File (java.io.File)3 UniqueId (org.junit.platform.engine.UniqueId)3 PrioritizableTest (com.teamscale.client.PrioritizableTest)2 PrioritizableTestCluster (com.teamscale.client.PrioritizableTestCluster)2 AgentOptions (com.teamscale.jacoco.agent.options.AgentOptions)2 TestwiseCoverage (com.teamscale.report.testwise.model.TestwiseCoverage)2 TestInfoBuilder (com.teamscale.report.testwise.model.builder.TestInfoBuilder)2 IOException (java.io.IOException)2 Path (java.nio.file.Path)2 ResponseBody (okhttp3.ResponseBody)2 JsonDataException (com.squareup.moshi.JsonDataException)1 ClusteredTestDetails (com.teamscale.client.ClusteredTestDetails)1 JacocoRuntimeController (com.teamscale.jacoco.agent.JacocoRuntimeController)1 Benchmark (com.teamscale.jacoco.agent.util.Benchmark)1 TestwiseCoverageReportWriter (com.teamscale.report.testwise.TestwiseCoverageReportWriter)1