From 5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 10 Oct 2013 13:28:20 +0200 Subject: Move all of NixOS to nixos/ in preparation of the repository merge --- nixos/tests/quake3.nix | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 nixos/tests/quake3.nix (limited to 'nixos/tests/quake3.nix') diff --git a/nixos/tests/quake3.nix b/nixos/tests/quake3.nix new file mode 100644 index 00000000000..92501107780 --- /dev/null +++ b/nixos/tests/quake3.nix @@ -0,0 +1,79 @@ +{ pkgs, ... }: + +let + + # Build Quake with coverage instrumentation. + overrides = pkgs: + rec { + quake3game = pkgs.quake3game.override (args: { + stdenv = pkgs.stdenvAdapters.addCoverageInstrumentation args.stdenv; + }); + }; + +in + +rec { + + client = + { config, pkgs, ... }: + + { imports = [ ./common/x11.nix ]; + services.xserver.driSupport = true; + services.xserver.defaultDepth = pkgs.lib.mkOverride 0 16; + environment.systemPackages = [ pkgs.quake3demo ]; + nixpkgs.config.packageOverrides = overrides; + }; + + nodes = + { server = + { config, pkgs, ... }: + + { jobs."quake3-server" = + { startOn = "startup"; + exec = + "${pkgs.quake3demo}/bin/quake3-server '+set g_gametype 0' " + + "'+map q3dm7' '+addbot grunt' '+addbot daemia' 2> /tmp/log"; + }; + nixpkgs.config.packageOverrides = overrides; + }; + + client1 = client; + client2 = client; + }; + + testScript = + '' + startAll; + + $server->waitForUnit("quake3-server"); + $client1->waitForX; + $client2->waitForX; + + $client1->execute("quake3 '+set r_fullscreen 0' '+set name Foo' '+connect server' &"); + $client2->execute("quake3 '+set r_fullscreen 0' '+set name Bar' '+connect server' &"); + + $server->waitUntilSucceeds("grep -q 'Foo.*entered the game' /tmp/log"); + $server->waitUntilSucceeds("grep -q 'Bar.*entered the game' /tmp/log"); + + $server->sleep(10); # wait for a while to get a nice screenshot + + $client1->block(); + + $server->sleep(20); + + $client1->screenshot("screen1"); + $client2->screenshot("screen2"); + + $client1->unblock(); + + $server->sleep(10); + + $client1->screenshot("screen3"); + $client2->screenshot("screen4"); + + $client1->shutdown(); + $client2->shutdown(); + $server->stopJob("quake3-server"); + ''; + +} -- cgit 1.4.1