diff --git a/nix/cargo-pgrx/mkPgrxExtension.nix b/nix/cargo-pgrx/mkPgrxExtension.nix index 0bf99e3de4..cee5eae1a8 100644 --- a/nix/cargo-pgrx/mkPgrxExtension.nix +++ b/nix/cargo-pgrx/mkPgrxExtension.nix @@ -42,7 +42,7 @@ let import (builtins.fetchTarball { url = "https://channels.nixos.org/nixos-22.11/nixexprs.tar.xz"; sha256 = "1j7h75a9hwkkm97jicky5rhvzkdwxsv5v46473rl6agvq2sj97y1"; - }) { system = stdenv.hostPlatform.system; } + }) { inherit (stdenv.hostPlatform) system; } ); in rustPlatform.bindgenHook.overrideAttrs { diff --git a/nix/checks.nix b/nix/checks.nix index a721964761..4af756f1d4 100644 --- a/nix/checks.nix +++ b/nix/checks.nix @@ -439,21 +439,19 @@ ; devShell = self'.devShells.default; } - // pkgs.lib.optionalAttrs (pkgs.stdenv.isLinux) ( - { - inherit (self'.packages) - postgresql_15_debug - postgresql_15_src - postgresql_orioledb-17_debug - postgresql_orioledb-17_src - postgresql_17_debug - postgresql_17_src - ; - } - // (import ./ext/tests { - inherit self; - inherit pkgs; - }) - ); + // (import ./ext/tests { + inherit self; + inherit pkgs; + }) + // pkgs.lib.optionalAttrs (pkgs.stdenv.isLinux) { + inherit (self'.packages) + postgresql_15_debug + postgresql_15_src + postgresql_orioledb-17_debug + postgresql_orioledb-17_src + postgresql_17_debug + postgresql_17_src + ; + }; }; } diff --git a/nix/ext/tests/default.nix b/nix/ext/tests/default.nix index b0918ae22b..6b02f1562d 100644 --- a/nix/ext/tests/default.nix +++ b/nix/ext/tests/default.nix @@ -16,7 +16,7 @@ let installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -25,7 +25,7 @@ let let majorVersion = if postgresql.isOrioleDB then "orioledb-17" else lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -33,7 +33,7 @@ let (installedExtension majorVersion) ] ++ lib.optional (postgresql.isOrioleDB - ) self.legacyPackages.${pkgs.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb; + ) self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb; passthru = { inherit (postgresql) version psqlSchema; lib = pkg; @@ -42,7 +42,7 @@ let withoutJIT = pkg; installedExtensions = [ (installedExtension majorVersion) ]; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -56,27 +56,21 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; orioledb_17 = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17; in - self.inputs.nixpkgs.lib.nixos.runTest { + pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; @@ -153,7 +147,8 @@ let specialisation.orioledb17.configuration = { services.postgresql = { package = lib.mkForce ( - postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17 + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17 ); settings = lib.mkForce ( ((installedExtension "17").defaultSettings or { }) @@ -191,7 +186,7 @@ let let newPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17; in '' if [[ -z "${newPostgresql.psqlSchema}" ]]; then diff --git a/nix/ext/tests/http.nix b/nix/ext/tests/http.nix index 2879ad2ca2..edc2d31681 100644 --- a/nix/ext/tests/http.nix +++ b/nix/ext/tests/http.nix @@ -2,9 +2,10 @@ let pname = "http"; inherit (pkgs) lib; + mockServer = ../../tests/http-mock-server.py; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -13,7 +14,7 @@ let let majorVersion = if postgresql.isOrioleDB then "orioledb-17" else lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -21,7 +22,7 @@ let (installedExtension majorVersion) ] ++ lib.optional (postgresql.isOrioleDB - ) self.legacyPackages.${pkgs.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb; + ) self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb; passthru = { inherit (postgresql) version psqlSchema; installedExtensions = [ (installedExtension majorVersion) ]; @@ -30,7 +31,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -44,34 +45,30 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; orioledb_17 = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; services.postgresql = { enable = true; - package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + package = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; settings = (installedExtension "15").defaultSettings or { }; authentication = '' local all postgres peer map=postgres @@ -89,24 +86,40 @@ self.inputs.nixpkgs.lib.nixos.runTest { ]; initialScript = pkgs.writeText "init-postgres" '' CREATE TABLE IF NOT EXISTS test_config (key TEXT PRIMARY KEY, value TEXT); - INSERT INTO test_config (key, value) VALUES ('http_mock_port', '8880') ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value; ''; }; systemd.services.http-mock-server = { wantedBy = [ "multi-user.target" ]; + before = [ "postgresql.service" ]; serviceConfig = { Type = "simple"; + Restart = "on-failure"; + RestartSec = "2"; + TimeoutStartSec = "30"; + User = "root"; + }; + environment = { + HTTP_MOCK_PORT_FILE = "/tmp/http-mock-port"; + PYTHONUNBUFFERED = "1"; }; script = '' - ${pkgs.python3}/bin/python3 ${../../tests/http-mock-server.py} + # Ensure temp directory exists + mkdir -p /tmp + + # Start the mock server + exec ${pkgs.pkgsLinux.python3}/bin/python3 ${mockServer} ''; }; + systemd.services.postgresql = { + after = [ "http-mock-server.service" ]; + }; + specialisation.postgresql17.configuration = { services.postgresql = { package = lib.mkForce ( - postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17 + postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17 ); settings = ((installedExtension "17").defaultSettings or { }); }; @@ -124,10 +137,10 @@ self.inputs.nixpkgs.lib.nixos.runTest { let oldPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; newPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}"; newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}"; in @@ -152,7 +165,8 @@ self.inputs.nixpkgs.lib.nixos.runTest { specialisation.orioledb17.configuration = { services.postgresql = { package = lib.mkForce ( - postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17 + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17 ); settings = lib.mkForce ( ((installedExtension "17").defaultSettings or { }) @@ -175,7 +189,6 @@ self.inputs.nixpkgs.lib.nixos.runTest { pkgs.writeText "init-postgres-with-orioledb" '' CREATE EXTENSION orioledb CASCADE; CREATE TABLE IF NOT EXISTS test_config (key TEXT PRIMARY KEY, value TEXT); - INSERT INTO test_config (key, value) VALUES ('http_mock_port', '8880') ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value; '' ); }; @@ -194,7 +207,7 @@ self.inputs.nixpkgs.lib.nixos.runTest { let newPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17; in '' if [[ -z "${newPostgresql.psqlSchema}" ]]; then @@ -243,8 +256,37 @@ self.inputs.nixpkgs.lib.nixos.runTest { start_all() server.wait_for_unit("multi-user.target") + server.wait_for_unit("http-mock-server.service") server.wait_for_unit("postgresql.service") + # Read the HTTP mock port and configure it in PostgreSQL + # Wait for the port file to be created with retry logic + server.succeed(""" + for i in {1..30}; do + if [ -f /tmp/http-mock-port ]; then + break + fi + echo "Waiting for HTTP mock server port file... ($i/30)" + sleep 1 + done + + if [ ! -f /tmp/http-mock-port ]; then + echo "ERROR: HTTP mock server port file not found after 30 seconds" + systemctl status http-mock-server.service || true + journalctl -u http-mock-server.service --no-pager || true + exit 1 + fi + """) + + http_port = server.succeed("cat /tmp/http-mock-port").strip() + server.succeed(f""" + sudo -u postgres psql -d postgres -c ' + CREATE TABLE IF NOT EXISTS test_config (key TEXT PRIMARY KEY, value TEXT); + INSERT INTO test_config (key, value) VALUES ('"'"'http_mock_port'"'"', '"'"'{http_port}'"'"') + ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value; + ' + """) + test = PostgresExtensionTest(server, extension_name, versions, sql_test_directory, support_upgrade, ext_schema, lib_name) test.create_schema() @@ -269,6 +311,14 @@ self.inputs.nixpkgs.lib.nixos.runTest { server.succeed( "${pg17-configuration}/bin/switch-to-configuration test >&2" ) + server.wait_for_unit("postgresql.service") + # Reconfigure the HTTP mock port after switching PostgreSQL version + server.succeed(f""" + sudo -u postgres psql -d postgres -c ' + INSERT INTO test_config (key, value) VALUES ('"'"'http_mock_port'"'"', '"'"'{http_port}'"'"') + ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value; + ' + """) with subtest("Check last version of the extension after postgresql upgrade"): test.assert_version_matches(last_version) @@ -289,6 +339,14 @@ self.inputs.nixpkgs.lib.nixos.runTest { server.succeed( "${orioledb17-configuration}/bin/switch-to-configuration test >&2" ) + server.wait_for_unit("postgresql.service") + # Reconfigure the HTTP mock port after switching to orioledb + server.succeed(f""" + sudo -u postgres psql -d postgres -c ' + INSERT INTO test_config (key, value) VALUES ('"'"'http_mock_port'"'"', '"'"'{http_port}'"'"') + ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value; + ' + """) installed_extensions=test.run_sql("""SELECT extname FROM pg_extension WHERE extname = 'orioledb';""") assert "orioledb" in installed_extensions test.create_schema() diff --git a/nix/ext/tests/index_advisor.nix b/nix/ext/tests/index_advisor.nix index 564ec350bc..b936cb0369 100644 --- a/nix/ext/tests/index_advisor.nix +++ b/nix/ext/tests/index_advisor.nix @@ -4,14 +4,14 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.system}."psql_${postgresMajorVersion}".exts.index_advisor; + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts.index_advisor; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; postgresqlWithExtension = postgresql: let majorVersion = if postgresql.isOrioleDB then "orioledb-17" else lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -19,7 +19,7 @@ let (installedExtension majorVersion) ] ++ lib.optional (postgresql.isOrioleDB - ) self.legacyPackages.${pkgs.system}.psql_orioledb-17.exts.orioledb; + ) self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.psql_orioledb-17.exts.orioledb; passthru = { inherit (postgresql) version psqlSchema; installedExtensions = [ (installedExtension majorVersion) ]; @@ -28,7 +28,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -42,25 +42,21 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.system}.postgresql_17; - orioledb_17 = postgresqlWithExtension self.packages.${pkgs.system}.postgresql_orioledb-17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; + orioledb_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; @@ -130,7 +126,10 @@ self.inputs.nixpkgs.lib.nixos.runTest { specialisation.orioledb17.configuration = { services.postgresql = { - package = lib.mkForce (postgresqlWithExtension self.packages.${pkgs.system}.postgresql_orioledb-17); + package = lib.mkForce ( + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17 + ); settings = lib.mkForce ( ((installedExtension "17").defaultSettings or { }) // { @@ -167,7 +166,7 @@ self.inputs.nixpkgs.lib.nixos.runTest { let newPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17; in '' if [[ -z "${newPostgresql.psqlSchema}" ]]; then diff --git a/nix/ext/tests/orioledb.nix b/nix/ext/tests/orioledb.nix index de50710b50..bb1a3125f1 100644 --- a/nix/ext/tests/orioledb.nix +++ b/nix/ext/tests/orioledb.nix @@ -6,24 +6,24 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql postgresql.lib - (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb) + (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb) ]; passthru = { inherit (postgresql) version psqlSchema; installedExtensions = [ - (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb) + (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb) ]; lib = pkg; withPackages = _: pkg; withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -39,23 +39,13 @@ let pkg; psql_orioledb = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/pg_plan_filter.nix b/nix/ext/tests/pg_plan_filter.nix index f8d1c9ca63..30e1170e01 100644 --- a/nix/ext/tests/pg_plan_filter.nix +++ b/nix/ext/tests/pg_plan_filter.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,7 +12,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -27,7 +27,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -41,18 +41,21 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { services.postgresql = { enable = true; - package = (postgresqlWithExtension psql_15); + package = psql_15; settings = (installedExtension "15").defaultSettings or { }; }; diff --git a/nix/ext/tests/pg_repack.nix b/nix/ext/tests/pg_repack.nix index c81e29b2d1..7ca0da128d 100644 --- a/nix/ext/tests/pg_repack.nix +++ b/nix/ext/tests/pg_repack.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,7 +12,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -27,7 +27,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -42,28 +42,20 @@ let in pkg; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; services.postgresql = { enable = true; - package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + package = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; enableTCPIP = true; authentication = '' local all postgres peer map=postgres @@ -86,7 +78,7 @@ self.inputs.nixpkgs.lib.nixos.runTest { specialisation.postgresql17.configuration = { services.postgresql = { package = lib.mkForce ( - postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17 + postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17 ); }; @@ -103,10 +95,10 @@ self.inputs.nixpkgs.lib.nixos.runTest { let oldPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; newPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}"; newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}"; in diff --git a/nix/ext/tests/pg_safeupdate.nix b/nix/ext/tests/pg_safeupdate.nix index 4f168f8b0a..83c2b080b0 100644 --- a/nix/ext/tests/pg_safeupdate.nix +++ b/nix/ext/tests/pg_safeupdate.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,7 +12,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -27,7 +27,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -41,18 +41,21 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { services.postgresql = { enable = true; - package = (postgresqlWithExtension psql_15); + package = psql_15; settings = (installedExtension "15").defaultSettings or { }; }; diff --git a/nix/ext/tests/pgjwt.nix b/nix/ext/tests/pgjwt.nix index 2f0cc9efcd..39fcd18f66 100644 --- a/nix/ext/tests/pgjwt.nix +++ b/nix/ext/tests/pgjwt.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,7 +12,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -27,7 +27,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -41,25 +41,18 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; - services.postgresql = { enable = true; package = psql_15; diff --git a/nix/ext/tests/pgmq.nix b/nix/ext/tests/pgmq.nix index 3e2dc7f919..eac0c350d0 100644 --- a/nix/ext/tests/pgmq.nix +++ b/nix/ext/tests/pgmq.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,7 +12,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -27,7 +27,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -41,18 +41,21 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; in -self.inputs.nixpkgs.lib.nixos.runTest { - name = "timescaledb"; - hostPkgs = pkgs; +pkgs.testers.runNixOSTest { + name = "pgmq"; nodes.server = { config, ... }: { services.postgresql = { enable = true; - package = (postgresqlWithExtension psql_15); + package = psql_15; authentication = '' local all postgres peer map=postgres local all all peer map=root diff --git a/nix/ext/tests/pgroonga.nix b/nix/ext/tests/pgroonga.nix index 4316d4a720..ee9c505c42 100644 --- a/nix/ext/tests/pgroonga.nix +++ b/nix/ext/tests/pgroonga.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,7 +12,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -27,7 +27,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -41,24 +41,18 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; @@ -83,11 +77,11 @@ self.inputs.nixpkgs.lib.nixos.runTest { ]; }; systemd.services.postgresql.environment.MECAB_DICDIR = "${ - self.packages.${pkgs.stdenv.hostPlatform.system}.mecab-naist-jdic + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.mecab-naist-jdic }/lib/mecab/dic/naist-jdic"; - systemd.services.postgresql.environment.MECAB_CONFIG = "${pkgs.mecab}/bin/mecab-config"; + systemd.services.postgresql.environment.MECAB_CONFIG = "${pkgs.pkgsLinux.mecab}/bin/mecab-config"; systemd.services.postgresql.environment.GRN_PLUGINS_DIR = "${ - self.packages.${pkgs.stdenv.hostPlatform.system}.supabase-groonga + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.supabase-groonga }/lib/groonga/plugins"; specialisation.postgresql17.configuration = { diff --git a/nix/ext/tests/pgrouting.nix b/nix/ext/tests/pgrouting.nix index 5a023d5caa..845246d8e6 100644 --- a/nix/ext/tests/pgrouting.nix +++ b/nix/ext/tests/pgrouting.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,16 +12,17 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql postgresql.lib (installedExtension majorVersion) - (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.postgis) + (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.postgis + ) ] ++ lib.optional (postgresql.isOrioleDB) ( - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_orioledb-17".exts.orioledb ); passthru = { inherit (postgresql) version psqlSchema; @@ -31,7 +32,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -46,24 +47,14 @@ let in pkg; pg_regress = pkgs.callPackage ../pg_regress.nix { - postgresql = self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + postgresql = self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; }; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; @@ -73,13 +64,15 @@ self.inputs.nixpkgs.lib.nixos.runTest { services.postgresql = { enable = true; - package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + package = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; }; specialisation.postgresql17.configuration = { services.postgresql = { package = lib.mkForce ( - postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17 + postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17 ); }; @@ -96,10 +89,10 @@ self.inputs.nixpkgs.lib.nixos.runTest { let oldPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; newPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}"; newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}"; in @@ -124,7 +117,8 @@ self.inputs.nixpkgs.lib.nixos.runTest { specialisation.orioledb17.configuration = { services.postgresql = { package = lib.mkForce ( - postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17 + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17 ); settings = { shared_preload_libraries = "orioledb"; @@ -155,7 +149,7 @@ self.inputs.nixpkgs.lib.nixos.runTest { let newPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_orioledb-17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_orioledb-17; in '' set -x diff --git a/nix/ext/tests/pgsodium.nix b/nix/ext/tests/pgsodium.nix index 00a2bf44f2..4d2962803e 100644 --- a/nix/ext/tests/pgsodium.nix +++ b/nix/ext/tests/pgsodium.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,13 +12,14 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql postgresql.lib (installedExtension majorVersion) - (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.hypopg) + (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.hypopg + ) ]; passthru = { inherit (postgresql) version psqlSchema; @@ -28,7 +29,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -48,25 +49,16 @@ let '' ); in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; - services.postgresql = { enable = true; - package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + package = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; settings = { "shared_preload_libraries" = pname; "pgsodium.getkey_script" = pgsodiumGetKey; @@ -76,7 +68,7 @@ self.inputs.nixpkgs.lib.nixos.runTest { specialisation.postgresql17.configuration = { services.postgresql = { package = lib.mkForce ( - postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17 + postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17 ); }; @@ -93,10 +85,10 @@ self.inputs.nixpkgs.lib.nixos.runTest { let oldPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; newPostgresql = postgresqlWithExtension - self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}"; newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}"; in diff --git a/nix/ext/tests/plpgsql_check.nix b/nix/ext/tests/plpgsql_check.nix index 3beac0c720..e4b381fee3 100644 --- a/nix/ext/tests/plpgsql_check.nix +++ b/nix/ext/tests/plpgsql_check.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,7 +12,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -27,7 +27,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -41,24 +41,18 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; diff --git a/nix/ext/tests/plv8.nix b/nix/ext/tests/plv8.nix index 91d7d29d13..381cbcae48 100644 --- a/nix/ext/tests/plv8.nix +++ b/nix/ext/tests/plv8.nix @@ -5,7 +5,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -13,7 +13,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -28,7 +28,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -42,30 +42,24 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; services.openssh = { enable = true; }; services.postgresql = { enable = true; - package = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + package = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; authentication = '' local all postgres peer map=postgres local all all peer map=root diff --git a/nix/ext/tests/postgis.nix b/nix/ext/tests/postgis.nix new file mode 100644 index 0000000000..d7b8ccb3bd --- /dev/null +++ b/nix/ext/tests/postgis.nix @@ -0,0 +1,158 @@ +{ self, pkgs }: +let + pname = "postgis"; + inherit (pkgs) lib; + installedExtension = + postgresMajorVersion: + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + pname + }"; + versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; + postgresqlWithExtension = + postgresql: + let + majorVersion = lib.versions.major postgresql.version; + pkg = pkgs.pkgsLinux.buildEnv { + name = "postgresql-${majorVersion}-${pname}"; + paths = [ + postgresql + postgresql.lib + (installedExtension majorVersion) + ]; + passthru = { + inherit (postgresql) version psqlSchema; + installedExtensions = [ (installedExtension majorVersion) ]; + lib = pkg; + withPackages = _: pkg; + withJIT = pkg; + withoutJIT = pkg; + }; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; + pathsToLink = [ + "/" + "/bin" + "/lib" + ]; + postBuild = '' + wrapProgram $out/bin/postgres --set NIX_PGLIBDIR $out/lib + wrapProgram $out/bin/pg_ctl --set NIX_PGLIBDIR $out/lib + wrapProgram $out/bin/pg_upgrade --set NIX_PGLIBDIR $out/lib + ''; + }; + in + pkg; +in +pkgs.testers.runNixOSTest { + name = pname; + nodes.server = + { config, ... }: + { + services.openssh = { + enable = true; + }; + + services.postgresql = { + enable = true; + package = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + }; + + specialisation.postgresql17.configuration = { + services.postgresql = { + package = lib.mkForce ( + postgresqlWithExtension self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17 + ); + }; + + systemd.services.postgresql-migrate = { + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + User = "postgres"; + Group = "postgres"; + StateDirectory = "postgresql"; + WorkingDirectory = "${builtins.dirOf config.services.postgresql.dataDir}"; + }; + script = + let + oldPostgresql = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + newPostgresql = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; + oldDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${oldPostgresql.psqlSchema}"; + newDataDir = "${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}"; + in + '' + if [[ ! -d ${newDataDir} ]]; then + install -d -m 0700 -o postgres -g postgres "${newDataDir}" + ${newPostgresql}/bin/initdb -D "${newDataDir}" + ${newPostgresql}/bin/pg_upgrade --old-datadir "${oldDataDir}" --new-datadir "${newDataDir}" \ + --old-bindir "${oldPostgresql}/bin" --new-bindir "${newPostgresql}/bin" + else + echo "${newDataDir} already exists" + fi + ''; + }; + + systemd.services.postgresql = { + after = [ "postgresql-migrate.service" ]; + requires = [ "postgresql-migrate.service" ]; + }; + }; + }; + testScript = + { nodes, ... }: + let + pg17-configuration = "${nodes.server.system.build.toplevel}/specialisation/postgresql17"; + in + '' + versions = { + "15": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (versions "15"))}], + "17": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (versions "17"))}], + } + + def run_sql(query): + return server.succeed(f"""sudo -u postgres psql -t -A -F\",\" -c \"{query}\" """).strip() + + def check_upgrade_path(pg_version): + with subtest("Check ${pname} upgrade path"): + firstVersion = versions[pg_version][0] + server.succeed("sudo -u postgres psql -c 'DROP EXTENSION IF EXISTS ${pname};'") + run_sql(f"""CREATE EXTENSION ${pname} WITH VERSION '{firstVersion}' CASCADE;""") + installed_version = run_sql(r"""SELECT extversion FROM pg_extension WHERE extname = '${pname}';""") + assert installed_version == firstVersion, f"Expected ${pname} version {firstVersion}, but found {installed_version}" + for version in versions[pg_version][1:]: + run_sql(f"""ALTER EXTENSION ${pname} UPDATE TO '{version}';""") + installed_version = run_sql(r"""SELECT extversion FROM pg_extension WHERE extname = '${pname}';""") + assert installed_version == version, f"Expected ${pname} version {version}, but found {installed_version}" + + start_all() + + server.wait_for_unit("multi-user.target") + server.wait_for_unit("postgresql.service") + + check_upgrade_path("15") + + with subtest("Check ${pname} latest extension version"): + server.succeed("sudo -u postgres psql -c 'DROP EXTENSION ${pname};'") + server.succeed("sudo -u postgres psql -c 'CREATE EXTENSION ${pname} CASCADE;'") + installed_extensions=run_sql(r"""SELECT extname, extversion FROM pg_extension where extname = '${pname}';""") + latestVersion = versions["15"][-1] + assert f"${pname},{latestVersion}" in installed_extensions, f"Expected ${pname} version {latestVersion}, but found {installed_extensions}" + + with subtest("switch to postgresql 17"): + server.succeed( + "${pg17-configuration}/bin/switch-to-configuration test >&2" + ) + + with subtest("Check ${pname} latest extension version after upgrade"): + installed_extensions=run_sql(r"""SELECT extname, extversion FROM pg_extension;""") + latestVersion = versions["17"][-1] + assert f"${pname},{latestVersion}" in installed_extensions + + check_upgrade_path("17") + ''; +} diff --git a/nix/ext/tests/timescaledb.nix b/nix/ext/tests/timescaledb.nix index a98d1f5ebe..285ad39ce1 100644 --- a/nix/ext/tests/timescaledb.nix +++ b/nix/ext/tests/timescaledb.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = (installedExtension "15").versions; @@ -12,7 +12,7 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql @@ -27,7 +27,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -41,17 +41,18 @@ let }; in pkg; - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = "timescaledb"; - hostPkgs = pkgs; nodes.server = { ... }: { services.postgresql = { enable = true; - package = (postgresqlWithExtension psql_15); + package = psql_15; authentication = '' local all postgres peer map=postgres local all all peer map=root diff --git a/nix/ext/tests/vault.nix b/nix/ext/tests/vault.nix index 42fafacabd..28ad6b6298 100644 --- a/nix/ext/tests/vault.nix +++ b/nix/ext/tests/vault.nix @@ -4,7 +4,7 @@ let inherit (pkgs) lib; installedExtension = postgresMajorVersion: - self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ + self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${ pname }"; versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions; @@ -12,13 +12,14 @@ let postgresql: let majorVersion = lib.versions.major postgresql.version; - pkg = pkgs.buildEnv { + pkg = pkgs.pkgsLinux.buildEnv { name = "postgresql-${majorVersion}-${pname}"; paths = [ postgresql postgresql.lib (installedExtension majorVersion) - (self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.pgsodium) # dependency + (self.legacyPackages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}."psql_${majorVersion}".exts.pgsodium + ) # dependency ]; passthru = { inherit (postgresql) version psqlSchema; @@ -28,7 +29,7 @@ let withJIT = pkg; withoutJIT = pkg; }; - nativeBuildInputs = [ pkgs.makeWrapper ]; + nativeBuildInputs = [ pkgs.pkgsLinux.makeWrapper ]; pathsToLink = [ "/" "/bin" @@ -47,25 +48,18 @@ let echo 0000000000000000000000000000000000000000000000000000000000000000 '' ); - psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15; - psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17; + psql_15 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_15; + psql_17 = + postgresqlWithExtension + self.packages.${pkgs.pkgsLinux.stdenv.hostPlatform.system}.postgresql_17; in -self.inputs.nixpkgs.lib.nixos.runTest { +pkgs.testers.runNixOSTest { name = pname; - hostPkgs = pkgs; nodes.server = { config, ... }: { - virtualisation = { - forwardPorts = [ - { - from = "host"; - host.port = 13022; - guest.port = 22; - } - ]; - }; - services.postgresql = { enable = true; package = psql_15; diff --git a/nix/postgresql/generic.nix b/nix/postgresql/generic.nix index a99ecad6d2..6eaf873aef 100644 --- a/nix/postgresql/generic.nix +++ b/nix/postgresql/generic.nix @@ -322,7 +322,7 @@ let tests = { postgresql-wal-receiver = import ../../../../nixos/tests/postgresql-wal-receiver.nix { - system = stdenv.hostPlatform.system; + inherit (stdenv.hostPlatform) system; pkgs = self; package = this; }; @@ -330,7 +330,7 @@ let } // lib.optionalAttrs jitSupport { postgresql-jit = import ../../../../nixos/tests/postgresql-jit.nix { - system = stdenv.hostPlatform.system; + inherit (stdenv.hostPlatform) system; pkgs = self; package = this; }; diff --git a/nix/tests/http-mock-server.py b/nix/tests/http-mock-server.py index fedeb40ade..005c892f25 100644 --- a/nix/tests/http-mock-server.py +++ b/nix/tests/http-mock-server.py @@ -237,10 +237,16 @@ def run_server(port=None): port_file = os.environ.get("HTTP_MOCK_PORT_FILE", "/tmp/http-mock-port") try: + # Ensure directory exists (if any) + port_dir = os.path.dirname(port_file) + if port_dir: + os.makedirs(port_dir, exist_ok=True) with open(port_file, "w") as f: f.write(str(port)) - except: - pass # Ignore if we can't write the port file + print(f"Port file written to {port_file}") + except Exception as e: + print(f"ERROR: Failed to write port file {port_file}: {e}") + raise # Don't ignore port file write errors server.serve_forever() except OSError as e: