private DbScmInfo createDbScmInfoWithOneLine(String hash) { Line line1 = Line.newBuilder().setLine(1) .setScmRevision("rev1") .setScmAuthor("author1") .setScmDate(10L) .build(); DbScmInfo scmInfo = DbScmInfo.create(Collections.singleton(line1), hash).get(); when(dbLoader.getScmInfo(FILE)).thenReturn(Optional.of(scmInfo)); return scmInfo; }
@Test public void filter_out_entries_without_date() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(555L).setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev-1").setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getChangesetForLine(1).getRevision()).isEqualTo("rev"); }
DbFileSources.Line.newBuilder() .setScmAuthor("john") .setScmDate(123456789L) .setScmRevision("rev-1") .build(), DbFileSources.Line.newBuilder() .setScmDate(223456789L) .build(), DbFileSources.Line.newBuilder()
setScmDate(other.getScmDate());
@Override public void read(DbFileSources.Line.Builder lineBuilder) { if (scmReport.hasChangesetForLine(lineBuilder.getLine())) { Changeset changeset = scmReport.getChangesetForLine(lineBuilder.getLine()); String author = changeset.getAuthor(); if (author != null) { lineBuilder.setScmAuthor(author); } String revision = changeset.getRevision(); if (revision != null) { lineBuilder.setScmRevision(revision); } lineBuilder.setScmDate(changeset.getDate()); updateLatestChange(changeset); if (revision != null) { updateLatestChangeWithRevision(changeset); } } }
.setLine(1) .setSource("old line") .setScmDate(123456789L) .setScmRevision("rev-1") .setScmAuthor("john")
@Override public Optional<ReadError> read(DbFileSources.Line.Builder lineBuilder) { if (scmReport.hasChangesetForLine(lineBuilder.getLine())) { Changeset changeset = scmReport.getChangesetForLine(lineBuilder.getLine()); String author = changeset.getAuthor(); if (author != null) { lineBuilder.setScmAuthor(author); } String revision = changeset.getRevision(); if (revision != null) { lineBuilder.setScmRevision(revision); } lineBuilder.setScmDate(changeset.getDate()); updateLatestChange(changeset); if (revision != null) { updateLatestChangeWithRevision(changeset); } } return Optional.empty(); }
private void addFileSourceInDb(@Nullable String author, @Nullable Long date, @Nullable String revision, String srcHash, String fileUuid) { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); DbFileSources.Line.Builder builder = fileDataBuilder.addLinesBuilder() .setLine(1); if (author != null) { builder.setScmAuthor(author); } if (date != null) { builder.setScmDate(date); } if (revision != null) { builder.setScmRevision(revision); } dbTester.getDbClient().fileSourceDao().insert(dbTester.getSession(), new FileSourceDto() .setFileUuid(fileUuid) .setProjectUuid("PROJECT_UUID") .setSourceData(fileDataBuilder.build()) .setSrcHash(srcHash)); dbTester.commit(); }
private static DbFileSources.Data.Builder newRandomData(int numberOfLines) { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); for (int i = 1; i <= numberOfLines; i++) { dataBuilder.addLinesBuilder() .setLine(i) .setScmRevision(randomAlphanumeric(15)) .setScmAuthor(randomAlphanumeric(10)) .setScmDate(RandomUtils.nextLong()) .setSource(randomAlphanumeric(20)) .setLineHits(RandomUtils.nextInt(4)) .setConditions(RandomUtils.nextInt(4)) .setCoveredConditions(RandomUtils.nextInt(4)) .setHighlighting(randomAlphanumeric(40)) .setSymbols(randomAlphanumeric(30)) .addAllDuplication(Arrays.asList(RandomUtils.nextInt(200), RandomUtils.nextInt(200))) .build(); } return dataBuilder; } }
@Test public void persist_scm() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addLines( DbFileSources.Line.newBuilder() .setScmAuthor("john") .setScmDate(123456789L) .setScmRevision("rev-1") .build()) .build(); setComputedData(dbData); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getSourceData()).isEqualTo(dbData); assertThat(fileSourceDto.getRevision()).isNull(); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void use_period_date_if_new_line_not_yet_available_in_db() throws Exception { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); dataBuilder.addLines(DbFileSources.Line.newBuilder().setLine(1).setScmDate(1000L).build()); dataBuilder.addLines(DbFileSources.Line.newBuilder().setLine(2).setScmDate(2000L).build()); // only this line should be considered as new dataBuilder.addLines(DbFileSources.Line.newBuilder().setLine(3).setScmDate(3000L).build()); ComponentDto project = db.components().insertPrivateProject(); insertPeriod(project, 2000L); ComponentDto file = insertFileWithData(dataBuilder.build(), project); setUserWithValidPermission(file); wsTester .newGetRequest("api/sources", "lines") .setParam("uuid", file.uuid()) .execute() .assertJson(getClass(), "generated_isNew.json"); }
private static void addLine(DbFileSources.Data.Builder dataBuilder, Integer line, String author, Long date, String revision) { dataBuilder.addLinesBuilder() .setLine(line) .setScmAuthor(author) .setScmDate(date) .setScmRevision(revision); }
@Test public void should_support_having_no_author() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); // gets filtered out fileDataBuilder.addLinesBuilder().setScmAuthor("John").setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(555L).setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getChangesetForLine(2).getAuthor()).isNull(); }
@Test public void return_same_changeset_objects_for_lines_with_same_fields() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(65L).setLine(1); fileDataBuilder.addLinesBuilder().setScmRevision("rev2").setScmDate(6541L).setLine(2); fileDataBuilder.addLinesBuilder().setScmRevision("rev1").setScmDate(6541L).setLine(3); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(65L).setLine(4); ScmInfo scmInfo = DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get(); assertThat(scmInfo.getAllChangesets()).hasSize(4); assertThat(scmInfo.getChangesetForLine(1)).isSameAs(scmInfo.getChangesetForLine(4)); }
@Test public void should_support_some_lines_not_having_scm_info() throws Exception { DbFileSources.Data.Builder fileDataBuilder = DbFileSources.Data.newBuilder(); fileDataBuilder.addLinesBuilder().setScmRevision("rev").setScmDate(543L).setLine(1); fileDataBuilder.addLinesBuilder().setLine(2); fileDataBuilder.build(); assertThat(DbScmInfo.create(fileDataBuilder.getLinesList(), "hash").get().getAllChangesets()).hasSize(1); }
private DbFileSources.Line newSourceLine(String author, String revision, Date date, int line) { return DbFileSources.Line.newBuilder() .setScmAuthor(author) .setScmRevision(revision) .setScmDate(date.getTime()) .setLine(line) .build(); } }