private String insertScannerContext(String uuid) { String data = "data of " + uuid; underTest.insert(dbSession, uuid, scannerContextInputStreamOf(data)); dbSession.commit(); return data; }
private void insertCeScannerContext(String uuid) { dbClient.ceScannerContextDao().insert(dbSession, uuid, CloseableIterator.from(Arrays.asList("a", "b", "c").iterator())); dbSession.commit(); }
@Test public void insert_and_select_line_reader() { String scannerContext = "line 1" + lineSeparator() + "line 2" + lineSeparator() + "line 3"; underTest.insert(dbSession, SOME_UUID, scannerContextInputStreamOf(scannerContext)); dbSession.commit(); assertThat(underTest.selectScannerContext(dbSession, SOME_UUID)).contains(scannerContext); }
private void insertScannerContext(String taskUuid) { db.getDbClient().ceScannerContextDao().insert(dbSession, taskUuid, CloseableIterator.from(singletonList("scanner context of " + taskUuid).iterator())); dbSession.commit(); }
@Test public void insert_fails_if_row_already_exists_for_taskUuid() { underTest.insert(dbSession, SOME_UUID, scannerContextInputStreamOf("bla")); dbSession.commit(); assertThat(dbTester.countRowsOfTable(dbSession, TABLE_NAME)).isEqualTo(1); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Fail to insert scanner context for task " + SOME_UUID); underTest.insert(dbSession, SOME_UUID, scannerContextInputStreamOf("blo")); }
private void persistScannerContext(String taskUuid, String scannerContext) { db.getDbClient().ceScannerContextDao().insert(db.getSession(), taskUuid, CloseableIterator.from(singleton(scannerContext).iterator())); db.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(); } } } } }
@Test public void selectScannerContext_returns_empty_when_no_row_exist_for_taskUuid() { String data = "some data"; underTest.insert(dbSession, SOME_UUID, scannerContextInputStreamOf(data)); dbSession.commit(); assertThat(underTest.selectScannerContext(dbSession, "OTHER_uuid")).isEmpty(); assertThat(underTest.selectScannerContext(dbSession, SOME_UUID)).contains(data); }
@Test public void insert_fails_with_IAE_if_data_is_empty() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Scanner context can not be empty"); underTest.insert(dbSession, SOME_UUID, CloseableIterator.emptyCloseableIterator()); }
/** * 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 insert_fails_with_IAE_if_data_is_fully_read() { CloseableIterator<String> iterator = scannerContextInputStreamOf("aa"); iterator.next(); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Scanner context can not be empty"); underTest.insert(dbSession, SOME_UUID, iterator); }
@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(); } } } } }