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");
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								})
							 |