Browse Source

Move protobuf spec of table FILE_SOURCES.BINARY_DATA into sonar-db

tags/5.2-RC1
Simon Brandhof 9 years ago
parent
commit
17af5360c3
37 changed files with 571 additions and 4044 deletions
  1. 17
    6
      compile_protobuf.sh
  2. 3
    4
      server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/SourceDbBenchmarkTest.java
  3. 3
    3
      server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/SourceIndexBenchmarkTest.java
  4. 9
    10
      server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java
  5. 5
    5
      server/sonar-server/src/main/java/org/sonar/server/computation/source/CoverageLineReader.java
  6. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/source/DuplicationLineReader.java
  7. 5
    7
      server/sonar-server/src/main/java/org/sonar/server/computation/source/HighlightingLineReader.java
  8. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/source/LineReader.java
  9. 3
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/source/ScmLineReader.java
  10. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/source/SymbolsLineReader.java
  11. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistFileSourcesStep.java
  12. 22
    23
      server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistTestsStep.java
  13. 4
    4
      server/sonar-server/src/main/java/org/sonar/server/source/index/SourceLineResultSetIterator.java
  14. 14
    16
      server/sonar-server/src/main/java/org/sonar/server/test/index/TestResultSetIterator.java
  15. 11
    17
      server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java
  16. 21
    22
      server/sonar-server/src/test/java/org/sonar/server/computation/source/CoverageLineReaderTest.java
  17. 12
    21
      server/sonar-server/src/test/java/org/sonar/server/computation/source/DuplicationLineReaderTest.java
  18. 19
    30
      server/sonar-server/src/test/java/org/sonar/server/computation/source/HighlightingLineReaderTest.java
  19. 6
    6
      server/sonar-server/src/test/java/org/sonar/server/computation/source/ScmLineReaderTest.java
  20. 13
    21
      server/sonar-server/src/test/java/org/sonar/server/computation/source/SymbolsLineReaderTest.java
  21. 33
    37
      server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java
  22. 15
    19
      server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistTestsStepTest.java
  23. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/issue/IssueServiceMediumTest.java
  24. 6
    6
      server/sonar-server/src/test/java/org/sonar/server/source/index/FileSourceTesting.java
  25. 4
    5
      server/sonar-server/src/test/java/org/sonar/server/source/index/SourceLineIndexerTest.java
  26. 7
    10
      server/sonar-server/src/test/java/org/sonar/server/source/index/SourceLineResultSetIteratorTest.java
  27. 13
    16
      server/sonar-server/src/test/java/org/sonar/server/test/db/TestTesting.java
  28. 6
    9
      server/sonar-server/src/test/java/org/sonar/server/test/index/TestIndexerTest.java
  29. 13
    19
      server/sonar-server/src/test/java/org/sonar/server/test/index/TestResultSetIteratorTest.java
  30. 0
    3434
      sonar-batch-protocol/src/main/gen-java/org/sonar/server/source/db/FileSourceTestDb.java
  31. 18
    0
      sonar-db/pom.xml
  32. 239
    231
      sonar-db/src/main/gen-java/org/sonar/db/FileSources.java
  33. 22
    23
      sonar-db/src/main/java/org/sonar/db/source/FileSourceDto.java
  34. 3
    3
      sonar-db/src/main/java/org/sonar/db/version/v51/FeedFileSourcesBinaryData.java
  35. 7
    16
      sonar-db/src/main/protobuf/file_sources.proto
  36. 5
    6
      sonar-db/src/test/java/org/sonar/db/source/FileSourceDtoTest.java
  37. 3
    3
      sonar-db/src/test/java/org/sonar/db/version/v51/FeedFileSourcesBinaryDataTest.java

+ 17
- 6
compile_protobuf.sh View File

@@ -1,14 +1,25 @@
#!/bin/bash

# Usage: compile_protobuf <inputDir> <outputDir>
# Compiles all the Protocol Buffers files (*.proto) to Java source code.
# IMPORTANT - protobuf 2.6.1 must be installed. Other versions are not supported.

