test all postgresql versions, test server restart (#1735)

This commit is contained in:
Tomasz Czyż 2017-02-11 04:57:57 +00:00
parent 5e8499f447
commit ab22a08039
2 changed files with 46 additions and 26 deletions

View file

@ -286,7 +286,7 @@ in rec {
tests.openssh = callTest tests/openssh.nix {};
#tests.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; });
tests.peerflix = callTest tests/peerflix.nix {};
tests.postgresql = callTest tests/postgresql.nix {};
tests.postgresql = callSubTests tests/postgresql.nix {};
tests.printing = callTest tests/printing.nix {};
tests.proxy = callTest tests/proxy.nix {};
tests.pumpio = callTest tests/pump.io.nix {};

View file

@ -1,26 +1,46 @@
import ./make-test.nix ({ pkgs, ...} : {
name = "postgresql";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ zagy ];
};
nodes = {
master =
{ pkgs, config, ... }:
{
services.postgresql.enable = true;
services.postgresql.initialScript = pkgs.writeText "postgresql-init.sql"
''
CREATE ROLE postgres WITH superuser login createdb;
'';
};
};
testScript = ''
startAll;
$master->waitForUnit("postgresql");
$master->sleep(10); # Hopefully this is long enough!!
$master->succeed("echo 'select 1' | sudo -u postgres psql");
{ system ? builtins.currentSystem }:
with import ../lib/testing.nix { inherit system; };
with pkgs.lib;
let
postgresql-versions = pkgs.callPackages ../../pkgs/servers/sql/postgresql { };
test-sql = pkgs.writeText "postgresql-test" ''
CREATE EXTENSION pgcrypto; -- just to check if lib loading works
CREATE TABLE sth (
id int
);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
'';
})
make-postgresql-test = postgresql-name: postgresql-package: {
name = postgresql-name;
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ zagy ];
};
machine = {pkgs, config, ...}:
{
services.postgresql.package=postgresql-package;
services.postgresql.enable = true;
};
testScript = ''
$machine->start;
$machine->waitForUnit("postgresql");
# postgresql should be available just after unit start
$machine->succeed("cat ${test-sql} | psql postgres");
$machine->shutdown; # make sure that postgresql survive restart (bug #1735)
sleep(2);
$machine->start;
$machine->waitForUnit("postgresql");
$machine->fail('test $(psql postgres -tAc "SELECT * FROM sth;"|wc -l) -eq 3');
$machine->succeed('test $(psql postgres -tAc "SELECT * FROM sth;"|wc -l) -eq 5');
$machine->fail('test $(psql postgres -tAc "SELECT * FROM sth;"|wc -l) -eq 4');
$machine->shutdown;
'';
};
in
mapAttrs' (p-name: p-package: {name=p-name; value=make-postgresql-test p-name p-package;}) postgresql-versions