# mostly copied from ./timescaledb.nix which was copied from ./postgresql.nix # as it seemed unapproriate to test additional extensions for postgresql there. { system ? builtins.currentSystem , config ? { } , pkgs ? import ../.. { inherit system config; } }: with import ../lib/testing-python.nix { inherit system pkgs; }; with pkgs.lib; let postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs; test-sql = pkgs.writeText "postgresql-test" '' CREATE USER promscale SUPERUSER PASSWORD 'promscale'; CREATE DATABASE promscale OWNER promscale; ''; make-postgresql-test = postgresql-name: postgresql-package: makeTest { name = postgresql-name; meta = with pkgs.lib.maintainers; { maintainers = [ anpin ]; }; nodes.machine = { config, pkgs, ... }: { services.postgresql = { enable = true; package = postgresql-package; extraPlugins = ps: with ps; [ timescaledb promscale_extension ]; settings = { shared_preload_libraries = "timescaledb, promscale"; }; }; environment.systemPackages = with pkgs; [ promscale ]; }; testScript = '' machine.start() machine.wait_for_unit("postgresql") with subtest("Postgresql with extensions timescaledb and promscale is available just after unit start"): print(machine.succeed("sudo -u postgres psql -f ${test-sql}")) machine.succeed("sudo -u postgres psql promscale -c 'SHOW shared_preload_libraries;' | grep promscale") machine.succeed( "promscale --db.name promscale --db.password promscale --db.user promscale --db.ssl-mode allow --startup.install-extensions --startup.only" ) machine.succeed("sudo -u postgres psql promscale -c 'SELECT ps_trace.get_trace_retention_period();' | grep '(1 row)'") machine.shutdown() ''; }; #version 15 is not supported yet applicablePostgresqlVersions = filterAttrs (_: value: versionAtLeast value.version "12" && !(versionAtLeast value.version "15")) postgresql-versions; in mapAttrs' (name: package: { inherit name; value = make-postgresql-test name package; }) applicablePostgresqlVersions