Search in sources :

Example 1 with PrioritizableTestCluster

use of com.teamscale.client.PrioritizableTestCluster in project teamscale-jacoco-agent by cqse.

the class CoverageToTeamscaleStrategyTest method testValidCallSequence.

@Test
public void testValidCallSequence() throws Exception {
    List<PrioritizableTestCluster> clusters = Collections.singletonList(new PrioritizableTestCluster("cluster", Collections.singletonList(new PrioritizableTest("mytest"))));
    when(client.getImpactedTests(any(), any(), any(), any(), anyBoolean(), anyBoolean(), anyBoolean())).thenReturn(Response.success(clusters));
    TestwiseCoverage testwiseCoverage = getDummyTestwiseCoverage("mytest");
    when(reportGenerator.convert(any(File.class))).thenReturn(testwiseCoverage);
    AgentOptions options = mockOptions();
    JacocoRuntimeController controller = mock(JacocoRuntimeController.class);
    CoverageToTeamscaleStrategy strategy = new CoverageToTeamscaleStrategy(controller, options, reportGenerator);
    strategy.testRunStart(Collections.singletonList(new ClusteredTestDetails("mytest", "mytest", "content", "cluster")), false, true, true, null);
    strategy.testStart("mytest");
    strategy.testEnd("mytest", new TestExecution("mytest", 0L, ETestExecutionResult.PASSED));
    strategy.testRunEnd();
    verify(client).uploadReport(eq(EReportFormat.TESTWISE_COVERAGE), matches("\\Q{\"tests\":[{\"content\":\"content\",\"duration\":\\E[^,]*\\Q,\"paths\":[{\"files\":[{\"coveredLines\":\"1-4\",\"fileName\":\"Main.java\"}],\"path\":\"src/main/java\"}],\"result\":\"PASSED\",\"sourcePath\":\"mytest\",\"uniformPath\":\"mytest\"}]}\\E"), any(), any(), any(), any());
}
Also used : TestwiseCoverage(com.teamscale.report.testwise.model.TestwiseCoverage) ClusteredTestDetails(com.teamscale.client.ClusteredTestDetails) JacocoRuntimeController(com.teamscale.jacoco.agent.JacocoRuntimeController) TestExecution(com.teamscale.report.testwise.model.TestExecution) PrioritizableTestCluster(com.teamscale.client.PrioritizableTestCluster) File(java.io.File) AgentOptions(com.teamscale.jacoco.agent.options.AgentOptions) PrioritizableTest(com.teamscale.client.PrioritizableTest) PrioritizableTest(com.teamscale.client.PrioritizableTest) Test(org.junit.jupiter.api.Test)

Example 2 with PrioritizableTestCluster

use of com.teamscale.client.PrioritizableTestCluster in project teamscale-jacoco-agent by cqse.

the class TestwiseCoverageAgentTest method testAccessViaTiaClientAndReportUploadToTeamscale.

@Test
public void testAccessViaTiaClientAndReportUploadToTeamscale() throws Exception {
    List<ClusteredTestDetails> availableTests = Arrays.asList(new ClusteredTestDetails("test1", "test1", "content", "cluster"), new ClusteredTestDetails("test2", "test2", "content", "cluster"));
    List<PrioritizableTestCluster> impactedClusters = Collections.singletonList(new PrioritizableTestCluster("cluster", Collections.singletonList(new PrioritizableTest("test2"))));
    when(client.getImpactedTests(any(), any(), any(), any(), anyBoolean(), anyBoolean(), anyBoolean())).thenReturn(Response.success(impactedClusters));
    when(reportGenerator.convert(any(File.class))).thenReturn(CoverageToTeamscaleStrategyTest.getDummyTestwiseCoverage("test2"));
    int port = PORT_COUNTER.incrementAndGet();
    AgentOptions options = mockOptions(port);
    when(options.createTempFile(any(), any())).thenReturn(new File(tempDir, "test"));
    new TestwiseCoverageAgent(options, null, reportGenerator);
    TiaAgent agent = new TiaAgent(false, HttpUrl.get("http://localhost:" + port));
    TestRunWithClusteredSuggestions testRun = agent.startTestRun(availableTests);
    assertThat(testRun.getPrioritizedClusters()).hasSize(1);
    assertThat(testRun.getPrioritizedClusters().get(0).tests).hasSize(1);
    PrioritizableTest test = testRun.getPrioritizedClusters().get(0).tests.get(0);
    assertThat(test.uniformPath).isEqualTo("test2");
    RunningTest runningTest = testRun.startTest(test.uniformPath);
    runningTest.endTest(new TestRun.TestResultWithMessage(ETestExecutionResult.PASSED, "message"));
    testRun.endTestRun();
    verify(client).uploadReport(eq(EReportFormat.TESTWISE_COVERAGE), matches("\\Q{\"tests\":[{\"content\":\"content\",\"paths\":[],\"sourcePath\":\"test1\",\"uniformPath\":\"test1\"},{\"content\":\"content\",\"duration\":\\E[^,]*\\Q,\"message\":\"message\",\"paths\":[{\"files\":[{\"coveredLines\":\"1-4\",\"fileName\":\"Main.java\"}],\"path\":\"src/main/java\"}],\"result\":\"PASSED\",\"sourcePath\":\"test2\",\"uniformPath\":\"test2\"}]}\\E"), any(), any(), any(), any());
}
Also used : RunningTest(com.teamscale.tia.client.RunningTest) ClusteredTestDetails(com.teamscale.client.ClusteredTestDetails) TiaAgent(com.teamscale.tia.client.TiaAgent) TestRunWithClusteredSuggestions(com.teamscale.tia.client.TestRunWithClusteredSuggestions) PrioritizableTestCluster(com.teamscale.client.PrioritizableTestCluster) PrioritizableTest(com.teamscale.client.PrioritizableTest) TestRun(com.teamscale.tia.client.TestRun) File(java.io.File) AgentOptions(com.teamscale.jacoco.agent.options.AgentOptions) PrioritizableTest(com.teamscale.client.PrioritizableTest) Test(org.junit.jupiter.api.Test) RunningTest(com.teamscale.tia.client.RunningTest)

