New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 836663 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug

Blocked on:
issue 826305

Blocking:
issue 759794
issue 789981



Sign in to add a comment

Refactor code coverage scripts used on the coverage bot

Project Member Reported by mmoroz@chromium.org, Apr 25 2018

Issue description

I've just performed yet another experiment and found out likely a better approach to be used on the bot:

1) after running each target, merge .profraw dumps into a .profdata file ( issue 826305 ). Log any warnings / errors encountered on this step.

2) merge .profdata files one by one, rather then passing them all together to llvm-profdata merge command. Log any warnings / errors encountered on this step.

Profdata sample sizes:

my current approach:       571,637,624 bytes
merge in a single command: 546,677,912 bytes
merge one by one:          571,637,400 bytes

That approach will minimize potential destructive impact of any warnings or problematic targets.
 

Comment 1 by mmoroz@chromium.org, Apr 25 2018

The approach described above will have some overhead, but not too big.

I've tried converting .profraw into .profdata per target (without multi-processing), it took 28 minutes. Likely to be 10-20 times faster in a multi-process mode.

Merging of the .profdata files one by one took 46 minutes, while merging in a single command took ~40 seconds. That means we should try merge everything in a single command first, and only if it fails, we'll merge the dumps one by one.

Comment 2 by mmoroz@chromium.org, Apr 25 2018

One more thing needs to be added: add a build log to metadata directory: https://bugs.chromium.org/p/chromium/issues/detail?id=829116#c8

Comment 3 by mmoroz@chromium.org, Apr 25 2018

Another idea suggested by Abhishek in https://chrome-internal-review.googlesource.com/c/chrome/tools/code-coverage/+/614427/4/scripts/code_coverage_loop.sh

remove "chrome" subdirectory from the bucket structure.

Comment 5 by mmoroz@chromium.org, Apr 26 2018

A few more points suggested in https://chrome-internal-review.googlesource.com/c/chrome/tools/code-coverage/+/614427/4/scripts/README.md#23:

1) remove "chrome" from script names

2) use "tests" instead of "unittests" as there are not only unittests


Project Member

Comment 6 by bugdroid1@chromium.org, Apr 27 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/3c193a47902fb4b3340a11300c486a6893d4fecc

commit 3c193a47902fb4b3340a11300c486a6893d4fecc
Author: Max Moroz <mmoroz@google.com>
Date: Fri Apr 27 21:44:26 2018

Project Member

Comment 7 by bugdroid1@chromium.org, Apr 30 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/9281b191858db58ab663f98520878e02a2557bfb

commit 9281b191858db58ab663f98520878e02a2557bfb
Author: Max Moroz <mmoroz@google.com>
Date: Mon Apr 30 19:47:00 2018

Project Member

Comment 8 by bugdroid1@chromium.org, May 1 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/8d0d877e3b715e3459df679c9ffa7babb4551892

commit 8d0d877e3b715e3459df679c9ffa7babb4551892
Author: Max Moroz <mmoroz@google.com>
Date: Tue May 01 16:19:48 2018

Project Member

Comment 9 by bugdroid1@chromium.org, May 1 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/ddcb5d015648da15e86cf17255437f7a303eef3c

commit ddcb5d015648da15e86cf17255437f7a303eef3c
Author: Max Moroz <mmoroz@google.com>
Date: Tue May 01 19:28:03 2018

Project Member

Comment 10 by bugdroid1@chromium.org, May 1 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/ad5818ec570b38f68c07486ecc1054bdf7f1cd88

commit ad5818ec570b38f68c07486ecc1054bdf7f1cd88
Author: Max Moroz <mmoroz@google.com>
Date: Tue May 01 20:09:15 2018

Project Member

Comment 11 by bugdroid1@chromium.org, May 2 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/7c62b868d04d23a002468cf4c9fd28b37127982c

commit 7c62b868d04d23a002468cf4c9fd28b37127982c
Author: Max Moroz <mmoroz@google.com>
Date: Wed May 02 03:02:05 2018

Project Member

Comment 12 by bugdroid1@chromium.org, May 2 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/38de1c5240a2b9f41ed28d96d7205d1f752bbe90

commit 38de1c5240a2b9f41ed28d96d7205d1f752bbe90
Author: Max Moroz <mmoroz@google.com>
Date: Wed May 02 17:53:38 2018

Project Member

Comment 13 by bugdroid1@chromium.org, May 2 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/3736392a1e5f97ab183803a17fdec9c21b22a66a

commit 3736392a1e5f97ab183803a17fdec9c21b22a66a
Author: Max Moroz <mmoroz@google.com>
Date: Wed May 02 22:27:39 2018

Project Member

Comment 14 by bugdroid1@chromium.org, May 3 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d6e2784fc82a58be71392c674a756e712204a22b

commit d6e2784fc82a58be71392c674a756e712204a22b
Author: Max Moroz <mmoroz@chromium.org>
Date: Thu May 03 03:39:45 2018

