Include IT coverage in JaCoCo and Sonar reports 96/8596/2
authorMarek Gradzki <mgradzki@cisco.com>
Fri, 29 Sep 2017 08:52:07 +0000 (10:52 +0200)
committerMarek Gradzki <mgradzki@cisco.com>
Fri, 29 Sep 2017 10:34:17 +0000 (12:34 +0200)
* introduces jacoco-it.exec which stores
  aggregated IT test execution data,
* configures Sonar to use jacoco-it.exec
  to report IT coverage,
* marks following modules as integration tests:
  - it-test
  - minimal-distribution-test
  - bgp-distribution-test

Change-Id: I538c1febb6112a6abad29061f6b00259a0d79f9f
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
common/honeycomb-parent/pom.xml
infra/bgp-distribution-test/pom.xml
infra/it/it-test/pom.xml
infra/minimal-distribution-test/pom.xml

index 4488f11..52ece9b 100644 (file)
         <!-- Sonar configuration -->
         <!-- Note: This list should match jacoco-maven-plugin's exclusion list below -->
         <sonar.exclusions>**/gen/**,**/generated-sources/**,**/yang-gen**</sonar.exclusions>
+        <!-- https://github.com/SonarSource/sonar-scanning-examples/blob/master/sonarqube-scanner-maven/pom.xml#L24 -->
+        <!-- The destination file for the code coverage report has to be set to the same value
+             in the parent pom and in each module pom. Then JaCoCo will add up information in
+             the same report, so that, it will give the cross-module code coverage. -->
+        <!-- We store jacoco-it.exec in honeycomb-parent because it is built first,
+             so mvn clean won't remove aggregated report. -->
+        <sonar.jacoco.itReportPath>${maven.multiModuleProjectDirectory}/common/honeycomb-parent/target/jacoco-it.exec</sonar.jacoco.itReportPath>
 
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
                     <version>${jacoco.version}</version>
                     <executions>
                         <execution>
-                            <id>pre-unit-test</id>
+                            <id>agent-for-ut</id>
                             <goals>
                                 <goal>prepare-agent</goal>
                             </goals>
                         </execution>
                         <execution>
-                            <id>post-unit-test</id>
+                            <id>agent-for-it</id>
+                            <goals>
+                                <goal>prepare-agent-integration</goal>
+                            </goals>
+                        </execution>
+                        <execution>
+                            <id>jacoco-site</id>
                             <goals>
                                 <goal>report</goal>
                             </goals>
                         </execution>
                     </executions>
                     <configuration>
+                        <!-- Appends data to existing JaCoCo execution file. Required for IT coverage.
+                             Will not affect UT which use separate files. -->
+                        <append>true</append>
                         <excludes>
                             <exclude>**/gen/**</exclude>
                             <exclude>**/generated-sources/**</exclude>
index f9ccafc..8401c88 100644 (file)
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <configuration>
+                    <!-- Include module's tests in IT coverage report -->
+                    <destFile>${sonar.jacoco.itReportPath}</destFile>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
index db3200f..422127f 100644 (file)
             <version>${project.version}</version>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <configuration>
+                    <!-- Include module's tests in IT coverage report -->
+                    <destFile>${sonar.jacoco.itReportPath}</destFile>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
index b57abfc..4a566a6 100644 (file)
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <configuration>
+                    <!-- Include module's tests in IT coverage report -->
+                    <destFile>${sonar.jacoco.itReportPath}</destFile>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file