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