Search in sources :

Example 21 with CeTask

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

the class IssueSyncTaskProcessorTest method newContainerPopulator.

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

Example 22 with CeTask

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

the class CeWorkerImplTest method display_start_at_debug_level_stop_at_error_level_for_console_if_DEBUG_is_enabled_and_task_failed.

@Test
public void display_start_at_debug_level_stop_at_error_level_for_console_if_DEBUG_is_enabled_and_task_failed() throws Exception {
    logTester.setLevel(LoggerLevel.DEBUG);
    CeTask ceTask = createCeTask(submitter);
    when(queue.peek(anyString(), anyBoolean())).thenReturn(Optional.of(ceTask));
    taskProcessorRepository.setProcessorForTask(CeTaskTypes.REPORT, taskProcessor);
    makeTaskProcessorFail(ceTask);
    underTest.call();
    verifyWorkerUuid();
    List<String> logs = logTester.logs(LoggerLevel.INFO);
    assertThat(logs).hasSize(2);
    assertThat(logs.get(0)).contains(" | submitter=" + submitter.getLogin());
    assertThat(logs.get(1)).contains(String.format(" | submitter=%s | status=FAILED | time=", submitter.getLogin()));
    logs = logTester.logs(LoggerLevel.ERROR);
    assertThat(logs).hasSize(1);
    assertThat(logs.iterator().next()).isEqualTo("Failed to execute task " + ceTask.getUuid());
    assertThat(logTester.logs(LoggerLevel.DEBUG)).isEmpty();
}
Also used : ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) CeTask(org.sonar.ce.task.CeTask) Test(org.junit.Test)

Example 23 with CeTask

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

the class CeWorkerImplTest method isExecutedBy_returns_false_unless_a_thread_is_currently_calling_call.

@Test
public void isExecutedBy_returns_false_unless_a_thread_is_currently_calling_call() throws InterruptedException {
    CountDownLatch inCallLatch = new CountDownLatch(1);
    CountDownLatch assertionsDoneLatch = new CountDownLatch(1);
    // mock long running peek(String) call => Thread is executing call() but not running a task
    when(queue.peek(anyString(), anyBoolean())).thenAnswer((Answer<Optional<CeTask>>) invocation -> {
        inCallLatch.countDown();
        try {
            assertionsDoneLatch.await(10, TimeUnit.SECONDS);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        return Optional.empty();
    });
    Thread t = callCallInNewThread(underTest);
    try {
        t.start();
        inCallLatch.await(10, TimeUnit.SECONDS);
        assertThat(underTest.isExecutedBy(Thread.currentThread())).isFalse();
        assertThat(underTest.isExecutedBy(new Thread())).isFalse();
        assertThat(underTest.isExecutedBy(t)).isTrue();
    } finally {
        assertionsDoneLatch.countDown();
        t.join();
    }
    assertThat(underTest.isExecutedBy(Thread.currentThread())).isFalse();
    assertThat(underTest.isExecutedBy(new Thread())).isFalse();
    assertThat(underTest.isExecutedBy(t)).isFalse();
}
Also used : CeTaskTypes(org.sonar.db.ce.CeTaskTypes) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) TASK_PROCESSED(org.sonar.ce.taskprocessor.CeWorker.Result.TASK_PROCESSED) Random(java.util.Random) DbSession(org.sonar.db.DbSession) Mockito.doThrow(org.mockito.Mockito.doThrow) Map(java.util.Map) MessageException(org.sonar.api.utils.MessageException) CeTaskProcessor(org.sonar.ce.task.taskprocessor.CeTaskProcessor) DbTester(org.sonar.db.DbTester) System2(org.sonar.api.utils.System2) DISABLED(org.sonar.ce.taskprocessor.CeWorker.Result.DISABLED) Mockito.atLeastOnce(org.mockito.Mockito.atLeastOnce) Set(java.util.Set) UUID(java.util.UUID) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) Mockito.inOrder(org.mockito.Mockito.inOrder) Optional(java.util.Optional) NO_TASK(org.sonar.ce.taskprocessor.CeWorker.Result.NO_TASK) UserTesting(org.sonar.db.user.UserTesting) LoggerLevel(org.sonar.api.utils.log.LoggerLevel) Mockito.mock(org.mockito.Mockito.mock) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) UserDto(org.sonar.db.user.UserDto) HashMap(java.util.HashMap) ArgumentMatchers.anyBoolean(org.mockito.ArgumentMatchers.anyBoolean) TestSystem2(org.sonar.api.impl.utils.TestSystem2) Mockito.verifyZeroInteractions(org.mockito.Mockito.verifyZeroInteractions) Answer(org.mockito.stubbing.Answer) CeActivityDto(org.sonar.db.ce.CeActivityDto) ArgumentCaptor(org.mockito.ArgumentCaptor) Assertions.assertThatThrownBy(org.assertj.core.api.Assertions.assertThatThrownBy) CeTask(org.sonar.ce.task.CeTask) InternalCeQueue(org.sonar.ce.queue.InternalCeQueue) Nullable(javax.annotation.Nullable) Before(org.junit.Before) ArgumentMatchers.isNull(org.mockito.ArgumentMatchers.isNull) InOrder(org.mockito.InOrder) CeTaskResult(org.sonar.ce.task.CeTaskResult) RandomStringUtils.randomAlphabetic(org.apache.commons.lang.RandomStringUtils.randomAlphabetic) ReportTaskProcessor(org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor) Test(org.junit.Test) Mockito.times(org.mockito.Mockito.times) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) TimeUnit(java.util.concurrent.TimeUnit) Rule(org.junit.Rule) LogTester(org.sonar.api.utils.log.LogTester) LogAndArguments(org.sonar.api.utils.log.LogAndArguments) CheckForNull(javax.annotation.CheckForNull) Mockito.reset(org.mockito.Mockito.reset) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Optional(java.util.Optional) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 24 with CeTask

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

