mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00
nixos/hydra: switch to runTest, refactor
This commit is contained in:
parent
ab2a3d7d68
commit
b16f158e1b
4 changed files with 41 additions and 63 deletions
|
@ -611,7 +611,7 @@ in
|
||||||
hostname = handleTest ./hostname.nix { };
|
hostname = handleTest ./hostname.nix { };
|
||||||
hound = handleTest ./hound.nix { };
|
hound = handleTest ./hound.nix { };
|
||||||
hub = handleTest ./git/hub.nix { };
|
hub = handleTest ./git/hub.nix { };
|
||||||
hydra = handleTest ./hydra { };
|
hydra = runTest ./hydra;
|
||||||
i3wm = handleTest ./i3wm.nix { };
|
i3wm = handleTest ./i3wm.nix { };
|
||||||
icingaweb2 = runTest ./icingaweb2.nix;
|
icingaweb2 = runTest ./icingaweb2.nix;
|
||||||
ifm = handleTest ./ifm.nix { };
|
ifm = handleTest ./ifm.nix { };
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
{ system, ... }:
|
|
||||||
{
|
{
|
||||||
baseConfig =
|
baseConfig =
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
@ -6,7 +5,7 @@
|
||||||
trivialJob = pkgs.writeTextDir "trivial.nix" ''
|
trivialJob = pkgs.writeTextDir "trivial.nix" ''
|
||||||
{ trivial = builtins.derivation {
|
{ trivial = builtins.derivation {
|
||||||
name = "trivial";
|
name = "trivial";
|
||||||
system = "${system}";
|
system = "${pkgs.stdenv.hostPlatform.system}";
|
||||||
builder = "/bin/sh";
|
builder = "/bin/sh";
|
||||||
allowSubstitutes = false;
|
allowSubstitutes = false;
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
|
|
|
@ -1,65 +1,44 @@
|
||||||
{
|
{ pkgs, ... }:
|
||||||
system ? builtins.currentSystem,
|
|
||||||
config ? { },
|
|
||||||
pkgs ? import ../../.. { inherit system config; },
|
|
||||||
}:
|
|
||||||
|
|
||||||
with import ../../lib/testing-python.nix { inherit system pkgs; };
|
|
||||||
with pkgs.lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (import ./common.nix) baseConfig;
|
||||||
inherit (import ./common.nix { inherit system; }) baseConfig;
|
in
|
||||||
|
{
|
||||||
hydraPkgs = {
|
name = "hydra";
|
||||||
inherit (pkgs) hydra;
|
meta = with pkgs.lib.maintainers; {
|
||||||
|
maintainers = [ lewo ];
|
||||||
};
|
};
|
||||||
|
|
||||||
makeHydraTest =
|
nodes.machine =
|
||||||
with pkgs.lib;
|
{ pkgs, lib, ... }:
|
||||||
name: package:
|
{
|
||||||
makeTest {
|
imports = [ baseConfig ];
|
||||||
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"'
|
|
||||||
)
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
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"'
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
|
@ -265,7 +265,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit nix perlDeps;
|
inherit nix perlDeps;
|
||||||
tests.basic = nixosTests.hydra.hydra;
|
tests = { inherit (nixosTests) hydra; };
|
||||||
updateScript = unstableGitUpdater { };
|
updateScript = unstableGitUpdater { };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue