import ./make-test.nix ({ pkgs, lib, ... }: { name = "fluentd"; machine = { pkgs, ... }: { services.fluentd = { enable = true; config = '' @type http port 9880 type copy @type file format json path /tmp/fluentd symlink_path /tmp/current-log @type stdout ''; }; }; testScript = let testMessage = "an example log message"; payload = pkgs.writeText "test-message.json" (builtins.toJSON { inherit testMessage; }); in '' $machine->start; $machine->waitForUnit('fluentd.service'); $machine->waitForOpenPort(9880); $machine->succeed("curl -fsSL -X POST -H 'Content-type: application/json' -d @${payload} http://localhost:9880/test.tag"); $machine->succeed("systemctl stop fluentd"); # blocking flush $machine->succeed("grep '${testMessage}' /tmp/current-log"); ''; })