nixos/tests/snapcast: migrate to runTest

Part of #386873
This commit is contained in:
Martin Weinelt 2025-03-10 20:20:04 +01:00
parent 9b7b22afa1
commit 6919956d08
No known key found for this signature in database
GPG key ID: 87C1E9888F856759
2 changed files with 80 additions and 79 deletions

View file

@ -1036,7 +1036,7 @@ in {
slurm = handleTest ./slurm.nix {}; slurm = handleTest ./slurm.nix {};
snmpd = handleTest ./snmpd.nix {}; snmpd = handleTest ./snmpd.nix {};
smokeping = handleTest ./smokeping.nix {}; smokeping = handleTest ./smokeping.nix {};
snapcast = handleTest ./snapcast.nix {}; snapcast = runTest ./snapcast.nix;
snapper = handleTest ./snapper.nix {}; snapper = handleTest ./snapper.nix {};
snipe-it = runTest ./web-apps/snipe-it.nix; snipe-it = runTest ./web-apps/snipe-it.nix;
soapui = handleTest ./soapui.nix {}; soapui = handleTest ./soapui.nix {};

View file

@ -1,93 +1,94 @@
import ./make-test-python.nix ( {
{ pkgs, ... }: pkgs,
...
}:
let let
port = 10004; port = 10004;
tcpPort = 10005; tcpPort = 10005;
httpPort = 10080; httpPort = 10080;
tcpStreamPort = 10006; tcpStreamPort = 10006;
bufferSize = 742; bufferSize = 742;
in in
{ {
name = "snapcast"; name = "snapcast";
meta = with pkgs.lib.maintainers; { meta = with pkgs.lib.maintainers; {
maintainers = [ hexa ]; maintainers = [ hexa ];
}; };
nodes = { nodes = {
server = { server = {
services.snapserver = { services.snapserver = {
enable = true; enable = true;
port = port; port = port;
tcp.port = tcpPort; tcp.port = tcpPort;
http.port = httpPort; http.port = httpPort;
openFirewall = true; openFirewall = true;
buffer = bufferSize; buffer = bufferSize;
streams = { streams = {
mpd = { mpd = {
type = "pipe"; type = "pipe";
location = "/run/snapserver/mpd"; location = "/run/snapserver/mpd";
query.mode = "create"; query.mode = "create";
}; };
bluetooth = { bluetooth = {
type = "pipe"; type = "pipe";
location = "/run/snapserver/bluetooth"; location = "/run/snapserver/bluetooth";
}; };
tcp = { tcp = {
type = "tcp"; type = "tcp";
location = "127.0.0.1:${toString tcpStreamPort}"; location = "127.0.0.1:${toString tcpStreamPort}";
}; };
meta = { meta = {
type = "meta"; type = "meta";
location = "/mpd/bluetooth/tcp"; location = "/mpd/bluetooth/tcp";
};
}; };
}; };
environment.systemPackages = [ pkgs.snapcast ];
};
client = {
environment.systemPackages = [ pkgs.snapcast ];
}; };
environment.systemPackages = [ pkgs.snapcast ];
}; };
client = {
environment.systemPackages = [ pkgs.snapcast ];
};
};
testScript = '' testScript = ''
import json import json
get_rpc_version = {"id": "1", "jsonrpc": "2.0", "method": "Server.GetRPCVersion"} get_rpc_version = {"id": "1", "jsonrpc": "2.0", "method": "Server.GetRPCVersion"}
start_all() start_all()
server.wait_for_unit("snapserver.service") 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 port}")
server.wait_until_succeeds("ss -ntl | grep -q ${toString tcpPort}") server.wait_until_succeeds("ss -ntl | grep -q ${toString tcpPort}")
server.wait_until_succeeds("ss -ntl | grep -q ${toString httpPort}") server.wait_until_succeeds("ss -ntl | grep -q ${toString httpPort}")
server.wait_until_succeeds("ss -ntl | grep -q ${toString tcpStreamPort}") server.wait_until_succeeds("ss -ntl | grep -q ${toString tcpStreamPort}")
with subtest("check that pipes are created"): with subtest("check that pipes are created"):
server.succeed("test -p /run/snapserver/mpd") server.succeed("test -p /run/snapserver/mpd")
server.succeed("test -p /run/snapserver/bluetooth") server.succeed("test -p /run/snapserver/bluetooth")
with subtest("test tcp json-rpc"): with subtest("test tcp json-rpc"):
server.succeed(f"echo '{json.dumps(get_rpc_version)}' | nc -w 1 localhost ${toString tcpPort}") server.succeed(f"echo '{json.dumps(get_rpc_version)}' | nc -w 1 localhost ${toString tcpPort}")
with subtest("test http json-rpc"): with subtest("test http json-rpc"):
server.succeed( server.succeed(
"curl --fail http://localhost:${toString httpPort}/jsonrpc -d '{json.dumps(get_rpc_version)}'" "curl --fail http://localhost:${toString httpPort}/jsonrpc -d '{json.dumps(get_rpc_version)}'"
) )
with subtest("test a ipv6 connection"): with subtest("test a ipv6 connection"):
server.execute("systemd-run --unit=snapcast-local-client snapclient -h ::1 -p ${toString port}") server.execute("systemd-run --unit=snapcast-local-client snapclient -h ::1 -p ${toString port}")
server.wait_until_succeeds( server.wait_until_succeeds(
"journalctl -o cat -u snapserver.service | grep -q 'Hello from'" "journalctl -o cat -u snapserver.service | grep -q 'Hello from'"
) )
server.wait_until_succeeds("journalctl -o cat -u snapcast-local-client | grep -q 'buffer: ${toString bufferSize}'") server.wait_until_succeeds("journalctl -o cat -u snapcast-local-client | grep -q 'buffer: ${toString bufferSize}'")
with subtest("test a connection"): with subtest("test a connection"):
client.execute("systemd-run --unit=snapcast-client snapclient -h server -p ${toString port}") client.execute("systemd-run --unit=snapcast-client snapclient -h server -p ${toString port}")
server.wait_until_succeeds( server.wait_until_succeeds(
"journalctl -o cat -u snapserver.service | grep -q 'Hello from'" "journalctl -o cat -u snapserver.service | grep -q 'Hello from'"
) )
client.wait_until_succeeds("journalctl -o cat -u snapcast-client | grep -q 'buffer: ${toString bufferSize}'") client.wait_until_succeeds("journalctl -o cat -u snapcast-client | grep -q 'buffer: ${toString bufferSize}'")
''; '';
} }
)