From e70103e2d4543efedc340f352fe77c4cadf23b52 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Mon, 25 Oct 2021 11:02:22 +0200 Subject: [PATCH 1/2] test: tweak TriggerLimitIntervalSec= when built with coverage Collecting coverage causes a significant slowdown in general, but since this test requires certain timing, we need to tweak the defaults to make it reliably pass. --- test/TEST-10-ISSUE-2467/test.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/TEST-10-ISSUE-2467/test.sh b/test/TEST-10-ISSUE-2467/test.sh index b510627a70..8dabf3f2b6 100755 --- a/test/TEST-10-ISSUE-2467/test.sh +++ b/test/TEST-10-ISSUE-2467/test.sh @@ -7,4 +7,16 @@ TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/2467" # shellcheck source=test/test-functions . "${TEST_BASE_DIR:?}/test-functions" +test_append_files() { + ( + # Collecting coverage slows this particular test quite a bit, causing + # it to fail with the default settings (20 triggers per 2 secs) + # to trip over the default limit. Let's help it a bit in such case. + if get_bool "$IS_BUILT_WITH_COVERAGE"; then + mkdir -p "${initdir:?}/etc/systemd/system/test10.socket.d" + printf "[Socket]\nTriggerLimitIntervalSec=10\n" >"${initdir:?}/etc/systemd/system/test10.socket.d/coverage-override.conf" + fi + ) +} + do_test "$@" From 35382a9da3e6a4da2cd266bac6dd0ad9b9865747 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Mon, 25 Oct 2021 11:35:47 +0200 Subject: [PATCH 2/2] test: merge coverage reports from previous test runs Relevant mainly for tests which utilize both QEMU and nspawn. --- test/test-functions | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/test/test-functions b/test/test-functions index cd9d01f345..79a7f5a71c 100644 --- a/test/test-functions +++ b/test/test-functions @@ -1316,8 +1316,19 @@ check_coverage_reports() { # Create a coverage report that will later be uploaded. Remove info about # system libraries/headers, as we don't really care about them. - lcov --directory "${root}/${BUILD_DIR:?}" --capture --output-file "${dest}" - lcov --remove "${dest}" -o "${dest}" '/usr/include/*' '/usr/lib/*' + if [[ -f "$dest" ]]; then + # If the destination report file already exists, don't overwrite it, but + # dump the new report in a temporary file and then merge it with the already + # present one - this usually happens when running both "parts" of a test + # in one run (the qemu and the nspawn part). + lcov --directory "${root}/${BUILD_DIR:?}" --capture --output-file "${dest}.new" + lcov --remove "${dest}.new" -o "${dest}.new" '/usr/include/*' '/usr/lib/*' + lcov --add-tracefile "${dest}" --add-tracefile "${dest}.new" -o "${dest}" + rm -f "${dest}.new" + else + lcov --directory "${root}/${BUILD_DIR:?}" --capture --output-file "${dest}" + lcov --remove "${dest}" -o "${dest}" '/usr/include/*' '/usr/lib/*' + fi return 0 }