summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qpid/java/build.xml27
-rw-r--r--qpid/java/common.xml15
-rw-r--r--qpid/java/lib/cobertura/README.txt3
-rw-r--r--qpid/java/module.xml75
4 files changed, 116 insertions, 4 deletions
diff --git a/qpid/java/build.xml b/qpid/java/build.xml
index 23b0d3b0a2..69dcd4d5c0 100644
--- a/qpid/java/build.xml
+++ b/qpid/java/build.xml
@@ -34,7 +34,7 @@
<basename property="qpid.jar.name" file="${qpid.jar}"/>
<property name="resources" value="${project.root}/resources"/>
-
+
<map property="release.excludes" value="${modules}">
<globmapper from="*" to="*/\*\*"/>
</map>
@@ -189,4 +189,29 @@
<delete dir="${tasks.classes}"/>
</target>
+ <target name="coverage-report" description="generate coverage report">
+ <cobertura-merge datafile="${build.coveragereport}/cobertura.ser">
+ <!-- merge all module coverage reports -->
+ <fileset dir="${build}">
+ <include name="**/*.ser"/>
+ </fileset>
+ </cobertura-merge>
+ <cobertura-report format="html"
+ destdir="${build.coveragereport}"
+ datafile="${build.coveragereport}/cobertura.ser"
+ >
+ <fileset dir="${project.root}/common/src/main/java" includes="**/*.java" />
+ <fileset dir="${project.root}/broker/src/main/java" includes="**/*.java" />
+ <fileset dir="${project.root}/client/src/main/java" includes="**/*.java" />
+ </cobertura-report>
+ </target>
+
+ <target name="instrument" description="instrument for artifacts">
+ <iterate target="instrument"/>
+ </target>
+
+ <target name="cover-test" description="run tests and generate coverage information">
+ <iterate target="cover-test"/>
+ </target>
+
</project>
diff --git a/qpid/java/common.xml b/qpid/java/common.xml
index 2c9d74fcc1..b169e4942c 100644
--- a/qpid/java/common.xml
+++ b/qpid/java/common.xml
@@ -38,8 +38,8 @@
<property name="build.release.prepare" location="${build.release}/prepare"/>
<property name="build.data" location="${build}/data"/>
<property name="build.plugins" location="${build}/lib/plugins"/>
-
-
+ <property name="build.coveragereport" location="${build}/coverage"/>
+
<property name="java.target" value="1.5"/>
<property name="java.source" value="1.5"/>
@@ -51,6 +51,17 @@
<property name="javac.compiler.args" value=""/>
+ <property name="cobertura.dir" value="${project.root}/lib/cobertura" />
+
+ <path id="cobertura.classpath">
+ <fileset dir="${cobertura.dir}">
+ <include name="cobertura.jar" />
+ <include name="lib/**/*.jar" />
+ </fileset>
+ </path>
+
+ <taskdef classpathref="cobertura.classpath" resource="tasks.properties" />
+
<macrodef name="indirect">
<attribute name="name"/>
<attribute name="variable"/>
diff --git a/qpid/java/lib/cobertura/README.txt b/qpid/java/lib/cobertura/README.txt
new file mode 100644
index 0000000000..58b876f4a7
--- /dev/null
+++ b/qpid/java/lib/cobertura/README.txt
@@ -0,0 +1,3 @@
+Download the cobertura binary from the following location and unpack it into this directory. Run "ant covertest coverage-report" to generate coverage report.
+
+http://cobertura.sourceforge.net/download.html
diff --git a/qpid/java/module.xml b/qpid/java/module.xml
index 0ff3887e8d..c329fdfcb2 100644
--- a/qpid/java/module.xml
+++ b/qpid/java/module.xml
@@ -32,6 +32,7 @@
<property name="module.build" location="${build}/${module}"/>
<property name="module.classes" location="${module.build}/classes"/>
+ <property name="module.instrumented" location="${module.build}/classes-instrumented"/>
<property name="module.precompiled" location="${module.build}/src"/>
<property name="module.api" location="${module.build}/api"/>
<property name="module.test.classes" location="${module.build}/test/classes"/>
@@ -41,7 +42,6 @@
<property name="module.test.src" location="src/test/java"/>
<property name="module.bin" location="bin"/>
<property name="module.etc" location="etc"/>
-
<property name="module.namever" value="${project.name}-${module}-${project.version}"/>
<property name="module.release.base" value="${basedir}/release"/>
@@ -55,6 +55,9 @@
<property name="module.qpid.jar" location="${module.release.lib}/qpid-incubating.jar"/>
<basename property="qpid.jar.name" file="${module.qpid.jar}"/>
+ <property name="module.coverage" location="${module.build}/coverage"/>
+ <property name="cobertura.datafile" location="${module.instrumented}/cobetura.ser"/>
+
<available property="module.test.src.exists" file="${module.test.src}"/>
<available property="module.etc.exists" file="${module.etc}"/>
<available property="module.bin.exists" file="${module.bin}"/>
@@ -447,6 +450,76 @@
<delete dir="${module.build}"/>
<delete dir="${module.results}"/>
<delete dir="${module.release.base}"/>
+ <delete dir="${module.instrumented}"/>
+ </target>
+
+ <target name="instrument">
+ <cobertura-instrument todir="${module.instrumented}"
+ datafile="${cobertura.datafile}">
+ <fileset dir="${module.classes}">
+ <include name="**/*.class"/>
+ </fileset>
+ <fileset dir="${module.test.classes}">
+ <include name="**/*.class"/>
+ </fileset>
+ </cobertura-instrument>
</target>
+ <target name="cover-test" depends="instrument">
+ <mkdir dir="${build.coveragereport}" />
+ <junit fork="yes" forkmode="once" maxmemory="${test.mem}" reloading="no"
+ haltonfailure="${haltonfailure}" haltonerror="${haltonerror}"
+ failureproperty="test.failures" printsummary="on" timeout="600000" >
+
+ <sysproperty key="amqj.logging.level" value="${amqj.logging.level}"/>
+ <sysproperty key="amqj.protocol.logging.level" value="${amqj.protocol.logging.level}"/>
+ <sysproperty key="log4j.debug" value="${log4j.debug}"/>
+ <sysproperty key="root.logging.level" value="${root.logging.level}"/>
+ <sysproperty key="log4j.configuration" value="${log4j.configuration}"/>
+ <sysproperty key="java.naming.factory.initial" value="${java.naming.factory.initial}"/>
+ <sysproperty key="java.naming.provider.url" value="${java.naming.provider.url}"/>
+ <sysproperty key="broker" value="${broker}"/>
+ <sysproperty key="broker.clean" value="${broker.clean}"/>
+ <sysproperty key="broker.version" value="${broker.version}"/>
+ <sysproperty key="broker.ready" value="${broker.ready}" />
+ <sysproperty key="test.excludes" value="${test.excludes}"/>
+ <sysproperty key="test.excludesfile" value="${test.excludesfile}"/>
+ <sysproperty key="test.output" value="${module.results}"/>
+ <sysproperty key="max_prefetch" value ="${max_prefetch}"/>
+ <sysproperty key="example.plugin.target" value="${project.root}/build/lib/plugins"/>
+ <sysproperty key="QPID_EXAMPLE_HOME" value="${project.root}/build"/>
+ <sysproperty key="QPID_HOME" value="${project.root}/build"/>
+
+ <sysproperty key="net.sourceforge.cobertura.datafile"
+ file="${cobertura.datafile}" />
+
+ <formatter type="plain"/>
+ <formatter type="xml"/>
+
+ <classpath path="${module.instrumented}"/>
+ <classpath>
+ <fileset dir="${build}">
+ <include name="**/classes-instrumented/*.class"/>
+ </fileset>
+ </classpath>
+ <classpath refid="module.test.path"/>
+ <classpath refid="cobertura.classpath"/>
+
+ <batchtest todir="${module.results}">
+ <fileset dir="${module.test.src}" excludes="${module.test.excludes}">
+ <include name="**/${test}.java"/>
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="coverage-report">
+ <echo message="${cobertura.datafile}"/>
+ <cobertura-report format="html"
+ destdir="${module.coverage}"
+ datafile="${cobertura.datafile}">
+ <fileset dir="${module.src}" includes="**/*.java" />
+ </cobertura-report>
+ </target>
+
</project>