Closed Bug 1359947 Opened 8 years ago Closed 6 years ago

Establish the Rust Coverage ETL Pipeline

Categories

(Testing :: Code Coverage, enhancement)

enhancement
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: ekyle, Unassigned)

References

(Blocks 1 open bug)

Details

Once the Rust coverage artifacts are generated, an ETL pipeline must be made to feed a code coverage datastore [1]. There are some potentially large unknowns in this process: The best case scenario is the gcno and gcda artifacts emitted by thew Rust coverage builds "just work", but this is unlikely. What's more likely is: Encountering problems in collecting coverage from multiple threads, getting the line numbers synchronized (imagine macros), function name de-mangling, or source filename path mismatches, or worst of all something we can not think of right now. The quickest way to estimate the work is to attempt building an ETL pipeline and enumerate the blockers we encounter. [1] I am deliberately vague about what datastore, whether it is ActiveData, or coveralls.io, or some third option, because all have the same requirements: Clean, consistent and correct data.
The first problem is that gcda/gcno format used by LLVM is not compatible with the gcno/gcda format used by GCC, and I couldn't find a way to detect the format (the magic number in the gcno/gcda files is the same between GCC and LLVM). There are two options: 1) Check the name of the source file to detect the compiler (if it is a Rust file, assume it was compiled with LLVM); 2) Build everything with LLVM.
Blocks: 1365591
Blocks: 1429455
This should be fixed now, Rust coverage will be handled exactly like C++ (the code-coverage-grcov.zip file contains an info file that contains both C++ and Rust data).
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.