From 4b03bc34c27dc565da6662669cdc6eaf9cd333c4 Mon Sep 17 00:00:00 2001 From: asingh Date: Wed, 14 Jan 2015 13:14:50 -0600 Subject: [PATCH] KAFKA-1722: Add static code coverage capability --- build.gradle | 70 ++++++++++++++++++++++++++- core/src/main/scala/kafka/utils/ZkUtils.scala | 10 ++++ 2 files changed, 79 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a980f61..d2fcd4a 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,9 @@ buildscript { repositories { mavenCentral() } + dependencies { + classpath 'org.scoverage:gradle-scoverage:1.0-5-g9c68988' + } apply from: file('gradle/buildscript.gradle'), to: buildscript } @@ -29,6 +32,14 @@ allprojects { } } +apply plugin: 'sonar-runner' +tasks.sonarRunner { + dependsOn = [] + dependsOn ':clients:test' + dependsOn ':clients:jacocoTestReport' + dependsOn ':core:reportScoverage' +} + ext { gradleVersion = "2.0" } @@ -199,6 +210,20 @@ project(':core') { apply plugin: 'scala' archivesBaseName = "kafka_${baseScalaVersion}" + apply plugin: 'scoverage' + testScoverage.outputs.file "${buildDir}/scoverage/scoverage.coverage.xml" + compileScoverageScala { + outputs.file("${buildDir}/scoverage/scoverage.coverage.xml") + } + testScoverage { + ignoreFailures = true + } + reportScoverage { + dependencies { + classpath 'org.scoverage:gradle-scoverage:1.0-5-g9c68988' + } + } + def (major, minor, trivial) = scalaVersion.tokenize('.') dependencies { @@ -225,8 +250,16 @@ project(':core') { testRuntime "$slf4jlog4j" zinc 'com.typesafe.zinc:zinc:0.3.1' - } + if (scalaVersion.startsWith('2.10')) { + scoverage 'org.scoverage:scalac-scoverage-plugin_2.10:1.0.2' + scoverage 'org.scoverage:scalac-scoverage-runtime_2.10:1.0.2' + } else if (scalaVersion.startsWith('2.11')) { + scoverage 'org.scoverage:scalac-scoverage-plugin_2.11:1.0.2' + scoverage 'org.scoverage:scalac-scoverage-runtime_2.11:1.0.2' + } + scoverage 'org.scoverage:gradle-scoverage:1.0-5-g9c68988' + } configurations { // manually excludes some unnecessary dependencies compile.exclude module: 'javax' @@ -284,6 +317,14 @@ project(':core') { artifacts { archives testJar } + + sonarRunner { + sonarProperties { + property "sonar.dynamicAnalysis", "reuseReports" + property "sonar.core.codeCoveragePlugin", "cobertura" + property "sonar.cobertura.reportPath", "$buildDir/reports/scoverage/cobertura.xml" + } + } } project(':contrib:hadoop-consumer') { @@ -308,6 +349,10 @@ project(':contrib:hadoop-consumer') { compile.exclude module: 'mail' compile.exclude module: 'netty' } + + sonarRunner { + skipProject = true + } } project(':contrib:hadoop-producer') { @@ -333,6 +378,10 @@ project(':contrib:hadoop-producer') { compile.exclude module: 'mail' compile.exclude module: 'netty' } + + sonarRunner { + skipProject = true + } } project(':examples') { @@ -342,6 +391,9 @@ project(':examples') { compile project(':core') } + sonarRunner { + skipProject = true + } } project(':clients') { @@ -378,4 +430,20 @@ project(':clients') { artifacts { archives testJar } + + apply plugin: "jacoco" + jacocoTestReport { + reports { + html.destination "${buildDir}/reports/jacocoHtml" + } + } + + sonarRunner { + sonarProperties { + property "sonar.language", "java" + } + test { + ignoreFailures = true + } + } } diff --git a/core/src/main/scala/kafka/utils/ZkUtils.scala b/core/src/main/scala/kafka/utils/ZkUtils.scala index c14bd45..aeceb85 100644 --- a/core/src/main/scala/kafka/utils/ZkUtils.scala +++ b/core/src/main/scala/kafka/utils/ZkUtils.scala @@ -15,6 +15,15 @@ * limitations under the License. */ +/** + * gradle-scoverage blows up while instrumenting this file. + * Turning off coverage to unblock scoverage + * An issue is filed with gradle-scoverage, https://github.com/scoverage/gradle-scoverage/issues/35 + * + * TODO: Turn on coverage for this file once the scoverage issue is fixed. + */ + +// $COVERAGE-OFF$ package kafka.utils import kafka.cluster.{Broker, Cluster} @@ -790,3 +799,4 @@ class ZKConfig(props: VerifiableProperties) { /** how far a ZK follower can be behind a ZK leader */ val zkSyncTimeMs = props.getInt("zookeeper.sync.time.ms", 2000) } +// $COVERAGE-ON$ -- 1.9.3 (Apple Git-50)