test-watch-pid: use a real PID, not a made up one
This matters once we track processes with pidfds rather than just pid_t, because made up PIDs likely won't exist. The essence of the test remains unmodified, we just use a real, existing PID instead of 4711.
This commit is contained in:
+37
-25
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "log.h"
|
||||
#include "manager.h"
|
||||
#include "process-util.h"
|
||||
#include "rm-rf.h"
|
||||
#include "service.h"
|
||||
#include "tests.h"
|
||||
@@ -41,50 +42,61 @@ int main(int argc, char *argv[]) {
|
||||
assert_se(unit_add_name(c, "c.service") >= 0);
|
||||
assert_se(set_isempty(c->pids));
|
||||
|
||||
/* Fork off a child so thta we have a PID to watch */
|
||||
_cleanup_(sigkill_waitp) pid_t pid = 0;
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
/* Child */
|
||||
pause();
|
||||
_exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
assert_se(pid >= 0);
|
||||
|
||||
assert_se(hashmap_isempty(m->watch_pids));
|
||||
assert_se(manager_get_unit_by_pid(m, 4711) == NULL);
|
||||
assert_se(manager_get_unit_by_pid(m, pid) == NULL);
|
||||
|
||||
assert_se(unit_watch_pid(a, 4711, false) >= 0);
|
||||
assert_se(manager_get_unit_by_pid(m, 4711) == a);
|
||||
assert_se(unit_watch_pid(a, pid, false) >= 0);
|
||||
assert_se(manager_get_unit_by_pid(m, pid) == a);
|
||||
|
||||
assert_se(unit_watch_pid(a, 4711, false) >= 0);
|
||||
assert_se(manager_get_unit_by_pid(m, 4711) == a);
|
||||
assert_se(unit_watch_pid(a, pid, false) >= 0);
|
||||
assert_se(manager_get_unit_by_pid(m, pid) == a);
|
||||
|
||||
assert_se(unit_watch_pid(b, 4711, false) >= 0);
|
||||
u = manager_get_unit_by_pid(m, 4711);
|
||||
assert_se(unit_watch_pid(b, pid, false) >= 0);
|
||||
u = manager_get_unit_by_pid(m, pid);
|
||||
assert_se(u == a || u == b);
|
||||
|
||||
assert_se(unit_watch_pid(b, 4711, false) >= 0);
|
||||
u = manager_get_unit_by_pid(m, 4711);
|
||||
assert_se(unit_watch_pid(b, pid, false) >= 0);
|
||||
u = manager_get_unit_by_pid(m, pid);
|
||||
assert_se(u == a || u == b);
|
||||
|
||||
assert_se(unit_watch_pid(c, 4711, false) >= 0);
|
||||
u = manager_get_unit_by_pid(m, 4711);
|
||||
assert_se(unit_watch_pid(c, pid, false) >= 0);
|
||||
u = manager_get_unit_by_pid(m, pid);
|
||||
assert_se(u == a || u == b || u == c);
|
||||
|
||||
assert_se(unit_watch_pid(c, 4711, false) >= 0);
|
||||
u = manager_get_unit_by_pid(m, 4711);
|
||||
assert_se(unit_watch_pid(c, pid, false) >= 0);
|
||||
u = manager_get_unit_by_pid(m, pid);
|
||||
assert_se(u == a || u == b || u == c);
|
||||
|
||||
unit_unwatch_pid(b, 4711);
|
||||
u = manager_get_unit_by_pid(m, 4711);
|
||||
unit_unwatch_pid(b, pid);
|
||||
u = manager_get_unit_by_pid(m, pid);
|
||||
assert_se(u == a || u == c);
|
||||
|
||||
unit_unwatch_pid(b, 4711);
|
||||
u = manager_get_unit_by_pid(m, 4711);
|
||||
unit_unwatch_pid(b, pid);
|
||||
u = manager_get_unit_by_pid(m, pid);
|
||||
assert_se(u == a || u == c);
|
||||
|
||||
unit_unwatch_pid(a, 4711);
|
||||
assert_se(manager_get_unit_by_pid(m, 4711) == c);
|
||||
unit_unwatch_pid(a, pid);
|
||||
assert_se(manager_get_unit_by_pid(m, pid) == c);
|
||||
|
||||
unit_unwatch_pid(a, 4711);
|
||||
assert_se(manager_get_unit_by_pid(m, 4711) == c);
|
||||
unit_unwatch_pid(a, pid);
|
||||
assert_se(manager_get_unit_by_pid(m, pid) == c);
|
||||
|
||||
unit_unwatch_pid(c, 4711);
|
||||
assert_se(manager_get_unit_by_pid(m, 4711) == NULL);
|
||||
unit_unwatch_pid(c, pid);
|
||||
assert_se(manager_get_unit_by_pid(m, pid) == NULL);
|
||||
|
||||
unit_unwatch_pid(c, 4711);
|
||||
assert_se(manager_get_unit_by_pid(m, 4711) == NULL);
|
||||
unit_unwatch_pid(c, pid);
|
||||
assert_se(manager_get_unit_by_pid(m, pid) == NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user