jacoco:merge ant task merges files not properly

1,908 views
Skip to first unread message

Soid

unread,
Sep 24, 2012, 6:02:26 PM9/24/12
to jac...@googlegroups.com
Hi,
I've got strange results when I merge many .exec files.
I have build.xml ant file:

<project name="JaCoCo merge test" default="merge" basedir="." xmlns:jacoco="antlib:org.jacoco.ant">

<target name="merge">
<jacoco:merge destfile="merged.exec">
    <fileset dir="." includes="*.exec"/>
</jacoco:merge>
        </target>
        
</project>

 I run it:

ant 
Buildfile: /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/build.xml

merge:
[jacoco:merge] Loading execution data file /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/1.exec
[jacoco:merge] Loading execution data file /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/2.exec
[jacoco:merge] Loading execution data file /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/3.exec
[jacoco:merge] Loading execution data file /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/4.exec
[jacoco:merge] Loading execution data file /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/5.exec
[jacoco:merge] Loading execution data file /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/6.exec
[jacoco:merge] Loading execution data file /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/7.exec
[jacoco:merge] Loading execution data file /build/jenkins/jobs/Project-JaCoCo2/workspace/merger/merged.exec

BUILD SUCCESSFUL

 I have strange results in the merged file size:

-rw-rw-r-- 1 build eng  74K Sep 20 23:43 1.exec
-rw-rw-r-- 1 build eng 657K Sep 20 23:43 2.exec
-rw-rw-r-- 1 build eng 288K Sep 20 23:43 3.exec
-rw-rw-r-- 1 build eng 206K Sep 20 23:43 4.exec
-rw-rw-r-- 1 build eng 265K Sep 20 23:43 5.exec
-rw-rw-r-- 1 build eng  65K Sep 20 23:43 6.exec
-rw-rw-r-- 1 build eng 5.3K Sep 20 23:43 7.exec
-rw-rw-r-- 1 build eng  310 Sep 20 23:47 build.xml
-rw-rw-r-- 1 build eng 146K Sep 24 14:54 merged.exec

Tough some of merged files reach more than 200K in size, the result file is only 146K. Also I used this merged file in sonar code coverage results and it looks not full.

If I don't miss anything and it really looks like a bug, can I send these files to someone (who can debug it) from JaCoCo team privately, without posting it publicly?

Marc R. Hoffmann

unread,
Sep 25, 2012, 12:15:53 AM9/25/12
to jac...@googlegroups.com
Hi,

indeed this can be correct. The exec files contain a execution data dump
per session. When merging the execution data for every class is
consolidated and written as single dump.

So if your exec filed contain multiple sessions, the merged version of
thif file will be smaller. You can verify by looking into the exec files:

- If you use Eclipse and have the EclEmma plug-in installed you can
open exec files in an exec file editor.
- The following example sippet also dumps the content of a exec file:
http://www.eclemma.org/jacoco/trunk/doc/examples/java/ExecDump.java


Best regards,
-marc

Soid

unread,
Sep 25, 2012, 3:12:24 AM9/25/12
to jac...@googlegroups.com
I tried to set static "sessionid" attribute for jacoco:coverage ant task, but it didn't help.

This is what I've got using ExecDump:

$ java org.jacoco.examples.ExecDump ~/Desktop/work/jacoco/merge/1.exec | grep 'Session '
Session "gregstest1": Mon Sep 24 23:22:07 PDT 2012 - Mon Sep 24 23:22:09 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:10 PDT 2012 - Mon Sep 24 23:22:14 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:15 PDT 2012 - Mon Sep 24 23:22:18 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:19 PDT 2012 - Mon Sep 24 23:22:25 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:26 PDT 2012 - Mon Sep 24 23:22:29 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:30 PDT 2012 - Mon Sep 24 23:22:33 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:33 PDT 2012 - Mon Sep 24 23:22:36 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:37 PDT 2012 - Mon Sep 24 23:22:40 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:40 PDT 2012 - Mon Sep 24 23:22:42 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:43 PDT 2012 - Mon Sep 24 23:22:46 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:46 PDT 2012 - Mon Sep 24 23:22:49 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:50 PDT 2012 - Mon Sep 24 23:22:54 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:55 PDT 2012 - Mon Sep 24 23:22:58 PDT 2012
Session "gregstest1": Mon Sep 24 23:22:58 PDT 2012 - Mon Sep 24 23:23:03 PDT 2012
Session "gregstest1": Mon Sep 24 23:23:04 PDT 2012 - Mon Sep 24 23:23:08 PDT 2012
Session "gregstest1": Mon Sep 24 23:23:09 PDT 2012 - Mon Sep 24 23:23:11 PDT 2012
Session "gregstest1": Mon Sep 24 23:23:12 PDT 2012 - Mon Sep 24 23:23:15 PDT 2012

