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 $client1->sendKeys("esc");
40 $client2->sendKeys("esc");
41
42 # cancel client cert configuration
43 $client1->waitForWindow(qr/Certificate Management/);
44 $client2->waitForWindow(qr/Certificate Management/);
45 $client1->sendKeys("esc");
46 $client2->sendKeys("esc");
47
48 # accept server certificate
49 $client1->waitForWindow(qr/^Mumble$/);
50 $client2->waitForWindow(qr/^Mumble$/);
51 $client1->sendChars("y");
52 $client2->sendChars("y");
53
54 # Find clients in logs
55 $server->waitUntilSucceeds("grep -q 'client1' /var/log/murmur/murmurd.log");
56 $server->waitUntilSucceeds("grep -q 'client2' /var/log/murmur/murmurd.log");
57
58 $server->sleep(5); # wait to get screenshot
59 $client1->screenshot("screen1");
60 $client2->screenshot("screen2");
61 '';
62})