]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-sched-prio.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 Copyright © 2012 Holger Hans Peter Freyther
12 #include "test-helper.h"
15 int main(int argc
, char *argv
[]) {
16 _cleanup_(rm_rf_physical_and_freep
) char *runtime_dir
= NULL
;
17 _cleanup_(manager_freep
) Manager
*m
= NULL
;
18 Unit
*idle_ok
, *idle_bad
, *rr_ok
, *rr_bad
, *rr_sched
;
22 r
= enter_cgroup_subroot();
23 if (r
== -ENOMEDIUM
) {
24 log_notice_errno(r
, "Skipping test: cgroupfs not available");
25 return EXIT_TEST_SKIP
;
28 /* prepare the test */
29 assert_se(set_unit_path(get_testdata_dir("")) >= 0);
30 assert_se(runtime_dir
= setup_fake_runtime_dir());
31 r
= manager_new(UNIT_FILE_USER
, MANAGER_TEST_RUN_BASIC
, &m
);
32 if (MANAGER_SKIP_TEST(r
)) {
33 log_notice_errno(r
, "Skipping test: manager_new: %m");
34 return EXIT_TEST_SKIP
;
37 assert_se(manager_startup(m
, NULL
, NULL
) >= 0);
40 assert_se(manager_load_startable_unit_or_warn(m
, "sched_idle_ok.service", NULL
, &idle_ok
) >= 0);
41 ser
= SERVICE(idle_ok
);
42 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_OTHER
);
43 assert_se(ser
->exec_context
.cpu_sched_priority
== 0);
46 * load idle bad. This should print a warning but we have no way to look at it.
48 assert_se(manager_load_startable_unit_or_warn(m
, "sched_idle_bad.service", NULL
, &idle_bad
) >= 0);
49 ser
= SERVICE(idle_ok
);
50 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_OTHER
);
51 assert_se(ser
->exec_context
.cpu_sched_priority
== 0);
55 * Test that the default priority is moving from 0 to 1.
57 assert_se(manager_load_startable_unit_or_warn(m
, "sched_rr_ok.service", NULL
, &rr_ok
) >= 0);
59 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_RR
);
60 assert_se(ser
->exec_context
.cpu_sched_priority
== 1);
64 * Test that the value of 0 and 100 is ignored.
66 assert_se(manager_load_startable_unit_or_warn(m
, "sched_rr_bad.service", NULL
, &rr_bad
) >= 0);
67 ser
= SERVICE(rr_bad
);
68 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_RR
);
69 assert_se(ser
->exec_context
.cpu_sched_priority
== 1);
73 * Test that anything between 1 and 99 can be set.
75 assert_se(manager_load_startable_unit_or_warn(m
, "sched_rr_change.service", NULL
, &rr_sched
) >= 0);
76 ser
= SERVICE(rr_sched
);
77 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_RR
);
78 assert_se(ser
->exec_context
.cpu_sched_priority
== 99);