Search in sources :

Example 16 with CeTask

use of org.sonar.ce.task.CeTask in project sonarqube by SonarSource.

the class LoadReportAnalysisMetadataHolderStepTest method setUp.

@Before
public void setUp() {
    CeTask defaultOrgCeTask = createCeTask(PROJECT_KEY);
    underTest = createStep(defaultOrgCeTask);
    project = db.components().insertPublicProject(p -> p.setDbKey(PROJECT_KEY));
}
Also used : Plugin(org.sonar.api.Plugin) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) RunWith(org.junit.runner.RunWith) BranchLoader(org.sonar.ce.task.projectanalysis.component.BranchLoader) HashMap(java.util.HashMap) ScannerReport(org.sonar.scanner.protocol.output.ScannerReport) DataProviderRunner(com.tngtech.java.junit.dataprovider.DataProviderRunner) PluginInfo(org.sonar.core.platform.PluginInfo) ScannerPlugin(org.sonar.ce.task.projectanalysis.analysis.ScannerPlugin) ComputationStep(org.sonar.ce.task.step.ComputationStep) Assertions.assertThatThrownBy(org.assertj.core.api.Assertions.assertThatThrownBy) CeTask(org.sonar.ce.task.CeTask) Map(java.util.Map) MessageException(org.sonar.api.utils.MessageException) Assertions(org.assertj.core.api.Assertions) BatchReportReaderRule(org.sonar.ce.task.projectanalysis.batch.BatchReportReaderRule) Before(org.junit.Before) DbTester(org.sonar.db.DbTester) System2(org.sonar.api.utils.System2) Assertions.tuple(org.assertj.core.api.Assertions.tuple) Collection(java.util.Collection) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) PluginRepository(org.sonar.core.platform.PluginRepository) MutableAnalysisMetadataHolderRule(org.sonar.ce.task.projectanalysis.analysis.MutableAnalysisMetadataHolderRule) DbClient(org.sonar.db.DbClient) ComponentDto(org.sonar.db.component.ComponentDto) Rule(org.junit.Rule) TestComputationStepContext(org.sonar.ce.task.step.TestComputationStepContext) Optional(java.util.Optional) Arrays.stream(java.util.Arrays.stream) Project(org.sonar.server.project.Project) Mockito.mock(org.mockito.Mockito.mock) CeTask(org.sonar.ce.task.CeTask) Before(org.junit.Before)

Example 17 with CeTask

use of org.sonar.ce.task.CeTask in project sonarqube by SonarSource.

the class LoadReportAnalysisMetadataHolderStepTest method execute_fails_with_ISE_if_component_is_null_in_CE_task.

@Test
public void execute_fails_with_ISE_if_component_is_null_in_CE_task() {
    CeTask res = mock(CeTask.class);
    when(res.getComponent()).thenReturn(Optional.empty());
    reportReader.setMetadata(ScannerReport.Metadata.newBuilder().build());
    ComputationStep underTest = createStep(res);
    assertThatThrownBy(() -> underTest.execute(new TestComputationStepContext())).isInstanceOf(IllegalStateException.class).hasMessage("component missing on ce task");
}
Also used : ComputationStep(org.sonar.ce.task.step.ComputationStep) CeTask(org.sonar.ce.task.CeTask) TestComputationStepContext(org.sonar.ce.task.step.TestComputationStepContext) Test(org.junit.Test)

Example 18 with CeTask

use of org.sonar.ce.task.CeTask in project sonarqube by SonarSource.

the class ReportAnalysisFailureNotificationExecutionListener method onEnd.

@Override
public void onEnd(CeTask ceTask, CeActivityDto.Status status, Duration duration, @Nullable CeTaskResult taskResult, @Nullable Throwable error) {
    if (status == CeActivityDto.Status.SUCCESS) {
        return;
    }
    String projectUuid = ceTask.getComponent().map(CeTask.Component::getUuid).orElse(null);
    if (!CeTaskTypes.REPORT.equals(ceTask.getType()) || projectUuid == null) {
        return;
    }
    if (notificationService.hasProjectSubscribersForTypes(projectUuid, singleton(ReportAnalysisFailureNotification.class))) {
        try (DbSession dbSession = dbClient.openSession(false)) {
            ComponentDto projectDto = dbClient.componentDao().selectOrFailByUuid(dbSession, projectUuid);
            checkScopeAndQualifier(projectDto);
            CeActivityDto ceActivityDto = dbClient.ceActivityDao().selectByUuid(dbSession, ceTask.getUuid()).orElseThrow(() -> new RowNotFoundException(format("CeActivity with uuid '%s' not found", ceTask.getUuid())));
            ReportAnalysisFailureNotificationBuilder taskFailureNotification = buildNotification(ceActivityDto, projectDto, error);
            ReportAnalysisFailureNotification notification = taskFailureNotificationSerializer.toNotification(taskFailureNotification);
            notificationService.deliverEmails(singleton(notification));
            // compatibility with old API
            notificationService.deliver(notification);
        }
    }
}
Also used : DbSession(org.sonar.db.DbSession) ReportAnalysisFailureNotificationBuilder(org.sonar.ce.task.projectanalysis.notification.ReportAnalysisFailureNotificationBuilder) CeActivityDto(org.sonar.db.ce.CeActivityDto) RowNotFoundException(org.sonar.db.RowNotFoundException) ComponentDto(org.sonar.db.component.ComponentDto) CeTask(org.sonar.ce.task.CeTask) ReportAnalysisFailureNotification(org.sonar.ce.task.projectanalysis.notification.ReportAnalysisFailureNotification)

