Skip to content

Finish migration of coverage tooling #9

Open

Description

@LittleHuba

What

When the coverage tooling was copied from score_communication, it was completed.

This is IMO the worst situation we could end up in. We now have the "same" code in two places, with different states/bugs/maintainership.

This ticket is about finishing the migration that was started. To keep things aligned, the people that started the migration shall also finish it. Only they know why specific pieces were done different/not migrated.

Acceptance Criteria (DoD)

This repository covers all use cases of the original solution in score_communication.
score_communication is migrated to rely on this tooling for coverage.

How

No response

Activity

  1. added theissue type on Sep 25, 2026
  2. dcalavrezo-qorix commented on Sep 30, 2026

    @dcalavrezo-qorix
    Contributor

    Progress update, 2026-09-30

    Releases of score_coverage since the last update

    • 0.3.0 (2026-09-28): gcov backend for QNX on-target coverage (score_coverage_reporter(backend = "gcov"), counters brought back by score_qnx_unit_tests, same report archive as on Linux; Rust listed as not instrumentable on that backend). Release notes.
    • 0.3.1 (2026-09-29): --instrumentation_filter=^//<root>[/:] is now required in every coverage config, and both reporters warn when a report shows the pattern of a library tested from a test/ subpackage without data. Root cause found on baselibs' first QNX report (score/os at 13 % against 80 % on Linux): Bazel guesses the filter from the packages of the test targets and strips only a trailing /tests; libraries tested from a test subpackage were outside the guess, and on the gcov backend Bazel's own collector dropped their counters. With the line, the QNX report went from 82 % to 92 % lines. Tool PR: Require the instrumentation filter; warn when it was left to Bazel #12.

    Target version for the rollout is now 0.3.1. Every migration PR sets the instrumentation filter.

    Repo PR Status Comparison old → new (record by record)
    baselibs eclipse-score/baselibs#584, #589 merged (0.1.0 → 0.2.0) identical
    baselibs, QNX on-target eclipse-score/baselibs#626 open, ready for review QNX report: 649 files, 92.2 % lines with the filter
    communication eclipse-score/communication#1171 open, draft (Linux + QNX, replaces the in-repo pipeline) 347 records identical in status
    logging eclipse-score/logging#338 open 99 → 117 files (headers recovered), 98/99 identical
    lifecycle eclipse-score/lifecycle#715 open 77 → 147 files (headers recovered), 75/77 identical, 2 explained
    persistency eclipse-score/persistency#450 merged 17/17 identical
    kyron eclipse-score/kyron#175 open (rules_rust bumped to 0.68.2-score) 70/74 identical, rest thread-timing variance
    time eclipse-score/time#235 open 84/86 identical, 2 environment effects, same justifications applied
    inc_security_crypto eclipse-score/inc_security_crypto#267 open 239/239 identical
    inc_someip_gateway eclipse-score/inc_someip_gateway#315 merged (bump 0.2.0 → 0.3.1, was already on the tool) 48/55 identical, rest IPC timing variance

    Every PR carries the before/after table in its description. "Headers recovered" means headers reached through include directories that the old pipeline dropped (coverage_tool#5, fixed in 0.2.0); nothing lost coverage anywhere.

    Still to do

    • orchestrator: full migration, same recipe.
    • reference_integration: one bazelrc line (--run_under=@score_tooling//coverage:llvm_profile_wrapper → @score_coverage//:llvm_profile_wrapper).
    • tooling: deprecate and remove coverage/ once the PRs above are merged.

    Side findings worth knowing

    • Every migrated repo now gets unmapped_files.txt in the archive. Each PR lists the files without any coverage data for the module owners; none of them had data before either, they were simply invisible.
    • QNX branch coverage is structurally lower than LLVM's: gcov counts every conditional jump including exception-handling edges (22 % of all branches in baselibs' objects). Gate per platform, do not compare the two figures.
    • The QNX toolchain download from qnx.com times out or serves wrong content now and then; several QNX jobs needed a rerun.
  3. dcalavrezo-qorix commented on Oct 12, 2026

    @dcalavrezo-qorix
    Contributor

    Progress update, 2026-10-12

    Tool

    Rollout status

    Repo PR Status
    baselibs eclipse-score/baselibs#584, #589 merged (0.2.0)
    baselibs, QNX on-target eclipse-score/baselibs#626 open, all checks green at c168d744f3 (merged with main, zip_iterator_test back in the QNX run). Pins #24 by git_override until 0.4.0 is released; the QNX report job is a separate pull_request_target workflow with the workflow-approval gate for forks.
    communication eclipse-score/communication#1240 open, draft (replaces #1171, closed): 0.3.1, Linux LLVM + QNX gcov, instrumentation filter. Needs the platform scope from 0.4.0 before the QNX report is complete.
    logging eclipse-score/logging#338 merged, 0.3.1
    lifecycle eclipse-score/lifecycle#663, #735 merged, 0.3.1 (#715 closed, superseded)
    persistency eclipse-score/persistency#450 merged, 0.3.1
    kyron eclipse-score/kyron#175 merged, 0.3.1
    time eclipse-score/time#235 merged, 0.3.1
    inc_security_crypto eclipse-score/inc_security_crypto#267 merged, 0.3.1
    inc_someip_gateway eclipse-score/inc_someip_gateway#315 merged, 0.3.1

    Seven of nine repos are on 0.3.1 from main. baselibs QNX and communication wait for the 0.4.0 release.

    Still to do

    Side note: the QNX SDP download from qnx.com was unreliable on 2026-10-09 (truncated archives, connect timeouts); the baselibs x86_64 QNX job needed five reruns before it got a complete archive. Jobs that restore the archive from the Actions cache are not affected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions