42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test-python.nix ({ pkgs, ...} : {
 | |
|   name = "openarena";
 | |
|   meta = with pkgs.stdenv.lib.maintainers; {
 | |
|     maintainers = [ tomfitzhenry ];
 | |
|   };
 | |
| 
 | |
|   machine =
 | |
|     { pkgs, ... }:
 | |
| 
 | |
|     { imports = [];
 | |
|       environment.systemPackages = with pkgs; [
 | |
|         socat
 | |
|       ];
 | |
|       services.openarena = {
 | |
|         enable = true;
 | |
|         extraFlags = [
 | |
|           "+set dedicated 2"
 | |
|           "+set sv_hostname 'My NixOS server'"
 | |
|           "+map oa_dm1"
 | |
|         ];
 | |
|       };
 | |
|     };
 | |
| 
 | |
|   testScript =
 | |
|     ''
 | |
|       machine.wait_for_unit("openarena.service")
 | |
|       machine.wait_until_succeeds("ss --numeric --udp --listening | grep -q 27960")
 | |
| 
 | |
|       # The log line containing 'resolve address' is last and only message that occurs after
 | |
|       # the server starts accepting clients.
 | |
|       machine.wait_until_succeeds(
 | |
|           "journalctl -u openarena.service | grep 'resolve address: dpmaster.deathmask.net'"
 | |
|       )
 | |
| 
 | |
|       # Check it's possible to join the server.
 | |
|       # Can't use substring match instead of grep because the output is not utf-8
 | |
|       machine.succeed(
 | |
|           "echo -n -e '\\xff\\xff\\xff\\xffgetchallenge' | socat - UDP4-DATAGRAM:127.0.0.1:27960 | grep -q challengeResponse"
 | |
|       )
 | |
|     '';
 | |
| })
 | 
