summaryrefslogtreecommitdiffstats
path: root/nixos/tests/fluent-bit.nix
blob: f9923e3ada7eb72a6d2a0d9ebcdb3be114ec9928 (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
45
46
47
48
49
50
51
52
53
54
55
56
# Regression test for https://github.com/NixOS/nixpkgs/pull/395128
{
  name = "fluent-bit";
  nodes.machine = {
    services.fluent-bit = {
      enable = true;
      settings = {
        pipeline = {
          inputs = [
            {
              name = "systemd";
              systemd_filter = "_SYSTEMD_UNIT=fluent-bit-regression-395128.service";
            }
          ];
          outputs = [
            {
              name = "file";
              path = "/var/log/fluent-bit";
              file = "fluent-bit.out";
            }
          ];
        };
      };
    };
    systemd.services.fluent-bit.serviceConfig.LogsDirectory = "fluent-bit";

    # Logs get compressed when larger than 1024 bytes
    # Lets generate some logs that trigger that
    # This causes libzstd to be dlopen'd by systemd which breaks fluent-bit 3.2.7+
    # https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html#Compress=
    systemd.services.fluent-bit-regression-395128 = {
      serviceConfig = {
        Type = "oneshot";
        RemainAfterExit = true;
      };
      script = ''
        for i in {1..20}; do
          (head -c 1200 < /dev/zero | tr '\0' 'A') && echo
          sleep 1
        done
      '';
    };
  };

  testScript = ''
    start_all()

    machine.wait_for_unit("fluent-bit.service")

    with subtest("fluent-bit handles zstd-compressed journal logs"):
      machine.succeed("systemctl start fluent-bit-regression-395128.service")
      machine.succeed("systemctl show -p NRestarts fluent-bit.service | grep -q 'NRestarts=0'")

    machine.wait_for_file("/var/log/fluent-bit/fluent-bit.out")
  '';
}