# Usage: compile_protobuf <module> <type: main or test>
function compile_protobuf {
echo "Compiling [$1] to [$2]..."
mkdir -p $2
protoc --proto_path=$1 --java_out=$2 $1/*.proto
INPUT="$1/src/$2/protobuf"
OUTPUT="$1/src/$2/gen-java"

if [ -d $INPUT ]
then
echo "Compiling [$INPUT] to [$OUTPUT]..."
rm -rf $OUTPUT
mkdir -p $OUTPUT
protoc --proto_path=$INPUT --java_out=$OUTPUT $INPUT/*.proto
fi
}

compile_protobuf "sonar-core/src/test/protobuf" "sonar-core/src/test/gen-java"
compile_protobuf "sonar-batch-protocol/src/main/protobuf" "sonar-batch-protocol/src/main/gen-java"
compile_protobuf "sonar-batch-protocol" "main"
compile_protobuf "sonar-core" "test"
compile_protobuf "sonar-db" "main"




+ 3
- 4
server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/SourceDbBenchmarkTest.java View File

@@ -23,7 +23,6 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.Timer;
import java.util.concurrent.atomic.AtomicLong;

import org.apache.commons.io.IOUtils;
import org.junit.Rule;
import org.junit.Test;
@@ -32,9 +31,9 @@ import org.slf4j.LoggerFactory;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.internal.Uuids;
import org.sonar.db.DbTester;
import org.sonar.db.FileSources;
import org.sonar.db.source.FileSourceDao;
import org.sonar.db.source.FileSourceDto;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.index.FileSourcesUpdaterHelper;
import org.sonar.server.source.index.SourceLineResultSetIterator;

@@ -111,8 +110,8 @@ public class SourceDbBenchmarkTest {
}

private byte[] generateData() {
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Line.newBuilder();
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
FileSources.Line.Builder lineBuilder = FileSources.Line.newBuilder();
for (int i = 1; i <= NUMBER_OF_LINES; i++) {
lineBuilder.clear();
dataBuilder.addLines(lineBuilder

+ 3
- 3
server/sonar-server-benchmarks/src/test/java/org/sonar/server/benchmark/SourceIndexBenchmarkTest.java View File

@@ -31,8 +31,8 @@ import org.junit.Rule;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.db.FileSources;
import org.sonar.server.es.EsClient;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.index.FileSourcesUpdaterHelper;
import org.sonar.server.source.index.SourceLineDoc;
import org.sonar.server.source.index.SourceLineIndex;
@@ -115,8 +115,8 @@ public class SourceIndexBenchmarkTest {
private final int nbLinesPerFile;
private int currentProject = 0;
private AtomicLong count = new AtomicLong(0L);
private final FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
private final FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Line.newBuilder();
private final FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
private final FileSources.Line.Builder lineBuilder = FileSources.Line.newBuilder();

SourceIterator(long nbFiles, int nbLinesPerFile) {
this.nbFiles = nbFiles;

+ 9
- 10
server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java View File

@@ -20,14 +20,13 @@

package org.sonar.server.computation.source;

import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.sonar.server.source.db.FileSourceDb;

import java.security.MessageDigest;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.sonar.db.FileSources;

import static java.nio.charset.StandardCharsets.UTF_8;

@@ -69,7 +68,7 @@ public class ComputeFileSourceData {
data.srcMd5Digest.update(source.getBytes(UTF_8));
}

FileSourceDb.Line.Builder lineBuilder = data.fileSourceBuilder.addLinesBuilder()
FileSources.Line.Builder lineBuilder = data.fileSourceBuilder.addLinesBuilder()
.setSource(source)
.setLine(currentLine);
for (LineReader lineReader : lineReaders) {
@@ -85,17 +84,17 @@ public class ComputeFileSourceData {
return DigestUtils.md5Hex(reducedLine);
}

private boolean hasNextLine(){
private boolean hasNextLine() {
return linesIterator.hasNext() || currentLine < numberOfLines;
}

public static class Data {
private final StringBuilder lineHashes;
private final MessageDigest srcMd5Digest;
private final FileSourceDb.Data.Builder fileSourceBuilder;
private final FileSources.Data.Builder fileSourceBuilder;

public Data() {
this.fileSourceBuilder = FileSourceDb.Data.newBuilder();
this.fileSourceBuilder = FileSources.Data.newBuilder();
this.lineHashes = new StringBuilder();
this.srcMd5Digest = DigestUtils.getMd5Digest();
}
@@ -108,7 +107,7 @@ public class ComputeFileSourceData {
return lineHashes.toString();
}

public FileSourceDb.Data getFileSourceData() {
public FileSources.Data getFileSourceData() {
return fileSourceBuilder.build();
}
}

+ 5
- 5
server/sonar-server/src/main/java/org/sonar/server/computation/source/CoverageLineReader.java View File

@@ -21,7 +21,7 @@
package org.sonar.server.computation.source;

import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

import javax.annotation.CheckForNull;

@@ -37,7 +37,7 @@ public class CoverageLineReader implements LineReader {
}

@Override
public void read(FileSourceDb.Line.Builder lineBuilder) {
public void read(FileSources.Line.Builder lineBuilder) {
BatchReport.Coverage reportCoverage = getNextLineCoverageIfMatchLine(lineBuilder.getLine());
if (reportCoverage != null) {
processUnitTest(lineBuilder, reportCoverage);
@@ -47,7 +47,7 @@ public class CoverageLineReader implements LineReader {
}
}

private static void processUnitTest(FileSourceDb.Line.Builder lineBuilder, BatchReport.Coverage reportCoverage){
private static void processUnitTest(FileSources.Line.Builder lineBuilder, BatchReport.Coverage reportCoverage){
if (reportCoverage.hasUtHits()) {
lineBuilder.setUtLineHits(reportCoverage.getUtHits() ? 1 : 0);
}
@@ -57,7 +57,7 @@ public class CoverageLineReader implements LineReader {
}
}

private static void processIntegrationTest(FileSourceDb.Line.Builder lineBuilder, BatchReport.Coverage reportCoverage){
private static void processIntegrationTest(FileSources.Line.Builder lineBuilder, BatchReport.Coverage reportCoverage){
if (reportCoverage.hasItHits()) {
lineBuilder.setItLineHits(reportCoverage.getItHits() ? 1 : 0);
}
@@ -67,7 +67,7 @@ public class CoverageLineReader implements LineReader {
}
}

private static void processOverallTest(FileSourceDb.Line.Builder lineBuilder, BatchReport.Coverage reportCoverage){
private static void processOverallTest(FileSources.Line.Builder lineBuilder, BatchReport.Coverage reportCoverage){
if (reportCoverage.hasUtHits() || reportCoverage.hasItHits()) {
lineBuilder.setOverallLineHits((reportCoverage.getUtHits() || reportCoverage.getItHits()) ? 1 : 0);
}

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/source/DuplicationLineReader.java View File

@@ -27,7 +27,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Maps.newHashMap;
@@ -47,7 +47,7 @@ public class DuplicationLineReader implements LineReader {
}

@Override
public void read(FileSourceDb.Line.Builder lineBuilder) {
public void read(FileSources.Line.Builder lineBuilder) {
int line = lineBuilder.getLine();
List<BatchReport.Range> blocks = findDuplicationBlockMatchingLine(line);
for (BatchReport.Range block : blocks) {

+ 5
- 7
server/sonar-server/src/main/java/org/sonar/server/computation/source/HighlightingLineReader.java View File

@@ -21,15 +21,13 @@
package org.sonar.server.computation.source;

import com.google.common.collect.ImmutableMap;
import org.sonar.batch.protocol.Constants;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.source.db.FileSourceDb;

import javax.annotation.CheckForNull;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.CheckForNull;
import org.sonar.batch.protocol.Constants;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.db.FileSources;

import static com.google.common.collect.Lists.newArrayList;

@@ -58,7 +56,7 @@ public class HighlightingLineReader implements LineReader {
}

@Override
public void read(FileSourceDb.Line.Builder lineBuilder) {
public void read(FileSources.Line.Builder lineBuilder) {
int line = lineBuilder.getLine();
StringBuilder highlighting = new StringBuilder();


+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/source/LineReader.java View File

@@ -20,10 +20,10 @@

package org.sonar.server.computation.source;

import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

public interface LineReader {

void read(FileSourceDb.Line.Builder lineBuilder);
void read(FileSources.Line.Builder lineBuilder);

}

+ 3
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/source/ScmLineReader.java View File

@@ -21,7 +21,7 @@
package org.sonar.server.computation.source;

import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

public class ScmLineReader implements LineReader {

@@ -30,8 +30,9 @@ public class ScmLineReader implements LineReader {
public ScmLineReader(BatchReport.Changesets scmReport) {
this.scmReport = scmReport;
}

@Override
public void read(FileSourceDb.Line.Builder lineBuilder) {
public void read(FileSources.Line.Builder lineBuilder) {
int changeSetIndex = scmReport.getChangesetIndexByLine(lineBuilder.getLine() - 1);
BatchReport.Changesets.Changeset changeset = scmReport.getChangeset(changeSetIndex);
boolean hasAuthor = changeset.hasAuthor();

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/source/SymbolsLineReader.java View File

@@ -32,7 +32,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

public class SymbolsLineReader implements LineReader {

@@ -49,7 +49,7 @@ public class SymbolsLineReader implements LineReader {
}

@Override
public void read(FileSourceDb.Line.Builder lineBuilder) {
public void read(FileSources.Line.Builder lineBuilder) {
int line = lineBuilder.getLine();
List<BatchReport.Symbol> lineSymbols = findSymbolsMatchingLine(line);
for (BatchReport.Symbol lineSymbol : lineSymbols) {

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistFileSourcesStep.java View File

@@ -47,7 +47,7 @@ import org.sonar.server.computation.source.HighlightingLineReader;
import org.sonar.server.computation.source.LineReader;
import org.sonar.server.computation.source.ScmLineReader;
import org.sonar.server.computation.source.SymbolsLineReader;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

import static org.sonar.server.computation.component.ComponentVisitor.Order.PRE_ORDER;

@@ -120,7 +120,7 @@ public class PersistFileSourcesStep implements ComputationStep {
}

private void persistSource(ComputeFileSourceData.Data fileSourceData, String componentUuid) {
FileSourceDb.Data fileData = fileSourceData.getFileSourceData();
FileSources.Data fileData = fileSourceData.getFileSourceData();

byte[] data = FileSourceDto.encodeSourceData(fileData);
String dataHash = DigestUtils.md5Hex(data);

+ 22
- 23
server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistTestsStep.java View File

@@ -40,7 +40,10 @@ import org.sonar.api.utils.internal.Uuids;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.core.util.CloseableIterator;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.FileSources;
import org.sonar.db.MyBatis;
import org.sonar.db.source.FileSourceDto;
import org.sonar.db.source.FileSourceDto.Type;
@@ -48,10 +51,6 @@ import org.sonar.server.computation.batch.BatchReportReader;
import org.sonar.server.computation.component.Component;
import org.sonar.server.computation.component.DepthTraversalTypeAwareVisitor;
import org.sonar.server.computation.component.TreeRootHolder;
import org.sonar.db.DbClient;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.db.FileSourceDb.Test.TestStatus;
import org.sonar.core.util.CloseableIterator;

public class PersistTestsStep implements ComputationStep {

@@ -121,9 +120,9 @@ public class PersistTestsStep implements ComputationStep {
}

private void persistTestResults(Component component) {
Multimap<String, FileSourceDb.Test.Builder> testsByName = buildDbTests(component.getRef());
Table<String, String, FileSourceDb.Test.CoveredFile.Builder> coveredFilesByName = loadCoverageDetails(component.getRef());
List<FileSourceDb.Test> tests = addCoveredFilesToTests(testsByName, coveredFilesByName);
Multimap<String, FileSources.Test.Builder> testsByName = buildDbTests(component.getRef());
Table<String, String, FileSources.Test.CoveredFile.Builder> coveredFilesByName = loadCoverageDetails(component.getRef());
List<FileSources.Test> tests = addCoveredFilesToTests(testsByName, coveredFilesByName);
if (checkIfThereAreUnprocessedCoverageDetails(testsByName, coveredFilesByName, component.getKey())) {
hasUnprocessedCoverageDetails = true;
}
@@ -154,8 +153,8 @@ public class PersistTestsStep implements ComputationStep {
}
}

private boolean checkIfThereAreUnprocessedCoverageDetails(Multimap<String, FileSourceDb.Test.Builder> testsByName,
Table<String, String, FileSourceDb.Test.CoveredFile.Builder> coveredFilesByName, String componentKey) {
private boolean checkIfThereAreUnprocessedCoverageDetails(Multimap<String, FileSources.Test.Builder> testsByName,
Table<String, String, FileSources.Test.CoveredFile.Builder> coveredFilesByName, String componentKey) {
Set<String> unprocessedCoverageDetailNames = new HashSet<>(coveredFilesByName.rowKeySet());
unprocessedCoverageDetailNames.removeAll(testsByName.keySet());
boolean hasUnprocessedCoverage = !unprocessedCoverageDetailNames.isEmpty();
@@ -165,13 +164,13 @@ public class PersistTestsStep implements ComputationStep {
return hasUnprocessedCoverage;
}

private List<FileSourceDb.Test> addCoveredFilesToTests(Multimap<String, FileSourceDb.Test.Builder> testsByName,
Table<String, String, FileSourceDb.Test.CoveredFile.Builder> coveredFilesByName) {
List<FileSourceDb.Test> tests = new ArrayList<>();
for (FileSourceDb.Test.Builder test : testsByName.values()) {
Collection<FileSourceDb.Test.CoveredFile.Builder> coveredFiles = coveredFilesByName.row(test.getName()).values();
private List<FileSources.Test> addCoveredFilesToTests(Multimap<String, FileSources.Test.Builder> testsByName,
Table<String, String, FileSources.Test.CoveredFile.Builder> coveredFilesByName) {
List<FileSources.Test> tests = new ArrayList<>();
for (FileSources.Test.Builder test : testsByName.values()) {
Collection<FileSources.Test.CoveredFile.Builder> coveredFiles = coveredFilesByName.row(test.getName()).values();
if (!coveredFiles.isEmpty()) {
for (FileSourceDb.Test.CoveredFile.Builder coveredFile : coveredFiles) {
for (FileSources.Test.CoveredFile.Builder coveredFile : coveredFiles) {
test.addCoveredFile(coveredFile);
}
}
@@ -181,20 +180,20 @@ public class PersistTestsStep implements ComputationStep {
return tests;
}

private Multimap<String, FileSourceDb.Test.Builder> buildDbTests(int componentRed) {
Multimap<String, FileSourceDb.Test.Builder> tests = ArrayListMultimap.create();
private Multimap<String, FileSources.Test.Builder> buildDbTests(int componentRed) {
Multimap<String, FileSources.Test.Builder> tests = ArrayListMultimap.create();

try (CloseableIterator<BatchReport.Test> testIterator = reportReader.readTests(componentRed)) {
while (testIterator.hasNext()) {
BatchReport.Test batchTest = testIterator.next();
FileSourceDb.Test.Builder dbTest = FileSourceDb.Test.newBuilder();
FileSources.Test.Builder dbTest = FileSources.Test.newBuilder();
dbTest.setUuid(Uuids.create());
dbTest.setName(batchTest.getName());
if (batchTest.hasStacktrace()) {
dbTest.setStacktrace(batchTest.getStacktrace());
}
if (batchTest.hasStatus()) {
dbTest.setStatus(TestStatus.valueOf(batchTest.getStatus().name()));
dbTest.setStatus(FileSources.Test.TestStatus.valueOf(batchTest.getStatus().name()));
}
if (batchTest.hasMsg()) {
dbTest.setMsg(batchTest.getMsg());
@@ -213,8 +212,8 @@ public class PersistTestsStep implements ComputationStep {
/**
* returns a Table of (test name, main file uuid, covered file)
*/
private Table<String, String, FileSourceDb.Test.CoveredFile.Builder> loadCoverageDetails(int testFileRef) {
Table<String, String, FileSourceDb.Test.CoveredFile.Builder> nameToCoveredFiles = HashBasedTable.create();
private Table<String, String, FileSources.Test.CoveredFile.Builder> loadCoverageDetails(int testFileRef) {
Table<String, String, FileSources.Test.CoveredFile.Builder> nameToCoveredFiles = HashBasedTable.create();

try (CloseableIterator<BatchReport.CoverageDetail> coverageIterator = reportReader.readCoverageDetails(testFileRef)) {
while (coverageIterator.hasNext()) {
@@ -222,10 +221,10 @@ public class PersistTestsStep implements ComputationStep {
for (BatchReport.CoverageDetail.CoveredFile batchCoveredFile : batchCoverageDetail.getCoveredFileList()) {
String testName = batchCoverageDetail.getTestName();
String mainFileUuid = getUuid(batchCoveredFile.getFileRef());
FileSourceDb.Test.CoveredFile.Builder existingDbCoveredFile = nameToCoveredFiles.get(testName, mainFileUuid);
FileSources.Test.CoveredFile.Builder existingDbCoveredFile = nameToCoveredFiles.get(testName, mainFileUuid);
List<Integer> batchCoveredLines = batchCoveredFile.getCoveredLineList();
if (existingDbCoveredFile == null) {
FileSourceDb.Test.CoveredFile.Builder dbCoveredFile = FileSourceDb.Test.CoveredFile.newBuilder()
FileSources.Test.CoveredFile.Builder dbCoveredFile = FileSources.Test.CoveredFile.newBuilder()
.setFileUuid(getUuid(batchCoveredFile.getFileRef()))
.addAllCoveredLine(batchCoveredLines);
nameToCoveredFiles.put(testName, mainFileUuid, dbCoveredFile);

+ 4
- 4
server/sonar-server/src/main/java/org/sonar/server/source/index/SourceLineResultSetIterator.java View File

@@ -22,11 +22,11 @@ package org.sonar.server.source.index;
import org.elasticsearch.action.update.UpdateRequest;
import org.sonar.api.utils.text.JsonWriter;
import org.sonar.db.DbSession;
import org.sonar.db.FileSources;
import org.sonar.db.source.FileSourceDto;
import org.sonar.db.DbClient;
import org.sonar.db.ResultSetIterator;
import org.sonar.server.es.EsUtils;
import org.sonar.server.source.db.FileSourceDb;

import javax.annotation.Nullable;

@@ -64,16 +64,16 @@ public class SourceLineResultSetIterator extends ResultSetIterator<FileSourcesUp
String projectUuid = rs.getString(1);
String fileUuid = rs.getString(2);
Date updatedAt = new Date(rs.getLong(3));
FileSourceDb.Data data = FileSourceDto.decodeSourceData(rs.getBinaryStream(4));
FileSources.Data data = FileSourceDto.decodeSourceData(rs.getBinaryStream(4));
return toRow(projectUuid, fileUuid, updatedAt, data);
}

/**
* Convert protobuf message to data required for Elasticsearch indexing
*/
public static Row toRow(String projectUuid, String fileUuid, Date updatedAt, FileSourceDb.Data data) {
public static Row toRow(String projectUuid, String fileUuid, Date updatedAt, FileSources.Data data) {
Row result = new Row(projectUuid, fileUuid, updatedAt.getTime());
for (FileSourceDb.Line line : data.getLinesList()) {
for (FileSources.Line line : data.getLinesList()) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();

// all the fields must be present, even if value is null

+ 14
- 16
server/sonar-server/src/main/java/org/sonar/server/test/index/TestResultSetIterator.java View File

@@ -20,18 +20,6 @@

package org.sonar.server.test.index;

import org.elasticsearch.action.update.UpdateRequest;
import org.sonar.api.utils.text.JsonWriter;
import org.sonar.db.DbSession;
import org.sonar.db.source.FileSourceDto;
import org.sonar.db.DbClient;
import org.sonar.db.ResultSetIterator;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.index.FileSourcesUpdaterHelper;
import org.sonar.server.source.index.FileSourcesUpdaterHelper.Row;

import javax.annotation.Nullable;

import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
@@ -40,6 +28,16 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import javax.annotation.Nullable;
import org.elasticsearch.action.update.UpdateRequest;
import org.sonar.api.utils.text.JsonWriter;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.FileSources;
import org.sonar.db.ResultSetIterator;
import org.sonar.db.source.FileSourceDto;
import org.sonar.server.source.index.FileSourcesUpdaterHelper;
import org.sonar.server.source.index.FileSourcesUpdaterHelper.Row;

import static org.sonar.server.test.index.TestIndexDefinition.FIELD_COVERED_FILES;
import static org.sonar.server.test.index.TestIndexDefinition.FIELD_COVERED_FILE_LINES;
@@ -78,16 +76,16 @@ public class TestResultSetIterator extends ResultSetIterator<Row> {
String projectUuid = rs.getString(1);
String fileUuid = rs.getString(2);
Date updatedAt = new Date(rs.getLong(3));
List<FileSourceDb.Test> data = FileSourceDto.decodeTestData(rs.getBinaryStream(4));
List<FileSources.Test> data = FileSourceDto.decodeTestData(rs.getBinaryStream(4));
return toRow(projectUuid, fileUuid, updatedAt, data);
}

/**
* Convert protobuf message to tests required for Elasticsearch indexing
*/
public static Row toRow(String projectUuid, String fileUuid, Date updatedAt, List<FileSourceDb.Test> tests) {
public static Row toRow(String projectUuid, String fileUuid, Date updatedAt, List<FileSources.Test> tests) {
Row result = new Row(projectUuid, fileUuid, updatedAt.getTime());
for (FileSourceDb.Test test : tests) {
for (FileSources.Test test : tests) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();

// all the fields must be present, even if value is null
@@ -103,7 +101,7 @@ public class TestResultSetIterator extends ResultSetIterator<Row> {
writer.prop(FIELD_STACKTRACE, test.hasStacktrace() ? test.getStacktrace() : null);
writer.name(FIELD_COVERED_FILES);
writer.beginArray();
for (FileSourceDb.Test.CoveredFile coveredFile : test.getCoveredFileList()) {
for (FileSources.Test.CoveredFile coveredFile : test.getCoveredFileList()) {
writer.beginObject();
writer.prop(FIELD_COVERED_FILE_UUID, coveredFile.getFileUuid());
writer.name(FIELD_COVERED_FILE_LINES).valueObject(coveredFile.getCoveredLineList());

+ 11
- 17
server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java View File

@@ -22,7 +22,7 @@ package org.sonar.server.computation.source;

import com.google.common.collect.Lists;
import org.junit.Test;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;
@@ -31,11 +31,10 @@ public class ComputeFileSourceDataTest {

@Test
public void compute_one_line() {
ComputeFileSourceData computeFileSourceData = new ComputeFileSourceData(
newArrayList("line1").iterator(),
Lists.<LineReader>newArrayList(new MockLineReader()),
1
);
ComputeFileSourceData computeFileSourceData = new ComputeFileSourceData(
newArrayList("line1").iterator(),
Lists.<LineReader>newArrayList(new MockLineReader()),
1);

ComputeFileSourceData.Data data = computeFileSourceData.compute();
assertThat(data.getLineHashes()).isEqualTo("137f72c3708c6bd0de00a0e5a69c699b");
@@ -49,8 +48,7 @@ public class ComputeFileSourceDataTest {
ComputeFileSourceData computeFileSourceData = new ComputeFileSourceData(
newArrayList("line1", "line2").iterator(),
Lists.<LineReader>newArrayList(new MockLineReader()),
2
);
2);

ComputeFileSourceData.Data data = computeFileSourceData.compute();
assertThat(data.getLineHashes()).isEqualTo("137f72c3708c6bd0de00a0e5a69c699b\ne6251bcf1a7dc3ba5e7933e325bbe605");
@@ -66,8 +64,7 @@ public class ComputeFileSourceDataTest {
newArrayList("line1").iterator(),
Lists.<LineReader>newArrayList(new MockLineReader()),
// There's only one line in the line iterator but the file has 2 lines
2
);
2);

ComputeFileSourceData.Data data = computeFileSourceData.compute();
assertThat(data.getLineHashes()).isEqualTo("137f72c3708c6bd0de00a0e5a69c699b\n");
@@ -82,14 +79,12 @@ public class ComputeFileSourceDataTest {
String refLineHashes = new ComputeFileSourceData(
newArrayList("line1").iterator(),
Lists.<LineReader>newArrayList(new MockLineReader()),
1
).compute().getLineHashes();
1).compute().getLineHashes();

assertThat(new ComputeFileSourceData(
newArrayList(" line\t \t 1 ").iterator(),
Lists.<LineReader>newArrayList(new MockLineReader()),
1
).compute().getLineHashes()).isEqualTo(refLineHashes);
1).compute().getLineHashes()).isEqualTo(refLineHashes);
}

@Test
@@ -97,13 +92,12 @@ public class ComputeFileSourceDataTest {
assertThat(new ComputeFileSourceData(
newArrayList(" ").iterator(),
Lists.<LineReader>newArrayList(new MockLineReader()),
1
).compute().getLineHashes()).isEqualTo("");
1).compute().getLineHashes()).isEqualTo("");
}

private static class MockLineReader implements LineReader {
@Override
public void read(FileSourceDb.Line.Builder lineBuilder) {
public void read(FileSources.Line.Builder lineBuilder) {
lineBuilder.setHighlighting("h-" + lineBuilder.getLine());
}
}

+ 21
- 22
server/sonar-server/src/test/java/org/sonar/server/computation/source/CoverageLineReaderTest.java View File

@@ -20,11 +20,10 @@

package org.sonar.server.computation.source;

import java.util.Collections;
import org.junit.Test;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.source.db.FileSourceDb;

import java.util.Collections;
import org.sonar.db.FileSources;

import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;
@@ -43,7 +42,7 @@ public class CoverageLineReaderTest {
.setOverallCoveredConditions(4)
.build()).iterator());

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
computeCoverageLine.read(lineBuilder);

assertThat(lineBuilder.getUtLineHits()).isEqualTo(1);
@@ -63,7 +62,7 @@ public class CoverageLineReaderTest {
.setItHits(false)
.build()).iterator());

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
computeCoverageLine.read(lineBuilder);

assertThat(lineBuilder.hasUtLineHits()).isTrue();
@@ -80,7 +79,7 @@ public class CoverageLineReaderTest {
.setLine(1)
.build()).iterator());

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
computeCoverageLine.read(lineBuilder);

assertThat(lineBuilder.hasUtLineHits()).isFalse();
@@ -91,12 +90,12 @@ public class CoverageLineReaderTest {
@Test
public void set_overall_line_hits_with_only_ut() {
CoverageLineReader computeCoverageLine = new CoverageLineReader(newArrayList(BatchReport.Coverage.newBuilder()
.setLine(1)
.setUtHits(true)
.setItHits(false)
.build()).iterator());
.setLine(1)
.setUtHits(true)
.setItHits(false)
.build()).iterator());

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
computeCoverageLine.read(lineBuilder);

assertThat(lineBuilder.getOverallLineHits()).isEqualTo(1);
@@ -110,7 +109,7 @@ public class CoverageLineReaderTest {
.setItHits(true)
.build()).iterator());

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
computeCoverageLine.read(lineBuilder);

assertThat(lineBuilder.getOverallLineHits()).isEqualTo(1);
@@ -124,7 +123,7 @@ public class CoverageLineReaderTest {
.setItHits(true)
.build()).iterator());

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
computeCoverageLine.read(lineBuilder);

assertThat(lineBuilder.getOverallLineHits()).isEqualTo(1);
@@ -134,7 +133,7 @@ public class CoverageLineReaderTest {
public void nothing_to_do_when_no_coverage_info() {
CoverageLineReader computeCoverageLine = new CoverageLineReader(Collections.<BatchReport.Coverage>emptyList().iterator());

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
computeCoverageLine.read(lineBuilder);

assertThat(lineBuilder.hasUtLineHits()).isFalse();
@@ -158,10 +157,10 @@ public class CoverageLineReaderTest {
.setItCoveredConditions(3)
.setOverallCoveredConditions(4)
.build()
// No coverage info on line 2
).iterator());
// No coverage info on line 2
).iterator());

FileSourceDb.Line.Builder line2Builder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(2);
FileSources.Line.Builder line2Builder = FileSources.Data.newBuilder().addLinesBuilder().setLine(2);
computeCoverageLine.read(line2Builder);

assertThat(line2Builder.hasUtLineHits()).isFalse();
@@ -185,12 +184,12 @@ public class CoverageLineReaderTest {
.setItCoveredConditions(3)
.setOverallCoveredConditions(4)
.build()
// No coverage info on line 2
).iterator());
// No coverage info on line 2
).iterator());

FileSourceDb.Data.Builder fileSourceBuilder = FileSourceDb.Data.newBuilder();
FileSourceDb.Line.Builder line1Builder = fileSourceBuilder.addLinesBuilder().setLine(1);
FileSourceDb.Line.Builder line2Builder = fileSourceBuilder.addLinesBuilder().setLine(2);
FileSources.Data.Builder fileSourceBuilder = FileSources.Data.newBuilder();
FileSources.Line.Builder line1Builder = fileSourceBuilder.addLinesBuilder().setLine(1);
FileSources.Line.Builder line2Builder = fileSourceBuilder.addLinesBuilder().setLine(2);
computeCoverageLine.read(line1Builder);
computeCoverageLine.read(line2Builder);


+ 12
- 21
server/sonar-server/src/test/java/org/sonar/server/computation/source/DuplicationLineReaderTest.java View File

@@ -24,20 +24,17 @@ import com.google.common.collect.Iterators;
import org.junit.Test;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.core.util.CloseableIterator;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

import java.util.Collections;

import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;

public class DuplicationLineReaderTest {

FileSourceDb.Data.Builder sourceData = FileSourceDb.Data.newBuilder();
FileSourceDb.Line.Builder line1 = sourceData.addLinesBuilder().setSource("line1").setLine(1);
FileSourceDb.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line2").setLine(2);
FileSourceDb.Line.Builder line3 = sourceData.addLinesBuilder().setSource("line3").setLine(3);
FileSourceDb.Line.Builder line4 = sourceData.addLinesBuilder().setSource("line4").setLine(4);
FileSources.Data.Builder sourceData = FileSources.Data.newBuilder();
FileSources.Line.Builder line1 = sourceData.addLinesBuilder().setSource("line1").setLine(1);
FileSources.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line2").setLine(2);
FileSources.Line.Builder line3 = sourceData.addLinesBuilder().setSource("line3").setLine(3);
FileSources.Line.Builder line4 = sourceData.addLinesBuilder().setSource("line4").setLine(4);

@Test
public void read_nothing() {
@@ -62,8 +59,7 @@ public class DuplicationLineReaderTest {
.setEndLine(4)
.build())
.build())
.build()
));
.build()));

reader.read(line1);
reader.read(line2);
@@ -91,8 +87,7 @@ public class DuplicationLineReaderTest {
.setEndLine(4)
.build())
.build())
.build()
));
.build()));

