]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test-engine.c
relicense to LGPLv2.1 (with exceptions)
[thirdparty/systemd.git] / src / test-engine.c
CommitLineData
d6c9574f 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
279ade13 2
a7334b09
LP
3/***
4 This file is part of systemd.
5
6 Copyright 2010 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
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
a7334b09
LP
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
5430f7f2 16 Lesser General Public License for more details.
a7334b09 17
5430f7f2 18 You should have received a copy of the GNU Lesser General Public License
a7334b09
LP
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
279ade13
LP
22#include <stdio.h>
23#include <errno.h>
24#include <string.h>
25#include <unistd.h>
26
27#include "manager.h"
28
29int main(int argc, char *argv[]) {
30 Manager *m = NULL;
87f0e418 31 Unit *a = NULL, *b = NULL, *c = NULL, *d = NULL, *e = NULL, *g = NULL, *h = NULL;
279ade13
LP
32 Job *j;
33
5e2c9366 34 assert_se(set_unit_path("test") >= 0);
279ade13 35
9e58ff9c 36 assert_se(manager_new(MANAGER_SYSTEM, &m) >= 0);
279ade13 37
e094e853 38 printf("Load1:\n");
398ef8ba
LP
39 assert_se(manager_load_unit(m, "a.service", NULL, NULL, &a) >= 0);
40 assert_se(manager_load_unit(m, "b.service", NULL, NULL, &b) >= 0);
41 assert_se(manager_load_unit(m, "c.service", NULL, NULL, &c) >= 0);
87f0e418 42 manager_dump_units(m, stdout, "\t");
279ade13
LP
43
44 printf("Test1: (Trivial)\n");
398ef8ba 45 assert_se(manager_add_job(m, JOB_START, c, JOB_REPLACE, false, NULL, &j) == 0);
279ade13
LP
46 manager_dump_jobs(m, stdout, "\t");
47
e094e853 48 printf("Load2:\n");
279ade13 49 manager_clear_jobs(m);
398ef8ba
LP
50 assert_se(manager_load_unit(m, "d.service", NULL, NULL, &d) >= 0);
51 assert_se(manager_load_unit(m, "e.service", NULL, NULL, &e) >= 0);
87f0e418 52 manager_dump_units(m, stdout, "\t");
279ade13
LP
53
54 printf("Test2: (Cyclic Order, Unfixable)\n");
398ef8ba 55 assert_se(manager_add_job(m, JOB_START, d, JOB_REPLACE, false, NULL, &j) == -ENOEXEC);
279ade13
LP
56 manager_dump_jobs(m, stdout, "\t");
57
1ffba6fe 58 printf("Test3: (Cyclic Order, Fixable, Garbage Collector)\n");
398ef8ba 59 assert_se(manager_add_job(m, JOB_START, e, JOB_REPLACE, false, NULL, &j) == 0);
279ade13
LP
60 manager_dump_jobs(m, stdout, "\t");
61
1ffba6fe 62 printf("Test4: (Identical transaction)\n");
398ef8ba 63 assert_se(manager_add_job(m, JOB_START, e, JOB_FAIL, false, NULL, &j) == 0);
1ffba6fe
LP
64 manager_dump_jobs(m, stdout, "\t");
65
e094e853 66 printf("Load3:\n");
398ef8ba 67 assert_se(manager_load_unit(m, "g.service", NULL, NULL, &g) >= 0);
87f0e418 68 manager_dump_units(m, stdout, "\t");
1ffba6fe
LP
69
70 printf("Test5: (Colliding transaction, fail)\n");
398ef8ba 71 assert_se(manager_add_job(m, JOB_START, g, JOB_FAIL, false, NULL, &j) == -EEXIST);
1ffba6fe
LP
72
73 printf("Test6: (Colliding transaction, replace)\n");
398ef8ba 74 assert_se(manager_add_job(m, JOB_START, g, JOB_REPLACE, false, NULL, &j) == 0);
1ffba6fe
LP
75 manager_dump_jobs(m, stdout, "\t");
76
35b8ca3a 77 printf("Test7: (Unmergeable job type, fail)\n");
398ef8ba 78 assert_se(manager_add_job(m, JOB_STOP, g, JOB_FAIL, false, NULL, &j) == -EEXIST);
e094e853
LP
79
80 printf("Test8: (Mergeable job type, fail)\n");
398ef8ba 81 assert_se(manager_add_job(m, JOB_RESTART, g, JOB_FAIL, false, NULL, &j) == 0);
e094e853
LP
82 manager_dump_jobs(m, stdout, "\t");
83
35b8ca3a 84 printf("Test9: (Unmergeable job type, replace)\n");
398ef8ba 85 assert_se(manager_add_job(m, JOB_STOP, g, JOB_REPLACE, false, NULL, &j) == 0);
e094e853
LP
86 manager_dump_jobs(m, stdout, "\t");
87
88 printf("Load4:\n");
398ef8ba 89 assert_se(manager_load_unit(m, "h.service", NULL, NULL, &h) >= 0);
87f0e418 90 manager_dump_units(m, stdout, "\t");
e094e853 91
35b8ca3a 92 printf("Test10: (Unmergeable job type of auxiliary job, fail)\n");
398ef8ba 93 assert_se(manager_add_job(m, JOB_START, h, JOB_FAIL, false, NULL, &j) == 0);
e094e853
LP
94 manager_dump_jobs(m, stdout, "\t");
95
279ade13
LP
96 manager_free(m);
97
98 return 0;
99}