You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by gw...@apache.org on 2016/04/12 01:09:26 UTC
[10/50] [abbrv] kafka git commit: KAFKA-3451: Add basic HTML coverage
report generation to gradle
KAFKA-3451: Add basic HTML coverage report generation to gradle
Author: Grant Henke <gr...@gmail.com>
Reviewers: Gwen Shapira, Ismael Juma, Ewen Cheslack-Postava
Closes #1121 from granthenke/coverage
Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/623ab1e7
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/623ab1e7
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/623ab1e7
Branch: refs/heads/0.10.0
Commit: 623ab1e7c6497c000bc9c9978637f20542a3191c
Parents: 9f6a6f9
Author: Grant Henke <gr...@gmail.com>
Authored: Thu Mar 31 10:07:54 2016 -0700
Committer: Gwen Shapira <cs...@gmail.com>
Committed: Thu Mar 31 10:07:54 2016 -0700
----------------------------------------------------------------------
README.md | 3 ++
build.gradle | 59 ++++++++++++++++++++++
core/src/main/scala/kafka/utils/ZkUtils.scala | 11 ++--
gradle/dependencies.gradle | 3 ++
4 files changed, 71 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kafka/blob/623ab1e7/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index bc2ca3a..97c5fef 100644
--- a/README.md
+++ b/README.md
@@ -47,6 +47,9 @@ Change the log4j setting in either `clients/src/test/resources/log4j.properties`
./gradlew -i -Dtest.single=RequestResponseSerializationTest core:test
+### Generating test coverage reports ###
+ ./gradlew reportCoverage
+
### Building a binary release gzipped tar ball ###
./gradlew clean
./gradlew releaseTarGz
http://git-wip-us.apache.org/repos/asf/kafka/blob/623ab1e7/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index d6f82a4..da0152b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -26,12 +26,15 @@ buildscript {
// For Apache Rat plugin to ignore non-Git files
classpath "org.ajoberstar:grgit:1.5.0"
classpath 'com.github.ben-manes:gradle-versions-plugin:0.12.0'
+ classpath 'org.scoverage:gradle-scoverage:2.0.1'
}
}
allprojects {
apply plugin: 'idea'
apply plugin: 'eclipse'
+ apply plugin: "jacoco"
+
repositories {
mavenCentral()
}
@@ -249,8 +252,50 @@ subprojects {
configProperties = [importControlFile: "$rootDir/checkstyle/import-control.xml"]
}
test.dependsOn('checkstyleMain', 'checkstyleTest')
+
+ // Ignore core since its a scala project
+ if (it.path != ':core') {
+ // NOTE: Gradles Jacoco plugin does not support "offline instrumentation" this means that classes mocked by PowerMock
+ // may report 0 coverage, since the source was modified after initial instrumentation.
+ // See https://github.com/jacoco/jacoco/issues/51
+ jacocoTestReport {
+ dependsOn tasks.test
+ sourceSets sourceSets.main
+ reports {
+ html.enabled = true
+ xml.enabled = true
+ csv.enabled = false
+ }
+ }
+ }
+}
+
+// Aggregates all jacoco results into the root project directory
+task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
+ def javaProjects = subprojects.findAll { it.path != ':core' }
+
+ description = 'Generates an aggregate report from all subprojects'
+ dependsOn(javaProjects.test)
+
+ additionalSourceDirs = files(javaProjects.sourceSets.main.allSource.srcDirs)
+ sourceDirectories = files(javaProjects.sourceSets.main.allSource.srcDirs)
+ classDirectories = files(javaProjects.sourceSets.main.output)
+ executionData = files(javaProjects.jacocoTestReport.executionData)
+
+ reports {
+ html.enabled = true
+ xml.enabled = true
+ }
+
+ // workaround to ignore projects that don't have any tests at all
+ onlyIf = { true }
+ doFirst {
+ executionData = files(executionData.findAll { it.exists() })
+ }
}
+task reportCoverage(dependsOn: ['jacocoRootReport', 'core:reportScoverage'])
+
for ( sv in ['2_10', '2_11'] ) {
String svInDot = sv.replaceAll( "_", ".")
@@ -320,6 +365,7 @@ project(':core') {
println "Building project 'core' with Scala version ${versions.scala}"
apply plugin: 'scala'
+ apply plugin: "org.scoverage"
archivesBaseName = "kafka_${versions.baseScala}"
dependencies {
@@ -351,7 +397,20 @@ project(':core') {
testCompile libs.apachedsJdbmPartition
testCompile libs.junit
testCompile libs.scalaTest
+
+ scoverage libs.scoveragePlugin
+ scoverage libs.scoverageRuntime
+ }
+
+ jacocoTestReport.enabled = false
+ scoverage {
+ reportDir = file("${rootProject.buildDir}/scoverage")
+ highlighting = false
+ }
+ checkScoverage {
+ minimumRate = 0.0
}
+ checkScoverage.shouldRunAfter('test')
configurations {
// manually excludes some unnecessary dependencies
http://git-wip-us.apache.org/repos/asf/kafka/blob/623ab1e7/core/src/main/scala/kafka/utils/ZkUtils.scala
----------------------------------------------------------------------
diff --git a/core/src/main/scala/kafka/utils/ZkUtils.scala b/core/src/main/scala/kafka/utils/ZkUtils.scala
index 49d3cfa..bd8ec7e 100644
--- a/core/src/main/scala/kafka/utils/ZkUtils.scala
+++ b/core/src/main/scala/kafka/utils/ZkUtils.scala
@@ -452,12 +452,13 @@ class ZkUtils(val zkClient: ZkClient,
} catch {
case e1: ZkBadVersionException =>
optionalChecker match {
- case Some(checker) => return checker(this, path, data)
- case _ => debug("Checker method is not passed skipping zkData match")
+ case Some(checker) => checker(this, path, data)
+ case _ =>
+ debug("Checker method is not passed skipping zkData match")
+ warn("Conditional update of path %s with data %s and expected version %d failed due to %s"
+ .format(path, data,expectVersion, e1.getMessage))
+ (false, -1)
}
- warn("Conditional update of path %s with data %s and expected version %d failed due to %s".format(path, data,
- expectVersion, e1.getMessage))
- (false, -1)
case e2: Exception =>
warn("Conditional update of path %s with data %s and expected version %d failed due to %s".format(path, data,
expectVersion, e2.getMessage))
http://git-wip-us.apache.org/repos/asf/kafka/blob/623ab1e7/gradle/dependencies.gradle
----------------------------------------------------------------------
diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
index 6ed317a..f035838 100644
--- a/gradle/dependencies.gradle
+++ b/gradle/dependencies.gradle
@@ -41,6 +41,7 @@ versions += [
rocksDB: "4.1.0",
scalaTest: "2.2.6",
scalaParserCombinators: "1.0.4",
+ scoverage: "1.1.1",
slf4j: "1.7.18",
snappy: "1.1.2.1",
zkclient: "0.8",
@@ -96,6 +97,8 @@ libs += [
scalaCompiler: "org.scala-lang:scala-compiler:$versions.scala",
scalaTest: "org.scalatest:scalatest_$versions.baseScala:$versions.scalaTest",
scalaParserCombinators: "org.scala-lang.modules:scala-parser-combinators_$versions.baseScala:$versions.scalaParserCombinators",
+ scoveragePlugin: "org.scoverage:scalac-scoverage-plugin_$versions.baseScala:$versions.scoverage",
+ scoverageRuntime: "org.scoverage:scalac-scoverage-runtime_$versions.baseScala:$versions.scoverage",
slf4jApi: "org.slf4j:slf4j-api:$versions.slf4j",
slf4jlog4j: "org.slf4j:slf4j-log4j12:$versions.slf4j",
snappy: "org.xerial.snappy:snappy-java:$versions.snappy",