at 18.09-beta 2.3 kB view raw
1{ system ? builtins.currentSystem }: 2with import ../lib/testing.nix { inherit system; }; 3with pkgs.lib; 4let 5 postgresql-versions = pkgs.callPackages ../../pkgs/servers/sql/postgresql { }; 6 test-sql = pkgs.writeText "postgresql-test" '' 7 CREATE EXTENSION pgcrypto; -- just to check if lib loading works 8 CREATE TABLE sth ( 9 id int 10 ); 11 INSERT INTO sth (id) VALUES (1); 12 INSERT INTO sth (id) VALUES (1); 13 INSERT INTO sth (id) VALUES (1); 14 INSERT INTO sth (id) VALUES (1); 15 INSERT INTO sth (id) VALUES (1); 16 CREATE TABLE xmltest ( doc xml ); 17 INSERT INTO xmltest (doc) VALUES ('<test>ok</test>'); -- check if libxml2 enabled 18 ''; 19 make-postgresql-test = postgresql-name: postgresql-package: makeTest { 20 name = postgresql-name; 21 meta = with pkgs.stdenv.lib.maintainers; { 22 maintainers = [ zagy ]; 23 }; 24 25 machine = {...}: 26 { 27 services.postgresql.package=postgresql-package; 28 services.postgresql.enable = true; 29 30 services.postgresqlBackup.enable = true; 31 services.postgresqlBackup.databases = [ "postgres" ]; 32 }; 33 34 testScript = '' 35 sub check_count { 36 my ($select, $nlines) = @_; 37 return 'test $(sudo -u postgres psql postgres -tAc "' . $select . '"|wc -l) -eq ' . $nlines; 38 } 39 40 $machine->start; 41 $machine->waitForUnit("postgresql"); 42 # postgresql should be available just after unit start 43 $machine->succeed("cat ${test-sql} | sudo -u postgres psql"); 44 $machine->shutdown; # make sure that postgresql survive restart (bug #1735) 45 sleep(2); 46 $machine->start; 47 $machine->waitForUnit("postgresql"); 48 $machine->fail(check_count("SELECT * FROM sth;", 3)); 49 $machine->succeed(check_count("SELECT * FROM sth;", 5)); 50 $machine->fail(check_count("SELECT * FROM sth;", 4)); 51 $machine->succeed(check_count("SELECT xpath(\'/test/text()\', doc) FROM xmltest;", 1)); 52 53 # Check backup service 54 $machine->succeed("systemctl start postgresqlBackup-postgres.service"); 55 $machine->succeed("zcat /var/backup/postgresql/postgres.sql.gz | grep '<test>ok</test>'"); 56 $machine->shutdown; 57 ''; 58 59 }; 60in 61 mapAttrs' (p-name: p-package: {name=p-name; value=make-postgresql-test p-name p-package;}) postgresql-versions