add minecraft test
This commit is contained in:
parent
14c4aed363
commit
80df89e9a1
@ -225,7 +225,7 @@
|
||||
packages.${system} =
|
||||
let
|
||||
testSuite = import ./tests/tests.nix {
|
||||
inherit pkgs lib;
|
||||
inherit pkgs lib inputs;
|
||||
config = self.nixosConfigurations.muffin.config;
|
||||
};
|
||||
in
|
||||
|
||||
118
tests/minecraft.nix
Normal file
118
tests/minecraft.nix
Normal file
@ -0,0 +1,118 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
# Create pkgs with nix-minecraft overlay and unfree packages allowed
|
||||
testPkgs = import inputs.nixpkgs {
|
||||
system = pkgs.system;
|
||||
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "minecraft-server" ];
|
||||
overlays = [ inputs.nix-minecraft.overlay ];
|
||||
};
|
||||
|
||||
# Create a wrapper module that imports the actual minecraft service
|
||||
minecraftService =
|
||||
{ config, ... }:
|
||||
let
|
||||
# Import the minecraft service configuration
|
||||
serviceConfig = import ../services/minecraft.nix {
|
||||
inherit lib config;
|
||||
pkgs = testPkgs;
|
||||
service_configs = {
|
||||
minecraft = {
|
||||
server_name = "main";
|
||||
parent_dir = "/var/lib/minecraft";
|
||||
};
|
||||
https = {
|
||||
domain = "test.local";
|
||||
};
|
||||
};
|
||||
username = "testuser";
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [ serviceConfig ];
|
||||
# Override nixpkgs config to prevent conflicts in test environment
|
||||
nixpkgs.config = lib.mkForce {
|
||||
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "minecraft-server" ];
|
||||
};
|
||||
};
|
||||
in
|
||||
testPkgs.testers.runNixOSTest {
|
||||
name = "minecraft server startup test";
|
||||
|
||||
nodes.machine =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.nix-minecraft.nixosModules.minecraft-servers
|
||||
minecraftService
|
||||
];
|
||||
|
||||
# Enable caddy service (required by minecraft service)
|
||||
services.caddy.enable = true;
|
||||
|
||||
# Disable the ZFS mount dependency service in test environment
|
||||
systemd.services."minecraft-server-main_mounts".enable = lib.mkForce false;
|
||||
|
||||
# Remove service dependencies that require ZFS
|
||||
systemd.services.minecraft-server-main = {
|
||||
wants = lib.mkForce [ ];
|
||||
after = lib.mkForce [ ];
|
||||
requires = lib.mkForce [ ];
|
||||
};
|
||||
|
||||
# Test-specific overrides only - reduce memory for testing
|
||||
services.minecraft-servers.servers.main.jvmOpts = lib.mkForce "-Xmx1G -Xms1G";
|
||||
|
||||
# Create test user
|
||||
users.users.testuser = {
|
||||
isNormalUser = true;
|
||||
uid = 1000;
|
||||
extraGroups = [ "minecraft" ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
# Wait for minecraft service to be available
|
||||
machine.wait_for_unit("minecraft-server-main.service")
|
||||
|
||||
# Check that the service is active and not failed
|
||||
machine.succeed("systemctl is-active minecraft-server-main.service")
|
||||
|
||||
# Wait for the server to fully start up - minecraft with mods can take longer
|
||||
machine.sleep(60)
|
||||
|
||||
# Verify the service hasn't crashed after startup
|
||||
machine.succeed("systemctl is-active minecraft-server-main.service")
|
||||
|
||||
# Check that the minecraft process is running
|
||||
machine.succeed("pgrep -f minecraft")
|
||||
|
||||
# Verify the server port is listening
|
||||
machine.wait_for_open_port(25565)
|
||||
|
||||
# Check that minecraft data directory was created
|
||||
machine.succeed("test -d /var/lib/minecraft/main")
|
||||
|
||||
# Verify server.properties was created
|
||||
machine.succeed("test -f /var/lib/minecraft/main/server.properties")
|
||||
|
||||
# Check that mods directory exists and contains the expected mods
|
||||
machine.succeed("test -d /var/lib/minecraft/main/mods")
|
||||
machine.succeed("ls /var/lib/minecraft/main/mods | grep -q fabric-api")
|
||||
machine.succeed("ls /var/lib/minecraft/main/mods | grep -q ferritecore")
|
||||
machine.succeed("ls /var/lib/minecraft/main/mods | grep -q lithium")
|
||||
|
||||
# Check that there are no critical errors in the logs
|
||||
machine.succeed("! journalctl -u minecraft-server-main.service --no-pager | grep -i 'error\\|exception\\|failed'")
|
||||
|
||||
print("Minecraft server with specific mods started successfully!")
|
||||
'';
|
||||
}
|
||||
@ -3,11 +3,12 @@
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
}@args:
|
||||
let
|
||||
handleTest = file: import file { inherit config lib pkgs; };
|
||||
handleTest = file: import file (args);
|
||||
in
|
||||
{
|
||||
zfsTest = handleTest ./zfs.nix;
|
||||
testTest = handleTest ./testTest.nix;
|
||||
minecraftTest = handleTest ./minecraft.nix;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user