aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-ce
diff options
context:
space:
mode:
authorEric Hartmann <hartmann.eric@gmail.com>2018-06-05 12:26:16 +0200
committerSonarTech <sonartech@sonarsource.com>2018-06-07 20:20:47 +0200
commit8b9805dad763f38fe2e3e1f92ead6accd6c32531 (patch)
tree2e2a921a67b636e5b93da602814f8eb316f304d1 /server/sonar-ce
parent5a07aaddbbc7a5856a7523b3eb3bf6ac501a9c61 (diff)
downloadsonarqube-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.java2
-rw-r--r--server/sonar-ce/src/test/java/org/sonar/ce/queue/PurgeCeActivitiesTest.java40
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);