X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftest%2Ftest-cgroup-util.c;h=12dcc17ddb2a582a1cf18393152eabf0e79b7da3;hb=751bc6ac79320bc16e63e8c1bbb713c30a3b7bc9;hp=eae67395bcef03d06e5b6561cd901505c8be8382;hpb=e9174f29c7e3ee45137537b126458718913a3ec5;p=elogind.git diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index eae67395b..12dcc17dd 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -27,8 +27,11 @@ static void check_p_d_u(const char *path, int code, const char *result) { _cleanup_free_ char *unit = NULL; + int r; - assert_se(cg_path_decode_unit(path, &unit) == code); + r = cg_path_decode_unit(path, &unit); + printf("%s: %s → %s %d expected %s %d\n", __func__, path, unit, r, result, code); + assert_se(r == code); assert_se(streq_ptr(unit, result)); } @@ -46,8 +49,11 @@ static void test_path_decode_unit(void) { static void check_p_g_u(const char *path, int code, const char *result) { _cleanup_free_ char *unit = NULL; + int r; - assert_se(cg_path_get_unit(path, &unit) == code); + r = cg_path_get_unit(path, &unit); + printf("%s: %s → %s %d expected %s %d\n", __func__, path, unit, r, result, code); + assert_se(r == code); assert_se(streq_ptr(unit, result)); } @@ -61,12 +67,17 @@ static void test_path_get_unit(void) { check_p_g_u("/system.slice/getty####@tty6.service/xxx", -EINVAL, NULL); check_p_g_u("/system.slice/system-waldo.slice/foobar.service/sdfdsaf", 0, "foobar.service"); check_p_g_u("/system.slice/system-waldo.slice/_cpu.service/sdfdsaf", 0, "cpu.service"); + check_p_g_u("/user.slice/user-1000.slice/user@1000.service/server.service", 0, "user@1000.service"); + check_p_g_u("/user.slice/user-1000.slice/user@.service/server.service", -EINVAL, NULL); } static void check_p_g_u_u(const char *path, int code, const char *result) { _cleanup_free_ char *unit = NULL; + int r; - assert_se(cg_path_get_user_unit(path, &unit) == code); + r = cg_path_get_user_unit(path, &unit); + printf("%s: %s → %s %d expected %s %d\n", __func__, path, unit, r, result, code); + assert_se(r == code); assert_se(streq_ptr(unit, result)); } @@ -81,6 +92,8 @@ static void test_path_get_user_unit(void) { check_p_g_u_u("/xyz.slice/xyz-waldo.slice/session-77.scope/foobar@pie.service/pa/po", 0, "foobar@pie.service"); check_p_g_u_u("/meh.service", -ENOENT, NULL); check_p_g_u_u("/session-3.scope/_cpu.service", 0, "cpu.service"); + check_p_g_u_u("/user.slice/user-1000.slice/user@1000.service/server.service", 0, "server.service"); + check_p_g_u_u("/user.slice/user-1000.slice/user@.service/server.service", -ENOENT, NULL); } static void check_p_g_s(const char *path, int code, const char *result) { @@ -233,6 +246,21 @@ static void test_slice_to_path(void) { test_slice_to_path_one("a-b-c-d-e.slice", "a.slice/a-b.slice/a-b-c.slice/a-b-c-d.slice/a-b-c-d-e.slice", 0); } +static void test_shift_path_one(const char *raw, const char *root, const char *shifted) { + const char *s = NULL; + + assert_se(cg_shift_path(raw, root, &s) >= 0); + assert_se(streq(s, shifted)); +} + +static void test_shift_path(void) { + + test_shift_path_one("/foobar/waldo", "/", "/foobar/waldo"); + test_shift_path_one("/foobar/waldo", "", "/foobar/waldo"); + test_shift_path_one("/foobar/waldo", "/foobar", "/waldo"); + test_shift_path_one("/foobar/waldo", "/fuckfuck", "/foobar/waldo"); +} + int main(void) { test_path_decode_unit(); test_path_get_unit(); @@ -245,6 +273,7 @@ int main(void) { TEST_REQ_RUNNING_SYSTEMD(test_escape()); test_controller_is_valid(); test_slice_to_path(); + test_shift_path(); return 0; }