Example 3 with PrioritizableTestCluster

use of com.teamscale.client.PrioritizableTestCluster in project teamscale-jacoco-agent by cqse.

the class ImpactedTestsExecutor method execute.

@Override
public List<TestExecution> execute(TestExecutorRequest executorRequest) {
    AvailableTests availableTestDetails = TestDescriptorUtils.getAvailableTests(executorRequest.testEngine, executorRequest.engineTestDescriptor);
    List<PrioritizableTestCluster> testClusters = impactedTestsProvider.getImpactedTestsFromTeamscale(availableTestDetails.getTestList());
    if (testClusters == null) {
        LOGGER.debug(() -> "Falling back to execute all!");
        return super.execute(executorRequest);
    }
    AutoSkippingEngineExecutionListener executionListener = new AutoSkippingEngineExecutionListener(getImpactedTestUniqueIds(availableTestDetails, testClusters), executorRequest.engineExecutionListener, executorRequest.engineTestDescriptor);
    List<TestExecution> testExecutions = new ArrayList<>();
    LOGGER.debug(() -> "Re-discovering tests for delegate engine " + executorRequest.testEngine.getId());
    for (PrioritizableTestCluster testCluster : testClusters) {
        Set<UniqueId> uniqueIdsOfTestsToExecute = availableTestDetails.convertToUniqueIds(testCluster.tests);
        UniqueIdsDiscoveryRequest engineDiscoveryRequest = new UniqueIdsDiscoveryRequest(uniqueIdsOfTestsToExecute, executorRequest.configurationParameters);
        TestDescriptor testDescriptor = executorRequest.testEngine.discover(engineDiscoveryRequest, UniqueId.forEngine(executorRequest.testEngine.getId()));
        TestExecutorRequest impactedExecutorRequest = new TestExecutorRequest(executorRequest.testEngine, testDescriptor, executionListener, executorRequest.configurationParameters);
        List<TestExecution> testExecutionsForCluster = super.execute(impactedExecutorRequest);
        testExecutions.addAll(testExecutionsForCluster);
    }
    return testExecutions;
}
Also used : UniqueId(org.junit.platform.engine.UniqueId) TestExecution(com.teamscale.report.testwise.model.TestExecution) ArrayList(java.util.ArrayList) PrioritizableTestCluster(com.teamscale.client.PrioritizableTestCluster) TestDescriptor(org.junit.platform.engine.TestDescriptor)

Example 4 with PrioritizableTestCluster

use of com.teamscale.client.PrioritizableTestCluster in project teamscale-jacoco-agent by cqse.

the class TestwiseCoverageAgentTest method shouldHandleMissingRequestBodyForTestrunStartGracefully.

@Test
public void shouldHandleMissingRequestBodyForTestrunStartGracefully() throws Exception {
    List<PrioritizableTestCluster> impactedClusters = Collections.singletonList(new PrioritizableTestCluster("cluster", Collections.singletonList(new PrioritizableTest("test2"))));
    when(client.getImpactedTests(any(), any(), any(), any(), anyBoolean(), anyBoolean(), anyBoolean())).thenReturn(Response.success(impactedClusters));
    int port = PORT_COUNTER.incrementAndGet();
    new TestwiseCoverageAgent(mockOptions(port), null, reportGenerator);
    ITestwiseCoverageAgentApiWithoutBody api = new Retrofit.Builder().addConverterFactory(MoshiConverterFactory.create()).baseUrl("http://localhost:" + port).build().create(ITestwiseCoverageAgentApiWithoutBody.class);
    Response<List<PrioritizableTestCluster>> response = api.testRunStarted(false, null).execute();
    assertThat(response.isSuccessful()).describedAs(response.toString()).isTrue();
    List<PrioritizableTestCluster> tests = response.body();
    assertThat(tests).isNotNull().hasSize(1);
    assertThat(tests.get(0).tests).hasSize(1);
}
Also used : PrioritizableTestCluster(com.teamscale.client.PrioritizableTestCluster) List(java.util.List) PrioritizableTest(com.teamscale.client.PrioritizableTest) PrioritizableTest(com.teamscale.client.PrioritizableTest) Test(org.junit.jupiter.api.Test) RunningTest(com.teamscale.tia.client.RunningTest)

Aggregations

PrioritizableTestCluster (com.teamscale.client.PrioritizableTestCluster)4 PrioritizableTest (com.teamscale.client.PrioritizableTest)3 Test (org.junit.jupiter.api.Test)3 ClusteredTestDetails (com.teamscale.client.ClusteredTestDetails)2 AgentOptions (com.teamscale.jacoco.agent.options.AgentOptions)2 TestExecution (com.teamscale.report.testwise.model.TestExecution)2 RunningTest (com.teamscale.tia.client.RunningTest)2 File (java.io.File)2 JacocoRuntimeController (com.teamscale.jacoco.agent.JacocoRuntimeController)1 TestwiseCoverage (com.teamscale.report.testwise.model.TestwiseCoverage)1 TestRun (com.teamscale.tia.client.TestRun)1 TestRunWithClusteredSuggestions (com.teamscale.tia.client.TestRunWithClusteredSuggestions)1 TiaAgent (com.teamscale.tia.client.TiaAgent)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 TestDescriptor (org.junit.platform.engine.TestDescriptor)1 UniqueId (org.junit.platform.engine.UniqueId)1