reader.read(line1);
reader.read(line2);
@@ -120,8 +115,7 @@ public class DuplicationLineReaderTest {
.setEndLine(4)
.build())
.build())
.build()
));
.build()));

reader.read(line1);
reader.read(line2);
@@ -160,8 +154,7 @@ public class DuplicationLineReaderTest {
.setEndLine(4)
.build())
.build())
.build()
));
.build()));

reader.read(line1);
reader.read(line2);
@@ -200,8 +193,7 @@ public class DuplicationLineReaderTest {
.setEndLine(3)
.build())
.build())
.build()
));
.build()));

reader.read(line1);
reader.read(line2);
@@ -240,8 +232,7 @@ public class DuplicationLineReaderTest {
.setEndLine(4)
.build())
.build())
.build()
));
.build()));

reader.read(line1);
reader.read(line2);

+ 19
- 30
server/sonar-server/src/test/java/org/sonar/server/computation/source/HighlightingLineReaderTest.java View File

@@ -20,12 +20,11 @@

package org.sonar.server.computation.source;

import java.util.Collections;
import org.junit.Test;
import org.sonar.batch.protocol.Constants;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.source.db.FileSourceDb;

import java.util.Collections;
import org.sonar.db.FileSources;

import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;
@@ -33,17 +32,17 @@ import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;

