Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

Introduction

Emma is an open source code coverage tool. In our case, Emma enables code coverage by instrumenting the target code. The instrumentation process involves Emma looking at the class or jar files and adding its own layer between the JVM and the code normally called.

During the Instrumenting process, metadata is created per class. This metadata is stored in files locally. In our situation, we generate one meta file per webapp.
The instrumented code has an extra port open, which can accept commands from Emma such as return coverage information or reset coverage information that resides in memory.

To generate a full report Emma requires:

  1. the code has been compiled with the debug option on
  2. the source code is available,
  3. session data is available in a local file,
  4. a relevant metadata file exists.

Command line recipe

Prerequisite

  • The highest version (build 2.1.5320) emma jar file needs to be downloaded from Emma home. The jar needs to be placed in {$JAVA_HOME}/jre/lib/ext or added to the classpath of the following commands. This is also true for the JAVA_HOME seen by the Sakai server.
  • the source code is available for report generation
    Note: I have written a simple Perl script that copies all the source code into one directory
    structure instead of being scattered under the java/src directories. This allows report generation for all reports to point to the same source code directory.
  • Javac compiles the source code with debug option on
    Note: Running maven pack-demo compiles with debug on by default

Instrument code

Note: I have written some example only Perl code that looks for Web-INF/classes directories and
then generates a bash script that runs Emma and generates a metadata file, one per Webapp

Generate report

Reset in memory coverage session data

  • No labels