Example 19 with CeTask

use of org.sonar.ce.task.CeTask in project sonarqube by SonarSource.

the class InternalCeQueueImpl method peek.

@Override
public Optional<CeTask> peek(String workerUuid, boolean excludeIndexationJob) {
    requireNonNull(workerUuid, "workerUuid can't be null");
    if (computeEngineStatus.getStatus() != ComputeEngineStatus.Status.STARTED || getWorkersPauseStatus() != WorkersPauseStatus.RESUMED) {
        return Optional.empty();
    }
    try (DbSession dbSession = dbClient.openSession(false)) {
        CeQueueDao ceQueueDao = dbClient.ceQueueDao();
        int i = ceQueueDao.resetToPendingForWorker(dbSession, workerUuid);
        if (i > 0) {
            dbSession.commit();
            LOG.debug("{} in progress tasks reset for worker uuid {}", i, workerUuid);
        }
        Optional<CeQueueDto> opt = findPendingTask(workerUuid, dbSession, ceQueueDao, excludeIndexationJob);
        if (!opt.isPresent()) {
            return Optional.empty();
        }
        CeQueueDto taskDto = opt.get();
        Map<String, ComponentDto> componentsByUuid = loadComponentDtos(dbSession, taskDto);
        Map<String, String> characteristics = dbClient.ceTaskCharacteristicsDao().selectByTaskUuids(dbSession, singletonList(taskDto.getUuid())).stream().collect(uniqueIndex(CeTaskCharacteristicDto::getKey, CeTaskCharacteristicDto::getValue));
        CeTask task = convertToTask(dbSession, taskDto, characteristics, ofNullable(taskDto.getComponentUuid()).map(componentsByUuid::get).orElse(null), ofNullable(taskDto.getMainComponentUuid()).map(componentsByUuid::get).orElse(null));
        queueStatus.addInProgress();
        return Optional.of(task);
    }
}
Also used : DbSession(org.sonar.db.DbSession) ComponentDto(org.sonar.db.component.ComponentDto) CeQueueDto(org.sonar.db.ce.CeQueueDto) CeQueueDao(org.sonar.db.ce.CeQueueDao) CeTask(org.sonar.ce.task.CeTask)

Example 20 with CeTask

use of org.sonar.ce.task.CeTask in project sonarqube by SonarSource.

the class AuditPurgeTaskProcessorTest method newContainerPopulator.

@Test
public void newContainerPopulator() {
    CeTask task = new CeTask.Builder().setUuid("TASK_UUID").setType("Type").build();
    AuditPurgeTaskProcessor.newContainerPopulator(task).populateContainer(container);
    Mockito.verify(container, Mockito.times(5)).add(any());
}
Also used : CeTask(org.sonar.ce.task.CeTask) Test(org.junit.Test)

Aggregations

CeTask (org.sonar.ce.task.CeTask)85 Test (org.junit.Test)75 CeQueueDto (org.sonar.db.ce.CeQueueDto)17 CeActivityDto (org.sonar.db.ce.CeActivityDto)16 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)12 ComponentDto (org.sonar.db.component.ComponentDto)12 UserDto (org.sonar.db.user.UserDto)10 MessageException (org.sonar.api.utils.MessageException)7 Optional (java.util.Optional)5 Random (java.util.Random)5 CheckForNull (javax.annotation.CheckForNull)5 System2 (org.sonar.api.utils.System2)5 DbSession (org.sonar.db.DbSession)5 List (java.util.List)4 Map (java.util.Map)4 CountDownLatch (java.util.concurrent.CountDownLatch)4 Nullable (javax.annotation.Nullable)4 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)4 Assertions.assertThatThrownBy (org.assertj.core.api.Assertions.assertThatThrownBy)4 Rule (org.junit.Rule)4