diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-07-29 23:23:56 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-07-29 23:23:56 +0200 |
commit | 8040a61b373621e3e8a3684aecbb5cbf66d895c7 (patch) | |
tree | 443a2e4f34017457189b03cbb599a1be1eddf51f /tests/by-name | |
parent | modules/sharkey: Drop pointless dependency on `network-online.target` (diff) | |
download | nixos-server-8040a61b373621e3e8a3684aecbb5cbf66d895c7.zip |
Diffstat (limited to 'tests/by-name')
-rw-r--r-- | tests/by-name/ji/jitsi-meet/test.nix | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/tests/by-name/ji/jitsi-meet/test.nix b/tests/by-name/ji/jitsi-meet/test.nix new file mode 100644 index 0000000..76d8539 --- /dev/null +++ b/tests/by-name/ji/jitsi-meet/test.nix @@ -0,0 +1,103 @@ +{ + nixos-lib, + pkgsUnstable, + nixpkgs-unstable, + vhackPackages, + pkgs, + extraModules, + nixLib, + ... +}: +nixos-lib.runTest { + hostPkgs = pkgs; + + name = "jitsi-meet"; + + node = { + specialArgs = {inherit pkgsUnstable extraModules vhackPackages nixpkgs-unstable nixLib;}; + + # Use the nixpkgs as constructed by the `nixpkgs.*` options + pkgs = null; + }; + + nodes = { + acme = {...}: { + imports = [ + ../../../common/acme/server.nix + ../../../common/dns/client.nix + ]; + }; + name_server = {nodes, ...}: { + imports = + extraModules + ++ [ + ../../../common/acme/client.nix + ../../../common/dns/server.nix + ]; + + vhack.dns.zones = { + "jitsi-meet.server" = { + SOA = { + nameServer = "ns"; + adminEmail = "admin@server.com"; + serial = 2025012301; + }; + useOrigin = false; + + A = [ + nodes.server.networking.primaryIPAddress + ]; + AAAA = [ + nodes.server.networking.primaryIPv6Address + ]; + }; + }; + }; + + server = {config, ...}: { + imports = + extraModules + ++ [ + ../../../../modules + ../../../common/acme/client.nix + ../../../common/dns/client.nix + ]; + + vhack = { + nginx.enable = true; + jitsi-meet = { + enable = true; + domain = "jitsi-meet.server"; + }; + }; + }; + + client = {...}: { + imports = [ + ../../../common/acme/client.nix + ../../../common/dns/client.nix + ]; + }; + }; + + testScript = {nodes, ...}: let + acme = import ../../../common/acme {inherit pkgs;}; + in + acme.prepare ["server" "client"] + # Python + '' + server.wait_for_unit("jitsi-videobridge.service") + server.wait_for_unit("jitsi-videobridge2.service") + + with subtest("All services running"): + import json + def all_services_running(host): + (status, output) = host.systemctl("list-units --state=failed --plain --no-pager --output=json") + host_failed = json.loads(output) + assert len(host_failed) == 0, f"Expected zero failing services, but found: {json.dumps(host_failed, indent=4)}" + all_services_running(server) + + client.wait_until_succeeds("curl --silent https://jitsi-meet.server") + client.succeed("curl --silent https://jitsi-meet.server | grep 'Join a WebRTC video conference'") + ''; +} |