From b16f158e1b15509ef7ad19032f1b80646f514151 Mon Sep 17 00:00:00 2001 From: zowoq <59103226+zowoq@users.noreply.github.com> Date: Sat, 22 Feb 2025 09:18:51 +1000 Subject: [PATCH] nixos/hydra: switch to runTest, refactor --- nixos/tests/all-tests.nix | 2 +- nixos/tests/hydra/common.nix | 3 +- nixos/tests/hydra/default.nix | 97 ++++++++++++------------------- pkgs/by-name/hy/hydra/package.nix | 2 +- 4 files changed, 41 insertions(+), 63 deletions(-) diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 21c0614bf486..cc8eecddf778 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -611,7 +611,7 @@ in hostname = handleTest ./hostname.nix { }; hound = handleTest ./hound.nix { }; hub = handleTest ./git/hub.nix { }; - hydra = handleTest ./hydra { }; + hydra = runTest ./hydra; i3wm = handleTest ./i3wm.nix { }; icingaweb2 = runTest ./icingaweb2.nix; ifm = handleTest ./ifm.nix { }; diff --git a/nixos/tests/hydra/common.nix b/nixos/tests/hydra/common.nix index 0e58e49b1bcd..c4d618ca3bca 100644 --- a/nixos/tests/hydra/common.nix +++ b/nixos/tests/hydra/common.nix @@ -1,4 +1,3 @@ -{ system, ... }: { baseConfig = { pkgs, ... }: @@ -6,7 +5,7 @@ trivialJob = pkgs.writeTextDir "trivial.nix" '' { trivial = builtins.derivation { name = "trivial"; - system = "${system}"; + system = "${pkgs.stdenv.hostPlatform.system}"; builder = "/bin/sh"; allowSubstitutes = false; preferLocalBuild = true; diff --git a/nixos/tests/hydra/default.nix b/nixos/tests/hydra/default.nix index 4016f8819539..6fbce3b4f826 100644 --- a/nixos/tests/hydra/default.nix +++ b/nixos/tests/hydra/default.nix @@ -1,65 +1,44 @@ -{ - system ? builtins.currentSystem, - config ? { }, - pkgs ? import ../../.. { inherit system config; }, -}: - -with import ../../lib/testing-python.nix { inherit system pkgs; }; -with pkgs.lib; - +{ pkgs, ... }: let - - inherit (import ./common.nix { inherit system; }) baseConfig; - - hydraPkgs = { - inherit (pkgs) hydra; + inherit (import ./common.nix) baseConfig; +in +{ + name = "hydra"; + meta = with pkgs.lib.maintainers; { + maintainers = [ lewo ]; }; - makeHydraTest = - with pkgs.lib; - name: package: - makeTest { - name = "hydra-${name}"; - meta = with pkgs.lib.maintainers; { - maintainers = [ lewo ]; - }; - - nodes.machine = - { pkgs, lib, ... }: - { - imports = [ baseConfig ]; - services.hydra = { inherit package; }; - }; - - testScript = '' - # let the system boot up - machine.wait_for_unit("multi-user.target") - # test whether the database is running - machine.wait_for_unit("postgresql.service") - # test whether the actual hydra daemons are running - machine.wait_for_unit("hydra-init.service") - machine.require_unit_state("hydra-queue-runner.service") - machine.require_unit_state("hydra-evaluator.service") - machine.require_unit_state("hydra-notify.service") - - machine.succeed("hydra-create-user admin --role admin --password admin") - - # create a project with a trivial job - machine.wait_for_open_port(3000) - - # make sure the build as been successfully built - machine.succeed("create-trivial-project.sh") - - machine.wait_until_succeeds( - 'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq' - ) - - machine.wait_until_succeeds( - 'journalctl -eu hydra-notify.service -o cat | grep -q "sending mail notification to hydra@localhost"' - ) - ''; + nodes.machine = + { pkgs, lib, ... }: + { + imports = [ baseConfig ]; }; -in + testScript = '' + # let the system boot up + machine.wait_for_unit("multi-user.target") + # test whether the database is running + machine.wait_for_unit("postgresql.service") + # test whether the actual hydra daemons are running + machine.wait_for_unit("hydra-init.service") + machine.require_unit_state("hydra-queue-runner.service") + machine.require_unit_state("hydra-evaluator.service") + machine.require_unit_state("hydra-notify.service") -mapAttrs makeHydraTest hydraPkgs + machine.succeed("hydra-create-user admin --role admin --password admin") + + # create a project with a trivial job + machine.wait_for_open_port(3000) + + # make sure the build as been successfully built + machine.succeed("create-trivial-project.sh") + + machine.wait_until_succeeds( + 'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq' + ) + + machine.wait_until_succeeds( + 'journalctl -eu hydra-notify.service -o cat | grep -q "sending mail notification to hydra@localhost"' + ) + ''; +} diff --git a/pkgs/by-name/hy/hydra/package.nix b/pkgs/by-name/hy/hydra/package.nix index 08692a0184d3..7e2c45fd4c40 100644 --- a/pkgs/by-name/hy/hydra/package.nix +++ b/pkgs/by-name/hy/hydra/package.nix @@ -265,7 +265,7 @@ stdenv.mkDerivation (finalAttrs: { passthru = { inherit nix perlDeps; - tests.basic = nixosTests.hydra.hydra; + tests = { inherit (nixosTests) hydra; }; updateScript = unstableGitUpdater { }; };