1# Regression test for https://github.com/NixOS/nixpkgs/pull/395128
2{
3 name = "fluent-bit";
4 nodes.machine = {
5 services.fluent-bit = {
6 enable = true;
7 settings = {
8 pipeline = {
9 inputs = [
10 {
11 name = "systemd";
12 systemd_filter = "_SYSTEMD_UNIT=fluent-bit-regression-395128.service";
13 }
14 ];
15 outputs = [
16 {
17 name = "file";
18 path = "/var/log/fluent-bit";
19 file = "fluent-bit.out";
20 }
21 ];
22 };
23 };
24 };
25 systemd.services.fluent-bit.serviceConfig.LogsDirectory = "fluent-bit";
26
27 # Logs get compressed when larger than 1024 bytes
28 # Lets generate some logs that trigger that
29 # This causes libzstd to be dlopen'd by systemd which breaks fluent-bit 3.2.7+
30 # https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html#Compress=
31 systemd.services.fluent-bit-regression-395128 = {
32 serviceConfig = {
33 Type = "oneshot";
34 RemainAfterExit = true;
35 };
36 script = ''
37 for i in {1..20}; do
38 (head -c 1200 < /dev/zero | tr '\0' 'A') && echo
39 sleep 1
40 done
41 '';
42 };
43 };
44
45 testScript = ''
46 start_all()
47
48 machine.wait_for_unit("fluent-bit.service")
49
50 with subtest("fluent-bit handles zstd-compressed journal logs"):
51 machine.succeed("systemctl start fluent-bit-regression-395128.service")
52 machine.succeed("systemctl show -p NRestarts fluent-bit.service | grep -q 'NRestarts=0'")
53
54 machine.wait_for_file("/var/log/fluent-bit/fluent-bit.out")
55 '';
56}