diff options
-rw-r--r-- | qpid/java/build.xml | 27 | ||||
-rw-r--r-- | qpid/java/common.xml | 15 | ||||
-rw-r--r-- | qpid/java/lib/cobertura/README.txt | 3 | ||||
-rw-r--r-- | qpid/java/module.xml | 75 |
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> |