]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-cgroup.c
log: minimize includes in log.h
[thirdparty/systemd.git] / src / test / test-cgroup.c
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
8c6db833
LP
2/***
3 This file is part of systemd.
4
5 Copyright 2010 Lennart Poettering
6
7 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
8 under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation; either version 2.1 of the License, or
8c6db833
LP
10 (at your option) any later version.
11
12 systemd is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 15 Lesser General Public License for more details.
8c6db833 16
5430f7f2 17 You should have received a copy of the GNU Lesser General Public License
8c6db833
LP
18 along with systemd; If not, see <http://www.gnu.org/licenses/>.
19***/
20
8c6db833 21#include <string.h>
07630cea 22#include <unistd.h>
8c6db833 23
8c6db833 24#include "cgroup-util.h"
9eb977db 25#include "path-util.h"
dccca82b 26#include "process-util.h"
07630cea 27#include "string-util.h"
8c6db833 28#include "util.h"
8c6db833
LP
29
30int main(int argc, char*argv[]) {
31 char *path;
35d2e7ec 32 char *c, *p;
8c6db833 33
4ad49000
LP
34 assert_se(cg_create(SYSTEMD_CGROUP_CONTROLLER, "/test-a") == 0);
35 assert_se(cg_create(SYSTEMD_CGROUP_CONTROLLER, "/test-a") == 0);
36 assert_se(cg_create(SYSTEMD_CGROUP_CONTROLLER, "/test-b") == 0);
37 assert_se(cg_create(SYSTEMD_CGROUP_CONTROLLER, "/test-b/test-c") == 0);
c6c18be3 38 assert_se(cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, "/test-b", 0) == 0);
8c6db833 39
df0ff127 40 assert_se(cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, getpid_cached(), &path) == 0);
8c6db833
LP
41 assert_se(streq(path, "/test-b"));
42 free(path);
43
c6c18be3 44 assert_se(cg_attach(SYSTEMD_CGROUP_CONTROLLER, "/test-a", 0) == 0);
8c6db833 45
df0ff127 46 assert_se(cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, getpid_cached(), &path) == 0);
8c6db833
LP
47 assert_se(path_equal(path, "/test-a"));
48 free(path);
49
c6c18be3 50 assert_se(cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, "/test-b/test-d", 0) == 0);
8c6db833 51
df0ff127 52 assert_se(cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, getpid_cached(), &path) == 0);
8c6db833
LP
53 assert_se(path_equal(path, "/test-b/test-d"));
54 free(path);
55
c6c18be3 56 assert_se(cg_get_path(SYSTEMD_CGROUP_CONTROLLER, "/test-b/test-d", NULL, &path) == 0);
77d5f105 57 assert_se(path_equal(path, "/sys/fs/cgroup/systemd/test-b/test-d"));
8c6db833
LP
58 free(path);
59
6f883237
LP
60 assert_se(cg_is_empty(SYSTEMD_CGROUP_CONTROLLER, "/test-a") > 0);
61 assert_se(cg_is_empty(SYSTEMD_CGROUP_CONTROLLER, "/test-b") > 0);
62 assert_se(cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-a") > 0);
63 assert_se(cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b") == 0);
8c6db833 64
1d98fef1
LP
65 assert_se(cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-a", 0, 0, NULL, NULL, NULL) == 0);
66 assert_se(cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b", 0, 0, NULL, NULL, NULL) > 0);
8c6db833 67
1d98fef1 68 assert_se(cg_migrate_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b", SYSTEMD_CGROUP_CONTROLLER, "/test-a", 0) > 0);
8c6db833 69
6f883237
LP
70 assert_se(cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-a") == 0);
71 assert_se(cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b") > 0);
8c6db833 72
1d98fef1
LP
73 assert_se(cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-a", 0, 0, NULL, NULL, NULL) > 0);
74 assert_se(cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b", 0, 0, NULL, NULL, NULL) == 0);
8c6db833 75
c6c18be3 76 cg_trim(SYSTEMD_CGROUP_CONTROLLER, "/", false);
8c6db833 77
efdb0237
LP
78 assert_se(cg_rmdir(SYSTEMD_CGROUP_CONTROLLER, "/test-b") < 0);
79 assert_se(cg_rmdir(SYSTEMD_CGROUP_CONTROLLER, "/test-a") >= 0);
35d2e7ec
LP
80
81 assert_se(cg_split_spec("foobar:/", &c, &p) == 0);
bdf7026e
TA
82 assert_se(streq(c, "foobar"));
83 assert_se(streq(p, "/"));
35d2e7ec
LP
84 free(c);
85 free(p);
86
87 assert_se(cg_split_spec("foobar:", &c, &p) < 0);
88 assert_se(cg_split_spec("foobar:asdfd", &c, &p) < 0);
89 assert_se(cg_split_spec(":///", &c, &p) < 0);
90 assert_se(cg_split_spec(":", &c, &p) < 0);
91 assert_se(cg_split_spec("", &c, &p) < 0);
92 assert_se(cg_split_spec("fo/obar:/", &c, &p) < 0);
93
94 assert_se(cg_split_spec("/", &c, &p) >= 0);
bdf7026e
TA
95 assert_se(c == NULL);
96 assert_se(streq(p, "/"));
35d2e7ec
LP
97 free(p);
98
99 assert_se(cg_split_spec("foo", &c, &p) >= 0);
bdf7026e
TA
100 assert_se(streq(c, "foo"));
101 assert_se(p == NULL);
35d2e7ec 102 free(c);
8c6db833
LP
103
104 return 0;
105}