]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-cgroup-util.c
nspawn: always use cg_get_path() to determine fs path for a cgroup
[thirdparty/systemd.git] / src / test / test-cgroup-util.c
CommitLineData
6c03089c
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3/***
4 This file is part of systemd.
5
6 Copyright 2013 Zbigniew Jędrzejewski-Szmek
7
8 systemd is free software; you can redistribute it and/or modify it
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
96cde13a
ZJS
22#include <assert.h>
23
24#include "util.h"
25#include "cgroup-util.h"
26
7027ff61 27static void check_p_d_u(const char *path, int code, const char *result) {
6c03089c 28 _cleanup_free_ char *unit = NULL;
96cde13a 29
7027ff61 30 assert_se(cg_path_decode_unit(path, &unit) == code);
6c03089c
LP
31 assert_se(streq_ptr(unit, result));
32}
96cde13a 33
7027ff61
LP
34static void test_path_decode_unit(void) {
35 check_p_d_u("getty@.service/tty2", 0, "getty@tty2.service");
36 check_p_d_u("getty@.service/tty2/xxx", 0, "getty@tty2.service");
37 check_p_d_u("getty@.service/", -EINVAL, NULL);
38 check_p_d_u("getty@.service", -EINVAL, NULL);
39 check_p_d_u("getty.service", 0, "getty.service");
40 check_p_d_u("getty", -EINVAL, NULL);
6c03089c
LP
41}
42
43static void check_p_g_u(const char *path, int code, const char *result) {
44 _cleanup_free_ char *unit = NULL;
45
46 assert_se(cg_path_get_unit(path, &unit) == code);
47 assert_se(streq_ptr(unit, result));
48}
49
50static void check_p_g_u_u(const char *path, int code, const char *result) {
51 _cleanup_free_ char *unit = NULL;
52
53 assert_se(cg_path_get_user_unit(path, &unit) == code);
54 assert_se(streq_ptr(unit, result));
55}
56
57static void test_path_get_unit(void) {
58 check_p_g_u("/system/foobar.service/sdfdsaf", 0, "foobar.service");
59 check_p_g_u("/system/getty@.service/tty5", 0, "getty@tty5.service");
60 check_p_g_u("/system/getty@.service/tty5/aaa/bbb", 0, "getty@tty5.service");
61 check_p_g_u("/system/getty@.service/tty5/", 0, "getty@tty5.service");
62 check_p_g_u("/system/getty@tty6.service/tty5", 0, "getty@tty6.service");
63 check_p_g_u("sadfdsafsda", -ENOENT, NULL);
64 check_p_g_u("/system/getty####@tty6.service/tty5", -EINVAL, NULL);
7027ff61 65}
6c03089c 66
7027ff61 67static void test_path_get_user_unit(void) {
6c03089c
LP
68 check_p_g_u_u("/user/lennart/2/systemd-21548/foobar.service", 0, "foobar.service");
69 check_p_g_u_u("/user/lennart/2/systemd-21548/foobar.service/waldo", 0, "foobar.service");
70 check_p_g_u_u("/user/lennart/2/systemd-21548/foobar.service/waldo/uuuux", 0, "foobar.service");
71 check_p_g_u_u("/user/lennart/2/systemd-21548/waldo/waldo/uuuux", -EINVAL, NULL);
72 check_p_g_u_u("/user/lennart/2/foobar.service", -ENOENT, NULL);
73 check_p_g_u_u("/user/lennart/2/systemd-21548/foobar@.service/pie/pa/po", 0, "foobar@pie.service");
96cde13a
ZJS
74}
75
7027ff61
LP
76static void test_get_paths(void) {
77 _cleanup_free_ char *a = NULL, *b = NULL, *c = NULL, *d = NULL;
78
79 assert_se(cg_get_root_path(&a) >= 0);
80 log_info("Root = %s", a);
81
82 assert_se(cg_get_system_path(&b) >= 0);
83 log_info("System = %s", b);
84
85 assert_se(cg_get_user_path(&c) >= 0);
86 log_info("User = %s", c);
87
88 assert_se(cg_get_machine_path(&d) >= 0);
89 log_info("Machine = %s", d);
90}
91
96cde13a 92int main(void) {
7027ff61 93 test_path_decode_unit();
6c03089c 94 test_path_get_unit();
7027ff61
LP
95 test_path_get_user_unit();
96 test_get_paths();
96cde13a
ZJS
97
98 return 0;
99}