@Test public void selectSourceByFileUuid_reads_source_without_line_hashes() { FileSourceDto fileSourceDto = new FileSourceDto() .setProjectUuid("Foo") .setFileUuid("Bar") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L); underTest.insert(dbSession, fileSourceDto); dbSession.commit(); FileSourceDto res = underTest.selectByFileUuid(dbSession, fileSourceDto.getFileUuid()); assertThat(res.getLineCount()).isEqualTo(0); assertThat(res.getLineHashes()).isEmpty(); }
private List<String> getDBLines(Component component) { try (DbSession dbSession = dbClient.openSession(false)) { List<String> database = fileSourceDao.selectLineHashes(dbSession, component.getUuid()); if (database == null) { return Collections.emptyList(); } return database; } }
@Test public void select_line_hashes() { dbTester.prepareDbUnit(getClass(), "shared.xml"); ReaderToStringConsumer fn = new ReaderToStringConsumer(); underTest.readLineHashesStream(dbSession, "FILE1_UUID", fn); assertThat(fn.result).isEqualTo("ABC\\nDEF\\nGHI"); }
@SafeVarargs public final FileSourceDto insertFileSource(ComponentDto file, Consumer<FileSourceDto>... dtoPopulators) { FileSourceDto dto = new FileSourceDto() .setProjectUuid(file.projectUuid()) .setFileUuid(file.uuid()) .setSrcHash(randomAlphanumeric(50)) .setDataHash(randomAlphanumeric(50)) .setLineHashes(IntStream.range(0, new Random().nextInt(21)).mapToObj(String::valueOf).collect(MoreCollectors.toList())) .setRevision(randomAlphanumeric(100)) .setSourceData(newRandomData(3).build()) .setCreatedAt(new Date().getTime()) .setUpdatedAt(new Date().getTime()); Arrays.stream(dtoPopulators).forEach(c -> c.accept(dto)); db.getDbClient().fileSourceDao().insert(db.getSession(), dto); db.commit(); return dto; }
@Test public void update_to_no_line_hashes() { ImmutableList<String> lineHashes = of("a", "b", "c"); FileSourceDto fileSourceDto = new FileSourceDto() .setProjectUuid("Foo") .setFileUuid("Bar") .setLineHashes(lineHashes) .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L); underTest.insert(dbSession, fileSourceDto); dbSession.commit(); FileSourceDto resBefore = underTest.selectByFileUuid(dbSession, fileSourceDto.getFileUuid()); assertThat(resBefore.getLineCount()).isEqualTo(lineHashes.size()); assertThat(resBefore.getLineHashes()).isEqualTo(lineHashes); fileSourceDto.setId(resBefore.getId()); fileSourceDto.setLineHashes(emptyList()); underTest.update(dbSession, fileSourceDto); dbSession.commit(); FileSourceDto res = underTest.selectByFileUuid(dbSession, fileSourceDto.getFileUuid()); assertThat(res.getLineHashes()).isEmpty(); assertThat(res.getLineCount()).isEqualTo(1); }
private <E> Optional<Iterable<E>> getLines(DbSession dbSession, String fileUuid, int from, int toInclusive, Function<DbFileSources.Line, E> function) { verifyLine(from); checkArgument(toInclusive >= from, String.format("Line number must greater than or equal to %d, got %d", from, toInclusive)); FileSourceDto dto = dbClient.fileSourceDao().selectByFileUuid(dbSession, fileUuid); if (dto == null) { return Optional.empty(); } return Optional.of(dto.getSourceData().getLinesList().stream() .filter(line -> line.hasLine() && line.getLine() >= from) .limit((toInclusive - from) + 1L) .map(function) .collect(MoreCollectors.toList())); }
@Test public void selectLineHashes_does_not_fail_when_lineshashes_is_null() { dbTester.prepareDbUnit(getClass(), "shared.xml"); underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashes(dbSession, "FILE2_UUID")).isEmpty(); }
@Test public void selectLineHashesVersion_returns_without_significant_code_by_default() { underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setLineHashes(singletonList("hashes")) .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashesVersion(dbSession, "FILE2_UUID")).isEqualTo(LineHashVersion.WITHOUT_SIGNIFICANT_CODE); }
@Test public void readLineHashesStream_does_not_fail_when_lineshashes_is_null() { dbTester.prepareDbUnit(getClass(), "shared.xml"); underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setRevision("123456789")); dbSession.commit(); boolean[] flag = {false}; underTest.readLineHashesStream(dbSession, "FILE2_UUID", new Consumer<Reader>() { @Override public void accept(@Nullable Reader input) { fail("function must never been called since there is no data to read"); flag[0] = true; } }); assertThat(flag[0]).isFalse(); }
private LineHashesWithKeyDtoHandler scrollLineHashes(String... uuids) { LineHashesWithKeyDtoHandler handler = new LineHashesWithKeyDtoHandler(); underTest.scrollLineHashes(dbSession, ImmutableSet.copyOf(uuids), handler); return handler; }
@CheckForNull public FileSourceDto selectByFileUuid(DbSession session, String fileUuid) { return mapper(session).selectByFileUuid(fileUuid); }
@Test public void update() { dbTester.prepareDbUnit(getClass(), "shared.xml"); underTest.update(dbSession, new FileSourceDto() .setId(101L) .setProjectUuid("PRJ_UUID") .setFileUuid("FILE1_UUID") .setBinaryData("updated data".getBytes()) .setDataHash("NEW_DATA_HASH") .setSrcHash("NEW_FILE_HASH") .setLineHashes(singletonList("NEW_LINE_HASHES")) .setUpdatedAt(1500000000002L) .setLineHashesVersion(1) .setRevision("987654321")); dbSession.commit(); dbTester.assertDbUnitTable(getClass(), "update-result.xml", "file_sources", "project_uuid", "file_uuid", "data_hash", "line_hashes", "src_hash", "created_at", "updated_at", "revision", "line_hashes_version"); }
private LineHashVersion compute(Component component) { try (DbSession session = dbClient.openSession(false)) { return dbClient.fileSourceDao().selectLineHashesVersion(session, component.getUuid()); } } }
@CheckForNull private FileSourceDto insertContentOfFileInDb(String uuid, @Nullable String[] content) { return dbTester.getDbClient().componentDao().selectByUuid(dbTester.getSession(), uuid) .map(file -> { SourceLineHashesComputer linesHashesComputer = new SourceLineHashesComputer(); if (content != null) { stream(content).forEach(linesHashesComputer::addLine); } FileSourceDto fileSourceDto = new FileSourceDto() .setFileUuid(file.uuid()) .setProjectUuid(file.projectUuid()) .setLineHashes(linesHashesComputer.getLineHashes()); dbTester.getDbClient().fileSourceDao().insert(dbTester.getSession(), fileSourceDto); dbTester.commit(); return fileSourceDto; }).orElse(null); }
public Optional<DbScmInfo> getScmInfo(Component file) { Optional<String> uuid = getFileUUid(file); if (!uuid.isPresent()) { return Optional.empty(); } LOGGER.trace("Reading SCM info from DB for file '{}'", uuid.get()); try (DbSession dbSession = dbClient.openSession(false)) { FileSourceDto dto = dbClient.fileSourceDao().selectByFileUuid(dbSession, uuid.get()); if (dto == null) { return Optional.empty(); } return DbScmInfo.create(dto.getSourceData().getLinesList(), dto.getSrcHash()); } }
@Test public void selectLineHashesVersion_succeeds() { underTest.insert(dbSession, new FileSourceDto() .setProjectUuid("PRJ_UUID") .setFileUuid("FILE2_UUID") .setBinaryData("FILE2_BINARY_DATA".getBytes()) .setDataHash("FILE2_DATA_HASH") .setLineHashes(singletonList("hashes")) .setSrcHash("FILE2_HASH") .setCreatedAt(1500000000000L) .setUpdatedAt(1500000000001L) .setLineHashesVersion(1) .setRevision("123456789")); dbSession.commit(); assertThat(underTest.selectLineHashesVersion(dbSession, "FILE2_UUID")).isEqualTo(LineHashVersion.WITH_SIGNIFICANT_CODE); }
newFiles, newFileSourcesByUuid, scoreMatrix); try (DbSession dbSession = dbClient.openSession(false)) { dbClient.fileSourceDao().scrollLineHashes(dbSession, removedFilesIndexes.keySet(), rowHandler);
public void insert(DbSession session, FileSourceDto dto) { mapper(session).insert(dto); }