Status

Nils Loodin nils.loodin at oracle.com
Tue Sep 20 05:33:18 PDT 2011


Please ignore this, accidentally sent it to the wrong place.

/Nisse

On 09/20/2011 01:57 PM, Nils Loodin wrote:
> Since I can't be present at the meeting, I thought I'd share what I've 
> been working on this week in this manner instead!
>
> Since one of the most important thing's to do quickly in this project 
> is to get a feel for how customers such as WLDF and DMS are using the 
> Java API:s to flight recorder we're supposedly supporting, I've been 
> trying to dig into that.
>
> First by actually looking at a demo source file from WLDF to see what 
> API:s they're calling and veryfing that these are ones that actually 
> work now. The answer to this question is YES. Every API is supported 
> and tested in the Echeneis tests for flight recorder!
>
> Furthermore, I've been using code coverage (old habits die hard, eh?) 
> To see how many of the com.oracle.jrockit.jfr.client API:s (which are 
> the ones that seems to be defining some sort of Interface outwards) 
> are covered in testing.
> The first bit of good news here is that it's actually fairly simple to 
> get Java code coverage of the Java-parts (ofc) of JFR. I did it using 
> a third party library called EMMA, which seems to be a standard one to 
> use in this case. I built the JDK locally on my machine and then 
> instrumented jfr.jar with EMMA, and then ran the echeneis tests as 
> usual (although I had to put emma.jar on the bootclasspath to get the 
> classes to run). After that it's simple to generate an HTML report of 
> what is run.
>
> in the client package, we have code coverage of about 65% (after I 
> added and modified some tests. When you get the report up and realize 
> it's super simple to add some tests to get more coverage, I started 
> doing it almost without thinking. I guess I'll be checking in some 
> stuff soon).
>
> Some of you were present on my presentation of native code coverage, 
> where I showed a report of the native parts. Unfortunately, that 
> system Isn't (yet) compatible with emma, but I was thinking about 
> looking into unification of these reports, that would probably save us 
> all a bit of time when developing.
>
> Here's how to generate your own java CC-reports:
>
> 1. Build JDK.
> 2. Download emma: 
> http://sourceforge.net/projects/emma/files/emma-release/2.0.5312/emma-2.0.5312.zip/download
> 3. Put emma.jar in jre/lib/ext in your JDK.
> 2. Instrument jfr.jar: java emma instr  -ip jfr.jar -m overwrite. This 
> will generate a file called coverage.em, containing class metadata. 
> Put it somewhere.
> 4. Run the echeneis tests: java -Xbootclasspath/a:emma.jar  -jar 
> echeneis.jar -mode local -dir api/jfr/. This will create a coverage.ec 
> file, containing information about the run.
> 5. Generate a report using the two coverage files: java emma report -r 
> html -in coverage.ec -in coverage.em -sp 
> /localhome/hg-workspaces/jfr/hotspot-jfr/jdk/src/closed/share/classes/
> Look for the report in the coverage dir created. Note that above we're 
> giving the report system a link to where the sources are. Presto!
>
> I'll attach a report that I've created so you won't have to if you 
> just want to have a look.
>
> Regards,
> Nils Loodin



More information about the serviceability-dev mailing list