[build] Add a test coverage report to the Java build
This patch adds a jacoco test coverage report to the Java build.
The report can be generated by running
`./gradlew jacocoAggregatedReport` and looking at
`java/build/reports/jacoco/jacocoAggregatedReport/html/index.html`
A follow on patch will add this coverage run to the build-and-test.sh
“COVERAGE” type build.
Change-Id: I0f2a2b1836b5ade72a757a8d7e2c518858ec48bb
Reviewed-on: http://gerrit.cloudera.org:8080/16954
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <aserbin@cloudera.com>
diff --git a/java/build.gradle b/java/build.gradle
index 7514176..686a5d5 100755
--- a/java/build.gradle
+++ b/java/build.gradle
@@ -25,6 +25,7 @@
// Plugins and scripts applied at the root level only, instead of per module.
apply plugin: "idea"
apply plugin: "eclipse"
+apply plugin: "org.barfuin.gradle.jacocolog"
apply from: "$rootDir/gradle/properties.gradle"
apply from: "$rootDir/gradle/dependencies.gradle"
apply from: "$rootDir/gradle/wrapper.gradle"
diff --git a/java/buildSrc/build.gradle b/java/buildSrc/build.gradle
index e9d9b7c..840a936 100644
--- a/java/buildSrc/build.gradle
+++ b/java/buildSrc/build.gradle
@@ -30,6 +30,7 @@
dependencies {
compile "com.github.ben-manes:gradle-versions-plugin:0.36.0"
compile "com.github.jengelman.gradle.plugins:shadow:6.1.0"
+ compile "gradle.plugin.org.barfuin.gradle.jacocolog:gradle-jacoco-log:1.2.3"
compile "gradle.plugin.com.google.gradle:osdetector-gradle-plugin:1.6.2"
compile "com.google.protobuf:protobuf-gradle-plugin:0.8.14"
compile "com.netflix.nebula:nebula-clojure-plugin:9.4.3"
diff --git a/java/gradle/dependencies.gradle b/java/gradle/dependencies.gradle
index 911c5e9..10aef8b 100755
--- a/java/gradle/dependencies.gradle
+++ b/java/gradle/dependencies.gradle
@@ -40,6 +40,7 @@
hdrhistogram : "2.1.12",
hive : "3.1.2",
httpClient : "4.5.13",
+ jacoco : "0.8.6",
jepsen : "0.1.5",
jetty : "9.4.35.v20201120",
jmh : "1.27",
diff --git a/java/gradle/quality.gradle b/java/gradle/quality.gradle
index 69d3759..f4ca7a8 100644
--- a/java/gradle/quality.gradle
+++ b/java/gradle/quality.gradle
@@ -101,6 +101,25 @@
}
}
+// Don't enable code coverage for kudu-proto given it is exclusively generated code.
+// Don't enable code coverage for kudu-jepsen given it is exclusively test code.
+if (project.name != "kudu-proto" && project.name != "kudu-jepsen") {
+ apply plugin: "jacoco" // Provides code coverage metrics for Java code.
+ jacoco {
+ toolVersion = versions.jacoco
+ }
+ tasks.withType(JacocoReport) {
+ reports {
+ csv.enabled false
+ xml.enabled true
+ html.enabled true
+ }
+ }
+ jacocoTestReport {
+ dependsOn test // tests are required to run before generating the report
+ }
+}
+
// Define a Java API signature for use by animal-sniffer. It'll enforce that all
// Java API usage adheres to this signature.
dependencies {