From 41959b471deb06e239e11f9fd5774db913182216 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Thu, 3 Dec 2015 15:19:06 +0100 Subject: [PATCH] SONAR-6925 cancelled tasks must not be the last task for a component --- .../computation/ws/ComponentActionTest.java | 21 +++++++++++++++++++ .../org/sonar/db/ce/CeActivityMapper.xml | 1 + 2 files changed, 22 insertions(+) diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ComponentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ComponentActionTest.java index dc3d62589c6..15c2dffa707 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ComponentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/ws/ComponentActionTest.java @@ -99,6 +99,27 @@ public class ComponentActionTest { assertThat(response.getCurrent().getId()).isEqualTo("T3"); } + @Test + public void canceled_tasks_must_not_be_picked_as_current_analysis() { + userSession.addComponentUuidPermission(UserRole.USER, "PROJECT_1", "PROJECT_1"); + insertActivity("T1", "PROJECT_1", CeActivityDto.Status.SUCCESS); + insertActivity("T2", "PROJECT_2", CeActivityDto.Status.FAILED); + insertActivity("T3", "PROJECT_1", CeActivityDto.Status.SUCCESS); + insertActivity("T4", "PROJECT_1", CeActivityDto.Status.CANCELED); + insertActivity("T5", "PROJECT_1", CeActivityDto.Status.CANCELED); + + TestResponse wsResponse = tester.newRequest() + .setParam("componentId", "PROJECT_1") + .setMediaType(MediaTypes.PROTOBUF) + .execute(); + + WsCe.ProjectResponse response = Protobuf.read(wsResponse.getInputStream(), WsCe.ProjectResponse.PARSER); + assertThat(response.getQueueCount()).isEqualTo(0); + // T3 is the latest task executed on PROJECT_1 ignoring Canceled ones + assertThat(response.hasCurrent()).isTrue(); + assertThat(response.getCurrent().getId()).isEqualTo("T3"); + } + private CeQueueDto insertQueue(String taskUuid, String componentUuid, CeQueueDto.Status status) { CeQueueDto queueDto = new CeQueueDto(); queueDto.setTaskType(CeTaskTypes.REPORT); diff --git a/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml b/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml index 25d79d14080..155d1da39e2 100644 --- a/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml +++ b/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml @@ -38,6 +38,7 @@ select uuid from ce_activity where is_last_key=#{isLastKey} + and status <> 'CANCELED' order by id desc -- 2.39.5