summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2015-10-13 10:33:56 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2015-10-14 11:50:47 +0200
commit48ba89d7ff49ed5355761e6148beb5efb1fb69a6 (patch)
tree6c6ff732464e58e42f35dec39843eb4cfbf54f00
parent844fb1f476fa55d9c1d6b0f49cb86f879d2abb85 (diff)
downloadsonarqube-48ba89d7ff49ed5355761e6148beb5efb1fb69a6.tar.gz
sonarqube-48ba89d7ff49ed5355761e6148beb5efb1fb69a6.zip
SONAR-6397 remove last line trick from ComputeFileSourceData
added an extra empty line to the end of the file source iterator is now implemented directly into the CloseableIterator returned by the SourceLinesRepository
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java11
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java16
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java58
3 files changed, 12 insertions, 73 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java b/server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java
index 1b86cda3504..af395d43438 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java
@@ -46,12 +46,7 @@ public class ComputeFileSourceData {
Data data = new Data(numberOfLines);
while (linesIterator.hasNext()) {
currentLine++;
- read(data, linesIterator.next(), hasNextLine());
- }
- // Process last line
- if (hasNextLine()) {
- currentLine++;
- read(data, "", false);
+ read(data, linesIterator.next(), linesIterator.hasNext());
}
return data;
}
@@ -68,10 +63,6 @@ public class ComputeFileSourceData {
}
}
- private boolean hasNextLine() {
- return linesIterator.hasNext() || currentLine < numberOfLines;
- }
-
public static class Data {
private static final Joiner LINE_RETURN_JOINER = Joiner.on('\n');
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java
index 42ca4aad098..e2b93ce96d0 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java
@@ -59,22 +59,6 @@ public class ComputeFileSourceDataTest {
}
@Test
- public void compute_missing_last_line() {
- ComputeFileSourceData computeFileSourceData = new ComputeFileSourceData(
- newArrayList("line1").iterator(),
- Lists.<LineReader>newArrayList(new MockLineReader()),
- // There's only one line in the line iterator but the file has 2 lines
- 2);
-
- ComputeFileSourceData.Data data = computeFileSourceData.compute();
- assertThat(data.getLineHashes()).isEqualTo("137f72c3708c6bd0de00a0e5a69c699b\n");
- assertThat(data.getSrcHash()).isEqualTo("1ddab9058a07abc0db2605ab02a61a00");
- assertThat(data.getFileSourceData().getLinesList()).hasSize(2);
- assertThat(data.getFileSourceData().getLines(0).getHighlighting()).isEqualTo("h-1");
- assertThat(data.getFileSourceData().getLines(1).getHighlighting()).isEqualTo("h-2");
- }
-
- @Test
public void remove_tabs_and_spaces_in_line_hashes() {
String refLineHashes = new ComputeFileSourceData(
newArrayList("line1").iterator(),
diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java
index 9e5a893d02d..db6a0748f47 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java
@@ -52,39 +52,33 @@ import static org.mockito.Mockito.when;
public class PersistFileSourcesStepTest extends BaseStepTest {
private static final int FILE_REF = 3;
-
private static final String PROJECT_UUID = "PROJECT";
private static final String PROJECT_KEY = "PROJECT_KEY";
private static final String FILE_UUID = "FILE";
+ private static final long NOW = 123456789L;
- System2 system2 = mock(System2.class);
+ private System2 system2 = mock(System2.class);
@Rule
public DbTester dbTester = DbTester.create(system2);
-
@Rule
public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule();
-
@Rule
public BatchReportReaderRule reportReader = new BatchReportReaderRule();
-
@Rule
public ScmInfoRepositoryRule scmInfoRepository = new ScmInfoRepositoryRule();
-
@Rule
public SourceLinesRepositoryRule fileSourceRepository = new SourceLinesRepositoryRule();
- DbClient dbClient = dbTester.getDbClient();
- DbSession session = dbTester.getSession();
-
- PersistFileSourcesStep underTest;
+ private DbClient dbClient = dbTester.getDbClient();
+ private DbSession session = dbTester.getSession();
- long now = 123456789L;
+ private PersistFileSourcesStep underTest;
@Before
public void setup() {
dbTester.truncateTables();
- when(system2.now()).thenReturn(now);
+ when(system2.now()).thenReturn(NOW);
underTest = new PersistFileSourcesStep(dbClient, system2, treeRootHolder, reportReader, fileSourceRepository, scmInfoRepository);
}
@@ -106,8 +100,8 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
assertThat(fileSourceDto.getBinaryData()).isNotEmpty();
assertThat(fileSourceDto.getDataHash()).isNotEmpty();
assertThat(fileSourceDto.getLineHashes()).isNotEmpty();
- assertThat(fileSourceDto.getCreatedAt()).isEqualTo(now);
- assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now);
+ assertThat(fileSourceDto.getCreatedAt()).isEqualTo(NOW);
+ assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW);
DbFileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
assertThat(data.getLinesCount()).isEqualTo(2);
@@ -118,35 +112,6 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
}
@Test
- public void persist_last_line() {
- treeRootHolder.setRoot(ReportComponent.builder(Component.Type.PROJECT, 1).setUuid(PROJECT_UUID).setKey(PROJECT_KEY).addChildren(
- ReportComponent.builder(Component.Type.FILE, FILE_REF).setUuid(FILE_UUID).setKey("PROJECT_KEY:file").build())
- .build());
-
- reportReader.putComponent(BatchReport.Component.newBuilder()
- .setRef(1)
- .setType(Constants.ComponentType.PROJECT)
- .addChildRef(FILE_REF)
- .build());
- reportReader.putComponent(BatchReport.Component.newBuilder()
- .setRef(FILE_REF)
- .setType(Constants.ComponentType.FILE)
- // Lines is set to 3 but only 2 lines are read from the file -> the last lines should be added
- .setLines(3)
- .build());
- fileSourceRepository.addLines(FILE_REF, "line 1;", "line 2;");
-
- underTest.execute();
-
- assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
- FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID);
- DbFileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
- assertThat(data.getLinesCount()).isEqualTo(3);
- assertThat(data.getLines(2).getLine()).isEqualTo(3);
- assertThat(data.getLines(2).getSource()).isEmpty();
- }
-
- @Test
public void persist_source_hashes() {
initBasicReport(2);
@@ -393,7 +358,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID);
assertThat(fileSourceDto.getCreatedAt()).isEqualTo(past);
- assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now);
+ assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW);
assertThat(fileSourceDto.getRevision()).isEqualTo("rev-1");
}
@@ -425,7 +390,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID);
assertThat(fileSourceDto.getCreatedAt()).isEqualTo(past);
- assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now);
+ assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW);
assertThat(fileSourceDto.getSrcHash()).isEqualTo("137f72c3708c6bd0de00a0e5a69c699b");
}
@@ -464,7 +429,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID);
assertThat(fileSourceDto.getCreatedAt()).isEqualTo(past);
- assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now);
+ assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW);
assertThat(fileSourceDto.getRevision()).isEqualTo("rev-1");
}
@@ -509,7 +474,6 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
reportReader.putComponent(BatchReport.Component.newBuilder()
.setRef(FILE_REF)
.setType(Constants.ComponentType.FILE)
- .setLines(numberOfLines)
.build());
for (int i = 1; i <= numberOfLines; i++) {