@CheckForNull private String extractScannerContext(DbSession dbSession, CeActivityDto activityDto, Set<AdditionalField> additionalFields) { if (additionalFields.contains(AdditionalField.SCANNER_CONTEXT)) { return dbClient.ceScannerContextDao().selectScannerContext(dbSession, activityDto.getUuid()) .orElse(null); } return null; }
@Override public void start() { try (DbSession dbSession = dbClient.openSession(false)) { Date sixMonthsAgo = DateUtils.addDays(new Date(system2.now()), -180); LOGGER.info("Delete the Compute Engine tasks created before {}", sixMonthsAgo.getTime()); Set<String> ceActivityUuids = dbClient.ceActivityDao().selectOlderThan(dbSession, sixMonthsAgo.getTime()) .stream() .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); LOGGER.info("Delete the Scanner contexts tasks created before {}", fourWeeksAgo.getTime()); Set<String> scannerContextUuids = dbClient.ceScannerContextDao().selectOlderThan(dbSession, fourWeeksAgo.getTime()); dbClient.ceScannerContextDao().deleteByUuids( dbSession, concat(ceActivityUuids.stream(), scannerContextUuids.stream()).collect(toSet())); dbSession.commit(); } }
@Override public void execute(ComputationStep.Context context) { try (CloseableIterator<String> logsIterator = reportReader.readScannerLogs()) { if (logsIterator.hasNext()) { try (DbSession dbSession = dbClient.openSession(false)) { // in case the task was restarted, the context might have been already persisted // for total reliability, we rather delete the existing row as we don't want to assume the content // consistent with the report dbClient.ceScannerContextDao().deleteByUuids(dbSession, singleton(ceTask.getUuid())); dbSession.commit(); dbClient.ceScannerContextDao().insert(dbSession, ceTask.getUuid(), logsIterator); dbSession.commit(); } } } } }
private void insertCeScannerContext(String uuid) { dbClient.ceScannerContextDao().insert(dbSession, uuid, CloseableIterator.from(Arrays.asList("a", "b", "c").iterator())); dbSession.commit(); }
private void insertScannerContext(String taskUuid) { db.getDbClient().ceScannerContextDao().insert(dbSession, taskUuid, CloseableIterator.from(singletonList("scanner context of " + taskUuid).iterator())); dbSession.commit(); }
private void persistScannerContext(String taskUuid, String scannerContext) { db.getDbClient().ceScannerContextDao().insert(db.getSession(), taskUuid, CloseableIterator.from(singleton(scannerContext).iterator())); db.commit(); }
/** * SONAR-8306 */ @Test public void execute_does_not_fail_if_scanner_context_has_already_been_persisted() { dbClient.ceScannerContextDao().insert(dbTester.getSession(), ANALYSIS_UUID, CloseableIterator.from(Arrays.asList("a", "b", "c").iterator())); dbTester.commit(); reportReader.setScannerLogs(asList("1", "2", "3")); when(ceTask.getUuid()).thenReturn(ANALYSIS_UUID); underTest.execute(new TestComputationStepContext()); assertThat(dbClient.ceScannerContextDao().selectScannerContext(dbTester.getSession(), ANALYSIS_UUID)) .contains("1" + '\n' + "2" + '\n' + "3"); } }
@Test public void executes_persist_lines_of_reportReader() { String taskUuid = "task uuid"; when(ceTask.getUuid()).thenReturn(taskUuid); reportReader.setScannerLogs(asList("log1", "log2")); underTest.execute(new TestComputationStepContext()); assertThat(dbClient.ceScannerContextDao().selectScannerContext(dbTester.getSession(), taskUuid)) .contains("log1" + '\n' + "log2"); }
@Test public void executes_persist_does_not_persist_any_scanner_context_if_iterator_is_empty() { reportReader.setScannerLogs(emptyList()); underTest.execute(new TestComputationStepContext()); assertThat(dbClient.ceScannerContextDao().selectScannerContext(dbTester.getSession(), ANALYSIS_UUID)) .isEmpty(); }
@CheckForNull private String extractScannerContext(DbSession dbSession, CeActivityDto activityDto, Set<AdditionalField> additionalFields) { if (additionalFields.contains(AdditionalField.SCANNER_CONTEXT)) { return dbClient.ceScannerContextDao().selectScannerContext(dbSession, activityDto.getUuid()) .orElse(null); } return null; }
@Override public void start() { try (DbSession dbSession = dbClient.openSession(false)) { Calendar sixMonthsAgo = Calendar.getInstance(); sixMonthsAgo.setTimeInMillis(system2.now()); sixMonthsAgo.add(Calendar.DATE, -180); LOGGER.info("Delete the Compute Engine tasks created before {}", sixMonthsAgo.getTime()); Set<String> ceActivityUuids = dbClient.ceActivityDao().selectOlderThan(dbSession, sixMonthsAgo.getTimeInMillis()) .stream() .map(CeActivityDto::getUuid) .collect(MoreCollectors.toSet()); dbClient.ceActivityDao().deleteByUuids(dbSession, ceActivityUuids); dbClient.ceScannerContextDao().deleteByUuids(dbSession, ceActivityUuids); dbSession.commit(); } }
@Override public void execute() { try (CloseableIterator<String> logsIterator = reportReader.readScannerLogs()) { if (logsIterator.hasNext()) { try (DbSession dbSession = dbClient.openSession(false)) { // in case the task was restarted, the context might have been already persisted // for total reliability, we rather delete the existing row as we don't want to assume the content // consistent with the report dbClient.ceScannerContextDao().deleteByUuids(dbSession, singleton(ceTask.getUuid())); dbSession.commit(); dbClient.ceScannerContextDao().insert(dbSession, ceTask.getUuid(), logsIterator); dbSession.commit(); } } } } }