summaryrefslogtreecommitdiffstats
path: root/nixos/tests/systemd-coredump.nix
blob: 905a40df7e5ed1d1abc09198da8c3ab3576f5cae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{ pkgs, ... }:

let

  crasher = pkgs.writeCBin "crasher" "int main;";

in

{
  name = "systemd-coredump";
  meta = {
    maintainers = [ ];
  };

  nodes.machine = {
    systemd = {
      services.crasher.serviceConfig = {
        ExecStart = "${crasher}/bin/crasher";
        StateDirectory = "crasher";
        WorkingDirectory = "%S/crasher";
        Restart = "no";
      };

      coredump.settings.Coredump = {
        Storage = "journal";
        ProcessSizeMax = "0";
      };
    };
  };

  testScript = ''
    with subtest("systemd-coredump enabled"):
      machine.wait_for_unit("multi-user.target")
      machine.wait_for_unit("systemd-coredump.socket")
      machine.systemctl("start crasher");
      machine.wait_until_succeeds("coredumpctl list | grep crasher", timeout=10)
      machine.fail("stat /var/lib/crasher/core*")

    with subtest("settings.Coredump renders coredump.conf"):
      machine.succeed("grep -F '[Coredump]' /etc/systemd/coredump.conf")
      machine.succeed("grep -F 'Storage=journal' /etc/systemd/coredump.conf")
      machine.succeed("grep -F 'ProcessSizeMax=0' /etc/systemd/coredump.conf")
  '';
}