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:
Lennart Poettering
2023-09-28 23:22:58 +02:00
parent ec8dc83530
commit c407bfa68f
+37 -25
View File
@@ -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;
}