[Code Coverage] Use platform name for the root directory instead of 'coverage'.

That single-line change would be very helpful for hosting reports at GCS, as it
provides a multi-platform dir structure for free.

Bug:  836663 
Change-Id: Ic9a984360cb352a23ace780d4aa600084be98a36
Reviewed-on: https://chromium-review.googlesource.com/1041282
Reviewed-by: Abhishek Arya <inferno@chromium.org>
Commit-Queue: Abhishek Arya <inferno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555664}
[modify] https://crrev.com/d6e2784fc82a58be71392c674a756e712204a22b/tools/code_coverage/coverage.py

Project Member

Comment 15 by bugdroid1@chromium.org, May 3 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9a81f39116506a599bf001cfaf93dad82e796b04

commit 9a81f39116506a599bf001cfaf93dad82e796b04
Author: Max Moroz <mmoroz@chromium.org>
Date: Thu May 03 14:04:30 2018

Revert "[Code Coverage] Use platform name for the root directory instead of 'coverage'."

This reverts commit d6e2784fc82a58be71392c674a756e712204a22b.

Reason for revert: llvm-cov is also using 'coverage' directory, so this change doesn't work well: https://github.com/llvm-mirror/llvm/blob/master/tools/llvm-cov/SourceCoverageView.h#L97

Original change's description:
> [Code Coverage] Use platform name for the root directory instead of 'coverage'.
> 
> That single-line change would be very helpful for hosting reports at GCS, as it
> provides a multi-platform dir structure for free.
> 
> Bug:  836663 
> Change-Id: Ic9a984360cb352a23ace780d4aa600084be98a36
> Reviewed-on: https://chromium-review.googlesource.com/1041282
> Reviewed-by: Abhishek Arya <inferno@chromium.org>
> Commit-Queue: Abhishek Arya <inferno@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#555664}

TBR=inferno@chromium.org,mmoroz@chromium.org,liaoyuke@chromium.org

Change-Id: I9812e8dde9ed121a4b379fef336336b7f62508c6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  836663 
Reviewed-on: https://chromium-review.googlesource.com/1042465
Reviewed-by: Max Moroz <mmoroz@chromium.org>
Commit-Queue: Max Moroz <mmoroz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555716}
[modify] https://crrev.com/9a81f39116506a599bf001cfaf93dad82e796b04/tools/code_coverage/coverage.py

Project Member

Comment 16 by bugdroid1@chromium.org, May 3 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/025d895024e2b6b326b24da484015cfedae144e5

commit 025d895024e2b6b326b24da484015cfedae144e5
Author: Max Moroz <mmoroz@chromium.org>
Date: Thu May 03 16:33:34 2018

[Code Coverage] Use platform as a name of the root directory with the report.

Bug:  836663 
Change-Id: Ia5c37b86624e4ff546130027297a167185f174a4
Reviewed-on: https://chromium-review.googlesource.com/1042374
Commit-Queue: Max Moroz <mmoroz@chromium.org>
Reviewed-by: Abhishek Arya <inferno@chromium.org>
Reviewed-by: Yuke Liao <liaoyuke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555763}
[modify] https://crrev.com/025d895024e2b6b326b24da484015cfedae144e5/tools/code_coverage/coverage.py

Project Member

Comment 17 by bugdroid1@chromium.org, May 4 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/beb9d7e9987e88c75b955bb8fa3376ad9a2327d4

commit beb9d7e9987e88c75b955bb8fa3376ad9a2327d4
Author: Abhishek Arya <inferno@chromium.org>
Date: Fri May 04 14:30:00 2018

Project Member

Comment 18 by bugdroid1@chromium.org, May 4 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/64636af1c30784a18add1bc240bd23dfefe54b28

commit 64636af1c30784a18add1bc240bd23dfefe54b28
Author: Abhishek Arya <inferno@chromium.org>
Date: Fri May 04 14:42:13 2018

Add argument to take profdata as input for code coverage script.

R=mmoroz@chromium.org

Bug:  836663 

Change-Id: I55c7a7b6d5df87bec04b32b369969787321941e4
Reviewed-on: https://chromium-review.googlesource.com/1044308
Commit-Queue: Abhishek Arya <inferno@chromium.org>
Reviewed-by: Max Moroz <mmoroz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556049}
[modify] https://crrev.com/64636af1c30784a18add1bc240bd23dfefe54b28/tools/code_coverage/coverage.py

Project Member

Comment 19 by bugdroid1@chromium.org, May 4 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/d39ca98aa8348ce31f65d414612403ce9fd3bc3e

commit d39ca98aa8348ce31f65d414612403ce9fd3bc3e
Author: Abhishek Arya <inferno@chromium.org>
Date: Fri May 04 16:25:51 2018

Project Member

Comment 20 by bugdroid1@chromium.org, May 5 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/53524a4f8febb4dfa73309947249d57abe0b0d58

commit 53524a4f8febb4dfa73309947249d57abe0b0d58
Author: Max Moroz <mmoroz@google.com>
Date: Sat May 05 16:00:53 2018