$ java org.jacoco.examples.ExecDump ~/Desktop/work/jacoco/merge/2.exec | grep 'Session '
Session "gregstest1": Mon Sep 24 23:31:52 PDT 2012 - Mon Sep 24 23:31:59 PDT 2012
Session "gregstest1": Mon Sep 24 23:32:00 PDT 2012 - Mon Sep 24 23:32:07 PDT 2012
Session "gregstest1": Mon Sep 24 23:32:08 PDT 2012 - Mon Sep 24 23:32:12 PDT 2012
Session "gregstest1": Mon Sep 24 23:32:13 PDT 2012 - Mon Sep 24 23:32:20 PDT 2012
Session "gregstest1": Mon Sep 24 23:32:22 PDT 2012 - Mon Sep 24 23:32:29 PDT 2012
Session "gregstest1": Mon Sep 24 23:32:31 PDT 2012 - Mon Sep 24 23:32:37 PDT 2012
Session "gregstest1": Mon Sep 24 23:32:39 PDT 2012 - Mon Sep 24 23:32:45 PDT 2012
Session "gregstest1": Mon Sep 24 23:32:47 PDT 2012 - Mon Sep 24 23:32:54 PDT 2012
Session "gregstest1": Mon Sep 24 23:32:55 PDT 2012 - Mon Sep 24 23:33:02 PDT 2012
Session "gregstest1": Mon Sep 24 23:33:02 PDT 2012 - Mon Sep 24 23:33:09 PDT 2012
Session "gregstest1": Mon Sep 24 23:33:10 PDT 2012 - Mon Sep 24 23:33:20 PDT 2012
Session "gregstest1": Mon Sep 24 23:33:21 PDT 2012 - Mon Sep 24 23:33:25 PDT 2012
Session "gregstest1": Mon Sep 24 23:33:26 PDT 2012 - Mon Sep 24 23:33:36 PDT 2012
Session "gregstest1": Mon Sep 24 23:33:37 PDT 2012 - Mon Sep 24 23:33:41 PDT 2012
Session "gregstest1": Mon Sep 24 23:33:42 PDT 2012 - Mon Sep 24 23:33:46 PDT 2012
Session "gregstest1": Mon Sep 24 23:33:47 PDT 2012 - Mon Sep 24 23:34:07 PDT 2012
Session "gregstest1": Mon Sep 24 23:34:08 PDT 2012 - Mon Sep 24 23:34:13 PDT 2012
Session "gregstest1": Mon Sep 24 23:34:14 PDT 2012 - Mon Sep 24 23:34:35 PDT 2012
Session "gregstest1": Mon Sep 24 23:34:36 PDT 2012 - Mon Sep 24 23:34:46 PDT 2012
Session "gregstest1": Mon Sep 24 23:34:47 PDT 2012 - Mon Sep 24 23:34:54 PDT 2012
Session "gregstest1": Mon Sep 24 23:34:55 PDT 2012 - Mon Sep 24 23:35:04 PDT 2012
Session "gregstest1": Mon Sep 24 23:35:05 PDT 2012 - Mon Sep 24 23:35:11 PDT 2012
Session "gregstest1": Mon Sep 24 23:35:11 PDT 2012 - Mon Sep 24 23:35:17 PDT 2012
Session "gregstest1": Mon Sep 24 23:35:18 PDT 2012 - Mon Sep 24 23:35:27 PDT 2012
Session "gregstest1": Mon Sep 24 23:35:28 PDT 2012 - Mon Sep 24 23:35:38 PDT 2012
Session "gregstest1": Mon Sep 24 23:35:39 PDT 2012 - Mon Sep 24 23:35:54 PDT 2012
Session "gregstest1": Mon Sep 24 23:35:55 PDT 2012 - Mon Sep 24 23:36:11 PDT 2012
Session "gregstest1": Mon Sep 24 23:36:12 PDT 2012 - Mon Sep 24 23:36:17 PDT 2012
Session "gregstest1": Mon Sep 24 23:36:18 PDT 2012 - Mon Sep 24 23:36:24 PDT 2012
Session "gregstest1": Mon Sep 24 23:36:25 PDT 2012 - Mon Sep 24 23:36:29 PDT 2012
Session "gregstest1": Mon Sep 24 23:36:29 PDT 2012 - Mon Sep 24 23:36:34 PDT 2012
Session "gregstest1": Mon Sep 24 23:36:35 PDT 2012 - Mon Sep 24 23:36:40 PDT 2012
Session "gregstest1": Mon Sep 24 23:36:42 PDT 2012 - Mon Sep 24 23:36:48 PDT 2012
Session "gregstest1": Mon Sep 24 23:36:49 PDT 2012 - Mon Sep 24 23:36:55 PDT 2012
Session "gregstest1": Mon Sep 24 23:36:55 PDT 2012 - Mon Sep 24 23:37:01 PDT 2012
Session "gregstest1": Mon Sep 24 23:37:02 PDT 2012 - Mon Sep 24 23:37:07 PDT 2012
Session "gregstest1": Mon Sep 24 23:37:08 PDT 2012 - Mon Sep 24 23:37:15 PDT 2012
Session "gregstest1": Mon Sep 24 23:37:16 PDT 2012 - Mon Sep 24 23:37:22 PDT 2012
Session "gregstest1": Mon Sep 24 23:37:23 PDT 2012 - Mon Sep 24 23:37:29 PDT 2012
Session "gregstest1": Mon Sep 24 23:37:31 PDT 2012 - Mon Sep 24 23:37:39 PDT 2012
Session "gregstest1": Mon Sep 24 23:37:40 PDT 2012 - Mon Sep 24 23:37:50 PDT 2012
Session "gregstest1": Mon Sep 24 23:37:50 PDT 2012 - Mon Sep 24 23:37:57 PDT 2012
Session "gregstest1": Mon Sep 24 23:37:58 PDT 2012 - Mon Sep 24 23:38:03 PDT 2012
Session "gregstest1": Mon Sep 24 23:38:03 PDT 2012 - Mon Sep 24 23:38:07 PDT 2012
Session "gregstest1": Mon Sep 24 23:38:08 PDT 2012 - Mon Sep 24 23:38:12 PDT 2012

