]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
fdb3deca | 2 | |
3c14dc61 TM |
3 | #include <unistd.h> |
4 | ||
fdb3deca | 5 | #include "alloc-util.h" |
fdb3deca | 6 | #include "cgroup-setup.h" |
3c14dc61 | 7 | #include "errno-util.h" |
fdb3deca ZJS |
8 | #include "log.h" |
9 | #include "proc-cmdline.h" | |
10 | #include "string-util.h" | |
11 | #include "tests.h" | |
12 | ||
c462e63e | 13 | static void test_is_wanted_print_one(bool header) { |
fdb3deca ZJS |
14 | _cleanup_free_ char *cmdline = NULL; |
15 | ||
16 | log_info("-- %s --", __func__); | |
f9d273e6 | 17 | ASSERT_OK(proc_cmdline(&cmdline)); |
fdb3deca | 18 | log_info("cmdline: %s", cmdline); |
31323f21 | 19 | if (header) |
fdb3deca | 20 | (void) system("findmnt -n /sys/fs/cgroup"); |
fdb3deca ZJS |
21 | |
22 | log_info("is_unified_wanted() → %s", yes_no(cg_is_unified_wanted())); | |
23 | log_info("is_hybrid_wanted() → %s", yes_no(cg_is_hybrid_wanted())); | |
24 | log_info("is_legacy_wanted() → %s", yes_no(cg_is_legacy_wanted())); | |
25 | log_info(" "); | |
26 | } | |
27 | ||
c462e63e JJ |
28 | TEST(is_wanted_print) { |
29 | test_is_wanted_print_one(true); | |
30 | test_is_wanted_print_one(false); /* run twice to test caching */ | |
31 | } | |
32 | ||
33 | TEST(is_wanted) { | |
f9d273e6 UA |
34 | ASSERT_OK(setenv("SYSTEMD_PROC_CMDLINE", |
35 | "systemd.unified_cgroup_hierarchy", 1)); | |
c462e63e | 36 | test_is_wanted_print_one(false); |
fdb3deca | 37 | |
f9d273e6 UA |
38 | ASSERT_OK(setenv("SYSTEMD_PROC_CMDLINE", |
39 | "systemd.unified_cgroup_hierarchy=0", 1)); | |
c462e63e | 40 | test_is_wanted_print_one(false); |
fdb3deca | 41 | |
f9d273e6 | 42 | ASSERT_OK(setenv("SYSTEMD_PROC_CMDLINE", |
fdb3deca | 43 | "systemd.unified_cgroup_hierarchy=0 " |
f9d273e6 | 44 | "systemd.legacy_systemd_cgroup_controller", 1)); |
c462e63e | 45 | test_is_wanted_print_one(false); |
fdb3deca | 46 | |
f9d273e6 | 47 | ASSERT_OK(setenv("SYSTEMD_PROC_CMDLINE", |
fdb3deca | 48 | "systemd.unified_cgroup_hierarchy=0 " |
f9d273e6 | 49 | "systemd.legacy_systemd_cgroup_controller=0", 1)); |
c462e63e | 50 | test_is_wanted_print_one(false); |
fdb3deca ZJS |
51 | |
52 | /* cgroup_no_v1=all implies unified cgroup hierarchy, unless otherwise | |
53 | * explicitly specified. */ | |
f9d273e6 UA |
54 | ASSERT_OK(setenv("SYSTEMD_PROC_CMDLINE", |
55 | "cgroup_no_v1=all", 1)); | |
c462e63e | 56 | test_is_wanted_print_one(false); |
fdb3deca | 57 | |
f9d273e6 | 58 | ASSERT_OK(setenv("SYSTEMD_PROC_CMDLINE", |
fdb3deca | 59 | "cgroup_no_v1=all " |
f9d273e6 | 60 | "systemd.unified_cgroup_hierarchy=0", 1)); |
c462e63e | 61 | test_is_wanted_print_one(false); |
fdb3deca ZJS |
62 | } |
63 | ||
99839c7e LP |
64 | static int intro(void) { |
65 | if (access("/proc/cmdline", R_OK) < 0 && ERRNO_IS_PRIVILEGE(errno)) | |
66 | return log_tests_skipped("can't read /proc/cmdline"); | |
67 | ||
68 | return EXIT_SUCCESS; | |
69 | } | |
70 | ||
e85fdacc | 71 | DEFINE_TEST_MAIN_WITH_INTRO(LOG_DEBUG, intro); |