59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								import ./make-test-python.nix ({ pkgs, ...} :
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								  port = 10004;
							 | 
						||
| 
								 | 
							
								  tcpPort = 10005;
							 | 
						||
| 
								 | 
							
								  httpPort = 10080;
							 | 
						||
| 
								 | 
							
								in {
							 | 
						||
| 
								 | 
							
								  name = "snapcast";
							 | 
						||
| 
								 | 
							
								  meta = with pkgs.stdenv.lib.maintainers; {
							 | 
						||
| 
								 | 
							
								    maintainers = [ hexa ];
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  nodes = {
							 | 
						||
| 
								 | 
							
								    server = {
							 | 
						||
| 
								 | 
							
								      services.snapserver = {
							 | 
						||
| 
								 | 
							
								        enable = true;
							 | 
						||
| 
								 | 
							
								        port = port;
							 | 
						||
| 
								 | 
							
								        tcp.port = tcpPort;
							 | 
						||
| 
								 | 
							
								        http.port = httpPort;
							 | 
						||
| 
								 | 
							
								        streams = {
							 | 
						||
| 
								 | 
							
								          mpd = {
							 | 
						||
| 
								 | 
							
								            type = "pipe";
							 | 
						||
| 
								 | 
							
								            location = "/run/snapserver/mpd";
							 | 
						||
| 
								 | 
							
								          };
							 | 
						||
| 
								 | 
							
								          bluetooth = {
							 | 
						||
| 
								 | 
							
								            type = "pipe";
							 | 
						||
| 
								 | 
							
								            location = "/run/snapserver/bluetooth";
							 | 
						||
| 
								 | 
							
								          };
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  testScript = ''
							 | 
						||
| 
								 | 
							
								    import json
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    get_rpc_version = {"id": "1", "jsonrpc": "2.0", "method": "Server.GetRPCVersion"}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    start_all()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    server.wait_for_unit("snapserver.service")
							 | 
						||
| 
								 | 
							
								    server.wait_until_succeeds("ss -ntl | grep -q ${toString port}")
							 | 
						||
| 
								 | 
							
								    server.wait_until_succeeds("ss -ntl | grep -q ${toString tcpPort}")
							 | 
						||
| 
								 | 
							
								    server.wait_until_succeeds("ss -ntl | grep -q ${toString httpPort}")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with subtest("check that pipes are created"):
							 | 
						||
| 
								 | 
							
								        server.succeed("test -p /run/snapserver/mpd")
							 | 
						||
| 
								 | 
							
								        server.succeed("test -p /run/snapserver/bluetooth")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with subtest("test tcp json-rpc"):
							 | 
						||
| 
								 | 
							
								        server.succeed(f"echo '{json.dumps(get_rpc_version)}' | nc -w 1 localhost ${toString tcpPort}")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with subtest("test http json-rpc"):
							 | 
						||
| 
								 | 
							
								        server.succeed(
							 | 
						||
| 
								 | 
							
								            "curl --fail http://localhost:${toString httpPort}/jsonrpc -d '{json.dumps(get_rpc_version)}'"
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								})
							 |