]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-sched-prio.c
2 This file is part of systemd.
4 Copyright 2012 Holger Hans Peter Freyther
6 systemd is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
11 systemd is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with systemd; If not, see <http://www.gnu.org/licenses/>.
25 #include "test-helper.h"
28 int main(int argc
, char *argv
[]) {
29 _cleanup_(rm_rf_physical_and_freep
) char *runtime_dir
= NULL
;
31 Unit
*idle_ok
, *idle_bad
, *rr_ok
, *rr_bad
, *rr_sched
;
37 assert_se(runtime_dir
= setup_fake_runtime_dir());
39 /* prepare the test */
40 assert_se(set_unit_path(TEST_DIR
) >= 0);
41 r
= manager_new(UNIT_FILE_USER
, true, &m
);
42 if (MANAGER_SKIP_TEST(r
)) {
43 log_notice_errno(r
, "Skipping test: manager_new: %m");
44 return EXIT_TEST_SKIP
;
47 assert_se(manager_startup(m
, serial
, fdset
) >= 0);
50 assert_se(manager_load_unit(m
, "sched_idle_ok.service", NULL
, NULL
, &idle_ok
) >= 0);
51 assert_se(idle_ok
->load_state
== UNIT_LOADED
);
52 ser
= SERVICE(idle_ok
);
53 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_OTHER
);
54 assert_se(ser
->exec_context
.cpu_sched_priority
== 0);
57 * load idle bad. This should print a warning but we have no way to look at it.
59 assert_se(manager_load_unit(m
, "sched_idle_bad.service", NULL
, NULL
, &idle_bad
) >= 0);
60 assert_se(idle_bad
->load_state
== UNIT_LOADED
);
61 ser
= SERVICE(idle_ok
);
62 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_OTHER
);
63 assert_se(ser
->exec_context
.cpu_sched_priority
== 0);
67 * Test that the default priority is moving from 0 to 1.
69 assert_se(manager_load_unit(m
, "sched_rr_ok.service", NULL
, NULL
, &rr_ok
) >= 0);
70 assert_se(rr_ok
->load_state
== UNIT_LOADED
);
72 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_RR
);
73 assert_se(ser
->exec_context
.cpu_sched_priority
== 1);
77 * Test that the value of 0 and 100 is ignored.
79 assert_se(manager_load_unit(m
, "sched_rr_bad.service", NULL
, NULL
, &rr_bad
) >= 0);
80 assert_se(rr_bad
->load_state
== UNIT_LOADED
);
81 ser
= SERVICE(rr_bad
);
82 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_RR
);
83 assert_se(ser
->exec_context
.cpu_sched_priority
== 1);
87 * Test that anything between 1 and 99 can be set.
89 assert_se(manager_load_unit(m
, "sched_rr_change.service", NULL
, NULL
, &rr_sched
) >= 0);
90 assert_se(rr_sched
->load_state
== UNIT_LOADED
);
91 ser
= SERVICE(rr_sched
);
92 assert_se(ser
->exec_context
.cpu_sched_policy
== SCHED_RR
);
93 assert_se(ser
->exec_context
.cpu_sched_priority
== 99);