nixpkgs/nixos/tests/velocity.nix
Winter 2680e0beca nixos/tests: don't explicitly set meta.platforms
This prevents the tests from running on Darwin for no real reason.
2025-05-19 03:03:25 -04:00

62 lines
2.2 KiB
Nix

{ lib, pkgs, ... }:
{
name = "velocity";
meta.maintainers = [ lib.maintainers.Tert0 ];
nodes.server =
{ ... }:
{
imports =
let
mkVelocityService = name: pkg: {
systemd.sockets.${name} = {
socketConfig = {
ListenFIFO = "/run/${name}.stdin";
Service = "${name}";
};
};
systemd.services.${name} = {
serviceConfig = {
ExecStart = "${pkg}/bin/velocity";
DynamicUser = true;
StateDirectory = "${name}";
WorkingDirectory = "/var/lib/${name}";
Sockets = "${name}.socket";
StandardInput = "socket";
StandardOutput = "journal";
StandardError = "journal";
};
};
};
in
[
(mkVelocityService "velocity-without-native" (
pkgs.velocity.override { withVelocityNative = false; }
))
(mkVelocityService "velocity-with-native" (pkgs.velocity.override { withVelocityNative = true; }))
];
environment.systemPackages = [ pkgs.mcstatus ];
};
testScript = ''
def test_velocity(name: str, native: bool):
server.start_job(name)
server.wait_for_unit(name);
server.wait_for_open_port(25565)
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q 'Booting up Velocity nixpkgs-${pkgs.velocity.version}...'")
connections_startup_query = "Connections will use epoll channels, libdeflate (.+) compression, OpenSSL 3.x.x (.+) ciphers" if native else "Connections will use epoll channels, Java compression, Java ciphers"
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q -E '{connections_startup_query}'")
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q 'Done ([0-9]*.[0-9]*s)!'");
_, status_result = server.execute("mcstatus localhost:25565 status")
assert "A Velocity Server" in status_result
server.execute(f"echo stop > /run/{name}.stdin")
server.wait_for_closed_port(25565);
test_velocity("velocity-without-native", False)
test_velocity("velocity-with-native", True)
'';
}