at 22.05-pre 2.4 kB view raw
1import ./make-test-python.nix ({ pkgs, ...} : 2 3let 4 port = 10004; 5 tcpPort = 10005; 6 httpPort = 10080; 7 tcpStreamPort = 10006; 8 bufferSize = 742; 9in { 10 name = "snapcast"; 11 meta = with pkgs.lib.maintainers; { 12 maintainers = [ hexa ]; 13 }; 14 15 nodes = { 16 server = { 17 services.snapserver = { 18 enable = true; 19 port = port; 20 tcp.port = tcpPort; 21 http.port = httpPort; 22 buffer = bufferSize; 23 streams = { 24 mpd = { 25 type = "pipe"; 26 location = "/run/snapserver/mpd"; 27 query.mode = "create"; 28 }; 29 bluetooth = { 30 type = "pipe"; 31 location = "/run/snapserver/bluetooth"; 32 }; 33 tcp = { 34 type = "tcp"; 35 location = "127.0.0.1:${toString tcpStreamPort}"; 36 }; 37 meta = { 38 type = "meta"; 39 location = "/mpd/bluetooth/tcp"; 40 }; 41 }; 42 }; 43 }; 44 client = { 45 environment.systemPackages = [ pkgs.snapcast ]; 46 }; 47 }; 48 49 testScript = '' 50 import json 51 52 get_rpc_version = {"id": "1", "jsonrpc": "2.0", "method": "Server.GetRPCVersion"} 53 54 start_all() 55 56 server.wait_for_unit("snapserver.service") 57 server.wait_until_succeeds("ss -ntl | grep -q ${toString port}") 58 server.wait_until_succeeds("ss -ntl | grep -q ${toString tcpPort}") 59 server.wait_until_succeeds("ss -ntl | grep -q ${toString httpPort}") 60 server.wait_until_succeeds("ss -ntl | grep -q ${toString tcpStreamPort}") 61 62 with subtest("check that pipes are created"): 63 server.succeed("test -p /run/snapserver/mpd") 64 server.succeed("test -p /run/snapserver/bluetooth") 65 66 with subtest("test tcp json-rpc"): 67 server.succeed(f"echo '{json.dumps(get_rpc_version)}' | nc -w 1 localhost ${toString tcpPort}") 68 69 with subtest("test http json-rpc"): 70 server.succeed( 71 "curl --fail http://localhost:${toString httpPort}/jsonrpc -d '{json.dumps(get_rpc_version)}'" 72 ) 73 74 with subtest("test a connection"): 75 client.execute("systemd-run --unit=snapcast-client snapclient -h server -p ${toString port}") 76 server.wait_until_succeeds( 77 "journalctl -o cat -u snapserver.service | grep -q 'Hello from'" 78 ) 79 client.wait_until_succeeds("journalctl -o cat -u snapcast-client | grep -q 'buffer: ${toString bufferSize}'") 80 ''; 81})