Skip to content

CI Coverage paralel rspec

Summary

Since Gitlab 9.1 we noticed a drop for our rspec coverage. We run our specs parallel.

The problem is that #extract_coverage stops looking on the output of the first part (in this case: 33.84%) instead of the complete score (84.19%)

Steps to reproduce

Run parallel specs or test with these lines:

[skipped output]


Finished in 4 minutes 24.4 seconds (files took 29.35 seconds to load)
348 examples, 0 failures

Randomized with seed 22325

.......Coverage report generated for (6/6) to /cms/coverage. 13809 / 40809 LOC (33.84%) covered.
...........................................................................................................................
...
.........
..........
......
....................................................................................................................................................................................................
..
..........................

Finished in 5 minutes 36 seconds (files took 29.98 seconds to load)
441 examples, 0 failures

Randomized with seed 32432

..................Coverage report generated for (2/6), (6/6) to /cms/coverage. 16599 / 38385 LOC (43.24%) covered.
.....

Finished in 5 minutes 46 seconds (files took 30.27 seconds to load)
385 examples, 0 failures

Randomized with seed 53718

........................................

Finished in 5 minutes 47 seconds (files took 30.63 seconds to load)
405 examples, 0 failures

Randomized with seed 52280

...Coverage report generated for (2/6), (4/6), (6/6) to /cms/coverage. 18321 / 36816 LOC (49.76%) covered.
...Coverage report generated for (2/6), (3/6), (4/6), (6/6) to /cms/coverage. 19377 / 36174 LOC (53.57%) covered.
.....................................................................................................................................

Finished in 6 minutes 35 seconds (files took 29.44 seconds to load)
411 examples, 0 failures

Randomized with seed 4180

..Coverage report generated for (2/6), (3/6), (4/6), (5/6), (6/6) to /cms/coverage. 21497 / 34025 LOC (63.18%) covered.
..............................
.................................................................

Finished in 7 minutes 45 seconds (files took 30.78 seconds to load)
496 examples, 0 failures

Randomized with seed 23145

Coverage report generated for (1/6), (2/6), (3/6), (4/6), (5/6), (6/6) to /cms/coverage. 24538 / 29147 LOC (84.19%) covered.

2486 examples, 0 failures

Took 511 seconds (8:31)
Job succeeded

What is the current bug behavior?

The first avalible coverage gets selected

What is the expected correct behavior?

The full coverage should be selected

Relevant logs and/or screenshots

See output that can be used to recreate.

Possible fixes

#extract_coverage should start looking at the last line, moving up.

This should also improve speed since with 1000 lines of output the coverage will be more likely to be at the end 😉