at 23.11-beta 2.9 kB view raw
1import ./make-test-python.nix ({ pkgs, ...} : 2 3let 4 client = { pkgs, ... }: { 5 imports = [ ./common/x11.nix ]; 6 environment.systemPackages = [ pkgs.mumble ]; 7 }; 8 9 # outside of tests, this file should obviously not come from the nix store 10 envFile = pkgs.writeText "nixos-test-mumble-murmurd.env" '' 11 MURMURD_PASSWORD=testpassword 12 ''; 13 14in 15{ 16 name = "mumble"; 17 meta = with pkgs.lib.maintainers; { 18 maintainers = [ thoughtpolice eelco ]; 19 }; 20 21 nodes = { 22 server = { config, ... }: { 23 security.apparmor.enable = true; 24 services.murmur.enable = true; 25 services.murmur.registerName = "NixOS tests"; 26 services.murmur.password = "$MURMURD_PASSWORD"; 27 services.murmur.environmentFile = envFile; 28 networking.firewall.allowedTCPPorts = [ config.services.murmur.port ]; 29 }; 30 31 client1 = client; 32 client2 = client; 33 }; 34 35 testScript = '' 36 start_all() 37 38 server.wait_for_unit("murmur.service") 39 client1.wait_for_x() 40 client2.wait_for_x() 41 42 client1.execute("mumble mumble://client1:testpassword\@server/test >&2 &") 43 client2.execute("mumble mumble://client2:testpassword\@server/test >&2 &") 44 45 # cancel client audio configuration 46 client1.wait_for_window(r"Audio Tuning Wizard") 47 client2.wait_for_window(r"Audio Tuning Wizard") 48 server.sleep(5) # wait because mumble is slow to register event handlers 49 client1.send_key("esc") 50 client2.send_key("esc") 51 52 # cancel client cert configuration 53 client1.wait_for_window(r"Certificate Management") 54 client2.wait_for_window(r"Certificate Management") 55 server.sleep(5) # wait because mumble is slow to register event handlers 56 client1.send_key("esc") 57 client2.send_key("esc") 58 59 # accept server certificate 60 client1.wait_for_window(r"^Mumble$") 61 client2.wait_for_window(r"^Mumble$") 62 server.sleep(5) # wait because mumble is slow to register event handlers 63 client1.send_chars("y") 64 client2.send_chars("y") 65 server.sleep(5) # wait because mumble is slow to register event handlers 66 67 # sometimes the wrong of the 2 windows is focused, we switch focus and try pressing "y" again 68 client1.send_key("alt-tab") 69 client2.send_key("alt-tab") 70 server.sleep(5) # wait because mumble is slow to register event handlers 71 client1.send_chars("y") 72 client2.send_chars("y") 73 74 # Find clients in logs 75 server.wait_until_succeeds( 76 "journalctl -eu murmur -o cat | grep -q 'client1.\+Authenticated'" 77 ) 78 server.wait_until_succeeds( 79 "journalctl -eu murmur -o cat | grep -q 'client2.\+Authenticated'" 80 ) 81 82 server.sleep(5) # wait to get screenshot 83 client1.screenshot("screen1") 84 client2.screenshot("screen2") 85 86 # check if apparmor denied anything 87 server.fail('journalctl -b --no-pager --grep "^audit: .*apparmor=\\"DENIED\\""') 88 ''; 89})