Status
Nils Loodin
nils.loodin at oracle.com
Tue Sep 20 04:57:45 PDT 2011
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: report.zip
Type: application/zip
Size: 369046 bytes
Desc: not available
Url : http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20110920/8f370b72/attachment-0001.zip
More information about the serviceability-dev
mailing list