50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test-python.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.wait_for_unit("fluentd.service")
 | |
|     machine.wait_for_open_port(9880)
 | |
| 
 | |
|     machine.succeed(
 | |
|         "curl -fsSL -X POST -H 'Content-type: application/json' -d @${payload} http://localhost:9880/test.tag"
 | |
|     )
 | |
| 
 | |
|     # blocking flush
 | |
|     machine.succeed("systemctl stop fluentd")
 | |
| 
 | |
|     machine.succeed("grep '${testMessage}' /tmp/current-log")
 | |
|   '';
 | |
| })
 | 
