37 lines
1.1 KiB
Nix
37 lines
1.1 KiB
Nix
import ./make-test.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->waitForUnit("openarena.service");
|
|
$machine->waitUntilSucceeds("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->waitUntilSucceeds("journalctl -u openarena.service | grep 'resolve address: dpmaster.deathmask.net'");
|
|
|
|
# Check it's possible to join the server.
|
|
$machine->succeed("echo -n -e '\\xff\\xff\\xff\\xffgetchallenge' | socat - UDP4-DATAGRAM:127.0.0.1:27960 | grep -q challengeResponse");
|
|
'';
|
|
})
|