47 lines
1.1 KiB
Nix
47 lines
1.1 KiB
Nix
|
import ./make-test.nix ({ pkgs, lib, ... }: {
|
||
|
name = "fluentd";
|
||
|
|
||
|
machine = { pkgs, ... }: {
|
||
|
services.fluentd = {
|
||
|
enable = true;
|
||
|
config = ''
|
||
|
<source>
|
||
|
@type http
|
||
|
port 9880
|
||
|
</source>
|
||
|
|
||
|
<match **>
|
||
|
type copy
|
||
|
<store>
|
||
|
@type file
|
||
|
format json
|
||
|
path /tmp/fluentd
|
||
|
symlink_path /tmp/current-log
|
||
|
</store>
|
||
|
<store>
|
||
|
@type stdout
|
||
|
</store>
|
||
|
</match>
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
|
||
|
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");
|
||
|
'';
|
||
|
})
|