Assure coverage is checked for all modules 38/81938/3
authorPiotr Jaszczyk <piotr.jaszczyk@nokia.com>
Mon, 11 Mar 2019 13:16:39 +0000 (14:16 +0100)
committerPiotr Jaszczyk <piotr.jaszczyk@nokia.com>
Mon, 11 Mar 2019 13:23:27 +0000 (14:23 +0100)
Change-Id: Ia9bb6cef9154d64cfa45455e38c9fe7603a64c74
Issue-ID: DCAEGEN2-1328
Signed-off-by: Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
14 files changed:
build/hv-collector-coverage/check-coverage.sh
build/hv-collector-coverage/pom.xml
sources/hv-collector-core/pom.xml
sources/hv-collector-ct/pom.xml
sources/hv-collector-dcae-app-simulator/pom.xml
sources/hv-collector-domain/pom.xml
sources/hv-collector-health-check/pom.xml
sources/hv-collector-main/pom.xml
sources/hv-collector-ssl/pom.xml
sources/hv-collector-test-utils/pom.xml
sources/hv-collector-utils/pom.xml
sources/hv-collector-ves-message-generator/pom.xml
sources/hv-collector-xnf-simulator/pom.xml
sources/pom.xml

index 956891a..cfd8f87 100755 (executable)
@@ -3,6 +3,7 @@ set -euo pipefail
 
 JACOCO_REPORT="$1"
 MIN_COVERAGE_PERCENT="$2"
+ROOT_SOURCES_MODULE_POM="$3"
 LOG_FILE=target/check-coverage.log
 
 function coverage_from_report() {
@@ -10,21 +11,38 @@ function coverage_from_report() {
   xpath -q -e "$xpath_expr" "$JACOCO_REPORT" 2>> ${LOG_FILE}
 }
 
-missed=$(coverage_from_report missed)
-covered=$(coverage_from_report covered)
-total=$(($missed + $covered))
-coverage=$((100 * $covered / $total))
+function check_preconditions() {
+  local num_deps=$(grep -c 'project\.parent\.groupId' pom.xml)
+  local num_submodules=$(grep -c '<module>' ${ROOT_SOURCES_MODULE_POM})
+  local difference=$((${num_submodules}-${num_deps}))
 
-if [[ $(wc -c < ${LOG_FILE}) > 0 ]]; then
-  echo "Warnings from xpath evaluation:"
-  cat ${LOG_FILE}
-  echo
-fi
+  if [[ ${difference} -ne 0 ]]; then
+    echo "Not all modules are included in the coverage report."
+    echo "Verify if all submodules of hv-collector-sources module are included as a dependency to hv-collector-coverage module."
+    echo "Number of missing modules: ${difference}"
+    exit 1
+  fi
+}
+
+function check_coverage() {
+  local missed=$(coverage_from_report missed)
+  local covered=$(coverage_from_report covered)
+  local total=$(($missed + $covered))
+  local coverage=$((100 * $covered / $total))
 
-echo "Coverage: $coverage% (covered/total: $covered/$total)"
+  if [[ $(wc -c < ${LOG_FILE}) > 0 ]]; then
+    echo "Warnings from xpath evaluation:"
+    cat ${LOG_FILE}
+    echo
+  fi
 
-if [[ ${coverage} -lt ${MIN_COVERAGE_PERCENT} ]]; then
-  echo "Coverage is too low. Minimum coverage: $MIN_COVERAGE_PERCENT%"
-  exit 1
-fi
+  echo "Coverage: $coverage% (covered/total: $covered/$total)"
+
+  if [[ ${coverage} -lt ${MIN_COVERAGE_PERCENT} ]]; then
+    echo "Coverage is too low. Minimum coverage: $MIN_COVERAGE_PERCENT%"
+    exit 1
+  fi
+}
 
+check_preconditions || exit 1
+check_coverage || exit 2
index 9b3f257..08fc5a2 100644 (file)
@@ -90,6 +90,7 @@
                     <arguments>
                         <argument>target/site/jacoco-aggregate/jacoco.xml</argument>
                         <argument>${jacoco.minimum.coverage}</argument>
+                        <argument>${project.parent.parent.basedir}/sources/pom.xml</argument>
                     </arguments>
                 </configuration>
             </plugin>
     </build>
 
     <dependencies>
+        <dependency>
+            <groupId>${project.parent.groupId}</groupId>
+            <artifactId>hv-collector-commandline</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
         <dependency>
             <groupId>${project.parent.groupId}</groupId>
             <artifactId>hv-collector-core</artifactId>
             <artifactId>hv-collector-main</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
+        <dependency>
+            <groupId>${project.parent.groupId}</groupId>
+            <artifactId>hv-collector-ssl</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.parent.groupId}</groupId>
+            <artifactId>hv-collector-test-utils</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
         <dependency>
             <groupId>${project.parent.groupId}</groupId>
             <artifactId>hv-collector-utils</artifactId>
