Fail build when coverage is too low
Minimum coverage set to 60%. It works by parsing aggregated Jacoco
report as oposed to jacoco:check goal which checks coverage at most
on submodule level.
Change-Id: Ie6f50ce9b2f15e62ad84480611897a98321a7af2
Issue-ID: DCAEGEN2-681
Signed-off-by: Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
diff --git a/hv-collector-coverage/check-coverage.sh b/hv-collector-coverage/check-coverage.sh
new file mode 100755
index 0000000..7a2f4c6
--- /dev/null
+++ b/hv-collector-coverage/check-coverage.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+JACOCO_REPORT="$1"
+MIN_COVERAGE_PERCENT="$2"
+
+function coverage_from_report() {
+ local xpath_expr="string(/report/counter[@type='INSTRUCTION']/@$1)"
+ xpath -q -e "$xpath_expr" "$JACOCO_REPORT"
+}
+
+missed=`coverage_from_report missed`
+covered=`coverage_from_report covered`
+total=$(($missed + $covered))
+coverage=$((100 * $covered / $total))
+
+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
+
diff --git a/hv-collector-coverage/pom.xml b/hv-collector-coverage/pom.xml
index f988f8e..970d4b4 100644
--- a/hv-collector-coverage/pom.xml
+++ b/hv-collector-coverage/pom.xml
@@ -71,6 +71,27 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>check-coverage</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <executable>${project.basedir}/check-coverage.sh</executable>
+ <workingDirectory>${project.basedir}</workingDirectory>
+ <arguments>
+ <argument>target/site/jacoco-aggregate/jacoco.xml</argument>
+ <argument>${jacoco.minimum.coverage}</argument>
+ </arguments>
+ </configuration>
+ </plugin>
</plugins>
</build>
diff --git a/pom.xml b/pom.xml
index 2781799..86185e6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,6 +65,7 @@
<maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
<build-helper-maven-plugin.version>1.7</build-helper-maven-plugin.version>
<jacoco.version>0.8.2</jacoco.version>
+ <jacoco.minimum.coverage>60</jacoco.minimum.coverage>
<!-- Protocol buffers -->
<protobuf.version>3.5.1</protobuf.version>
@@ -262,6 +263,11 @@
</dependency>
</dependencies>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.6.0</version>
+ </plugin>
</plugins>
</pluginManagement>
<plugins>