public class HighlightingLineReaderTest {

FileSourceDb.Data.Builder sourceData = FileSourceDb.Data.newBuilder();
FileSourceDb.Line.Builder line1 = sourceData.addLinesBuilder().setSource("line1").setLine(1);
FileSourceDb.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line2").setLine(2);
FileSourceDb.Line.Builder line3 = sourceData.addLinesBuilder().setSource("line3").setLine(3);
FileSourceDb.Line.Builder line4 = sourceData.addLinesBuilder().setSource("line4").setLine(4);
FileSources.Data.Builder sourceData = FileSources.Data.newBuilder();
FileSources.Line.Builder line1 = sourceData.addLinesBuilder().setSource("line1").setLine(1);
FileSources.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line2").setLine(2);
FileSources.Line.Builder line3 = sourceData.addLinesBuilder().setSource("line3").setLine(3);
FileSources.Line.Builder line4 = sourceData.addLinesBuilder().setSource("line4").setLine(4);

@Test
public void nothing_to_read() {
HighlightingLineReader highlightingLineReader = new HighlightingLineReader(Collections.<BatchReport.SyntaxHighlighting>emptyList().iterator());

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
highlightingLineReader.read(lineBuilder);

assertThat(lineBuilder.hasHighlighting()).isFalse();
@@ -58,8 +57,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(2).setEndOffset(4)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()
).iterator());
.build()).iterator());

highlightingLineReader.read(line1);

@@ -89,8 +87,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(1).setEndOffset(2)
.build())
.setType(Constants.HighlightingType.CONSTANT)
.build()
).iterator());
.build()).iterator());

highlightingLineReader.read(line1);
highlightingLineReader.read(line2);
@@ -118,8 +115,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(4).setEndOffset(5)
.build())
.setType(Constants.HighlightingType.COMMENT)
.build()
).iterator());
.build()).iterator());

highlightingLineReader.read(line1);

@@ -143,8 +139,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(2).setEndOffset(3)
.build())
.setType(Constants.HighlightingType.KEYWORD)
.build()
).iterator());
.build()).iterator());

highlightingLineReader.read(line1);

@@ -161,11 +156,10 @@ public class HighlightingLineReaderTest {
.setStartOffset(3).setEndOffset(2)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()
).iterator());
.build()).iterator());

highlightingLineReader.read(line1);
FileSourceDb.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line 2").setLine(2);
FileSources.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line 2").setLine(2);
highlightingLineReader.read(line2);
highlightingLineReader.read(line3);

@@ -197,8 +191,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(1).setEndOffset(2)
.build())
.setType(Constants.HighlightingType.COMMENT)
.build()
).iterator());
.build()).iterator());

highlightingLineReader.read(line1);
highlightingLineReader.read(line2);
@@ -220,8 +213,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(0).setEndOffset(0)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()
).iterator());
.build()).iterator());

highlightingLineReader.read(line1);
highlightingLineReader.read(line2);
@@ -242,8 +234,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(4).setEndOffset(2)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()
).iterator());
.build()).iterator());

try {
highlightingLineReader.read(line1);
@@ -262,8 +253,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(2).setEndOffset(10)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()
).iterator());
.build()).iterator());

try {
highlightingLineReader.read(line1);
@@ -282,8 +272,7 @@ public class HighlightingLineReaderTest {
.setStartOffset(10).setEndOffset(11)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()
).iterator());
.build()).iterator());

