 9f1c76f514
			
		
	
	
		9f1c76f514
		
			
		
	
	
	
	
		
			
			The old Quake3 NixOS test was removed in 50ea99cbc18d3f480a773de5250b4ef9c7f6d514 which served as a nice demo to showcase what NixOS tests are capable of. This commit adds the same functionality to run real openarena clients.
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test-python.nix ({ pkgs, ...} :
 | |
| 
 | |
| let
 | |
|   client =
 | |
|     { pkgs, ... }:
 | |
| 
 | |
|     { imports = [ ./common/x11.nix ];
 | |
|       hardware.opengl.driSupport = true;
 | |
|       environment.systemPackages = [ pkgs.openarena ];
 | |
|     };
 | |
| 
 | |
| in {
 | |
|   name = "openarena";
 | |
|   meta = with pkgs.stdenv.lib.maintainers; {
 | |
|     maintainers = [ fpletz ];
 | |
|   };
 | |
| 
 | |
|   nodes =
 | |
|     { server =
 | |
|         { services.openarena = {
 | |
|             enable = true;
 | |
|             extraFlags = [ "+set g_gametype 0" "+map oa_dm7" "+addbot Angelyss" "+addbot Arachna" ];
 | |
|             openPorts = true;
 | |
|           };
 | |
|         };
 | |
| 
 | |
|       client1 = client;
 | |
|       client2 = client;
 | |
|     };
 | |
| 
 | |
|   testScript =
 | |
|     ''
 | |
|       start_all()
 | |
| 
 | |
|       server.wait_for_unit("openarena")
 | |
|       server.wait_until_succeeds("ss --numeric --udp --listening | grep -q 27960")
 | |
| 
 | |
|       client1.wait_for_x()
 | |
|       client2.wait_for_x()
 | |
| 
 | |
|       client1.execute("openarena +set r_fullscreen 0 +set name Foo +connect server &")
 | |
|       client2.execute("openarena +set r_fullscreen 0 +set name Bar +connect server &")
 | |
| 
 | |
|       server.wait_until_succeeds(
 | |
|           "journalctl -u openarena -e | grep -q 'Foo.*entered the game'"
 | |
|       )
 | |
|       server.wait_until_succeeds(
 | |
|           "journalctl -u openarena -e | grep -q 'Bar.*entered the game'"
 | |
|       )
 | |
| 
 | |
|       server.sleep(10)  # wait for a while to get a nice screenshot
 | |
| 
 | |
|       client1.screenshot("screen_client1_1")
 | |
|       client2.screenshot("screen_client2_1")
 | |
| 
 | |
|       client1.block()
 | |
| 
 | |
|       server.sleep(10)
 | |
| 
 | |
|       client1.screenshot("screen_client1_2")
 | |
|       client2.screenshot("screen_client2_2")
 | |
| 
 | |
|       client1.unblock()
 | |
| 
 | |
|       server.sleep(10)
 | |
| 
 | |
|       client1.screenshot("screen_client1_3")
 | |
|       client2.screenshot("screen_client2_3")
 | |
|     '';
 | |
| 
 | |
| })
 |