diff options
author | Eric Hartmann <hartmann.eric@gmail.com> | 2018-06-05 12:26:16 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2018-06-07 20:20:47 +0200 |
commit | 8b9805dad763f38fe2e3e1f92ead6accd6c32531 (patch) | |
tree | 2e2a921a67b636e5b93da602814f8eb316f304d1 /server/sonar-ce | |
parent | 5a07aaddbbc7a5856a7523b3eb3bf6ac501a9c61 (diff) | |
download | sonarqube-8b9805dad763f38fe2e3e1f92ead6accd6c32531.tar.gz sonarqube-8b9805dad763f38fe2e3e1f92ead6accd6c32531.zip |
SONAR-10416 Purge child tables of CE Queue at startup
Diffstat (limited to 'server/sonar-ce')
-rw-r--r-- | server/sonar-ce/src/main/java/org/sonar/ce/queue/PurgeCeActivities.java | 2 | ||||
-rw-r--r-- | server/sonar-ce/src/test/java/org/sonar/ce/queue/PurgeCeActivitiesTest.java | 40 |
2 files changed, 40 insertions, 2 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/queue/PurgeCeActivities.java b/server/sonar-ce/src/main/java/org/sonar/ce/queue/PurgeCeActivities.java index aec3f85c76f..097d184bb9e 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/queue/PurgeCeActivities.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/queue/PurgeCeActivities.java @@ -58,6 +58,8 @@ public class PurgeCeActivities implements Startable { .map(CeActivityDto::getUuid) .collect(toSet()); dbClient.ceActivityDao().deleteByUuids(dbSession, ceActivityUuids); + dbClient.ceTaskCharacteristicsDao().deleteByTaskUuids(dbSession, ceActivityUuids); + dbClient.ceTaskInputDao().deleteByUuids(dbSession, ceActivityUuids); Date fourWeeksAgo = DateUtils.addDays(new Date(system2.now()), -28); diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/queue/PurgeCeActivitiesTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/queue/PurgeCeActivitiesTest.java index 2e5fef83265..fb8bdbfa3de 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/queue/PurgeCeActivitiesTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/queue/PurgeCeActivitiesTest.java @@ -19,18 +19,26 @@ */ package org.sonar.ce.queue; +import java.nio.charset.Charset; import java.time.LocalDateTime; import java.time.ZoneOffset; +import java.util.Collections; +import java.util.List; import java.util.Optional; +import org.apache.commons.io.IOUtils; import org.junit.Rule; import org.junit.Test; import org.sonar.api.utils.System2; +import org.sonar.core.util.UuidFactoryFast; import org.sonar.db.DbTester; import org.sonar.db.ce.CeActivityDto; import org.sonar.db.ce.CeQueueDto; +import org.sonar.db.ce.CeTaskCharacteristicDto; +import org.sonar.db.ce.CeTaskInputDao; import org.sonar.db.ce.CeTaskTypes; import static java.time.ZoneOffset.UTC; +import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -56,13 +64,25 @@ public class PurgeCeActivitiesTest { underTest.start(); assertThat(selectActivity("VERY_OLD").isPresent()).isFalse(); + assertThat(selectTaskInput("VERY_OLD").isPresent()).isFalse(); + assertThat(selectTaskCharecteristic("VERY_OLD")).hasSize(0); assertThat(scannerContextExists("VERY_OLD")).isFalse(); + assertThat(selectActivity("JUST_OLD_ENOUGH").isPresent()).isFalse(); + assertThat(selectTaskInput("JUST_OLD_ENOUGH").isPresent()).isFalse(); + assertThat(selectTaskCharecteristic("JUST_OLD_ENOUGH")).hasSize(0); assertThat(scannerContextExists("JUST_OLD_ENOUGH")).isFalse(); + assertThat(selectActivity("NOT_OLD_ENOUGH").isPresent()).isTrue(); + assertThat(selectTaskInput("NOT_OLD_ENOUGH").isPresent()).isTrue(); + assertThat(selectTaskCharecteristic("NOT_OLD_ENOUGH")).hasSize(1); assertThat(scannerContextExists("NOT_OLD_ENOUGH")).isFalse(); // because more than 4 weeks old + assertThat(selectActivity("RECENT").isPresent()).isTrue(); + assertThat(selectTaskInput("RECENT").isPresent()).isTrue(); + assertThat(selectTaskCharecteristic("RECENT")).hasSize(1); assertThat(scannerContextExists("RECENT")).isTrue(); + } @Test @@ -82,8 +102,16 @@ public class PurgeCeActivitiesTest { assertThat(scannerContextExists("RECENT")).isTrue(); } - private Optional<CeActivityDto> selectActivity(String very_old) { - return dbTester.getDbClient().ceActivityDao().selectByUuid(dbTester.getSession(), very_old); + private Optional<CeActivityDto> selectActivity(String taskUuid) { + return dbTester.getDbClient().ceActivityDao().selectByUuid(dbTester.getSession(), taskUuid); + } + + private List<CeTaskCharacteristicDto> selectTaskCharecteristic(String taskUuid) { + return dbTester.getDbClient().ceTaskCharacteristicsDao().selectByTaskUuids(dbTester.getSession(), Collections.singletonList(taskUuid)); + } + + private Optional<CeTaskInputDao.DataStream> selectTaskInput(String taskUuid) { + return dbTester.getDbClient().ceTaskInputDao().selectData(dbTester.getSession(), taskUuid); } private boolean scannerContextExists(String uuid) { @@ -99,7 +127,15 @@ public class PurgeCeActivitiesTest { CeActivityDto dto = new CeActivityDto(queueDto); dto.setStatus(CeActivityDto.Status.SUCCESS); when(system2.now()).thenReturn(date); + CeTaskCharacteristicDto ceTaskCharacteristicDto = new CeTaskCharacteristicDto() + .setUuid(UuidFactoryFast.getInstance().create()) + .setValue(randomAlphanumeric(10)) + .setKey(randomAlphanumeric(10)) + .setTaskUuid(dto.getUuid()); + + dbTester.getDbClient().ceTaskInputDao().insert(dbTester.getSession(), dto.getUuid(), IOUtils.toInputStream(randomAlphanumeric(10), Charset.forName("UTF-8"))); dbTester.getDbClient().ceActivityDao().insert(dbTester.getSession(), dto); + dbTester.getDbClient().ceTaskCharacteristicsDao().insert(dbTester.getSession(), Collections.singletonList(ceTaskCharacteristicDto)); dbTester.getSession().commit(); insertScannerContext(uuid, date); |