]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6260 Set is unit test in Component
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 10 Jun 2015 10:35:18 +0000 (12:35 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Wed, 10 Jun 2015 12:30:41 +0000 (14:30 +0200)
server/sonar-server/src/main/java/org/sonar/server/computation/component/Component.java
server/sonar-server/src/main/java/org/sonar/server/computation/component/ComponentImpl.java
server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistComponentsStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistSnapshotsStep.java
server/sonar-server/src/main/java/org/sonar/server/computation/step/PersistTestsStep.java
server/sonar-server/src/test/java/org/sonar/server/computation/component/DumbComponent.java
server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistComponentsStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistSnapshotsStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistTestsStepTest.java

index 6f95e1272fa4d9d27ca43b5dabd0f3b63ac1412b..7995f1e0e05cca5e23b68127105d1fed49bb7ff5 100644 (file)
@@ -68,6 +68,11 @@ public interface Component {
    */
   String getVersion();
 
+  /**
+   * Is this component a unit test or test ?
+   */
+  boolean isUnitTest();
+
   List<Component> getChildren();
 
 }
index 7b436ad79cbefd16749671aaec87010b7d6f8bd5..fcefb9fcbab666914651e3364ca7799bc3f29e6c 100644 (file)
@@ -34,6 +34,7 @@ public class ComponentImpl implements Component {
   private final Type type;
   private final int ref;
   private final String name, version;
+  private final boolean isUnitTest;
   private final List<Component> children;
 
   // Mutable values
@@ -45,6 +46,7 @@ public class ComponentImpl implements Component {
     this.type = convertType(component.getType());
     this.name = component.getName();
     this.version = component.hasVersion() ? component.getVersion() : null;
+    this.isUnitTest = component.hasIsTest() && component.getIsTest();
     this.children = children == null ? Collections.<Component>emptyList() : copyOf(filter(children, notNull()));
   }
 
@@ -110,6 +112,11 @@ public class ComponentImpl implements Component {
     return this;
   }
 
+  @Override
+  public boolean isUnitTest() {
+    return isUnitTest;
+  }
+
   @Override
   public List<Component> getChildren() {
     return children;
index 4584b9241533c82ee52036973d20961d1e8a2034..fc44bc1cdb8bccd392fd3f1c064941be9cc36e67 100644 (file)
@@ -191,7 +191,7 @@ public class PersistComponentsStep implements ComputationStep {
       ComponentDto componentDto = createComponentDto(reportComponent, file);
 
       componentDto.setScope(Scopes.FILE);
-      componentDto.setQualifier(getFileQualifier(reportComponent));
+      componentDto.setQualifier(getFileQualifier(file));
       componentDto.setName(FilenameUtils.getName(reportComponent.getPath()));
       componentDto.setLongName(reportComponent.getPath());
       if (reportComponent.hasPath()) {
@@ -271,8 +271,8 @@ public class PersistComponentsStep implements ComputationStep {
     return isUpdated;
   }
 
-  private static String getFileQualifier(BatchReport.Component reportComponent) {
-    return reportComponent.getIsTest() ? Qualifiers.UNIT_TEST_FILE : Qualifiers.FILE;
+  private static String getFileQualifier(Component component) {
+    return component.isUnitTest() ? Qualifiers.UNIT_TEST_FILE : Qualifiers.FILE;
   }
 
   private static Map<String, ComponentDto> componentDtosByKey(List<ComponentDto> components) {
index 436ffe69dd84b9cb01afe544b6ea7fa7ee8e2ef9..1bfa492e38a6b3beebfbc187b44449d607f78682 100644 (file)
@@ -24,7 +24,6 @@ import javax.annotation.Nullable;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.resources.Scopes;
 import org.sonar.api.utils.System2;
-import org.sonar.batch.protocol.output.BatchReport;
 import org.sonar.core.component.SnapshotDto;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.server.computation.batch.BatchReportReader;
@@ -106,8 +105,7 @@ public class PersistSnapshotsStep implements ComputationStep {
           processChildren(component, directorySnapshot);
           break;
         case FILE:
-          BatchReport.Component reportComponent = reportReader.readComponent(component.getRef());
-          SnapshotDto fileSnapshot = persistSnapshot(componentId, getFileQualifier(reportComponent), Scopes.FILE, null, parentSnapshot, false);
+          SnapshotDto fileSnapshot = persistSnapshot(componentId, getFileQualifier(component), Scopes.FILE, null, parentSnapshot, false);
           addToCache(component, fileSnapshot);
           break;
         default:
@@ -165,8 +163,8 @@ public class PersistSnapshotsStep implements ComputationStep {
     }
   }
 
-  private static String getFileQualifier(BatchReport.Component reportComponent) {
-    return reportComponent.getIsTest() ? Qualifiers.UNIT_TEST_FILE : Qualifiers.FILE;
+  private static String getFileQualifier(Component component) {
+    return component.isUnitTest() ? Qualifiers.UNIT_TEST_FILE : Qualifiers.FILE;
   }
 
   @Override
index 6f7a41f34678fc37e697d9a983e63e157dbd18d1..d21f82bba68989427e77fe930425b3276e59af01 100644 (file)
@@ -115,17 +115,16 @@ public class PersistTestsStep implements ComputationStep {
 
     @Override
     public void visitFile(Component file) {
-      BatchReport.Component batchComponent = reportReader.readComponent(file.getRef());
-      if (batchComponent.getIsTest()) {
-        persistTestResults(batchComponent);
+      if (file.isUnitTest()) {
+        persistTestResults(file);
       }
     }
 
-    private void persistTestResults(BatchReport.Component component) {
-      Multimap<String, FileSourceDb.Test.Builder> testsByName = buildDbTests(component);
+    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);
-      if (checkIfThereAreUnprocessedCoverageDetails(testsByName, coveredFilesByName, component)) {
+      if (checkIfThereAreUnprocessedCoverageDetails(testsByName, coveredFilesByName, component.getKey())) {
         hasUnprocessedCoverageDetails = true;
       }
 
@@ -156,13 +155,12 @@ public class PersistTestsStep implements ComputationStep {
     }
 
     private boolean checkIfThereAreUnprocessedCoverageDetails(Multimap<String, FileSourceDb.Test.Builder> testsByName,
-      Table<String, String, FileSourceDb.Test.CoveredFile.Builder> coveredFilesByName,
-      BatchReport.Component component) {
+      Table<String, String, FileSourceDb.Test.CoveredFile.Builder> coveredFilesByName, String componentKey) {
       Set<String> unprocessedCoverageDetailNames = new HashSet<>(coveredFilesByName.rowKeySet());
       unprocessedCoverageDetailNames.removeAll(testsByName.keySet());
       boolean hasUnprocessedCoverage = !unprocessedCoverageDetailNames.isEmpty();
       if (hasUnprocessedCoverage) {
-        LOG.trace("The following test coverages for file '{}' have not been taken into account: {}", component.getPath(), Joiner.on(", ").join(unprocessedCoverageDetailNames));
+        LOG.trace("The following test coverages for file '{}' have not been taken into account: {}", componentKey, Joiner.on(", ").join(unprocessedCoverageDetailNames));
       }
       return hasUnprocessedCoverage;
     }
@@ -183,10 +181,10 @@ public class PersistTestsStep implements ComputationStep {
       return tests;
     }
 
-    private Multimap<String, FileSourceDb.Test.Builder> buildDbTests(BatchReport.Component component) {
+    private Multimap<String, FileSourceDb.Test.Builder> buildDbTests(int componentRed) {
       Multimap<String, FileSourceDb.Test.Builder> tests = ArrayListMultimap.create();
 
-      try (CloseableIterator<BatchReport.Test> testIterator = reportReader.readTests(component.getRef())) {
+      try (CloseableIterator<BatchReport.Test> testIterator = reportReader.readTests(componentRed)) {
         while (testIterator.hasNext()) {
           BatchReport.Test batchTest = testIterator.next();
           FileSourceDb.Test.Builder dbTest = FileSourceDb.Test.newBuilder();
index cd79fe64a550dedaa97afb162484e64a94acf3af..54e3c0fe64c634def7f6a44db1143aebff7b0608 100644 (file)
@@ -38,6 +38,7 @@ public class DumbComponent implements Component {
   private final Type type;
   private final int ref;
   private final String uuid, key, name, version;
+  private final boolean isUnitTest;
   private final List<Component> children;
 
   private DumbComponent(Builder builder) {
@@ -47,6 +48,7 @@ public class DumbComponent implements Component {
     this.key = builder.key;
     this.name = builder.name;
     this.version = builder.version;
+    this.isUnitTest = builder.isUnitTest;
     this.children = ImmutableList.copyOf(builder.children);
   }
 
@@ -82,6 +84,11 @@ public class DumbComponent implements Component {
     return version;
   }
 
+  @Override
+  public boolean isUnitTest() {
+    return isUnitTest;
+  }
+
   @Override
   public int getRef() {
     return ref;
@@ -100,6 +107,7 @@ public class DumbComponent implements Component {
     private final Type type;
     private final int ref;
     private String uuid, key, name, version;
+    private boolean isUnitTest;
     private final List<Component> children = new ArrayList<>();
 
     private Builder(Type type, int ref) {
@@ -128,6 +136,11 @@ public class DumbComponent implements Component {
       return this;
     }
 
+    public Builder setUnitTest(boolean b){
+      this.isUnitTest = b;
+      return this;
+    }
+
     public Builder addChildren(Component... c) {
       this.children.addAll(asList(c));
       return this;
index 918cf598145d4240adc6cd7d0d7859bbfb4353db..c4e95d99ced28d4e0dd5adcb839a5f47ffba0bbf 100644 (file)
@@ -272,7 +272,7 @@ public class PersistComponentsStepTest extends BaseStepTest {
 
     treeRootHolder.setRoot(DumbComponent.builder(Component.Type.PROJECT, 1).setUuid("ABCD").setKey(PROJECT_KEY).addChildren(
       DumbComponent.builder(Component.Type.DIRECTORY, 2).setUuid("CDEF").setKey(PROJECT_KEY + ":src/test/java/dir").addChildren(
-        DumbComponent.builder(Component.Type.FILE, 3).setUuid("DEFG").setKey(PROJECT_KEY + ":src/test/java/dir/FooTest.java").build())
+        DumbComponent.builder(Component.Type.FILE, 3).setUuid("DEFG").setKey(PROJECT_KEY + ":src/test/java/dir/FooTest.java").setUnitTest(true).build())
         .build())
       .build());
 
index f664d83e1c189179436b67dcbb27ebedc6cc3805..db3f96e9d11251be5e2c0aeee50d70184c7d463c 100644 (file)
@@ -28,10 +28,8 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.sonar.api.CoreProperties;
-import org.sonar.api.config.Settings;
 import org.sonar.api.utils.DateUtils;
 import org.sonar.api.utils.System2;
-import org.sonar.batch.protocol.Constants;
 import org.sonar.batch.protocol.output.BatchReport;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.component.SnapshotDto;
@@ -77,8 +75,6 @@ public class PersistSnapshotsStepTest extends BaseStepTest {
 
   DbIdsRepository dbIdsRepository;
 
-  Settings settings = new Settings();
-
   DbSession session;
 
   DbClient dbClient;
@@ -130,11 +126,6 @@ public class PersistSnapshotsStepTest extends BaseStepTest {
     dbClient.componentDao().insert(session, fileDto);
     session.commit();
 
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(4)
-      .setType(Constants.ComponentType.FILE)
-      .build());
-
     Component file = DumbComponent.builder(Component.Type.FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java").build();
     Component directory = DumbComponent.builder(Component.Type.DIRECTORY, 3).setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir").addChildren(file).build();
     Component module = DumbComponent.builder(Component.Type.MODULE, 2).setUuid("BCDE").setKey("MODULE_KEY").setVersion("1.1").addChildren(directory).build();
@@ -228,13 +219,7 @@ public class PersistSnapshotsStepTest extends BaseStepTest {
     dbClient.componentDao().insert(session, fileDto);
     session.commit();
 
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(3)
-      .setType(Constants.ComponentType.FILE)
-      .setIsTest(true)
-      .build());
-
-    Component file = DumbComponent.builder(Component.Type.FILE, 3).setUuid("DEFG").setKey(PROJECT_KEY + ":src/main/java/dir/Foo.java").build();
+    Component file = DumbComponent.builder(Component.Type.FILE, 3).setUuid("DEFG").setKey(PROJECT_KEY + ":src/main/java/dir/Foo.java").setUnitTest(true).build();
     Component directory = DumbComponent.builder(Component.Type.DIRECTORY, 2).setUuid("CDEF").setKey(PROJECT_KEY + ":src/main/java/dir").addChildren(file).build();
     Component project = DumbComponent.builder(Component.Type.PROJECT, 1).setUuid("ABCD").setKey(PROJECT_KEY).addChildren(directory).build();
     treeRootHolder.setRoot(project);
@@ -353,13 +338,6 @@ public class PersistSnapshotsStepTest extends BaseStepTest {
 
     session.commit();
 
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(4)
-      .setType(Constants.ComponentType.FILE)
-      .setPath("src/main/java/dir/Foo.java")
-      .setLanguage("java")
-      .build());
-
     Component file = DumbComponent.builder(Component.Type.FILE, 4).setUuid("DEFG").setKey("MODULE_KEY:src/main/java/dir/Foo.java").build();
     Component directory = DumbComponent.builder(Component.Type.DIRECTORY, 3).setUuid("CDEF").setKey("MODULE_KEY:src/main/java/dir").addChildren(file).build();
     Component module = DumbComponent.builder(Component.Type.MODULE, 2).setUuid("BCDE").setKey("MODULE_KEY").addChildren(directory).build();
index 4a9f18e5ea5489bde742b189cc6eccd95a118f2b..2423a77efa4dda07d74b9defb9ce4b5bff4c5e1c 100644 (file)
@@ -96,12 +96,10 @@ public class PersistTestsStepTest extends BaseStepTest {
 
     sut = new PersistTestsStep(dbClient, system2, reportReader, treeRootHolder);
 
-    initBasicReport();
-
     root = DumbComponent.builder(Component.Type.PROJECT, 1).setUuid(PROJECT_UUID).setKey(PROJECT_KEY).addChildren(
       DumbComponent.builder(Component.Type.MODULE, 2).setUuid("MODULE_UUID").setKey("MODULE_KEY").addChildren(
-        DumbComponent.builder(Component.Type.FILE, 3).setUuid(TEST_FILE_UUID_1).setKey("TEST_FILE1_KEY").build(),
-        DumbComponent.builder(Component.Type.FILE, 4).setUuid(TEST_FILE_UUID_2).setKey("TEST_FILE2_KEY").build(),
+        DumbComponent.builder(Component.Type.FILE, 3).setUuid(TEST_FILE_UUID_1).setKey("TEST_FILE1_KEY").setUnitTest(true).build(),
+        DumbComponent.builder(Component.Type.FILE, 4).setUuid(TEST_FILE_UUID_2).setKey("TEST_FILE2_KEY").setUnitTest(true).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()
@@ -210,8 +208,8 @@ public class PersistTestsStepTest extends BaseStepTest {
     assertThat(log.logs(LoggerLevel.WARN)).hasSize(1);
     assertThat(log.logs(LoggerLevel.WARN).get(0)).isEqualTo("Some coverage tests are not taken into account during analysis of project 'PROJECT_KEY'");
     assertThat(log.logs(LoggerLevel.TRACE)).hasSize(2);
-    assertThat(log.logs(LoggerLevel.TRACE).get(0)).isEqualTo("The following test coverages for file 'TEST-PATH-1' have not been taken into account: name#2");
-    assertThat(log.logs(LoggerLevel.TRACE).get(1)).startsWith("The following test coverages for file 'TEST-PATH-2' have not been taken into account: ");
+    assertThat(log.logs(LoggerLevel.TRACE).get(0)).isEqualTo("The following test coverages for file 'TEST_FILE1_KEY' have not been taken into account: name#2");
+    assertThat(log.logs(LoggerLevel.TRACE).get(1)).startsWith("The following test coverages for file 'TEST_FILE2_KEY' have not been taken into account: ");
     assertThat(log.logs(LoggerLevel.TRACE).get(1)).contains("name#1", "name#2");
   }
 
@@ -299,42 +297,4 @@ public class PersistTestsStepTest extends BaseStepTest {
       )
       .build();
   }
-
-  private void initBasicReport() {
-    reportReader.setMetadata(BatchReport.Metadata.newBuilder()
-      .setRootComponentRef(1)
-      .setProjectKey(PROJECT_KEY)
-      .build());
-
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(1)
-      .setType(Constants.ComponentType.PROJECT)
-      .addChildRef(2)
-      .build());
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(2)
-      .setType(Constants.ComponentType.MODULE)
-      .addAllChildRef(Arrays.asList(TEST_FILE_REF_1, TEST_FILE_REF_2, MAIN_FILE_REF_1, MAIN_FILE_REF_2))
-      .build());
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(TEST_FILE_REF_1)
-      .setIsTest(true)
-      .setType(Constants.ComponentType.FILE)
-      .setPath(TEST_FILE_PATH_1)
-      .build());
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(TEST_FILE_REF_2)
-      .setIsTest(true)
-      .setType(Constants.ComponentType.FILE)
-      .setPath(TEST_FILE_PATH_2)
-      .build());
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(MAIN_FILE_REF_1)
-      .setType(Constants.ComponentType.FILE)
-      .build());
-    reportReader.putComponent(BatchReport.Component.newBuilder()
-      .setRef(MAIN_FILE_REF_2)
-      .setType(Constants.ComponentType.FILE)
-      .build());
- }
 }