try {
highlightingLineReader.read(line1);

+ 6
- 6
server/sonar-server/src/test/java/org/sonar/server/computation/source/ScmLineReaderTest.java View File

@@ -22,7 +22,7 @@ package org.sonar.server.computation.source;

import org.junit.Test;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown;
@@ -42,7 +42,7 @@ public class ScmLineReaderTest {

ScmLineReader lineScm = new ScmLineReader(scmReport);

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
lineScm.read(lineBuilder);

assertThat(lineBuilder.getScmAuthor()).isEqualTo("john");
@@ -61,7 +61,7 @@ public class ScmLineReaderTest {

ScmLineReader lineScm = new ScmLineReader(scmReport);

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
lineScm.read(lineBuilder);

assertThat(lineBuilder.getScmAuthor()).isEqualTo("john");
@@ -80,7 +80,7 @@ public class ScmLineReaderTest {

ScmLineReader lineScm = new ScmLineReader(scmReport);

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
lineScm.read(lineBuilder);

assertThat(lineBuilder.hasScmAuthor()).isFalse();
@@ -99,7 +99,7 @@ public class ScmLineReaderTest {

ScmLineReader lineScm = new ScmLineReader(scmReport);

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
lineScm.read(lineBuilder);

assertThat(lineBuilder.hasScmAuthor()).isFalse();
@@ -117,7 +117,7 @@ public class ScmLineReaderTest {

ScmLineReader lineScm = new ScmLineReader(scmReport);

FileSourceDb.Line.Builder lineBuilder = FileSourceDb.Data.newBuilder().addLinesBuilder().setLine(1);
FileSources.Line.Builder lineBuilder = FileSources.Data.newBuilder().addLinesBuilder().setLine(1);
try {
lineScm.read(lineBuilder);
failBecauseExceptionWasNotThrown(IllegalArgumentException.class);

+ 13
- 21
server/sonar-server/src/test/java/org/sonar/server/computation/source/SymbolsLineReaderTest.java View File

@@ -20,23 +20,22 @@

package org.sonar.server.computation.source;

import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.core.util.CloseableIterator;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;

public class SymbolsLineReaderTest {

FileSourceDb.Data.Builder sourceData = FileSourceDb.Data.newBuilder();
FileSourceDb.Line.Builder line1 = sourceData.addLinesBuilder().setSource("line1").setLine(1);
FileSourceDb.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line2").setLine(2);
FileSourceDb.Line.Builder line3 = sourceData.addLinesBuilder().setSource("line3").setLine(3);
FileSourceDb.Line.Builder line4 = sourceData.addLinesBuilder().setSource("line4").setLine(4);
FileSources.Data.Builder sourceData = FileSources.Data.newBuilder();
FileSources.Line.Builder line1 = sourceData.addLinesBuilder().setSource("line1").setLine(1);
FileSources.Line.Builder line2 = sourceData.addLinesBuilder().setSource("line2").setLine(2);
FileSources.Line.Builder line3 = sourceData.addLinesBuilder().setSource("line3").setLine(3);
FileSources.Line.Builder line4 = sourceData.addLinesBuilder().setSource("line4").setLine(4);

@Test
public void read_nothing() {
@@ -57,8 +56,7 @@ public class SymbolsLineReaderTest {
.addReference(BatchReport.Range.newBuilder()
.setStartLine(3).setEndLine(3).setStartOffset(1).setEndOffset(3)
.build())
.build()
);
.build());

SymbolsLineReader symbolsLineReader = new SymbolsLineReader(symbols.iterator());
symbolsLineReader.read(line1);
@@ -80,8 +78,7 @@ public class SymbolsLineReaderTest {
.addReference(BatchReport.Range.newBuilder()
.setStartLine(1).setEndLine(1).setStartOffset(2).setEndOffset(3)
.build())
.build()
);
.build());

SymbolsLineReader symbolsLineReader = new SymbolsLineReader(symbols.iterator());
symbolsLineReader.read(line1);
@@ -102,8 +99,7 @@ public class SymbolsLineReaderTest {
.addReference(BatchReport.Range.newBuilder()
.setStartLine(2).setEndLine(2).setStartOffset(0).setEndOffset(2)
.build())
.build()
);
.build());

SymbolsLineReader symbolsLineReader = new SymbolsLineReader(symbols.iterator());
symbolsLineReader.read(line1);
@@ -128,8 +124,7 @@ public class SymbolsLineReaderTest {
.addReference(BatchReport.Range.newBuilder()
.setStartLine(2).setEndLine(2).setStartOffset(2).setEndOffset(3)
.build())
.build()
);
.build());

SymbolsLineReader symbolsLineReader = new SymbolsLineReader(symbols.iterator());
symbolsLineReader.read(line1);
@@ -149,8 +144,7 @@ public class SymbolsLineReaderTest {
.addReference(BatchReport.Range.newBuilder()
.setStartLine(1).setEndLine(1).setStartOffset(1).setEndOffset(2)
.build())
.build()
);
.build());

SymbolsLineReader symbolsLineReader = new SymbolsLineReader(symbols.iterator());
symbolsLineReader.read(line1);
@@ -178,8 +172,7 @@ public class SymbolsLineReaderTest {
.addReference(BatchReport.Range.newBuilder()
.setStartLine(3).setEndLine(3).setStartOffset(0).setEndOffset(1)
.build())
.build()
);
.build());

SymbolsLineReader symbolsLineReader = new SymbolsLineReader(symbols.iterator());
symbolsLineReader.read(line1);
@@ -287,8 +280,7 @@ public class SymbolsLineReaderTest {
.addReference(BatchReport.Range.newBuilder()
.setStartLine(3).setEndLine(3).setStartOffset(1).setEndOffset(3)
.build())
.build()
);
.build());

SymbolsLineReader symbolsLineReader = new SymbolsLineReader(symbols.iterator());
symbolsLineReader.read(line1);

+ 33
- 37
server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java View File

@@ -33,6 +33,7 @@ import org.sonar.batch.protocol.Constants;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.FileSources;
import org.sonar.db.source.FileSourceDto;
import org.sonar.db.source.FileSourceDto.Type;
import org.sonar.server.computation.batch.BatchReportReaderRule;
@@ -40,7 +41,6 @@ import org.sonar.server.computation.batch.TreeRootHolderRule;
import org.sonar.server.computation.component.Component;
import org.sonar.server.computation.component.DumbComponent;
import org.sonar.server.computation.language.LanguageRepository;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.test.DbTests;

import static com.google.common.collect.Lists.newArrayList;
@@ -105,7 +105,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
assertThat(fileSourceDto.getCreatedAt()).isEqualTo(now);
assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now);

FileSourceDb.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
FileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
assertThat(data.getLinesCount()).isEqualTo(2);
assertThat(data.getLines(0).getLine()).isEqualTo(1);
assertThat(data.getLines(0).getSource()).isEqualTo("line1");
@@ -127,7 +127,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
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
// Lines is set to 3 but only 2 lines are read from the file -> the last lines should be added
.setLines(3)
.build());
reportReader.putFileSourceLines(FILE_REF, "line1", "line2");
@@ -136,7 +136,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {

assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID);
FileSourceDb.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
FileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
assertThat(data.getLinesCount()).isEqualTo(3);
assertThat(data.getLines(2).getLine()).isEqualTo(3);
assertThat(data.getLines(2).getSource()).isEmpty();
@@ -172,7 +172,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {

assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID);
FileSourceDb.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
FileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());

assertThat(data.getLinesList()).hasSize(1);

@@ -205,7 +205,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest {

assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID);
FileSourceDb.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
FileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());

assertThat(data.getLinesList()).hasSize(1);

@@ -219,19 +219,18 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
initBasicReport(1);

reportReader.putSyntaxHighlighting(FILE_REF, newArrayList(BatchReport.SyntaxHighlighting.newBuilder()
.setRange(BatchReport.Range.newBuilder()
.setStartLine(1).setEndLine(1)
.setStartOffset(2).setEndOffset(4)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()
));
.setRange(BatchReport.Range.newBuilder()
.setStartLine(1).setEndLine(1)
.setStartOffset(2).setEndOffset(4)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()));

underTest.execute();

assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID);
FileSourceDb.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
FileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());

assertThat(data.getLinesList()).hasSize(1);

@@ -248,16 +247,15 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
.setStartLine(1).setEndLine(1).setStartOffset(2).setEndOffset(4)
.build())
.addReference(BatchReport.Range.newBuilder()
.setStartLine(3).setEndLine(3).setStartOffset(1).setEndOffset(3)
.build()
).build()
));
.setStartLine(3).setEndLine(3).setStartOffset(1).setEndOffset(3)
.build())
.build()));

underTest.execute();

assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID);
FileSourceDb.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
FileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());

assertThat(data.getLinesList()).hasSize(3);

@@ -282,14 +280,13 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
.setEndLine(4)
.build())
.build())
.build()
));
.build()));

underTest.execute();

assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSource(FILE_UUID);
FileSourceDb.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());
FileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData());

assertThat(data.getLinesList()).hasSize(1);

