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