Hi Marc,

Thanks for your reply at weekend! Here is the code I used to send data to 
google cloud storage:
GcsService gcsService = 
GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
                GcsFilename gcsFileName = new GcsFilename(bucketName, fileName);
                GcsFileOptions.Builder fileOptionsBuilder = new 
GcsFileOptions.Builder();

                GcsFileOptions fileOptions = fileOptionsBuilder.build();
                GcsOutputChannel outputChannel = 
gcsService.createOrReplace(gcsFileName, fileOptions);
                ObjectOutputStream outStream = new 
ObjectOutputStream(Channels.newOutputStream(outputChannel));
                final ExecutionDataWriter writer = new 
ExecutionDataWriter(outStream);
                log.info("start to write to GCS");
                data.collect(writer, writer, reset);
                log.info("finish write to gcs");

The lib for gcs is from maven central, google's release:
  <dependencies>
    <dependency>
      <groupId>com.google.appengine.tools</groupId>
      <artifactId>appengine-gcs-client</artifactId>
      <version>0.5</version>
    </dependency>
  </dependencies>

I don't know how to attach the data file here but it is only 2k in size which 
made me think I may not using it correctly, the although the getExecute data 
didn't send error message but the agent seems not start based on what I 
receive. I will try to use reflect method to see whether it is the cross module 
dump issue since the trigger to trigger the get data is in a dependency 
module's servlet.

Yutian Song

On Sunday, May 14, 2017 at 8:35:33 AM UTC-7, Marc R. Hoffmann wrote:
> Hi Yutian,
> 
> the byte[] content is exactly what JaCoCo expects as an exec file. 
> Please double-check that you write the byte content as is, without any 
> modifications or additions. E.g. with standard Java APIs:
> 
>      java.io.OutputStream.write(byte[])
> 
> Maybe you can show the snippet how you write the data?
> 
> Also the stacktrace should give some more details in "Caused by ..." 
> further down.
> 
> Regards,
> -marc
> 
> On 14.05.17 00:36, yutian.song via JaCoCo and EclEmma Users wrote:
> > Hi Marc,
> >
> > Thanks for your suggestion! I tried the get executiondata and successfully 
> > run the offline instrument -> deploy to GAE -> collection data. I got the 
> > .exec file in the google cloud storage, but the:
> > Caused by: java.io.IOException: Invalid execution data file.
> >          at 
> > org.jacoco.core.data.ExecutionDataReader.read(ExecutionDataReader.java:89)
> >          at 
> > org.jacoco.core.tools.ExecFileLoader.load(ExecFileLoader.java:59)
> >          at org.jacoco.ant.ReportTask.loadExecutionData(ReportTask.java:514)
> >          ... 25 more
> > when I try to get the report from the exec file. This file is send through 
> > the google's api and I try to write the byte[] in the output stream and 
> > save as a .exec file. Not sure whether the invalid file is due to this 
> > byte[] to file save process. We used to try to save the coboertura data 
> > file by write the whole data object and it can parse after the donwload.
> >
> > Yutian Song
> >
> > On Thursday, May 11, 2017 at 10:53:42 PM UTC-7, Marc R. Hoffmann wrote:
> >> Hi,
> >>
> >> JaCoCo offers an runtime API for this:
> >> http://www.jacoco.org/jacoco/trunk/doc/api/org/jacoco/agent/rt/package-summary.html
> >>
> >> With
> >>
> >>       byte[] execdata = RT.getAgent().getExecutionData(false);
> >>
> >> you can get the execution data within the App engine and transfer/store
> >> it by a apropriate mechanism.
> >>
> >> If you get JaCoCo running with Goole AppEngine please let us know!
> >>
> >> Regards,
> >> -marc
> >>
> >> On 12.05.17 02:57, yutian.song via JaCoCo and EclEmma Users wrote:
> >>> I'm working on a project to collect code coverage for end to end mode 
> >>> server side code. We used to use the cobertura to achieve this but 
> >>> interested in transfer to Jacoco.
> >>>
> >>> Our service is running on the Google appengine which bring us a lot of 
> >>> trouble like no file read/write allowed, no socket server allowed. These 
> >>> limitation makes it has only one solution to read  the test result file 
> >>> is through Google's cloud platform storage. Something like we send the 
> >>> code coverage data in byte array to somewhere. Cobertura github wiki 
> >>> provide a java reflect method that collect data and we try to using 
> >>> servlet to trigger this collection and data transmission.
> >>>
> >>> Google appengine not allow using java agent force us to use the offline 
> >>> instrument. I just tried the ant task for Jacoco and got the instrumented 
> >>> classes but wonder if there is similar thing we could do to trigger data 
> >>> collection and transmission in servlet with Jacoco.
> >>>

-- 
You received this message because you are subscribed to the Google Groups 
"JaCoCo and EclEmma Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jacoco/df9ba939-45d1-476e-ab06-8d2177122e62%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to