at 23.11-pre 2.3 kB view raw
1# mostly copied from ./timescaledb.nix which was copied from ./postgresql.nix 2# as it seemed unapproriate to test additional extensions for postgresql there. 3 4{ system ? builtins.currentSystem 5, config ? { } 6, pkgs ? import ../.. { inherit system config; } 7}: 8 9with import ../lib/testing-python.nix { inherit system pkgs; }; 10with pkgs.lib; 11 12let 13 postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs; 14 test-sql = pkgs.writeText "postgresql-test" '' 15 CREATE USER promscale SUPERUSER PASSWORD 'promscale'; 16 CREATE DATABASE promscale OWNER promscale; 17 ''; 18 19 make-postgresql-test = postgresql-name: postgresql-package: makeTest { 20 name = postgresql-name; 21 meta = with pkgs.lib.maintainers; { 22 maintainers = [ anpin ]; 23 }; 24 25 nodes.machine = { config, pkgs, ... }: 26 { 27 services.postgresql = { 28 enable = true; 29 package = postgresql-package; 30 extraPlugins = with postgresql-package.pkgs; [ 31 timescaledb 32 promscale_extension 33 ]; 34 settings = { shared_preload_libraries = "timescaledb, promscale"; }; 35 }; 36 environment.systemPackages = with pkgs; [ promscale ]; 37 }; 38 39 testScript = '' 40 machine.start() 41 machine.wait_for_unit("postgresql") 42 with subtest("Postgresql with extensions timescaledb and promscale is available just after unit start"): 43 print(machine.succeed("sudo -u postgres psql -f ${test-sql}")) 44 machine.succeed("sudo -u postgres psql promscale -c 'SHOW shared_preload_libraries;' | grep promscale") 45 machine.succeed( 46 "promscale --db.name promscale --db.password promscale --db.user promscale --db.ssl-mode allow --startup.install-extensions --startup.only" 47 ) 48 machine.succeed("sudo -u postgres psql promscale -c 'SELECT ps_trace.get_trace_retention_period();' | grep '(1 row)'") 49 machine.shutdown() 50 ''; 51 }; 52 #version 15 is not supported yet 53 applicablePostgresqlVersions = filterAttrs (_: value: versionAtLeast value.version "12" && !(versionAtLeast value.version "15")) postgresql-versions; 54in 55mapAttrs' 56 (name: package: { 57 inherit name; 58 value = make-postgresql-test name package; 59 }) 60 applicablePostgresqlVersions