[],
[]],
- [['src/test/test-engine.c'],
+ [['src/test/test-engine.c',
+ 'src/test/test-helper.c'],
[libcore,
libudev,
libsystemd_internal],
[],
'ENABLE_EFI'],
- [['src/test/test-unit-name.c'],
+ [['src/test/test-unit-name.c',
+ 'src/test/test-helper.c'],
[libcore,
libshared],
[threads,
libmount,
libblkid]],
- [['src/test/test-unit-file.c'],
+ [['src/test/test-unit-file.c',
+ 'src/test/test-helper.c'],
[libcore,
libshared],
[threads,
'', 'manual'],
- [['src/test/test-cgroup-mask.c'],
+ [['src/test/test-cgroup-mask.c',
+ 'src/test/test-helper.c'],
[libcore,
libshared],
[threads,
[],
[]],
- [['src/test/test-path.c'],
+ [['src/test/test-path.c',
+ 'src/test/test-helper.c'],
[libcore,
libshared],
[threads,
libmount,
libblkid]],
- [['src/test/test-execute.c'],
+ [['src/test/test-execute.c',
+ 'src/test/test-helper.c'],
[libcore,
libshared],
[threads,
[],
[]],
- [['src/test/test-sched-prio.c'],
+ [['src/test/test-sched-prio.c',
+ 'src/test/test-helper.c'],
[libcore,
libshared],
[threads,
FDSet *fdset = NULL;
int r;
+ enter_cgroup_subroot();
+
/* Prepare the manager. */
assert_se(set_unit_path(get_testdata_dir("")) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
Job *j;
int r;
+ enter_cgroup_subroot();
+
/* prepare the test */
assert_se(set_unit_path(get_testdata_dir("")) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
return EXIT_TEST_SKIP;
}
+ enter_cgroup_subroot();
+
assert_se(setenv("XDG_RUNTIME_DIR", "/tmp/", 1) == 0);
assert_se(set_unit_path(get_testdata_dir("/test-execute")) >= 0);
--- /dev/null
+/***
+ This file is part of systemd.
+
+ Copyright 2017 Lennart Poettering
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include "test-helper.h"
+#include "random-util.h"
+#include "alloc-util.h"
+#include "cgroup-util.h"
+
+void enter_cgroup_subroot(void) {
+ _cleanup_free_ char *cgroup_root = NULL, *cgroup_subroot = NULL;
+ CGroupMask supported;
+
+ assert_se(cg_pid_get_path(NULL, 0, &cgroup_root) >= 0);
+ assert_se(asprintf(&cgroup_subroot, "%s/%" PRIx64, cgroup_root, random_u64()) >= 0);
+ assert_se(cg_mask_supported(&supported) >= 0);
+
+ /* If this fails, then we don't mind as the later cgroup operations will fail too, and it's fine if we handle
+ * any errors at that point. */
+
+ if (cg_create_everywhere(supported, _CGROUP_MASK_ALL, cgroup_subroot) < 0)
+ return;
+
+ if (cg_attach_everywhere(supported, cgroup_subroot, 0, NULL, NULL) < 0)
+ return;
+}
-ENOENT, \
-ENOMEDIUM /* cannot determine cgroup */ \
)
+
+void enter_cgroup_subroot(void);
assert_se(m);
+ enter_cgroup_subroot();
+
r = manager_new(UNIT_FILE_USER, true, &tmp);
if (MANAGER_SKIP_TEST(r)) {
log_notice_errno(r, "Skipping test: manager_new: %m");
FDSet *fdset = NULL;
int r;
+ enter_cgroup_subroot();
+
/* prepare the test */
assert_se(set_unit_path(get_testdata_dir("")) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
log_parse_environment();
log_open();
+ enter_cgroup_subroot();
+
assert_se(runtime_dir = setup_fake_runtime_dir());
r = test_unit_file_get_set();
log_parse_environment();
log_open();
+ enter_cgroup_subroot();
+
assert_se(runtime_dir = setup_fake_runtime_dir());
test_unit_name_is_valid();