From b67a45841fa3889ed6790c3f4e2aafb10d921643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Koutn=C3=BD?= Date: Mon, 3 Feb 2025 17:02:09 +0100 Subject: [PATCH] test-cgroup-util: Ignore LXC group LXC helper processes hide themselve in .lxc cgroup, we don't have to deal with the inside tests (and the error in conversion to unit is handled). Skip those but keep iterating over remaining processes to detect what can be created around us. --- src/test/test-cgroup-util.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index 8743bd1cc74..cdf2ea83d7e 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -198,6 +198,13 @@ TEST(get_paths, .sd_booted = true) { log_info("Root = %s", a); } +static inline bool hidden_cgroup(const char *p) { + assert(p); + + /* Consider top-level cgroup hidden from us */ + return p[0] == '/' && p[strspn(p, "/")] == '.'; +} + TEST(proc, .sd_booted = true) { _cleanup_closedir_ DIR *d = NULL; int r; @@ -219,6 +226,10 @@ TEST(proc, .sd_booted = true) { continue; ASSERT_OK_ZERO(cg_pidref_get_path(SYSTEMD_CGROUP_CONTROLLER, &pid, &path)); + /* Test may run in a container with supervising/monitor processes that don't belong to our + * cgroup tree (slices/leaves) */ + if (hidden_cgroup(path)) + continue; ASSERT_OK_ZERO(cg_pid_get_path_shifted(pid.pid, NULL, &path_shifted)); ASSERT_OK_ZERO(cg_pidref_get_unit(&pid, &unit)); ASSERT_OK_ZERO(cg_pid_get_slice(pid.pid, &slice));