Project Member

Comment 21 by bugdroid1@chromium.org, May 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7c5354fc882af70a4c9c9b0a20d01f8c42f2cb33

commit 7c5354fc882af70a4c9c9b0a20d01f8c42f2cb33
Author: Max Moroz <mmoroz@chromium.org>
Date: Sun May 06 00:03:48 2018

[Code Coverage] Update output dir structure for multi-platform support.

Also write output of llvm-cov export program on the disk (needed for the bot).

Plus some refactoring for logs from target programs:
- redirect stderr from targets into stdout to be written into a .log
- write logs into its own subdir for better output structure

Not output folder structure look as follows:

$ ls -l out/zreport15/
total 8
drwxr-x--- 5 mmoroz primarygroup 4096 May  4 10:53 linux
-rw-r--r-- 1 mmoroz primarygroup 2519 May  4 10:53 style.css

$ ls -l out/zreport15/linux/
total 48
drwxr-xr-x 2 mmoroz primarygroup 4096 May  4 10:53 components
-rw-r--r-- 1 mmoroz primarygroup 1627 May  4 10:53 component_view_index.html
-rw-r--r-- 1 mmoroz primarygroup 4672 May  4 10:53 coverage.profdata
-rw-r--r-- 1 mmoroz primarygroup  241 May  4 10:53 directory_view_index.html
-rw-r--r-- 1 mmoroz primarygroup 7416 May  4 10:53 file_view_index.html
-rw-r--r-- 1 mmoroz primarygroup  200 May  4 10:53 index.html
drwxr-xr-x 2 mmoroz primarygroup 4096 May  4 10:53 logs
-rw-r--r-- 1 mmoroz primarygroup 7483 May  4 10:53 summary.json
drwxr-x--- 3 mmoroz primarygroup 4096 May  4 10:53 usr


Bug:  784464 ,  836663 
Change-Id: I3283f16b62cfeb267bb2b3092fa469d5ff39ef14
Reviewed-on: https://chromium-review.googlesource.com/1044652
Commit-Queue: Abhishek Arya <inferno@chromium.org>
Reviewed-by: Abhishek Arya <inferno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556348}
[modify] https://crrev.com/7c5354fc882af70a4c9c9b0a20d01f8c42f2cb33/tools/code_coverage/coverage.py

Project Member

Comment 22 by bugdroid1@chromium.org, May 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fb70b53a802b1ae4b4df4b5d196f4413a28fc574

commit fb70b53a802b1ae4b4df4b5d196f4413a28fc574
Author: Abhishek Arya <inferno@chromium.org>
Date: Sun May 06 17:47:40 2018

Add assert to check coverage file path have source root.

TBR=mmoroz@chromium.org

Bug:  784464 ,  836663 
Change-Id: I09c05445b1a86de19ef41d40e7e6fa72ce361390
Reviewed-on: https://chromium-review.googlesource.com/1046151
Reviewed-by: Abhishek Arya <inferno@chromium.org>
Reviewed-by: Yuke Liao <liaoyuke@chromium.org>
Commit-Queue: Abhishek Arya <inferno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556357}
[modify] https://crrev.com/fb70b53a802b1ae4b4df4b5d196f4413a28fc574/tools/code_coverage/coverage.py

Project Member

Comment 23 by bugdroid1@chromium.org, May 7 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/9c66e13fcbdaf408b2b13e7e980b6e67be2a842c

commit 9c66e13fcbdaf408b2b13e7e980b6e67be2a842c
Author: Abhishek Arya <inferno@chromium.org>
Date: Mon May 07 14:45:56 2018

Project Member

Comment 24 by bugdroid1@chromium.org, May 7 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/78120bc8502390cfbf483f5c2f92dc5befb5e893

commit 78120bc8502390cfbf483f5c2f92dc5befb5e893
Author: Abhishek Arya <inferno@chromium.org>
Date: Mon May 07 20:53:54 2018

Add logging in coverage script to debug ldd execution time.

Also, avoid reading shared library content for ones that are
already processed.

R=mmoroz@chromium.org

Bug:  784464 ,  836663 
Change-Id: Iee42cbc71058457737f2ffaf4a5e22bfc85f7163
Reviewed-on: https://chromium-review.googlesource.com/1048305
Reviewed-by: Yuke Liao <liaoyuke@chromium.org>
Reviewed-by: Max Moroz <mmoroz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556563}
[modify] https://crrev.com/78120bc8502390cfbf483f5c2f92dc5befb5e893/tools/code_coverage/coverage.py

Project Member

Comment 25 by bugdroid1@chromium.org, May 7 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chrome/tools/code-coverage/+/c56986dc73d7869961033ed29c71dae74d685a88

commit c56986dc73d7869961033ed29c71dae74d685a88
Author: Abhishek Arya <inferno@chromium.org>
Date: Mon May 07 22:47:56 2018

Status: Fixed (was: Assigned)

Sign in to add a comment