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 { };
|
||||
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 { };
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"'
|
||||
)
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -265,7 +265,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
passthru = {
|
||||
inherit nix perlDeps;
|
||||
tests.basic = nixosTests.hydra.hydra;
|
||||
tests = { inherit (nixosTests) hydra; };
|
||||
updateScript = unstableGitUpdater { };
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue