This should NOT be backported to 20.09! When 21.03 is released, the DB changes are about a year old and operators had two release cycles for the upgrade. At this point it should be fair to remove the compat layer to reduce the complexity of the module itself.wip/yesman
parent
1bb8808e1a
commit
1308817e05
@ -1,92 +0,0 @@ |
||||
{ system ? builtins.currentSystem |
||||
, pkgs ? import ../../.. { inherit system; } |
||||
, ... |
||||
}: |
||||
|
||||
let inherit (import ./common.nix { inherit system; }) baseConfig; in |
||||
|
||||
with import ../../lib/testing-python.nix { inherit system pkgs; }; |
||||
with pkgs.lib; |
||||
|
||||
{ mig = makeTest { |
||||
name = "hydra-db-migration"; |
||||
meta = with pkgs.stdenv.lib.maintainers; { |
||||
maintainers = [ ma27 ]; |
||||
}; |
||||
|
||||
nodes = { |
||||
original = { pkgs, lib, ... }: { |
||||
imports = [ baseConfig ]; |
||||
|
||||
# An older version of Hydra before the db change |
||||
# for testing purposes. |
||||
services.hydra.package = pkgs.hydra-migration.overrideAttrs (old: { |
||||
inherit (old) pname; |
||||
version = "2020-02-06"; |
||||
src = pkgs.fetchFromGitHub { |
||||
owner = "NixOS"; |
||||
repo = "hydra"; |
||||
rev = "2b4f14963b16b21ebfcd6b6bfa7832842e9b2afc"; |
||||
sha256 = "16q0cffcsfx5pqd91n9k19850c1nbh4vvbd9h8yi64ihn7v8bick"; |
||||
}; |
||||
}); |
||||
}; |
||||
|
||||
migration_phase1 = { pkgs, lib, ... }: { |
||||
imports = [ baseConfig ]; |
||||
services.hydra.package = pkgs.hydra-migration; |
||||
}; |
||||
|
||||
finished = { pkgs, lib, ... }: { |
||||
imports = [ baseConfig ]; |
||||
services.hydra.package = pkgs.hydra-unstable; |
||||
}; |
||||
}; |
||||
|
||||
testScript = { nodes, ... }: let |
||||
next = nodes.migration_phase1.config.system.build.toplevel; |
||||
finished = nodes.finished.config.system.build.toplevel; |
||||
in '' |
||||
original.start() |
||||
original.wait_for_unit("multi-user.target") |
||||
original.wait_for_unit("postgresql.service") |
||||
original.wait_for_unit("hydra-init.service") |
||||
original.require_unit_state("hydra-queue-runner.service") |
||||
original.require_unit_state("hydra-evaluator.service") |
||||
original.require_unit_state("hydra-notify.service") |
||||
original.succeed("hydra-create-user admin --role admin --password admin") |
||||
original.wait_for_open_port(3000) |
||||
original.succeed("create-trivial-project.sh") |
||||
original.wait_until_succeeds( |
||||
'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq' |
||||
) |
||||
|
||||
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ builds\" -A'") |
||||
assert "jobset_id" not in out |
||||
|
||||
original.succeed( |
||||
"${next}/bin/switch-to-configuration test >&2" |
||||
) |
||||
original.wait_for_unit("hydra-init.service") |
||||
|
||||
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ builds\" -A'") |
||||
assert "jobset_id|integer|||" in out |
||||
|
||||
original.succeed("hydra-backfill-ids") |
||||
|
||||
original.succeed( |
||||
"${finished}/bin/switch-to-configuration test >&2" |
||||
) |
||||
original.wait_for_unit("hydra-init.service") |
||||
|
||||
out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ builds\" -A'") |
||||
assert "jobset_id|integer||not null|" in out |
||||
|
||||
original.wait_until_succeeds( |
||||
'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq' |
||||
) |
||||
|
||||
original.shutdown() |
||||
''; |
||||
}; |
||||
} |
Loading…
Reference in new issue