1
0
mirror of https://github.com/systemd/systemd synced 2026-04-24 16:04:51 +02:00

Compare commits

..

5 Commits

Author SHA1 Message Date
Frantisek Sumsal
673d1f4ab9
Merge pull request #23000 from mrc0mmand/coverage__exit
macro: call __gcov_dump() before _exit() w/ coverage enabled
2022-04-07 13:08:55 +00:00
Frantisek Sumsal
1b2e3b8bff test: ignore missing coverage in TEST-02
Since c6552ad we now try to collect coverage even in situations where
it's basically impossible (like in test-mount-util where the whole / is
mounted as read-only). As dealing with this is not worth the trouble,
let's ignore the missing coverage errors thrown by gcov in such cases.
2022-04-07 12:45:13 +02:00
Frantisek Sumsal
c6552ad381 macro: call __gcov_dump() before _exit() w/ coverage enabled
_exit() skips at-exit hooks, causing lost coverage from processes
utilizing it.

Hopefully resolves systemd/systemd-centos-ci#482
2022-04-07 10:06:44 +02:00
Yu Watanabe
239adf0384 sd-ipv4acd: actually drop the arp packet from one of the host interface
Fixes a bug in 7f77917c0effe92d5fed52503bceddabcb4667ba.

Fixes #23001.
2022-04-07 15:02:21 +09:00
Luca Boccassi
219ff0cb1e semaphoreci: re-enable rebooting tests
Fixed by 5738b62f55

Fixes https://github.com/systemd/systemd/issues/22991
2022-04-07 14:53:49 +09:00
6 changed files with 23 additions and 7 deletions

View File

@ -96,10 +96,6 @@ EOF
rm -rf debian/patches
# disable autopkgtests which are not for upstream
sed -i '/# NOUPSTREAM/ q' debian/tests/control
# TODO: rebooting via autopkgtest-reboot seems to be broken, disable these tests for now
sed -i -n '1,/Tests: boot-and-services/p;/Tests: udev/,$p' debian/tests/control
sed -i '/Tests: boot-and-services/d' debian/tests/control
sed -i '/Tests: boot-smoke/,$d' debian/tests/control
# enable more unit tests
sed -i '/^CONFFLAGS =/ s/=/= --werror -Dtests=unsafe -Dsplit-usr=true -Dslow-tests=true -Dfuzz-tests=true -Dman=true /' debian/rules
# no orig tarball

View File

@ -47,6 +47,9 @@ fuzzer_build = want_ossfuzz or want_libfuzzer
# More items are added later after they have been detected.
summary({'build mode' : get_option('mode')})
# GCOV doesn't define any macro when compiled with, so let's define it ourselves
conf.set10('BUILT_WITH_COVERAGE', get_option('b_coverage'))
#####################################################################
# Try to install the git pre-commit hook

View File

@ -29,6 +29,19 @@
#define _alignptr_ __attribute__((__aligned__(sizeof(void*))))
#define _warn_unused_result_ __attribute__((__warn_unused_result__))
#if defined(BUILT_WITH_COVERAGE) && BUILT_WITH_COVERAGE
/* We need to explicitly call __gcov_dump() in places where we use _exit(), since
* _exit() skips at-exit hooks resulting in lost coverage */
# include <unistd.h>
extern void __gcov_dump(void);
_noreturn_ static inline void _coverage__exit(int status) {
__gcov_dump();
_exit(status);
}
# define _exit(x) _coverage__exit(x)
#endif
#if !defined(HAS_FEATURE_MEMORY_SANITIZER)
# if defined(__has_feature)
# if __has_feature(memory_sanitizer)

View File

@ -329,7 +329,7 @@ static bool ipv4acd_arp_conflict(sd_ipv4acd *acd, const struct ether_arp *arp, b
if (acd->check_mac_callback &&
acd->check_mac_callback(acd, (const struct ether_addr*) arp->arp_sha, acd->check_mac_userdata) > 0)
/* sender hardware is one of the host's interfaces, ignoring. */
return true;
return false;
return true; /* conflict! */
}

View File

@ -4,6 +4,10 @@ set -e
TEST_DESCRIPTION="Run unit tests under containers"
RUN_IN_UNPRIVILEGED_CONTAINER=yes
# Some tests make collecting coverage impossible (like test-mount-util, which
# remounts the whole / as read-only), so let's ignore the gcov errors in such
# case
IGNORE_MISSING_COVERAGE=yes
# embed some newlines in the kernel command line to stress our test suite
KERNEL_APPEND="

View File

@ -1406,8 +1406,8 @@ check_coverage_reports() {
# usually due to the sandbox being too restrictive (e.g. ProtectSystem=yes,
# ProtectHome=yes) or the $BUILD_DIR being inaccessible to non-root users - see
# `setfacl` stuff in install_compiled_systemd().
if "${JOURNALCTL:?}" -q --no-pager -D "${root:?}/var/log/journal" --grep "profiling:.+?gcda:[Cc]annot open"; then
if ! get_bool "${IGNORE_MISSING_COVERAGE:=}" && \
"${JOURNALCTL:?}" -q --no-pager -D "${root:?}/var/log/journal" --grep "profiling:.+?gcda:[Cc]annot open"; then
derror "Detected possibly missing coverage, check the journal"
return 1
fi