nixpkgs/nixos/tests/systemd-coredump.nix
squalus 257db1dd4a nixos: systemd-coredump: improve disabled state
The systemd-coredump module required systemd to be built with
withCoredump=true, even if the module was disabled.

- allow systemd to be missing systemd-coredump if the module is disabled
- switch to mkDefault for the sysctl config to allow user overrides when
  the module is disabled
- add nixos tests for both the enabled and disabled cases
2022-08-01 09:52:56 -07:00

45 lines
1.2 KiB
Nix

import ./make-test-python.nix ({ pkgs, ... }:
let
crasher = pkgs.writeCBin "crasher" "int main;";
commonConfig = {
systemd.services.crasher.serviceConfig = {
ExecStart = "${crasher}/bin/crasher";
StateDirectory = "crasher";
WorkingDirectory = "%S/crasher";
Restart = "no";
};
};
in
{
name = "systemd-coredump";
meta = with pkgs.lib.maintainers; {
maintainers = [ squalus ];
};
nodes.machine1 = { pkgs, lib, ... }: commonConfig;
nodes.machine2 = { pkgs, lib, ... }: lib.recursiveUpdate commonConfig {
systemd.coredump.enable = false;
systemd.package = pkgs.systemd.override {
withCoredump = false;
};
};
testScript = ''
with subtest("systemd-coredump enabled"):
machine1.wait_for_unit("multi-user.target")
machine1.wait_for_unit("systemd-coredump.socket")
machine1.systemctl("start crasher");
machine1.wait_until_succeeds("coredumpctl list | grep crasher", timeout=10)
machine1.fail("stat /var/lib/crasher/core")
with subtest("systemd-coredump disabled"):
machine2.systemctl("start crasher");
machine2.wait_until_succeeds("stat /var/lib/crasher/core", timeout=10)
'';
})