@@ -310,8 +307,8 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
.setSrcHash(srcHash)
.setLineHashes(lineHashes)
.setDataHash(dataHash)
.setSourceData(FileSourceDb.Data.newBuilder()
.addLines(FileSourceDb.Line.newBuilder()
.setSourceData(FileSources.Data.newBuilder()
.addLines(FileSources.Line.newBuilder()
.setLine(1)
.setSource("line1")
.build())
@@ -345,8 +342,8 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
.setSrcHash("5b4bd9815cdb17b8ceae19eb1810c34c")
.setLineHashes("6438c669e0d0de98e6929c2cc0fac474\n")
.setDataHash("6cad150e3d065976c230cddc5a09efaa")
.setSourceData(FileSourceDb.Data.newBuilder()
.addLines(FileSourceDb.Line.newBuilder()
.setSourceData(FileSources.Data.newBuilder()
.addLines(FileSources.Line.newBuilder()
.setLine(1)
.setSource("old line")
.build())
@@ -373,11 +370,11 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
.setProjectUuid(PROJECT_UUID)
.setFileUuid(FILE_UUID)
.setDataType(Type.SOURCE)
// Source hash is missing, update will be made
// Source hash is missing, update will be made
.setLineHashes("137f72c3708c6bd0de00a0e5a69c699b")
.setDataHash("29f25900140c94db38035128cb6de6a2")
.setSourceData(FileSourceDb.Data.newBuilder()
.addLines(FileSourceDb.Line.newBuilder()
.setSourceData(FileSources.Data.newBuilder()
.addLines(FileSources.Line.newBuilder()
.setLine(1)
.setSource("line")
.build())
@@ -403,14 +400,13 @@ public class PersistFileSourcesStepTest extends BaseStepTest {
initBasicReport(1);

reportReader.putSyntaxHighlighting(FILE_REF, newArrayList(BatchReport.SyntaxHighlighting.newBuilder()
.setRange(BatchReport.Range.newBuilder()
.setStartLine(1).setEndLine(1)
// Wrong offset -> fail
.setStartOffset(4).setEndOffset(2)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()
));
.setRange(BatchReport.Range.newBuilder()
.setStartLine(1).setEndLine(1)
// Wrong offset -> fail
.setStartOffset(4).setEndOffset(2)
.build())
.setType(Constants.HighlightingType.ANNOTATION)
.build()));

try {
underTest.execute();

+ 15
- 19
server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistTestsStepTest.java View File

@@ -33,13 +33,13 @@ import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.batch.protocol.output.BatchReport.CoverageDetail;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.db.FileSources;
import org.sonar.db.source.FileSourceDto;
import org.sonar.server.computation.batch.BatchReportReaderRule;
import org.sonar.server.computation.batch.TreeRootHolderRule;
import org.sonar.server.computation.component.Component;
import org.sonar.server.computation.component.DumbComponent;
import org.sonar.server.computation.component.FileAttributes;
import org.sonar.server.source.db.FileSourceDb;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
@@ -91,9 +91,8 @@ public class PersistTestsStepTest extends BaseStepTest {
DumbComponent.builder(Component.Type.FILE, 3).setUuid(TEST_FILE_UUID_1).setKey("TEST_FILE1_KEY").setFileAttributes(new FileAttributes(true, null)).build(),
DumbComponent.builder(Component.Type.FILE, 4).setUuid(TEST_FILE_UUID_2).setKey("TEST_FILE2_KEY").setFileAttributes(new FileAttributes(true, null)).build(),
DumbComponent.builder(Component.Type.FILE, 5).setUuid(MAIN_FILE_UUID_1).setKey("MAIN_FILE1_KEY").build(),
DumbComponent.builder(Component.Type.FILE, 6).setUuid(MAIN_FILE_UUID_2).setKey("MAIN_FILE2_KEY").build()
).build()
).build();
DumbComponent.builder(Component.Type.FILE, 6).setUuid(MAIN_FILE_UUID_2).setKey("MAIN_FILE2_KEY").build()).build())
.build();
treeRootHolder.setRoot(root);
}

@@ -113,12 +112,10 @@ public class PersistTestsStepTest extends BaseStepTest {
@Test
public void insert_several_tests_in_a_report() {
List<BatchReport.Test> batchTests = Arrays.asList(
newTest(1), newTest(2)
);
newTest(1), newTest(2));
reportReader.putTests(TEST_FILE_REF_1, batchTests);
List<CoverageDetail> coverageDetails = Arrays.asList(
newCoverageDetail(1, MAIN_FILE_REF_1)
);
newCoverageDetail(1, MAIN_FILE_REF_1));
reportReader.putCoverageDetails(TEST_FILE_REF_1, coverageDetails);

underTest.execute();
@@ -153,12 +150,12 @@ public class PersistTestsStepTest extends BaseStepTest {
assertThat(dto.getFileUuid()).isEqualTo(TEST_FILE_UUID_1);
assertThat(dto.getTestData()).hasSize(1);

FileSourceDb.Test test1 = dto.getTestData().get(0);
FileSources.Test test1 = dto.getTestData().get(0);
assertThat(test1.getUuid()).isNotEmpty();
assertThat(test1.getName()).isEqualTo("name#1");
assertThat(test1.getMsg()).isEqualTo("message#1");
assertThat(test1.getStacktrace()).isEqualTo("stacktrace#1");
assertThat(test1.getStatus()).isEqualTo(FileSourceDb.Test.TestStatus.FAILURE);
assertThat(test1.getStatus()).isEqualTo(FileSources.Test.TestStatus.FAILURE);
assertThat(test1.getExecutionTimeMs()).isEqualTo(1_000);
assertThat(test1.getCoveredFileCount()).isEqualTo(1);
assertThat(test1.getCoveredFile(0).getCoveredLineList()).containsOnly(1, 2, 3);
@@ -174,7 +171,7 @@ public class PersistTestsStepTest extends BaseStepTest {

FileSourceDto dto = dbClient.fileSourceDao().selectTest(TEST_FILE_UUID_1);
assertThat(dto.getFileUuid()).isEqualTo(TEST_FILE_UUID_1);
List<FileSourceDb.Test> tests = dto.getTestData();
List<FileSources.Test> tests = dto.getTestData();
assertThat(tests).hasSize(1);
assertThat(tests.get(0).getCoveredFileList()).isEmpty();
assertThat(tests.get(0).getMsg()).isEqualTo("message#1");
@@ -218,10 +215,10 @@ public class PersistTestsStepTest extends BaseStepTest {
dbClient.fileSourceDao().insert(db.getSession(), new FileSourceDto()
.setProjectUuid(PROJECT_UUID)
.setFileUuid(TEST_FILE_UUID_1)
.setTestData(Arrays.asList(FileSourceDb.Test.newBuilder()
.setTestData(Arrays.asList(FileSources.Test.newBuilder()
.setUuid("test-uuid-1")
.setName("name#1")
.setStatus(FileSourceDb.Test.TestStatus.ERROR)
.setStatus(FileSources.Test.TestStatus.ERROR)
.setStacktrace("old-stacktrace#1")
.setMsg("old-message#1")
.setExecutionTimeMs(987_654_321L)
@@ -246,10 +243,10 @@ public class PersistTestsStepTest extends BaseStepTest {
assertThat(dto.getUpdatedAt()).isEqualTo(now);
assertThat(dto.getTestData()).hasSize(1);

FileSourceDb.Test test = dto.getTestData().get(0);
FileSources.Test test = dto.getTestData().get(0);
assertThat(test.getUuid()).isNotEqualTo("test-uuid-1");
assertThat(test.getName()).isEqualTo("name#1");
assertThat(test.getStatus()).isEqualTo(FileSourceDb.Test.TestStatus.valueOf(newBatchTest.getStatus().name()));
assertThat(test.getStatus()).isEqualTo(FileSources.Test.TestStatus.valueOf(newBatchTest.getStatus().name()));
assertThat(test.getMsg()).isEqualTo(newBatchTest.getMsg());
assertThat(test.getStacktrace()).isEqualTo(newBatchTest.getStacktrace());
assertThat(test.getExecutionTimeMs()).isEqualTo(newBatchTest.getDurationInMs());
@@ -276,10 +273,9 @@ public class PersistTestsStepTest extends BaseStepTest {
return CoverageDetail.newBuilder()
.setTestName("name#" + id)
.addCoveredFile(CoverageDetail.CoveredFile.newBuilder()
.addAllCoveredLine(Arrays.asList(lines))
.setFileRef(covered_file_ref)
.build()
)
.addAllCoveredLine(Arrays.asList(lines))
.setFileRef(covered_file_ref)
.build())
.build();
}
}

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/issue/IssueServiceMediumTest.java View File

@@ -42,6 +42,7 @@ import org.sonar.core.issue.workflow.Transition;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.FileSources;
import org.sonar.db.component.ComponentDao;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.issue.ActionPlanDto;
@@ -62,7 +63,6 @@ import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.permission.InternalPermissionService;
import org.sonar.server.permission.PermissionChange;
import org.sonar.server.rule.db.RuleDao;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.index.FileSourcesUpdaterHelper;
import org.sonar.server.source.index.SourceLineIndexer;
import org.sonar.server.source.index.SourceLineResultSetIterator;
@@ -608,7 +608,7 @@ public class IssueServiceMediumTest {
}

private void newSourceLine(ComponentDto file, int line, String scmAuthor) {
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
dataBuilder.addLinesBuilder()
.setLine(line)
.setScmAuthor(scmAuthor)

+ 6
- 6
server/sonar-server/src/test/java/org/sonar/server/source/index/FileSourceTesting.java View File

@@ -26,8 +26,8 @@ import java.sql.SQLException;
import java.util.Arrays;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.math.RandomUtils;
import org.sonar.db.FileSources;
import org.sonar.db.source.FileSourceDto;
import org.sonar.server.source.db.FileSourceDb;

public class FileSourceTesting {

@@ -35,7 +35,7 @@ public class FileSourceTesting {
// only static stuff
}

public static void updateDataColumn(Connection connection, String fileUuid, FileSourceDb.Data data) throws SQLException {
public static void updateDataColumn(Connection connection, String fileUuid, FileSources.Data data) throws SQLException {
updateDataColumn(connection, fileUuid, FileSourceDto.encodeSourceData(data));
}

@@ -50,8 +50,8 @@ public class FileSourceTesting {
/**
* Generate predefined fake data. Result is mutable.
*/
public static FileSourceDb.Data.Builder newFakeData(int numberOfLines) throws IOException {
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
public static FileSources.Data.Builder newFakeData(int numberOfLines) throws IOException {
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
for (int i = 1; i <= numberOfLines; i++) {
dataBuilder.addLinesBuilder()
.setLine(i)
@@ -79,8 +79,8 @@ public class FileSourceTesting {
/**
* Generate random data. Result is mutable.
*/
public static FileSourceDb.Data.Builder newRandomData(int numberOfLines) throws IOException {
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
public static FileSources.Data.Builder newRandomData(int numberOfLines) throws IOException {
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
for (int i = 1; i <= numberOfLines; i++) {
dataBuilder.addLinesBuilder()
.setLine(i)

+ 4
- 5
server/sonar-server/src/test/java/org/sonar/server/source/index/SourceLineIndexerTest.java View File

@@ -40,9 +40,9 @@ import org.sonar.api.config.Settings;
import org.sonar.api.utils.DateUtils;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
import org.sonar.db.FileSources;
import org.sonar.server.db.DbClient;
import org.sonar.server.es.EsTester;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.test.DbTests;
import org.sonar.test.TestUtils;

@@ -131,7 +131,7 @@ public class SourceLineIndexerTest {
indexLine("P1", "F2", 1);

List<Integer> duplications = ImmutableList.of(1, 2, 3);
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
dataBuilder.addLinesBuilder()
.setLine(1)
.setScmRevision("new_revision")
@@ -156,8 +156,7 @@ public class SourceLineIndexerTest {
entry(FIELD_SCM_REVISION, "new_revision"),
entry(FIELD_SCM_AUTHOR, "new_author"),
entry(FIELD_SOURCE, "new source"),
entry(FIELD_DUPLICATIONS, duplications)
);
entry(FIELD_DUPLICATIONS, duplications));
}

@Test
@@ -195,7 +194,7 @@ public class SourceLineIndexerTest {
public void index_source_lines_with_big_test_data() {
Integer bigValue = Short.MAX_VALUE * 2;

FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
dataBuilder.addLinesBuilder()
.setLine(1)
.setScmRevision("cafebabe")

+ 7
- 10
server/sonar-server/src/test/java/org/sonar/server/source/index/SourceLineResultSetIteratorTest.java View File

@@ -28,7 +28,7 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;
import org.sonar.test.DbTests;

import static org.assertj.core.api.Assertions.assertThat;
@@ -81,8 +81,7 @@ public class SourceLineResultSetIteratorTest {
MapEntry.entry(SourceLineIndexDefinition.FIELD_IT_COVERED_CONDITIONS, 6),
MapEntry.entry(SourceLineIndexDefinition.FIELD_OVERALL_LINE_HITS, 7),
MapEntry.entry(SourceLineIndexDefinition.FIELD_OVERALL_CONDITIONS, 8),
MapEntry.entry(SourceLineIndexDefinition.FIELD_OVERALL_COVERED_CONDITIONS, 9)
);
MapEntry.entry(SourceLineIndexDefinition.FIELD_OVERALL_COVERED_CONDITIONS, 9));
}

/**
@@ -91,7 +90,7 @@ public class SourceLineResultSetIteratorTest {
@Test
public void minimal_data() throws Exception {
db.prepareDbUnit(getClass(), "shared.xml");
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
dataBuilder.addLinesBuilder().setLine(1).build();
try (Connection connection = db.openConnection()) {
FileSourceTesting.updateDataColumn(connection, "F1", dataBuilder.build());
@@ -108,8 +107,7 @@ public class SourceLineResultSetIteratorTest {
assertThat(doc).contains(
MapEntry.entry(SourceLineIndexDefinition.FIELD_PROJECT_UUID, "P1"),
MapEntry.entry(SourceLineIndexDefinition.FIELD_FILE_UUID, "F1"),
MapEntry.entry(SourceLineIndexDefinition.FIELD_LINE, 1)
);
MapEntry.entry(SourceLineIndexDefinition.FIELD_LINE, 1));
// null values
assertThat(doc).containsKeys(
SourceLineIndexDefinition.FIELD_SCM_REVISION,
@@ -124,8 +122,7 @@ public class SourceLineResultSetIteratorTest {
SourceLineIndexDefinition.FIELD_IT_COVERED_CONDITIONS,
SourceLineIndexDefinition.FIELD_OVERALL_LINE_HITS,
SourceLineIndexDefinition.FIELD_OVERALL_CONDITIONS,
SourceLineIndexDefinition.FIELD_OVERALL_COVERED_CONDITIONS
);
SourceLineIndexDefinition.FIELD_OVERALL_COVERED_CONDITIONS);
}

@Test
@@ -139,7 +136,7 @@ public class SourceLineResultSetIteratorTest {
@Test
public void filter_by_project() throws Exception {
db.prepareDbUnit(getClass(), "filter_by_project.xml");
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
dataBuilder.addLinesBuilder().setLine(1).build();
try (Connection connection = db.openConnection()) {
FileSourceTesting.updateDataColumn(connection, "F1", dataBuilder.build());
@@ -158,7 +155,7 @@ public class SourceLineResultSetIteratorTest {
@Test
public void filter_by_project_and_date() throws Exception {
db.prepareDbUnit(getClass(), "filter_by_project_and_date.xml");
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
dataBuilder.addLinesBuilder().setLine(1).build();
try (Connection connection = db.openConnection()) {
FileSourceTesting.updateDataColumn(connection, "F1", dataBuilder.build());

+ 13
- 16
server/sonar-server/src/test/java/org/sonar/server/test/db/TestTesting.java View File

@@ -20,20 +20,18 @@

package org.sonar.server.test.db;

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.math.RandomUtils;
import org.sonar.api.utils.internal.Uuids;
import org.sonar.db.DbSession;
import org.sonar.db.source.FileSourceDto;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.db.FileSourceDb.Test.TestStatus;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.math.RandomUtils;
import org.sonar.api.utils.internal.Uuids;
import org.sonar.db.DbSession;
import org.sonar.db.FileSources;
import org.sonar.db.source.FileSourceDto;

public class TestTesting {

@@ -41,7 +39,7 @@ public class TestTesting {
// only static stuff
}

public static void updateDataColumn(DbSession session, String fileUuid, List<FileSourceDb.Test> tests) throws SQLException {
public static void updateDataColumn(DbSession session, String fileUuid, List<FileSources.Test> tests) throws SQLException {
updateDataColumn(session, fileUuid, FileSourceDto.encodeTestData(tests));
}

@@ -58,22 +56,21 @@ public class TestTesting {
/**
* Generate random data.
*/
public static List<FileSourceDb.Test> newRandomTests(int numberOfTests) throws IOException {
List<FileSourceDb.Test> tests = new ArrayList<>();
public static List<FileSources.Test> newRandomTests(int numberOfTests) throws IOException {
List<FileSources.Test> tests = new ArrayList<>();
for (int i = 1; i <= numberOfTests; i++) {
FileSourceDb.Test.Builder test = FileSourceDb.Test.newBuilder()
FileSources.Test.Builder test = FileSources.Test.newBuilder()
.setUuid(Uuids.create())
.setName(RandomStringUtils.randomAlphanumeric(20))
.setStatus(TestStatus.FAILURE)
.setStatus(FileSources.Test.TestStatus.FAILURE)
.setStacktrace(RandomStringUtils.randomAlphanumeric(50))
.setMsg(RandomStringUtils.randomAlphanumeric(30))
.setExecutionTimeMs(RandomUtils.nextLong());
for (int j = 0; j < numberOfTests; j++) {
test.addCoveredFile(
FileSourceDb.Test.CoveredFile.newBuilder()
FileSources.Test.CoveredFile.newBuilder()
.setFileUuid(Uuids.create())
.addCoveredLine(RandomUtils.nextInt(500))
);
.addCoveredLine(RandomUtils.nextInt(500)));
}
tests.add(test.build());
}

+ 6
- 9
server/sonar-server/src/test/java/org/sonar/server/test/index/TestIndexerTest.java View File

@@ -39,10 +39,9 @@ import org.junit.experimental.categories.Category;
import org.sonar.api.config.Settings;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
import org.sonar.db.FileSources;
import org.sonar.server.db.DbClient;
import org.sonar.server.es.EsTester;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.db.FileSourceDb.Test.TestStatus;
import org.sonar.server.source.index.FileSourcesUpdaterHelper;
import org.sonar.server.test.db.TestTesting;
import org.sonar.test.DbTests;
@@ -121,16 +120,15 @@ public class TestIndexerTest {
indexTest("P1", "F2", "T1", "U121");

FileSourcesUpdaterHelper.Row dbRow = TestResultSetIterator.toRow("P1", "F1", new Date(), Arrays.asList(
FileSourceDb.Test.newBuilder()
FileSources.Test.newBuilder()
.setUuid("U111")
.setName("NAME_1")
.setStatus(TestStatus.FAILURE)
.setStatus(FileSources.Test.TestStatus.FAILURE)
.setMsg("NEW_MESSAGE_1")
.setStacktrace("NEW_STACKTRACE_1")
.setExecutionTimeMs(123_456L)
.addCoveredFile(FileSourceDb.Test.CoveredFile.newBuilder().setFileUuid("MAIN_UUID_1").addCoveredLine(42))
.build()
));
.addCoveredFile(FileSources.Test.CoveredFile.newBuilder().setFileUuid("MAIN_UUID_1").addCoveredLine(42))
.build()));
underTest.index(Iterators.singletonIterator(dbRow));

assertThat(countDocuments()).isEqualTo(2L);
@@ -148,8 +146,7 @@ public class TestIndexerTest {
entry(FIELD_STATUS, "FAILURE"),
entry(FIELD_MESSAGE, "NEW_MESSAGE_1"),
entry(FIELD_STACKTRACE, "NEW_STACKTRACE_1"),
entry(FIELD_DURATION_IN_MS, 123_456)
);
entry(FIELD_DURATION_IN_MS, 123_456));
}

@Test

+ 13
- 19
server/sonar-server/src/test/java/org/sonar/server/test/index/TestResultSetIteratorTest.java View File

@@ -32,8 +32,7 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.db.FileSourceDb.Test.TestStatus;
import org.sonar.db.FileSources;
import org.sonar.server.source.index.FileSourcesUpdaterHelper;
import org.sonar.server.test.db.TestTesting;
import org.sonar.test.DbTests;
@@ -78,8 +77,7 @@ public class TestResultSetIteratorTest {
MapEntry.entry(TestIndexDefinition.FIELD_MESSAGE, "MESSAGE_1"),
MapEntry.entry(TestIndexDefinition.FIELD_DURATION_IN_MS, 1),
MapEntry.entry(TestIndexDefinition.FIELD_STACKTRACE, "STACKTRACE_1"),
MapEntry.entry(TestIndexDefinition.FIELD_NAME, "NAME_1")
);
MapEntry.entry(TestIndexDefinition.FIELD_NAME, "NAME_1"));
}

/**
@@ -88,12 +86,11 @@ public class TestResultSetIteratorTest {
@Test
public void minimal_data() throws Exception {
dbTester.prepareDbUnit(getClass(), "shared.xml");
List<FileSourceDb.Test> tests = Arrays.asList(
FileSourceDb.Test.newBuilder()
List<FileSources.Test> tests = Arrays.asList(
FileSources.Test.newBuilder()
.setUuid("U1")
.setName("N1")
.build()
);
.build());
TestTesting.updateDataColumn(dbTester.getSession(), "F1", tests);
underTest = TestResultSetIterator.create(dbTester.getDbClient(), dbTester.getSession(), 0L, null);

@@ -109,16 +106,14 @@ public class TestResultSetIteratorTest {
MapEntry.entry(TestIndexDefinition.FIELD_PROJECT_UUID, "P1"),
MapEntry.entry(TestIndexDefinition.FIELD_FILE_UUID, "F1"),
MapEntry.entry(TestIndexDefinition.FIELD_TEST_UUID, "U1"),
MapEntry.entry(TestIndexDefinition.FIELD_NAME, "N1")
);
MapEntry.entry(TestIndexDefinition.FIELD_NAME, "N1"));
// null values
assertThat(doc).containsKeys(
TestIndexDefinition.FIELD_DURATION_IN_MS,
TestIndexDefinition.FIELD_STACKTRACE,
TestIndexDefinition.FIELD_MESSAGE,
TestIndexDefinition.FIELD_STATUS,
TestIndexDefinition.FIELD_COVERED_FILES
);
TestIndexDefinition.FIELD_COVERED_FILES);
}

@Test
@@ -175,22 +170,21 @@ public class TestResultSetIteratorTest {
}
}

private static List<FileSourceDb.Test> newFakeTests(int numberOfTests) {
List<FileSourceDb.Test> tests = new ArrayList<>();
private static List<FileSources.Test> newFakeTests(int numberOfTests) {
List<FileSources.Test> tests = new ArrayList<>();
for (int i = 1; i <= numberOfTests; i++) {
FileSourceDb.Test.Builder test = FileSourceDb.Test.newBuilder()
FileSources.Test.Builder test = FileSources.Test.newBuilder()
.setUuid("TEST_FILE_UUID_" + i)
.setName("NAME_" + i)
.setStatus(TestStatus.FAILURE)
.setStatus(FileSources.Test.TestStatus.FAILURE)
.setStacktrace("STACKTRACE_" + i)
.setMsg("MESSAGE_" + i)
.setExecutionTimeMs(i);
for (int j = 1; j <= numberOfTests; j++) {
test.addCoveredFile(
FileSourceDb.Test.CoveredFile.newBuilder()
FileSources.Test.CoveredFile.newBuilder()
.setFileUuid("MAIN_FILE_UUID_" + j)
.addCoveredLine(j)
);
.addCoveredLine(j));
}
tests.add(test.build());
}

+ 0
- 3434
sonar-batch-protocol/src/main/gen-java/org/sonar/server/source/db/FileSourceTestDb.java
File diff suppressed because it is too large
View File


+ 18
- 0
sonar-db/pom.xml View File

@@ -123,6 +123,24 @@

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/gen-java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>

sonar-db/src/main/gen-java/org/sonar/db/FileSources.java
File diff suppressed because it is too large
View File


+ 22
- 23
sonar-db/src/main/java/org/sonar/db/source/FileSourceDto.java View File

@@ -30,8 +30,7 @@ import javax.annotation.Nullable;
import net.jpountz.lz4.LZ4BlockInputStream;
import net.jpountz.lz4.LZ4BlockOutputStream;
import org.apache.commons.io.IOUtils;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.server.source.db.FileSourceDb.Test;
import org.sonar.db.FileSources;

public class FileSourceDto {

@@ -86,7 +85,7 @@ public class FileSourceDto {
return this;
}

public static FileSourceDb.Data decodeSourceData(byte[] binaryData) {
public static FileSources.Data decodeSourceData(byte[] binaryData) {
// stream is always closed
return decodeSourceData(new ByteArrayInputStream(binaryData));
}
@@ -95,11 +94,11 @@ public class FileSourceDto {
* Decompress and deserialize content of column FILE_SOURCES.BINARY_DATA.
* The parameter "input" is always closed by this method.
*/
public static FileSourceDb.Data decodeSourceData(InputStream binaryInput) {
public static FileSources.Data decodeSourceData(InputStream binaryInput) {
LZ4BlockInputStream lz4Input = null;
try {
lz4Input = new LZ4BlockInputStream(binaryInput);
return FileSourceDb.Data.parseFrom(lz4Input);
return FileSources.Data.parseFrom(lz4Input);
} catch (IOException e) {
throw new IllegalStateException("Fail to decompress and deserialize source data", e);
} finally {
@@ -108,10 +107,10 @@ public class FileSourceDto {
}

/**
* Serialize and compress protobuf message {@link org.sonar.server.source.db.FileSourceDb.Data}
* Serialize and compress protobuf message {@link org.sonar.db.FileSources.Data}
* in the column BINARY_DATA.
*/
public static byte[] encodeSourceData(FileSourceDb.Data data) {
public static byte[] encodeSourceData(FileSources.Data data) {
ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
LZ4BlockOutputStream compressedOutput = new LZ4BlockOutputStream(byteOutput);
try {
@@ -125,7 +124,7 @@ public class FileSourceDto {
}
}

public static List<Test> decodeTestData(byte[] binaryData) {
public static List<FileSources.Test> decodeTestData(byte[] binaryData) {
// stream is always closed
return decodeTestData(new ByteArrayInputStream(binaryData));
}
@@ -134,15 +133,15 @@ public class FileSourceDto {
* Decompress and deserialize content of column FILE_SOURCES.BINARY_DATA.
* The parameter "input" is always closed by this method.
*/
public static List<Test> decodeTestData(InputStream binaryInput) {
public static List<FileSources.Test> decodeTestData(InputStream binaryInput) {
LZ4BlockInputStream lz4Input = null;
List<Test> tests = new ArrayList<>();
List<FileSources.Test> tests = new ArrayList<>();
try {
lz4Input = new LZ4BlockInputStream(binaryInput);

Test currentTest;
FileSources.Test currentTest;
do {
currentTest = Test.parseDelimitedFrom(lz4Input);
currentTest = FileSources.Test.parseDelimitedFrom(lz4Input);
if (currentTest != null) {
tests.add(currentTest);
}
@@ -156,14 +155,14 @@ public class FileSourceDto {
}

/**
* Serialize and compress protobuf message {@link org.sonar.server.source.db.FileSourceDb.Data}
* Serialize and compress protobuf message {@link org.sonar.db.FileSources.Data}
* in the column BINARY_DATA.
*/
public static byte[] encodeTestData(List<Test> tests) {
public static byte[] encodeTestData(List<FileSources.Test> tests) {
ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
LZ4BlockOutputStream compressedOutput = new LZ4BlockOutputStream(byteOutput);
try {
for (Test test : tests) {
for (FileSources.Test test : tests) {
test.writeDelimitedTo(compressedOutput);
}
compressedOutput.close();
@@ -176,14 +175,14 @@ public class FileSourceDto {
}

/**
* Compressed value of serialized protobuf message {@link org.sonar.server.source.db.FileSourceDb.Data}
* Compressed value of serialized protobuf message {@link org.sonar.db.FileSources.Data}
*/
public byte[] getBinaryData() {
return binaryData;
}

/**
* Set compressed value of the protobuf message {@link org.sonar.server.source.db.FileSourceDb.Data}
* Set compressed value of the protobuf message {@link org.sonar.db.FileSources.Data}
*/
public FileSourceDto setBinaryData(byte[] data) {
this.binaryData = data;
@@ -191,26 +190,26 @@ public class FileSourceDto {
}

/**
* Compressed value of serialized protobuf message {@link org.sonar.server.source.db.FileSourceDb.Data}
* Compressed value of serialized protobuf message {@link org.sonar.db.FileSources.Data}
*/
public FileSourceDb.Data getSourceData() {
public FileSources.Data getSourceData() {
return decodeSourceData(binaryData);
}

public FileSourceDto setSourceData(FileSourceDb.Data data) {
public FileSourceDto setSourceData(FileSources.Data data) {
this.dataType = Type.SOURCE;
this.binaryData = encodeSourceData(data);
return this;
}

/**
* Compressed value of serialized protobuf message {@link org.sonar.server.source.db.FileSourceDb.Data}
* Compressed value of serialized protobuf message {@link org.sonar.db.FileSources.Data}
*/
public List<Test> getTestData() {
public List<FileSources.Test> getTestData() {
return decodeTestData(binaryData);
}

public FileSourceDto setTestData(List<Test> data) {
public FileSourceDto setTestData(List<FileSources.Test> data) {
this.dataType = Type.TEST;
this.binaryData = encodeTestData(data);
return this;

+ 3
- 3
sonar-db/src/main/java/org/sonar/db/version/v51/FeedFileSourcesBinaryData.java View File

@@ -38,7 +38,7 @@ import org.sonar.db.version.BaseDataChange;
import org.sonar.db.version.MassUpdate;
import org.sonar.db.version.Select;
import org.sonar.db.version.SqlStatement;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

public class FeedFileSourcesBinaryData extends BaseDataChange {

@@ -63,7 +63,7 @@ public class FeedFileSourcesBinaryData extends BaseDataChange {
}

private byte[] toBinary(Long fileSourceId, @Nullable String data) {
FileSourceDb.Data.Builder dataBuilder = FileSourceDb.Data.newBuilder();
FileSources.Data.Builder dataBuilder = FileSources.Data.newBuilder();
CSVParser parser = null;
try {
if (data != null) {
@@ -74,7 +74,7 @@ public class FeedFileSourcesBinaryData extends BaseDataChange {
CSVRecord row = rows.next();
if (row.size() == 16) {

FileSourceDb.Line.Builder lineBuilder = dataBuilder.addLinesBuilder();
FileSources.Line.Builder lineBuilder = dataBuilder.addLinesBuilder();
lineBuilder.setLine(line);
String s = row.get(0);
if (StringUtils.isNotEmpty(s)) {

sonar-batch-protocol/src/main/protobuf/file_source_db.proto → sonar-db/src/main/protobuf/file_sources.proto View File

@@ -18,25 +18,15 @@
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

/*
Notes

- "required" fields are not used as recommended by Google to keep forward-compatibility:
https://developers.google.com/protocol-buffers/docs/proto#simple

- the related Java files are not generated during build. Indeed the existing protoc maven
plugins require protobuf to be installed on boxes. That means that generated Java files
are updated and committed for each change (see src/main/gen-java).
*/

// structure of db column FILE_SOURCES.BINARY_DATA

// Temporarily in sonar-batch-protocol as this db table
// is still fed on batch-side. However generated sources
// are already in correct package
// Structure of db column FILE_SOURCES.BINARY_DATA

// Package must not be changed for backward-compatibility
// with the DB rows inserted in DB before 5.2
package org.sonar.server.source.db;

// The java package can be changed without breaking compatibility.
// it impacts only the generated Java code.
option java_package = "org.sonar.db";
option optimize_for = SPEED;

message Line {
@@ -68,6 +58,7 @@ message Line {
repeated int32 duplication = 17 [packed = true];
}

// TODO should be dropped as it prevents streaming
message Data {
repeated Line lines = 1;
}

+ 5
- 6
sonar-db/src/test/java/org/sonar/db/source/FileSourceDtoTest.java View File

@@ -23,7 +23,7 @@ package org.sonar.db.source;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import org.sonar.server.source.db.FileSourceDb;
import org.sonar.db.FileSources;

import static org.assertj.core.api.Assertions.assertThat;

@@ -31,14 +31,13 @@ public class FileSourceDtoTest {

@Test
public void encode_and_decode_test_data() {
List<FileSourceDb.Test> tests = Arrays.asList(
FileSourceDb.Test.newBuilder()
List<FileSources.Test> tests = Arrays.asList(
FileSources.Test.newBuilder()
.setName("name#1")
.build(),
FileSourceDb.Test.newBuilder()
FileSources.Test.newBuilder()
.setName("name#2")
.build()
);
.build());

FileSourceDto underTest = new FileSourceDto().setTestData(tests);


+ 3
- 3
sonar-db/src/test/java/org/sonar/db/version/v51/FeedFileSourcesBinaryDataTest.java View File

@@ -30,9 +30,9 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.utils.System2;
import org.sonar.db.DbTester;
import org.sonar.db.FileSources;
import org.sonar.db.source.FileSourceDto;
import org.sonar.db.version.MigrationStep;
import org.sonar.server.source.db.FileSourceDb;

import static org.assertj.core.api.Assertions.assertThat;

@@ -55,7 +55,7 @@ public class FeedFileSourcesBinaryDataTest {
assertThat(count).isEqualTo(3);

try (Connection connection = db.openConnection()) {
FileSourceDb.Data data = selectData(connection, 1L);
FileSources.Data data = selectData(connection, 1L);
assertThat(data.getLinesCount()).isEqualTo(4);
assertThat(data.getLines(0).getScmRevision()).isEqualTo("aef12a");

@@ -80,7 +80,7 @@ public class FeedFileSourcesBinaryDataTest {
migration.execute();
}

private FileSourceDb.Data selectData(Connection connection, long fileSourceId) throws SQLException {
private FileSources.Data selectData(Connection connection, long fileSourceId) throws SQLException {
PreparedStatement pstmt = connection.prepareStatement("select binary_data from file_sources where id=?");
ResultSet rs = null;
try {

Loading…
Cancel
Save