at 18.03-beta 2.4 kB view raw
1import ./make-test.nix ({ pkgs, ...} : 2 3let 4 client = { config, pkgs, ... }: { 5 imports = [ ./common/x11.nix ]; 6 environment.systemPackages = [ pkgs.mumble ]; 7 }; 8in 9{ 10 name = "mumble"; 11 meta = with pkgs.stdenv.lib.maintainers; { 12 maintainers = [ thoughtpolice eelco chaoflow ]; 13 }; 14 15 nodes = { 16 server = { config, pkgs, ... }: { 17 services.murmur.enable = true; 18 services.murmur.registerName = "NixOS tests"; 19 networking.firewall.allowedTCPPorts = [ config.services.murmur.port ]; 20 }; 21 22 client1 = client; 23 client2 = client; 24 }; 25 26 testScript = '' 27 startAll; 28 29 $server->waitForUnit("murmur.service"); 30 $client1->waitForX; 31 $client2->waitForX; 32 33 $client1->execute("mumble mumble://client1\@server/test &"); 34 $client2->execute("mumble mumble://client2\@server/test &"); 35 36 # cancel client audio configuration 37 $client1->waitForWindow(qr/Audio Tuning Wizard/); 38 $client2->waitForWindow(qr/Audio Tuning Wizard/); 39 $server->sleep(5); # wait because mumble is slow to register event handlers 40 $client1->sendKeys("esc"); 41 $client2->sendKeys("esc"); 42 43 # cancel client cert configuration 44 $client1->waitForWindow(qr/Certificate Management/); 45 $client2->waitForWindow(qr/Certificate Management/); 46 $server->sleep(5); # wait because mumble is slow to register event handlers 47 $client1->sendKeys("esc"); 48 $client2->sendKeys("esc"); 49 50 # accept server certificate 51 $client1->waitForWindow(qr/^Mumble$/); 52 $client2->waitForWindow(qr/^Mumble$/); 53 $server->sleep(5); # wait because mumble is slow to register event handlers 54 $client1->sendChars("y"); 55 $client2->sendChars("y"); 56 $server->sleep(5); # wait because mumble is slow to register event handlers 57 58 # sometimes the wrong of the 2 windows is focused, we switch focus and try pressing "y" again 59 $client1->sendKeys("alt-tab"); 60 $client2->sendKeys("alt-tab"); 61 $server->sleep(5); # wait because mumble is slow to register event handlers 62 $client1->sendChars("y"); 63 $client2->sendChars("y"); 64 65 # Find clients in logs 66 $server->waitUntilSucceeds("grep -q 'client1' /var/log/murmur/murmurd.log"); 67 $server->waitUntilSucceeds("grep -q 'client2' /var/log/murmur/murmurd.log"); 68 69 $server->sleep(5); # wait to get screenshot 70 $client1->screenshot("screen1"); 71 $client2->screenshot("screen2"); 72 ''; 73})