1import ./make-test-python.nix (
2 { pkgs, ... }:
3
4 let
5
6 crasher = pkgs.writeCBin "crasher" "int main;";
7
8 commonConfig = {
9 systemd.services.crasher.serviceConfig = {
10 ExecStart = "${crasher}/bin/crasher";
11 StateDirectory = "crasher";
12 WorkingDirectory = "%S/crasher";
13 Restart = "no";
14 };
15 };
16
17 in
18
19 {
20 name = "systemd-coredump";
21 meta = with pkgs.lib.maintainers; {
22 maintainers = [ squalus ];
23 };
24
25 nodes.machine1 = { pkgs, lib, ... }: commonConfig;
26 nodes.machine2 =
27 { pkgs, lib, ... }:
28 lib.recursiveUpdate commonConfig {
29 systemd.coredump.enable = false;
30 systemd.package = pkgs.systemd.override {
31 withCoredump = false;
32 };
33 };
34
35 testScript = ''
36 with subtest("systemd-coredump enabled"):
37 machine1.wait_for_unit("multi-user.target")
38 machine1.wait_for_unit("systemd-coredump.socket")
39 machine1.systemctl("start crasher");
40 machine1.wait_until_succeeds("coredumpctl list | grep crasher", timeout=10)
41 machine1.fail("stat /var/lib/crasher/core")
42
43 with subtest("systemd-coredump disabled"):
44 machine2.systemctl("start crasher");
45 machine2.wait_until_succeeds("stat /var/lib/crasher/core", timeout=10)
46 '';
47 }
48)