You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2019/01/03 09:54:31 UTC

[camel] branch master updated: CAMEL-13001: camel maven plugin route coverage now has option to set threshold in percentage when to fail.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 8815693  CAMEL-13001: camel maven plugin route coverage now has option to set threshold in percentage when to fail.
8815693 is described below

commit 8815693a5eba664994ba4b1e1887fd0363105f86
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Jan 3 10:53:19 2019 +0100

    CAMEL-13001: camel maven plugin route coverage now has option to set threshold in percentage when to fail.
---
 examples/camel-example-spring-boot/pom.xml         |  3 ++-
 .../org/apache/camel/maven/RouteCoverageMojo.java  | 31 ++++++++++++++++------
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/examples/camel-example-spring-boot/pom.xml b/examples/camel-example-spring-boot/pom.xml
index 01e6359..1a0f227 100644
--- a/examples/camel-example-spring-boot/pom.xml
+++ b/examples/camel-example-spring-boot/pom.xml
@@ -126,10 +126,11 @@
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-maven-plugin</artifactId>
         <version>${project.version}</version>
-        <!-- allows to fail if not all routes are fully covered during testing -->
+        <!-- allows to fail if not all routes are covered during testing -->
 <!--
         <configuration>
           <failOnError>true</failOnError>
+          <coverageThreshold>90</coverageThreshold>
         </configuration>
 -->
       </plugin>
diff --git a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
index aca847b..0cb6c00 100644
--- a/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
+++ b/tooling/maven/camel-maven-plugin/src/main/java/org/apache/camel/maven/RouteCoverageMojo.java
@@ -68,7 +68,10 @@ public class RouteCoverageMojo extends AbstractExecMojo {
     protected MavenProject project;
 
     /**
-     * Whether to fail if a route was not fully covered
+     * Whether to fail if a route was not fully covered.
+     * 
+     * Note the option coverageThreshold can be used
+     * to set a minimum coverage threshold in percentage.
      *
      * @parameter property="camel.failOnError"
      *            default-value="false"
@@ -76,6 +79,14 @@ public class RouteCoverageMojo extends AbstractExecMojo {
     private boolean failOnError;
 
     /**
+     * The minimum route coverage in percent when using failOnError.
+     *
+     * @parameter property="camel.coverageThreshold"
+     *            default-value="100"
+     */
+    private byte coverageThreshold = 100;
+
+    /**
      * Whether to include test source code
      *
      * @parameter property="camel.includeTest"
@@ -327,8 +338,8 @@ public class RouteCoverageMojo extends AbstractExecMojo {
             sw.println("Route:\t" + routeId);
         }
         sw.println();
-        sw.println(String.format("%8s   %8s   %s", "Line #", "Count", "Route"));
-        sw.println(String.format("%8s   %8s   %s", "------", "-----", "-----"));
+        sw.println(String.format("%8s    %8s    %s", "Line #", "Count", "Route"));
+        sw.println(String.format("%8s    %8s    %s", "------", "-----", "-----"));
 
         int covered = 0;
         for (RouteCoverageNode node : model) {
@@ -336,18 +347,22 @@ public class RouteCoverageMojo extends AbstractExecMojo {
                 covered++;
             }
             String pad = padString(node.getLevel());
-            sw.println(String.format("%8s   %8s   %s", node.getLineNumber(), node.getCount(), pad + node.getName()));
+            sw.println(String.format("%8s    %8s    %s", node.getLineNumber(), node.getCount(), pad + node.getName()));
         }
 
-        if (covered != model.size()) {
+        // calculate percentage of route coverage (must use double to have decimals)
+        double percentage = ((double) covered / (double) model.size()) * 100;
+
+        boolean success = true;
+        if (covered != model.size() && percentage < coverageThreshold) {
             // okay here is a route that was not fully covered
             notCovered.incrementAndGet();
+            success = false;
         }
 
-        // calculate percentage of route coverage (must use double to have decimals)
-        double percentage = ((double) covered / (double) model.size()) * 100;
         sw.println();
-        sw.println("Coverage: " + covered + " out of " + model.size() + " (" + String.format("%.1f", percentage) + "%)");
+        sw.println("Coverage: " + covered + " out of " + model.size() + " (" + String.format("%.1f", percentage) + "% / threshold " + coverageThreshold + ".0%)");
+        sw.println("Status: " + (success ? "Success" : "Failed"));
         sw.println();
 
         return bos.toString();