at master 1.2 kB view raw
1{ 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 = 26 { pkgs, lib, ... }: 27 lib.recursiveUpdate commonConfig { 28 systemd.coredump.enable = false; 29 systemd.package = pkgs.systemd.override { 30 withCoredump = false; 31 }; 32 }; 33 34 testScript = '' 35 with subtest("systemd-coredump enabled"): 36 machine1.wait_for_unit("multi-user.target") 37 machine1.wait_for_unit("systemd-coredump.socket") 38 machine1.systemctl("start crasher"); 39 machine1.wait_until_succeeds("coredumpctl list | grep crasher", timeout=10) 40 machine1.fail("stat /var/lib/crasher/core") 41 42 with subtest("systemd-coredump disabled"): 43 machine2.systemctl("start crasher"); 44 machine2.wait_until_succeeds("stat /var/lib/crasher/core", timeout=10) 45 ''; 46}