We already have a dedicated coverage build, however, this build is dedicated mostly for coverage in boost and standalone unit tests. This added configuration option will compile every configured build mode with coverage profiling support (excluding 'coverage' mode). It also does targeted profiling that is narrowed down only to ScyllaDB code and doesn't instrument seastar and testing code, this should give a more accurate coverage reporting and also impact performance less, as one example, the reactor loop in seastar will not be profiled (along with everything else). The targeted profiling is done with the help of the newly added `coverage_sources.list` file which excludes all seastar sub directories from the profiling. Also an extra measure is taken to make sure that the seastar library will not be linked with the coverage framework (so it will not dump confusing empty profiles). Some of the seastar headers are still going to be included in the profile since they are indirectly included by profiled source files in order to remove them from the final report a processing step on the resulting profile will need to take place. A note about expected performance impact: It is expected to have minimal impact on performance since the instrumentation adds counter increments without locking. Ref: https://clang.llvm.org/docs/UsersManual.html#cmdoption-fprofile-update This means that the numbers themselves are less reliable but all covered lines are guarantied to have at least non-zero value. Signed-off-by: Eliran Sinvani <eliransin@scylladb.com>
9 lines
288 B
Plaintext
9 lines
288 B
Plaintext
# Those tests are testing header files so we have no choice but to instrument them
|
|
source:test/boost/small_vector_test\.cc=allow
|
|
source:test/boost/anchorless_list_test\.cc=allow
|
|
|
|
# Don't instrument files that are part of the testing framework itself.
|
|
source:test/*\.*=skip
|
|
|
|
default:allow
|