index ae78174..29e1ea9 100644 (file)
     <artifactId>hv-collector-core</artifactId>
     <description>VES HighVolume Collector :: Core</description>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <build>
         <plugins>
             <plugin>
index 47b707a..61d1139 100644 (file)
@@ -43,6 +43,7 @@
     <properties>
         <failIfMissingUnitTests>false</failIfMissingUnitTests>
         <failIfMissingComponentTests>true</failIfMissingComponentTests>
+        <skipAnalysis>true</skipAnalysis>
     </properties>
 
     <build>
index 8f6b061..b82c001 100644 (file)
     <artifactId>hv-collector-dcae-app-simulator</artifactId>
     <description>VES HighVolume Collector :: Dcae app simulator</description>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <build>
         <plugins>
             <plugin>
index bac42a2..142dfb0 100644 (file)
     <artifactId>hv-collector-domain</artifactId>
     <description>VES HighVolume Collector :: Domain</description>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <build>
         <plugins>
             <plugin>
index 86c9efc..8f5c0d5 100644 (file)
         </license>
     </licenses>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <parent>
         <groupId>org.onap.dcaegen2.collectors.hv-ves</groupId>
         <artifactId>hv-collector-sources</artifactId>
index d08a21e..0fe240c 100644 (file)
     <artifactId>hv-collector-main</artifactId>
     <description>VES HighVolume Collector :: Main</description>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <build>
         <plugins>
             <plugin>
index 48e9be7..617265b 100644 (file)
     <artifactId>hv-collector-ssl</artifactId>
     <description>VES HighVolume Collector :: SSL</description>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <build>
         <plugins>
             <plugin>
index a755ae7..aa18114 100644 (file)
@@ -24,6 +24,7 @@
     <properties>
         <failIfMissingUnitTests>false</failIfMissingUnitTests>
         <failIfMissingComponentTests>false</failIfMissingComponentTests>
+        <skipAnalysis>true</skipAnalysis>
     </properties>
 
     <build>
index e65cbd2..feba812 100644 (file)
         </license>
     </licenses>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <parent>
         <groupId>org.onap.dcaegen2.collectors.hv-ves</groupId>
         <artifactId>hv-collector-sources</artifactId>
index 7cb7d4e..f39912d 100644 (file)
     <artifactId>hv-collector-ves-message-generator</artifactId>
     <description>VES HighVolume Collector :: VES message generator</description>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <build>
         <plugins>
             <plugin>
index aae04b4..7f76acb 100644 (file)
     <artifactId>hv-collector-xnf-simulator</artifactId>
     <description>VES HighVolume Collector :: XNF simulator</description>
 
-    <properties>
-        <skipAnalysis>false</skipAnalysis>
-    </properties>
-
     <build>
         <plugins>
             <plugin>
