}) .toArray(LineReader[]::new); DbFileSources.Line.Builder builder = DbFileSources.Line.newBuilder(); SourceLineReadersFactory.LineReadersImpl underTest = new SourceLineReadersFactory.LineReadersImpl( stream(lineReaders).collect(toList()), null, Collections.emptyList());
@Test public void read_calls_all_readers() { LineReader r1 = mock(LineReader.class); LineReader r2 = mock(LineReader.class); CloseableIterator<Object> c1 = newCloseableIteratorMock(); CloseableIterator<Object> c2 = newCloseableIteratorMock(); SourceLineReadersFactory.LineReadersImpl lineReaders = new SourceLineReadersFactory.LineReadersImpl(asList(r1, r2), null, asList(c1, c2)); DbFileSources.Line.Builder builder = DbFileSources.Line.newBuilder(); lineReaders.read(builder, NOOP_READ_ERROR_CONSUMER); verify(r1).read(builder); verify(r2).read(builder); verifyNoMoreInteractions(r1, r2); verifyZeroInteractions(c1, c2); }
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; }
public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() {
.setDataHash("6cad150e3d065976c230cddc5a09efaa") .setSourceData(DbFileSources.Data.newBuilder() .addLines(DbFileSources.Line.newBuilder() .setLine(1) .setSource("old line") .addLines(DbFileSources.Line.newBuilder() .setLine(1) .setSource("old line")
@Test public void persist_sources() { List<String> lineHashes = Arrays.asList("137f72c3708c6bd0de00a0e5a69c699b", "e6251bcf1a7dc3ba5e7933e325bbe605"); String sourceHash = "ee5a58024a155466b43bc559d953e018"; DbFileSources.Data fileSourceData = DbFileSources.Data.newBuilder() .addAllLines(Arrays.asList( DbFileSources.Line.newBuilder().setSource("line1").setLine(1).build(), DbFileSources.Line.newBuilder().setSource("line2").setLine(2).build())) .build(); when(fileSourceDataComputer.compute(fileComponent().build(), fileSourceDataWarnings)) .thenReturn(new FileSourceDataComputer.Data(fileSourceData, lineHashes, sourceHash, null)); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getProjectUuid()).isEqualTo(PROJECT_UUID); assertThat(fileSourceDto.getFileUuid()).isEqualTo(FILE1_UUID); assertThat(fileSourceDto.getBinaryData()).isNotEmpty(); assertThat(fileSourceDto.getDataHash()).isNotEmpty(); assertThat(fileSourceDto.getLineHashesVersion()).isEqualTo(LineHashVersion.WITHOUT_SIGNIFICANT_CODE.getDbValue()); assertThat(fileSourceDto.getLineHashes()).isNotEmpty(); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(NOW); assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); DbFileSources.Data data = fileSourceDto.getSourceData(); assertThat(data.getLinesCount()).isEqualTo(2); assertThat(data.getLines(0).getLine()).isEqualTo(1); assertThat(data.getLines(0).getSource()).isEqualTo("line1"); assertThat(data.getLines(1).getLine()).isEqualTo(2); assertThat(data.getLines(1).getSource()).isEqualTo("line2"); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void persist_scm_some_lines() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addAllLines(Arrays.asList( DbFileSources.Line.newBuilder() .setScmAuthor("john") .setScmDate(123456789L) .setScmRevision("rev-1") .build(), DbFileSources.Line.newBuilder() .setScmDate(223456789L) .build(), DbFileSources.Line.newBuilder() .build())) .build();
@Test public void update_sources_when_revision_is_missing() { DbFileSources.Data sourceData = DbFileSources.Data.newBuilder() .addLines(DbFileSources.Line.newBuilder() .setLine(1) .setSource("line") .build()) .build(); dbClient.fileSourceDao().insert(dbTester.getSession(), createDto(dto -> dto.setRevision(null))); dbTester.getSession().commit(); Changeset changeset = Changeset.newChangesetBuilder().setDate(1L).setRevision("revision").build(); setComputedData(sourceData, Collections.singletonList("137f72c3708c6bd0de00a0e5a69c699b"), "29f25900140c94db38035128cb6de6a2", changeset); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(PAST); assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); assertThat(fileSourceDto.getRevision()).isEqualTo("revision"); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void persist_symbols() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addAllLines(Arrays.asList( DbFileSources.Line.newBuilder() .setSymbols("2,4,1") .build(), DbFileSources.Line.newBuilder().build(), DbFileSources.Line.newBuilder() .setSymbols("1,3,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); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void raw_from_branch_file() { ComponentDto project = db.components().insertMainBranch(); userSession.addProjectPermission(UserRole.CODEVIEWER, project); ComponentDto branch = db.components().insertProjectBranch(project); ComponentDto file = db.components().insertComponent(newFileDto(branch)); db.fileSources().insertFileSource(file, s -> s.setSourceData( Data.newBuilder() .addLines(Line.newBuilder().setLine(1).setSource("public class HelloWorld {").build()) .addLines(Line.newBuilder().setLine(2).setSource("}").build()) .build())); String result = ws.newRequest() .setParam("key", file.getKey()) .setParam("branch", file.getBranch()) .execute().getInput(); assertThat(result).isEqualTo("public class HelloWorld {\n}\n"); }
@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 persist_coverage() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addLines( DbFileSources.Line.newBuilder() .setConditions(10) .setCoveredConditions(2) .setLineHits(1) .setLine(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); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void persist_highlighting() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addLines( DbFileSources.Line.newBuilder() .setHighlighting("2,4,a") .build()) .build(); setComputedData(dbData); underTest.execute(new TestComputationStepContext()); assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectByFileUuid(session, FILE1_UUID); DbFileSources.Data data = fileSourceDto.getSourceData(); assertThat(data).isEqualTo(dbData); assertThat(data.getLinesList()).hasSize(1); assertThat(data.getLines(0).getHighlighting()).isEqualTo("2,4,a"); 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"); }
@Test public void persist_duplication() { DbFileSources.Data dbData = DbFileSources.Data.newBuilder().addLines( DbFileSources.Line.newBuilder() .addDuplication(2) .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); verify(fileSourceDataWarnings).commitWarnings(); }
@Test public void raw_from_file() { ComponentDto project = db.components().insertPrivateProject(); userSession.addProjectPermission(UserRole.CODEVIEWER, project); ComponentDto file = db.components().insertComponent(newFileDto(project)); db.fileSources().insertFileSource(file, s -> s.setSourceData( Data.newBuilder() .addLines(Line.newBuilder().setLine(1).setSource("public class HelloWorld {").build()) .addLines(Line.newBuilder().setLine(2).setSource("}").build()) .build())); String result = ws.newRequest() .setParam("key", file.getKey()) .execute().getInput(); assertThat(result).isEqualTo("public class HelloWorld {\n}\n"); }
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(); } }
private static DbFileSources.Data createOver64MBDataStructure() { DbFileSources.Data.Builder dataBuilder = DbFileSources.Data.newBuilder(); DbFileSources.Line.Builder lineBuilder = DbFileSources.Line.newBuilder(); for (int i = 0; i < 199999; i++) { dataBuilder.addLines( lineBuilder.setSource(LOREM_IPSUM) .setLine(i) .build()); } return dataBuilder.build(); }
private DbFileSources.Line.Builder[] runReader(LineReader reader) { DbFileSources.Line.Builder[] builders = new DbFileSources.Line.Builder[3]; for (int i = 1; i <= 3; i++) { builders[i - 1] = DbFileSources.Line.newBuilder() .setLine(i); reader.read(builders[i - 1]); } return builders; } }