Search in sources :

Example 41 with CeTask

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

the class InternalCeQueueImplTest method test_remove.

@Test
public void test_remove() {
    CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1"));
    Optional<CeTask> peek = underTest.peek(WORKER_UUID_1, true);
    underTest.remove(peek.get(), CeActivityDto.Status.SUCCESS, null, null);
    // queue is empty
    assertThat(db.getDbClient().ceQueueDao().selectByUuid(db.getSession(), task.getUuid())).isNotPresent();
    assertThat(underTest.peek(WORKER_UUID_2, true)).isNotPresent();
    // available in history
    Optional<CeActivityDto> history = db.getDbClient().ceActivityDao().selectByUuid(db.getSession(), task.getUuid());
    assertThat(history).isPresent();
    assertThat(history.get().getStatus()).isEqualTo(CeActivityDto.Status.SUCCESS);
    assertThat(history.get().getIsLast()).isTrue();
    assertThat(history.get().getAnalysisUuid()).isNull();
}
Also used : CeActivityDto(org.sonar.db.ce.CeActivityDto) CeTask(org.sonar.ce.task.CeTask) Test(org.junit.Test)

Example 42 with CeTask

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

the class ExportAction method handle.

@Override
public void handle(Request request, Response response) {
    String projectKey = request.mandatoryParam(PARAMETER_PROJECT_KEY);
    projectDumpWsSupport.verifyAdminOfProjectByKey(projectKey);
    CeTask task = exportSubmitter.submitProjectExport(projectKey, userSession.getUuid());
    try (JsonWriter writer = response.newJsonWriter()) {
        CeTask.Component component = task.getComponent().get();
        writer.beginObject().prop("taskId", task.getUuid()).prop("projectId", component.getUuid()).prop("projectKey", component.getKey().orElse(null)).prop("projectName", component.getName().orElse(null)).endObject().close();
    }
}
Also used : CeTask(org.sonar.ce.task.CeTask) JsonWriter(org.sonar.api.utils.text.JsonWriter)

Example 43 with CeTask

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

the class CancelActionTest method createTaskSubmit.

private CeQueueDto createTaskSubmit(@Nullable ComponentDto componentDto) {
    CeTaskSubmit.Builder submission = queue.prepareSubmit().setType(CeTaskTypes.REPORT).setSubmitterUuid(null).setCharacteristics(emptyMap());
    if (componentDto != null) {
        submission.setComponent(CeTaskSubmit.Component.fromDto(componentDto));
    }
    CeTask task = queue.submit(submission.build());
    return db.getDbClient().ceQueueDao().selectByUuid(db.getSession(), task.getUuid()).get();
}
Also used : CeTaskSubmit(org.sonar.ce.queue.CeTaskSubmit) CeTask(org.sonar.ce.task.CeTask)

Example 44 with CeTask

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

the class CeQueueImpl method massSubmit.

@Override
public List<CeTask> massSubmit(Collection<CeTaskSubmit> submissions, SubmitOption... options) {
    if (submissions.isEmpty()) {
        return Collections.emptyList();
    }
    try (DbSession dbSession = dbClient.openSession(false)) {
        List<CeQueueDto> taskDtos = submissions.stream().filter(filterBySubmitOptions(options, submissions, dbSession)).map(submission -> addToQueueInDb(dbSession, submission)).collect(Collectors.toList());
        List<CeTask> tasks = loadTasks(dbSession, taskDtos);
        dbSession.commit();
        return tasks;
    }
}
Also used : Arrays(java.util.Arrays) UserDto(org.sonar.db.user.UserDto) Optional.of(java.util.Optional.of) DeleteIf(org.sonar.db.ce.DeleteIf) Multimap(com.google.common.collect.Multimap) DbSession(org.sonar.db.DbSession) ArrayList(java.util.ArrayList) Loggers(org.sonar.api.utils.log.Loggers) CeActivityDto(org.sonar.db.ce.CeActivityDto) Collections.singleton(java.util.Collections.singleton) CeTask(org.sonar.ce.task.CeTask) Map(java.util.Map) InternalProperties(org.sonar.server.property.InternalProperties) PENDING(org.sonar.db.ce.CeQueueDto.Status.PENDING) MoreCollectors(org.sonar.core.util.stream.MoreCollectors) CeTaskCharacteristicDto(org.sonar.db.ce.CeTaskCharacteristicDto) EnumSet(java.util.EnumSet) Nullable(javax.annotation.Nullable) Collections.emptyMap(java.util.Collections.emptyMap) IN_PROGRESS(org.sonar.db.ce.CeQueueDto.Status.IN_PROGRESS) System2(org.sonar.api.utils.System2) Predicate(java.util.function.Predicate) Optional.ofNullable(java.util.Optional.ofNullable) Collection(java.util.Collection) UuidFactory(org.sonar.core.util.UuidFactory) Set(java.util.Set) MoreCollectors.toEnumSet(org.sonar.core.util.stream.MoreCollectors.toEnumSet) Collectors(java.util.stream.Collectors) Preconditions.checkState(com.google.common.base.Preconditions.checkState) Objects(java.util.Objects) DbClient(org.sonar.db.DbClient) List(java.util.List) ComponentDto(org.sonar.db.component.ComponentDto) Stream(java.util.stream.Stream) ServerSide(org.sonar.api.server.ServerSide) CeQueueDto(org.sonar.db.ce.CeQueueDto) MoreCollectors.uniqueIndex(org.sonar.core.util.stream.MoreCollectors.uniqueIndex) Optional(java.util.Optional) UNIQUE_QUEUE_PER_MAIN_COMPONENT(org.sonar.ce.queue.CeQueue.SubmitOption.UNIQUE_QUEUE_PER_MAIN_COMPONENT) Collections(java.util.Collections) CheckForNull(javax.annotation.CheckForNull) DbSession(org.sonar.db.DbSession) CeQueueDto(org.sonar.db.ce.CeQueueDto) CeTask(org.sonar.ce.task.CeTask)

Example 45 with CeTask

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

the class CeQueueImplTest method submit_with_UNIQUE_QUEUE_PER_MAIN_COMPONENT_does_not_create_task_when_there_is_one_pending_task_for_same_main_component.

@Test
public void submit_with_UNIQUE_QUEUE_PER_MAIN_COMPONENT_does_not_create_task_when_there_is_one_pending_task_for_same_main_component() {
    String mainComponentUuid = randomAlphabetic(5);
    CeTaskSubmit taskSubmit = createTaskSubmit("with_component", newComponent(mainComponentUuid), null);
    CeQueueDto dto = insertPendingInQueue(newComponent(mainComponentUuid));
    Optional<CeTask> task = underTest.submit(taskSubmit, UNIQUE_QUEUE_PER_MAIN_COMPONENT);
    assertThat(task).isEmpty();
    assertThat(db.getDbClient().ceQueueDao().selectAllInAscOrder(db.getSession())).extracting(CeQueueDto::getUuid).containsOnly(dto.getUuid());
}
Also used : CeQueueDto(org.sonar.db.ce.CeQueueDto) 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