PS. Just curious how to see session info in EclEmma plug-in?

Marc Hoffmann

unread,
Sep 25, 2012, 7:40:01 AM9/25/12
to jac...@googlegroups.com
> PS. Just curious how to see session info in EclEmma plug-in?

When you open a *.exec file directly there should be a tab "Sessions"
at the bottom of the editor.

Best regards,
-marc

Soid

unread,
Sep 25, 2012, 4:27:54 PM9/25/12
to jac...@googlegroups.com
Well, the session ID is the same there in both files, only Start Time and Dump Time differ.
I simplified my case to two files, can anybody take a look at my files?

Marc R. Hoffmann

unread,
Sep 26, 2012, 1:15:44 AM9/26/12
to jac...@googlegroups.com
The session ID is not relevant for merging or coverage analysis. If you
want unique session ids, don't specify the sessionid attribute. JaCoCo
will generate random ids for you.

Best regards,
-marc
> --
>
>

Soid

unread,
Sep 26, 2012, 4:50:32 AM9/26/12
to jac...@googlegroups.com
I'm sorry, I'm confused. Let me describe my case.

We have a project that produces a few exec files in different sub-projects. I would like to gather them all and publish in sonar. As sonar can't accept multiple exec files, I have to deal with merging.

1. I tried to merge the coverage from all these sub-projects and publish it in sonar. Then I found that published results is not full there, but only for one sub-project. I checked the size of the merged exec file and found it's much less than coverage from some sub-projects. (e.g. 150K vs 600K in one of sub-projects).

2. I thought you were saying, if the sessions in execs are different, it will only merge one of the sessions. I checked session ids in my files and found it was different. I understood it as I have to use a single session id for all sub-projects. Now you're saying I have to have unique session ids?

So, how do I have to deal with it?

kpe...@gmail.com

unread,
Jan 22, 2014, 3:04:02 PM1/22/14
to jac...@googlegroups.com
I have exact same problem. Using version: 0.6.4.201312101107.

Does anyone knows what is the issue here?
Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages