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