at 25.11-pre 3.0 kB view raw
1import ./make-test-python.nix ( 2 { pkgs, ... }: 3 4 let 5 client = 6 { pkgs, ... }: 7 { 8 imports = [ ./common/x11.nix ]; 9 environment.systemPackages = [ pkgs.mumble ]; 10 }; 11 port = 56457; 12 in 13 { 14 name = "mumble"; 15 meta = with pkgs.lib.maintainers; { 16 maintainers = [ _3JlOy-PYCCKUi ]; 17 }; 18 19 nodes = { 20 server = 21 { ... }: 22 { 23 services.umurmur = { 24 enable = true; 25 openFirewall = true; 26 settings = { 27 password = "testpassword"; 28 channels = [ 29 { 30 name = "root"; 31 parent = ""; 32 description = "Root channel. No entry."; 33 noenter = true; 34 } 35 { 36 name = "lobby"; 37 parent = "root"; 38 description = "Lobby channel"; 39 } 40 ]; 41 default_channel = "lobby"; 42 bindport = port; 43 }; 44 }; 45 }; 46 47 client1 = client; 48 client2 = client; 49 }; 50 51 testScript = '' 52 start_all() 53 54 server.wait_for_unit("umurmur.service") 55 client1.wait_for_x() 56 client2.wait_for_x() 57 58 client1.execute("mumble mumble://client1:testpassword\@server:${toString port}/lobby >&2 &") 59 client2.execute("mumble mumble://client2:testpassword\@server:${toString port}/lobby >&2 &") 60 61 # cancel client audio configuration 62 client1.wait_for_window(r"Audio Tuning Wizard") 63 client2.wait_for_window(r"Audio Tuning Wizard") 64 server.sleep(5) # wait because mumble is slow to register event handlers 65 client1.send_key("esc") 66 client2.send_key("esc") 67 68 # cancel client cert configuration 69 client1.wait_for_window(r"Certificate Management") 70 client2.wait_for_window(r"Certificate Management") 71 server.sleep(5) # wait because mumble is slow to register event handlers 72 client1.send_key("esc") 73 client2.send_key("esc") 74 75 # accept server certificate 76 client1.wait_for_window(r"^Mumble$") 77 client2.wait_for_window(r"^Mumble$") 78 server.sleep(5) # wait because mumble is slow to register event handlers 79 client1.send_chars("y") 80 client2.send_chars("y") 81 server.sleep(5) # wait because mumble is slow to register event handlers 82 83 # sometimes the wrong of the 2 windows is focused, we switch focus and try pressing "y" again 84 client1.send_key("alt-tab") 85 client2.send_key("alt-tab") 86 server.sleep(5) # wait because mumble is slow to register event handlers 87 client1.send_chars("y") 88 client2.send_chars("y") 89 90 # Find clients in logs 91 server.wait_until_succeeds( 92 "journalctl -eu umurmur -o cat | grep -q 'User client1 authenticated'" 93 ) 94 server.wait_until_succeeds( 95 "journalctl -eu umurmur -o cat | grep -q 'User client2 authenticated'" 96 ) 97 ''; 98 } 99)