index 0775844..30c1525 100644 (file)
     <description>VES HighVolume Collector :: Sources</description>
     <packaging>pom</packaging>
 
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <version>2.17</version>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.onap.oparent</groupId>
-                        <artifactId>checkstyle</artifactId>
-                        <version>1.1.1</version>
-                    </dependency>
-                </dependencies>
-                <executions>
-                    <execution>
-                        <!-- To override oparent configuration different id must be used
-                             We need to override it to include .kt files in check. -->
-                        <id>check-license-kotlin</id>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                        <phase>process-sources</phase>
-                        <configuration>
-                            <configLocation>onap-checkstyle/check-license.xml</configLocation>
-                            <includeResources>false</includeResources>
-                            <includeTestSourceDirectory>true</includeTestSourceDirectory>
-                            <includeTestResources>false</includeTestResources>
-                            <includes>**\/*.kt</includes>
-                            <consoleOutput>true</consoleOutput>
-                            <!--<failOnViolation>false</failOnViolation>-->
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <!-- This can be run separately with mvn antrun:run@detekt -->
-                        <id>detekt</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                        <configuration>
-                            <target name="detekt" unless="${skipAnalysis}">
-                                <java taskname="detekt" dir="${basedir}" fork="true" failonerror="true" classname="io.gitlab.arturbosch.detekt.cli.Main" classpathref="maven.plugin.classpath">
-                                    <arg value="--input"/>
-                                    <arg value="${basedir}/src/main/kotlin"/>
-                                    <arg value="--config-resource"/>
-                                    <arg value="onap-detekt-config.yml"/>
-                                    <arg value="--filters"/>
-                                    <arg value=".*/target/.*,.*/resources/.*"/>
-                                    <arg value="--report"/>
-                                    <arg value="html:${basedir}/target/detekt-report.html"/>
-                                </java>
-                            </target>
-                        </configuration>
-                    </execution>
-                </executions>
-                <dependencies>
-                    <dependency>
-                        <groupId>io.gitlab.arturbosch.detekt</groupId>
-                        <artifactId>detekt-cli</artifactId>
-                        <version>${detekt.version}</version>
-                    </dependency>
-                    <dependency>
-                        <groupId>${project.groupId}</groupId>
-                        <artifactId>hv-collector-analysis</artifactId>
-                        <version>1.1.0-SNAPSHOT</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
-        </plugins>
-    </build>
+    <properties>
+        <skipAnalysis>false</skipAnalysis>
+    </properties>
+
+    <profiles>
+        <profile>
+            <id>analysis</id>
+            <activation>
+                <file>
+                    <exists>src/main/kotlin</exists>
+                </file>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>2.17</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>org.onap.oparent</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>1.1.1</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <!-- To override oparent configuration different id must be used
+                                     We need to override it to include .kt files in check. -->
+                                <id>check-license-kotlin</id>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                                <phase>process-sources</phase>
+                                <configuration>
+                                    <configLocation>onap-checkstyle/check-license.xml</configLocation>
+                                    <includeResources>false</includeResources>
+                                    <includeTestSourceDirectory>true</includeTestSourceDirectory>
+                                    <includeTestResources>false</includeTestResources>
+                                    <includes>**\/*.kt</includes>
+                                    <consoleOutput>true</consoleOutput>
+                                    <!--<failOnViolation>false</failOnViolation>-->
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <version>1.8</version>
+                        <executions>
+                            <execution>
+                                <!-- This can be run separately with mvn antrun:run@detekt -->
+                                <id>detekt</id>
+                                <phase>verify</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target name="detekt" unless="${skipAnalysis}">
+                                        <java taskname="detekt" dir="${basedir}" fork="true" failonerror="true"
+                                                classname="io.gitlab.arturbosch.detekt.cli.Main"
+                                                classpathref="maven.plugin.classpath">
+                                            <arg value="--input"/>
+                                            <arg value="${basedir}/src/main/kotlin"/>
+                                            <arg value="--config-resource"/>
+                                            <arg value="onap-detekt-config.yml"/>
+                                            <arg value="--filters"/>
+                                            <arg value=".*/target/.*,.*/resources/.*"/>
+                                            <arg value="--report"/>
+                                            <arg value="html:${basedir}/target/detekt-report.html"/>
+                                        </java>
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>io.gitlab.arturbosch.detekt</groupId>
+                                <artifactId>detekt-cli</artifactId>
+                                <version>${detekt.version}</version>
+                            </dependency>
+                            <dependency>
+                                <groupId>${project.groupId}</groupId>
+                                <artifactId>hv-collector-analysis</artifactId>
+                                <version>1.1.0-SNAPSHOT</version>
+                            </dependency>
+                        </dependencies>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 
     <modules>
         <module>hv-collector-commandline</module>