the class CeWorkerImplTest method do_no_log_error_when_task_fails_with_MessageException.

@Test
public void do_no_log_error_when_task_fails_with_MessageException() throws Exception {
    CeTask ceTask = createCeTask(submitter);
    when(queue.peek(anyString(), anyBoolean())).thenReturn(Optional.of(ceTask));
    taskProcessorRepository.setProcessorForTask(CeTaskTypes.REPORT, taskProcessor);
    makeTaskProcessorFail(ceTask, MessageException.of("simulate MessageException thrown by TaskProcessor#process"));
    underTest.call();
    List<String> logs = logTester.logs(LoggerLevel.INFO);
    assertThat(logs).hasSize(2);
    assertThat(logs.get(1)).contains(" | submitter=" + submitter.getLogin());
    assertThat(logs.get(1)).contains(String.format(" | submitter=%s | status=FAILED | time=", submitter.getLogin()));
    assertThat(logTester.logs(LoggerLevel.ERROR)).isEmpty();
}
Also used : ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) CeTask(org.sonar.ce.task.CeTask) Test(org.junit.Test)

Example 25 with CeTask

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

the class CeWorkerImplTest method getCurrentTask_returns_empty_when_a_thread_is_currently_calling_call_but_not_executing_a_task.

@Test
public void getCurrentTask_returns_empty_when_a_thread_is_currently_calling_call_but_not_executing_a_task() throws InterruptedException {
    CountDownLatch inCallLatch = new CountDownLatch(1);
    CountDownLatch assertionsDoneLatch = new CountDownLatch(1);
    // mock long running peek(String) call => Thread is executing call() but not running a task
    when(queue.peek(anyString(), anyBoolean())).thenAnswer((Answer<Optional<CeTask>>) invocation -> {
        inCallLatch.countDown();
        try {
            assertionsDoneLatch.await(10, TimeUnit.SECONDS);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        return Optional.empty();
    });
    Thread t = callCallInNewThread(underTest);
    try {
        t.start();
        inCallLatch.await(10, TimeUnit.SECONDS);
        assertThat(underTest.getCurrentTask()).isEmpty();
    } finally {
        assertionsDoneLatch.countDown();
        t.join();
    }
    assertThat(underTest.getCurrentTask()).isEmpty();
}
Also used : CeTaskTypes(org.sonar.db.ce.CeTaskTypes) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) TASK_PROCESSED(org.sonar.ce.taskprocessor.CeWorker.Result.TASK_PROCESSED) Random(java.util.Random) DbSession(org.sonar.db.DbSession) Mockito.doThrow(org.mockito.Mockito.doThrow) Map(java.util.Map) MessageException(org.sonar.api.utils.MessageException) CeTaskProcessor(org.sonar.ce.task.taskprocessor.CeTaskProcessor) DbTester(org.sonar.db.DbTester) System2(org.sonar.api.utils.System2) DISABLED(org.sonar.ce.taskprocessor.CeWorker.Result.DISABLED) Mockito.atLeastOnce(org.mockito.Mockito.atLeastOnce) Set(java.util.Set) UUID(java.util.UUID) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) Mockito.inOrder(org.mockito.Mockito.inOrder) Optional(java.util.Optional) NO_TASK(org.sonar.ce.taskprocessor.CeWorker.Result.NO_TASK) UserTesting(org.sonar.db.user.UserTesting) LoggerLevel(org.sonar.api.utils.log.LoggerLevel) Mockito.mock(org.mockito.Mockito.mock) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) UserDto(org.sonar.db.user.UserDto) HashMap(java.util.HashMap) ArgumentMatchers.anyBoolean(org.mockito.ArgumentMatchers.anyBoolean) TestSystem2(org.sonar.api.impl.utils.TestSystem2) Mockito.verifyZeroInteractions(org.mockito.Mockito.verifyZeroInteractions) Answer(org.mockito.stubbing.Answer) CeActivityDto(org.sonar.db.ce.CeActivityDto) ArgumentCaptor(org.mockito.ArgumentCaptor) Assertions.assertThatThrownBy(org.assertj.core.api.Assertions.assertThatThrownBy) CeTask(org.sonar.ce.task.CeTask) InternalCeQueue(org.sonar.ce.queue.InternalCeQueue) Nullable(javax.annotation.Nullable) Before(org.junit.Before) ArgumentMatchers.isNull(org.mockito.ArgumentMatchers.isNull) InOrder(org.mockito.InOrder) CeTaskResult(org.sonar.ce.task.CeTaskResult) RandomStringUtils.randomAlphabetic(org.apache.commons.lang.RandomStringUtils.randomAlphabetic) ReportTaskProcessor(org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor) Test(org.junit.Test) Mockito.times(org.mockito.Mockito.times) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) TimeUnit(java.util.concurrent.TimeUnit) Rule(org.junit.Rule) LogTester(org.sonar.api.utils.log.LogTester) LogAndArguments(org.sonar.api.utils.log.LogAndArguments) CheckForNull(javax.annotation.CheckForNull) Mockito.reset(org.mockito.Mockito.reset) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Optional(java.util.Optional) CountDownLatch(java.util.concurrent.CountDownLatch) 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