diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2018-09-26 08:58:59 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2018-10-04 20:20:56 +0200 |
commit | 2c540713f9289d8cfd14a65f3b4c3c33a4696e20 (patch) | |
tree | 6f880db9407f37ccaf479cc79a8bf1c777a92b15 /server/sonar-ce | |
parent | e80c0f3d1e5cd459f88b7e0c41a2d9a7519e260f (diff) | |
download | sonarqube-2c540713f9289d8cfd14a65f3b4c3c33a4696e20.tar.gz sonarqube-2c540713f9289d8cfd14a65f3b4c3c33a4696e20.zip |
SONAR-11310 add temporary columns to CE tables
- add main_component_uuid temporary columns to CE_QUEUE
- add main_last_key and main_component_uuid columns to CE_ACTIVITY
- back to initial paradigm in Compute Engine: even for branches/PRs, the row in table PROJECTS a task belongs to is created in api/ce/submit
- add main component concept to CeTask
- improved consistency check when processing a report task to account for row in PROJECTS now being the one of the branche/PR
- stronger validation of characteristics passed to api/ce/submit
- add api/system/migrate_data for SonarCloud online data migration
Diffstat (limited to 'server/sonar-ce')
7 files changed, 89 insertions, 57 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/notification/ReportAnalysisFailureNotificationExecutionListener.java b/server/sonar-ce/src/main/java/org/sonar/ce/notification/ReportAnalysisFailureNotificationExecutionListener.java index db4c94834cc..e414da45fc0 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/notification/ReportAnalysisFailureNotificationExecutionListener.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/notification/ReportAnalysisFailureNotificationExecutionListener.java @@ -64,7 +64,7 @@ public class ReportAnalysisFailureNotificationExecutionListener implements CeWor if (status == CeActivityDto.Status.SUCCESS) { return; } - String projectUuid = ceTask.getComponentUuid(); + String projectUuid = ceTask.getComponent().map(CeTask.Component::getUuid).orElse(null); if (!CeTaskTypes.REPORT.equals(ceTask.getType()) || projectUuid == null) { return; } diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/queue/InternalCeQueueImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/queue/InternalCeQueueImpl.java index 61c801947bc..eb6928877d3 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/queue/InternalCeQueueImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/queue/InternalCeQueueImpl.java @@ -53,6 +53,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static java.lang.String.format; import static java.util.Collections.singletonList; import static java.util.Objects.requireNonNull; +import static java.util.Optional.ofNullable; import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex; @ComputeEngineSide @@ -90,15 +91,13 @@ public class InternalCeQueueImpl extends CeQueueImpl implements InternalCeQueue Optional<CeQueueDto> opt = ceQueueDao.peek(dbSession, workerUuid); if (opt.isPresent()) { CeQueueDto taskDto = opt.get(); - ComponentDto component = null; - String componentUuid = taskDto.getComponentUuid(); - if (componentUuid != null) { - component = dbClient.componentDao().selectByUuid(dbSession, componentUuid).orElse(null); - } + 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(taskDto, characteristics, component); + CeTask task = convertToTask(taskDto, characteristics, + ofNullable(taskDto.getComponentUuid()).map(componentsByUuid::get).orElse(null), + ofNullable(taskDto.getMainComponentUuid()).map(componentsByUuid::get).orElse(null)); queueStatus.addInProgress(); return Optional.of(task); } diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java index e49748b73d9..ba71928c658 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java @@ -180,7 +180,7 @@ public class CeWorkerImpl implements CeWorker { private static Profiler startLogProfiler(CeTask task) { Profiler profiler = Profiler.create(LOG) .logTimeLast(true) - .addContext("project", task.getComponentKey()) + .addContext("project", task.getMainComponent().flatMap(CeTask.Component::getKey).orElse(null)) .addContext("type", task.getType()); for (Map.Entry<String, String> characteristic : task.getCharacteristics().entrySet()) { profiler.addContext(characteristic.getKey(), characteristic.getValue()); diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/notification/ReportAnalysisFailureNotificationExecutionListenerTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/notification/ReportAnalysisFailureNotificationExecutionListenerTest.java index fd341a467dd..69cd2813096 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/notification/ReportAnalysisFailureNotificationExecutionListenerTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/notification/ReportAnalysisFailureNotificationExecutionListenerTest.java @@ -20,6 +20,7 @@ package org.sonar.ce.notification; import java.util.Arrays; +import java.util.Optional; import java.util.Random; import javax.annotation.Nullable; import org.junit.Before; @@ -121,7 +122,7 @@ public class ReportAnalysisFailureNotificationExecutionListenerTest { public void onEnd_has_no_effect_if_there_is_no_subscriber_for_ReportAnalysisFailureNotification_type() { String componentUuid = randomAlphanumeric(6); when(ceTaskMock.getType()).thenReturn(CeTaskTypes.REPORT); - when(ceTaskMock.getComponentUuid()).thenReturn(componentUuid); + when(ceTaskMock.getComponent()).thenReturn(Optional.of(new CeTask.Component(componentUuid, null, null))); when(notificationService.hasProjectSubscribersForTypes(componentUuid, singleton(ReportAnalysisFailureNotification.TYPE))) .thenReturn(false); @@ -134,7 +135,7 @@ public class ReportAnalysisFailureNotificationExecutionListenerTest { public void onEnd_fails_with_RowNotFoundException_if_component_does_not_exist_in_DB() { String componentUuid = randomAlphanumeric(6); when(ceTaskMock.getType()).thenReturn(CeTaskTypes.REPORT); - when(ceTaskMock.getComponentUuid()).thenReturn(componentUuid); + when(ceTaskMock.getComponent()).thenReturn(Optional.of(new CeTask.Component(componentUuid, null, null))); when(notificationService.hasProjectSubscribersForTypes(componentUuid, singleton(ReportAnalysisFailureNotification.TYPE))) .thenReturn(true); @@ -160,7 +161,7 @@ public class ReportAnalysisFailureNotificationExecutionListenerTest { Arrays.asList(module, directory, file, view, subView, projectCopy, application) .forEach(component -> { try { - when(ceTaskMock.getComponentUuid()).thenReturn(component.uuid()); + when(ceTaskMock.getComponent()).thenReturn(Optional.of(new CeTask.Component(component.uuid(), null, null))); when(notificationService.hasProjectSubscribersForTypes(component.uuid(), singleton(ReportAnalysisFailureNotification.TYPE))) .thenReturn(true); @@ -180,7 +181,7 @@ public class ReportAnalysisFailureNotificationExecutionListenerTest { String taskUuid = randomAlphanumeric(6); when(ceTaskMock.getType()).thenReturn(CeTaskTypes.REPORT); when(ceTaskMock.getUuid()).thenReturn(taskUuid); - when(ceTaskMock.getComponentUuid()).thenReturn(componentUuid); + when(ceTaskMock.getComponent()).thenReturn(Optional.of(new CeTask.Component(componentUuid, null, null))); when(notificationService.hasProjectSubscribersForTypes(componentUuid, singleton(ReportAnalysisFailureNotification.TYPE))) .thenReturn(true); dbTester.components().insertPrivateProject(s -> s.setUuid(componentUuid)); @@ -293,7 +294,7 @@ public class ReportAnalysisFailureNotificationExecutionListenerTest { private ComponentDto initMocksToPassConditions(String taskUuid, int createdAt, @Nullable Long executedAt) { ComponentDto project = random.nextBoolean() ? dbTester.components().insertPrivateProject() : dbTester.components().insertPublicProject(); when(ceTaskMock.getType()).thenReturn(CeTaskTypes.REPORT); - when(ceTaskMock.getComponentUuid()).thenReturn(project.uuid()); + when(ceTaskMock.getComponent()).thenReturn(Optional.of(new CeTask.Component(project.uuid(), null, null))); when(ceTaskMock.getUuid()).thenReturn(taskUuid); when(notificationService.hasProjectSubscribersForTypes(project.uuid(), singleton(ReportAnalysisFailureNotification.TYPE))) .thenReturn(true); diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/queue/InternalCeQueueImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/queue/InternalCeQueueImplTest.java index 2b7229ee4d2..82678dd8699 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/queue/InternalCeQueueImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/queue/InternalCeQueueImplTest.java @@ -99,7 +99,7 @@ public class InternalCeQueueImplTest { @Test public void submit_returns_task_populated_from_CeTaskSubmit_and_creates_CeQueue_row() { - CeTaskSubmit taskSubmit = createTaskSubmit(CeTaskTypes.REPORT, "PROJECT_1", "rob"); + CeTaskSubmit taskSubmit = createTaskSubmit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1"), "rob"); CeTask task = underTest.submit(taskSubmit); verifyCeTask(taskSubmit, task, null); @@ -108,8 +108,8 @@ public class InternalCeQueueImplTest { @Test public void submit_populates_component_name_and_key_of_CeTask_if_component_exists() { - ComponentDto componentDto = insertComponent(newComponentDto("PROJECT_1")); - CeTaskSubmit taskSubmit = createTaskSubmit(CeTaskTypes.REPORT, componentDto.uuid(), null); + ComponentDto componentDto = insertComponent(newProjectDto("PROJECT_1")); + CeTaskSubmit taskSubmit = createTaskSubmit(CeTaskTypes.REPORT, componentDto, null); CeTask task = underTest.submit(taskSubmit); @@ -127,7 +127,7 @@ public class InternalCeQueueImplTest { @Test public void massSubmit_returns_tasks_for_each_CeTaskSubmit_populated_from_CeTaskSubmit_and_creates_CeQueue_row_for_each() { - CeTaskSubmit taskSubmit1 = createTaskSubmit(CeTaskTypes.REPORT, "PROJECT_1", "rob"); + CeTaskSubmit taskSubmit1 = createTaskSubmit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1"), "rob"); CeTaskSubmit taskSubmit2 = createTaskSubmit("some type"); List<CeTask> tasks = underTest.massSubmit(asList(taskSubmit1, taskSubmit2)); @@ -141,9 +141,9 @@ public class InternalCeQueueImplTest { @Test public void massSubmit_populates_component_name_and_key_of_CeTask_if_component_exists() { - ComponentDto componentDto1 = insertComponent(newComponentDto("PROJECT_1")); - CeTaskSubmit taskSubmit1 = createTaskSubmit(CeTaskTypes.REPORT, componentDto1.uuid(), null); - CeTaskSubmit taskSubmit2 = createTaskSubmit("something", "non existing component uuid", null); + ComponentDto componentDto1 = insertComponent(newProjectDto("PROJECT_1")); + CeTaskSubmit taskSubmit1 = createTaskSubmit(CeTaskTypes.REPORT, componentDto1, null); + CeTaskSubmit taskSubmit2 = createTaskSubmit("something", newProjectDto("non existing component uuid"), null); List<CeTask> tasks = underTest.massSubmit(asList(taskSubmit1, taskSubmit2)); @@ -162,7 +162,7 @@ public class InternalCeQueueImplTest { @Test public void test_remove() { - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); Optional<CeTask> peek = underTest.peek(WORKER_UUID_1); underTest.remove(peek.get(), CeActivityDto.Status.SUCCESS, null, null); @@ -196,7 +196,7 @@ public class InternalCeQueueImplTest { @Test public void remove_does_not_set_analysisUuid_in_CeActivity_when_CeTaskResult_has_no_analysis_uuid() { - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); Optional<CeTask> peek = underTest.peek(WORKER_UUID_1); underTest.remove(peek.get(), CeActivityDto.Status.SUCCESS, newTaskResult(null), null); @@ -208,7 +208,7 @@ public class InternalCeQueueImplTest { @Test public void remove_sets_analysisUuid_in_CeActivity_when_CeTaskResult_has_analysis_uuid() { - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); Optional<CeTask> peek = underTest.peek(WORKER_UUID_2); underTest.remove(peek.get(), CeActivityDto.Status.SUCCESS, newTaskResult(AN_ANALYSIS_UUID), null); @@ -223,7 +223,7 @@ public class InternalCeQueueImplTest { public void remove_saves_error_message_and_stacktrace_when_exception_is_provided() { Throwable error = new NullPointerException("Fake NPE to test persistence to DB"); - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); Optional<CeTask> peek = underTest.peek(WORKER_UUID_1); underTest.remove(peek.get(), CeActivityDto.Status.FAILED, null, error); @@ -239,7 +239,7 @@ public class InternalCeQueueImplTest { public void remove_saves_error_when_TypedMessageException_is_provided() { Throwable error = new TypedExceptionImpl("aType", "aMessage"); - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); Optional<CeTask> peek = underTest.peek(WORKER_UUID_1); underTest.remove(peek.get(), CeActivityDto.Status.FAILED, null, error); @@ -253,7 +253,7 @@ public class InternalCeQueueImplTest { public void remove_updates_queueStatus_success_even_if_task_does_not_exist_in_DB() { CEQueueStatus queueStatus = mock(CEQueueStatus.class); - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); db.getDbClient().ceQueueDao().deleteByUuid(db.getSession(), task.getUuid()); db.commit(); @@ -271,7 +271,7 @@ public class InternalCeQueueImplTest { public void remove_updates_queueStatus_failure_even_if_task_does_not_exist_in_DB() { CEQueueStatus queueStatusMock = mock(CEQueueStatus.class); - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); db.getDbClient().ceQueueDao().deleteByUuid(db.getSession(), task.getUuid()); db.commit(); InternalCeQueueImpl underTest = new InternalCeQueueImpl(system2, db.getDbClient(), null, queueStatusMock, null, null); @@ -288,7 +288,7 @@ public class InternalCeQueueImplTest { public void cancelWornOuts_does_not_update_queueStatus() { CEQueueStatus queueStatusMock = mock(CEQueueStatus.class); - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); db.executeUpdateSql("update ce_queue set status = 'PENDING', started_at = 123 where uuid = '" + task.getUuid() + "'"); db.commit(); InternalCeQueueImpl underTest = new InternalCeQueueImpl(system2, db.getDbClient(), null, queueStatusMock, null, null); @@ -334,7 +334,7 @@ public class InternalCeQueueImplTest { @Test public void fail_to_remove_if_not_in_queue() { - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); underTest.remove(task, CeActivityDto.Status.SUCCESS, null, null); expectedException.expect(IllegalStateException.class); @@ -344,13 +344,32 @@ public class InternalCeQueueImplTest { @Test public void test_peek() { - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); Optional<CeTask> peek = underTest.peek(WORKER_UUID_1); assertThat(peek.isPresent()).isTrue(); assertThat(peek.get().getUuid()).isEqualTo(task.getUuid()); assertThat(peek.get().getType()).isEqualTo(CeTaskTypes.REPORT); - assertThat(peek.get().getComponentUuid()).isEqualTo("PROJECT_1"); + assertThat(peek.get().getComponent()).contains(new CeTask.Component("PROJECT_1", null, null)); + assertThat(peek.get().getMainComponent()).contains(peek.get().getComponent().get()); + + // no more pending tasks + peek = underTest.peek(WORKER_UUID_2); + assertThat(peek.isPresent()).isFalse(); + } + + @Test + public void peek_populates_name_and_key_for_existing_component_and_main_component() { + ComponentDto project = db.components().insertPrivateProject(); + ComponentDto branch = db.components().insertProjectBranch(project); + CeTask task = submit(CeTaskTypes.REPORT, branch); + + Optional<CeTask> peek = underTest.peek(WORKER_UUID_1); + assertThat(peek.isPresent()).isTrue(); + assertThat(peek.get().getUuid()).isEqualTo(task.getUuid()); + assertThat(peek.get().getType()).isEqualTo(CeTaskTypes.REPORT); + assertThat(peek.get().getComponent()).contains(new CeTask.Component(branch.uuid(), branch.getDbKey(), branch.name())); + assertThat(peek.get().getMainComponent()).contains(new CeTask.Component(project.uuid(), project.getDbKey(), project.name())); // no more pending tasks peek = underTest.peek(WORKER_UUID_2); @@ -359,7 +378,7 @@ public class InternalCeQueueImplTest { @Test public void peek_is_paused_then_resumed() { - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); underTest.pauseWorkers(); Optional<CeTask> peek = underTest.peek(WORKER_UUID_1); @@ -385,7 +404,7 @@ public class InternalCeQueueImplTest { @Test public void peek_nothing_if_application_status_stopping() { - submit(CeTaskTypes.REPORT, "PROJECT_1"); + submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); when(computeEngineStatus.getStatus()).thenReturn(STOPPING); Optional<CeTask> peek = underTest.peek(WORKER_UUID_1); @@ -468,7 +487,7 @@ public class InternalCeQueueImplTest { @Test public void cancel_pending() { - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); CeQueueDto queueDto = db.getDbClient().ceQueueDao().selectByUuid(db.getSession(), task.getUuid()).get(); underTest.cancel(db.getSession(), queueDto); @@ -480,7 +499,7 @@ public class InternalCeQueueImplTest { @Test public void fail_to_cancel_if_in_progress() { - CeTask task = submit(CeTaskTypes.REPORT, "PROJECT_1"); + CeTask task = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); underTest.peek(WORKER_UUID_2); CeQueueDto queueDto = db.getDbClient().ceQueueDao().selectByUuid(db.getSession(), task.getUuid()).get(); @@ -492,9 +511,9 @@ public class InternalCeQueueImplTest { @Test public void cancelAll_pendings_but_not_in_progress() { - CeTask inProgressTask = submit(CeTaskTypes.REPORT, "PROJECT_1"); - CeTask pendingTask1 = submit(CeTaskTypes.REPORT, "PROJECT_2"); - CeTask pendingTask2 = submit(CeTaskTypes.REPORT, "PROJECT_3"); + CeTask inProgressTask = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_1")); + CeTask pendingTask1 = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_2")); + CeTask pendingTask2 = submit(CeTaskTypes.REPORT, newProjectDto("PROJECT_3")); underTest.peek(WORKER_UUID_2); int canceledCount = underTest.cancelAll(); @@ -608,14 +627,16 @@ public class InternalCeQueueImplTest { assertThat(task.getOrganizationUuid()).isEqualTo(componentDto.getOrganizationUuid()); } assertThat(task.getUuid()).isEqualTo(taskSubmit.getUuid()); - assertThat(task.getComponentUuid()).isEqualTo(task.getComponentUuid()); assertThat(task.getType()).isEqualTo(taskSubmit.getType()); - if (componentDto == null) { - assertThat(task.getComponentKey()).isNull(); - assertThat(task.getComponentName()).isNull(); + if (componentDto != null) { + CeTask.Component component = task.getComponent().get(); + assertThat(component.getUuid()).isEqualTo(componentDto.uuid()); + assertThat(component.getKey()).contains(componentDto.getDbKey()); + assertThat(component.getName()).contains(componentDto.name()); + } else if (taskSubmit.getComponent().isPresent()) { + assertThat(task.getComponent()).contains(new CeTask.Component(taskSubmit.getComponent().get().getUuid(), null, null)); } else { - assertThat(task.getComponentKey()).isEqualTo(componentDto.getDbKey()); - assertThat(task.getComponentName()).isEqualTo(componentDto.name()); + assertThat(task.getComponent()).isEmpty(); } assertThat(task.getSubmitterUuid()).isEqualTo(taskSubmit.getSubmitterUuid()); } @@ -625,30 +646,39 @@ public class InternalCeQueueImplTest { assertThat(queueDto.isPresent()).isTrue(); CeQueueDto dto = queueDto.get(); assertThat(dto.getTaskType()).isEqualTo(taskSubmit.getType()); - assertThat(dto.getComponentUuid()).isEqualTo(taskSubmit.getComponentUuid()); + Optional<CeTaskSubmit.Component> component = taskSubmit.getComponent(); + if (component.isPresent()) { + assertThat(dto.getMainComponentUuid()).isEqualTo(component.get().getMainComponentUuid()); + assertThat(dto.getComponentUuid()).isEqualTo(component.get().getUuid()); + } else { + assertThat(dto.getMainComponentUuid()).isNull(); + assertThat(dto.getComponentUuid()).isNull(); + } assertThat(dto.getSubmitterUuid()).isEqualTo(taskSubmit.getSubmitterUuid()); assertThat(dto.getCreatedAt()).isEqualTo(dto.getUpdatedAt()).isNotNull(); } - private ComponentDto newComponentDto(String uuid) { + private ComponentDto newProjectDto(String uuid) { return ComponentTesting.newPublicProjectDto(db.getDefaultOrganization(), uuid).setName("name_" + uuid).setDbKey("key_" + uuid); } - private CeTask submit(String reportType, String componentUuid) { - return underTest.submit(createTaskSubmit(reportType, componentUuid, null)); + private CeTask submit(String reportType, ComponentDto componentDto) { + return underTest.submit(createTaskSubmit(reportType, componentDto, null)); } private CeTaskSubmit createTaskSubmit(String type) { return createTaskSubmit(type, null, null); } - private CeTaskSubmit createTaskSubmit(String type, @Nullable String componentUuid, @Nullable String submitterUuid) { - return underTest.prepareSubmit() + private CeTaskSubmit createTaskSubmit(String type, @Nullable ComponentDto componentDto, @Nullable String submitterUuid) { + CeTaskSubmit.Builder builder = underTest.prepareSubmit() .setType(type) - .setComponentUuid(componentUuid) .setSubmitterUuid(submitterUuid) - .setCharacteristics(emptyMap()) - .build(); + .setCharacteristics(emptyMap()); + if (componentDto != null) { + builder.setComponent(CeTaskSubmit.Component.fromDto(componentDto)); + } + return builder.build(); } private CeTaskResult newTaskResult(@Nullable String analysisUuid) { diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImplTest.java index acd80691712..57524a13fa6 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImplTest.java @@ -107,13 +107,13 @@ public class CeTaskProcessorRepositoryImplTest { } private static CeTask createCeTask(String ceTaskType, String key) { + CeTask.Component component = new CeTask.Component("uuid_" + key, key, "name_" + key); return new CeTask.Builder() .setOrganizationUuid("org1") .setType(ceTaskType) .setUuid("task_uuid_" + key) - .setComponentKey(key) - .setComponentUuid("uuid_" + key) - .setComponentName("name_" + key) + .setComponent(component) + .setMainComponent(component) .build(); } diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeWorkerImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeWorkerImplTest.java index b207eef4556..5a1166a16c6 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeWorkerImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeWorkerImplTest.java @@ -554,10 +554,12 @@ public class CeWorkerImplTest { for (int i = 0; i < characteristics.length; i += 2) { characteristicMap.put(characteristics[i], characteristics[i + 1]); } + CeTask.Component component = new CeTask.Component("PROJECT_1", null, null); return new CeTask.Builder() .setOrganizationUuid("org1") .setUuid("TASK_1").setType(CeTaskTypes.REPORT) - .setComponentUuid("PROJECT_1") + .setComponent(component) + .setMainComponent(component) .setSubmitterUuid(submitterLogin) .setCharacteristics(characteristicMap) .build(); |