Thanks for your reply, Bertrand. It looks like FELIX-3152 may not be sufficient. The important operation is the "byte[] getExecutionData()" method. I need to be able to serialize that byte array straight to an output stream so that I can save it to a "jacoco.exec" file after integration test execution. It appears the JMXConsolePlugin in FELIX-3152 will only convert that byte[] into a string representation and send it back as HTML.
I think in this case I should create a simple REST endpoint for the jacoco agent at /system/sling/jacoco to expose: jacoco Agent Status ------------------------------------------------------------------------------------------- HEAD /system/sling/jacoco.exec Content-Type: application/octet-stream 200: jacoco agent is attached and exposed through JMX 404: jacoco agent not found return IAgent.getExecutionData(false) ------------------------------------------------------------------------------------------- GET /system/sling/jacoco.exec Content-Type: application/octet-stream 200: execution data returned as response entity 404: jacoco agent not found Reset execution data and return jacoco.exec file ---------------------------------------------------------------------- POST /system/sling/jacoco.exec [optional param ":sessionId" to set a specific sessionId after reset] Content-Type: application/octet-stream 200: agent was reset (with new sessionId if specified) and prior execution data returned as response entity 404: jacoco agent not found Jacoco instrumentation for OSGi is rather limited in the sense that there is one agent per JVM, and resetting the execution data resets it across the board, which means that concurrent requests to this service on a shared integration test server will need to be restricted during test execution to avoid corrupting coverage data. Mark Adamcin http://adamcin.net/ On Wed, Apr 3, 2013 at 2:28 AM, Bertrand Delacretaz <[email protected]>wrote: > Hi Mark, > > On Wed, Apr 3, 2013 at 1:41 AM, Mark Adamcin <[email protected]> wrote: > > I'd like to create a simple servlet to expose jacoco execution data and a > > couple JMX operations over HTTP, in order to capture code coverage data > for > > Sling Junit tests... > > sounds interesting - are you aware of > https://issues.apache.org/jira/browse/FELIX-3152 ? That might help for > the JMX/HTTP part. > > > > > It would make sense to simply embed the org.jacoco.agent.rt.IAgent... > > ...but I'm not > > sure if there are any license implications that should be considered > first, > > since it is released under the Eclipse Public License.... > > http://apache.org/legal/resolved.html has info about which licenses > are acceptable - weak copyleft licenses like EPL are ok if the > software is used in binary form and if the inclusion is "appropriately > labeled". We're using the Eclipse JDT compiler in the > org.apache.sling.commons.compiler bundle for example, not sure how > we're handling the "appropriate labeling" there. > > -Bertrand >
