Compare Revisions

Measuring Code Coverage on Firefox

Change Revisions

Revision 330815:

Revision 330815 by decoder on

Revision 330847:

Revision 330847 by decoder on

Title:
Measuring Code Coverage on Firefox
Measuring Code Coverage on Firefox
Slug:
Measuring_Code_Coverage_on_Firefox
Measuring_Code_Coverage_on_Firefox
Content:

Revision 330815
Revision 330847
n7    <h2 id="What_is_code_coverage.3F">n7    <h2 id="What_is_Code_Coverage.3F">
t98      TBDt98      Generating coverage data from a Try push is a bit more comp
 >licated, mainly because we need to somehow download the <code>.gc
 >no</code> and <code>.gcda</code> files from Try. For the <code>.g
 >cno</code> files which are created during the build, it's easy to
 > include them in the build tarball that can be downloaded later. 
 >However, the requested tests are run separately (even on separate
 > test slaves), with nothing that can be downloaded except the tes
 >t log. As a workaround, we can include the coverage data in the r
 >espective test logs (it's a hack, but it works ^_^).
99    </p>
100    <p>
101      The necessary patch and toolchain is maintained in a <a hre
 >f="https://github.com/choller/m-c-tools-code-coverage" title="htt
 >ps://github.com/choller/m-c-tools-code-coverage">github repositor
 >y</a>, consisting of:
102    </p>
103    <ul>
104      <li>
105        <code>m-c.patch</code> - The patch that must be applied t
 >o mozilla-central before pushing. It makes the necessary changes 
 >to collect all the data on the Try server.
106      </li>
107      <li>
108        <code>collect-try-results.py</code> - This script obtains
 > the tarball containing the .gcno files, as well as all test logs
 > from the Try server.
109      </li>
110      <li>
111        <code>unpack-gcda.py</code> - This script must be called 
 >on every test log downloaded. It extracts the .gcno and .gcda dat
 >a and creates files in the .info format.
112      </li>
113      <li>
114        <code>map-headers.py</code> - While the .info files creat
 >ed by unpack-gcda.py are already usable, the map-headers.py scrip
 >t tries to match header names from dist/ back to their original f
 >ilenames in the tree, such that coverage is measured properly for
 > header files in the right place.
115      </li>
116    </ul>
117    <p>
118      The following diagram visualizes how the scripts work and i
 >nteract with each other:
119    </p>
120    <p>
121      <br>
122      <img alt="" src="https://raw.github.com/choller/m-c-tools-c
 >ode-coverage/master/overview.png" style="width: 800px; height: 52
 >2px; display: block; margin-left: auto; margin-right: auto;">
123    </p>
124    <p>
125      This is also exactly the process that is automated to gener
 >ate the weekly coverage data that is linked in one of the section
 >s above.

Back to History