Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions nix/ext/plpgsql-check.nix
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,6 @@ buildEnv {
passthru = {
inherit versions numberOfVersions switch-ext-version;
hasBackgroundWorker = true;
defaultSettings = {
shared_preload_libraries = [
"plpgsql"
"plpgsql_check"
];
};
version =
"multi-" + lib.concatStringsSep "-" (map (v: lib.replaceStrings [ "." ] [ "-" ] v) versions);
};
Expand Down
140 changes: 13 additions & 127 deletions nix/ext/tests/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,143 +3,28 @@ let
testsDir = ./.;
testFiles = builtins.attrNames (builtins.readDir testsDir);
nixFiles = builtins.filter (
name: builtins.match ".*\\.nix$" name != null && name != "default.nix"
name: builtins.match ".*\\.nix$" name != null && name != "default.nix" && name != "lib.nix"
) testFiles;
extTest =
extension_name:
let
pname = extension_name;
testLib = import ./lib.nix {
inherit self pkgs;
testedExtensionName = extension_name;
};
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
postgresqlWithExtension =
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
pkg = pkgs.buildEnv {
name = "postgresql-${majorVersion}-${pname}";
paths = [
postgresql
postgresql.lib
(installedExtension majorVersion)
];
passthru = {
inherit (postgresql) version psqlSchema;
lib = pkg;
withPackages = _: pkg;
withJIT = pkg;
withoutJIT = pkg;
installedExtensions = [ (installedExtension majorVersion) ];
};
nativeBuildInputs = [ pkgs.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;
psql_15 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_15;
psql_17 = postgresqlWithExtension self.packages.${pkgs.stdenv.hostPlatform.system}.postgresql_17;
inherit (testLib)
versions
psql_15
psql_17
installedExtension
;
in
self.inputs.nixpkgs.lib.nixos.runTest {
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 = psql_15;
enableTCPIP = true;
authentication = ''
local all postgres peer map=postgres
local all all peer map=root
'';
identMap = ''
root root supabase_admin
postgres postgres postgres
'';
ensureUsers = [
{
name = "supabase_admin";
ensureClauses.superuser = true;
}
];
settings = (installedExtension "15").defaultSettings or { };
};

networking.firewall.allowedTCPPorts = [ config.services.postgresql.settings.port ];

specialisation.postgresql17.configuration = {
services.postgresql = {
package = lib.mkForce psql_17;
settings = (installedExtension "17").defaultSettings or { };
};

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 = psql_15;
newPostgresql = psql_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" \
${
if config.services.postgresql.settings.shared_preload_libraries != null then
" --old-options='-c shared_preload_libraries=${config.services.postgresql.settings.shared_preload_libraries}' --new-options='-c shared_preload_libraries=${config.services.postgresql.settings.shared_preload_libraries}'"
else
""
}
else
echo "${newDataDir} already exists"
fi
'';
};

systemd.services.postgresql = {
after = [ "postgresql-migrate.service" ];
requires = [ "postgresql-migrate.service" ];
};
};
};
nodes.server = { config, ... }: testLib.mkDefaultNixosTestNode { inherit config psql_15 psql_17; };
testScript =
{ nodes, ... }:
let
Expand All @@ -158,6 +43,7 @@ let
if (installedExtension "15") ? hasBackgroundWorker then "True" else "False"
}
sql_test_directory = Path("${../../tests}")

pg_regress_test_name = "${(installedExtension "15").pgRegressTestName or pname}"
ext_schema = "${(installedExtension "15").defaultSchema or "public"}"
lib_name = "${(installedExtension "15").libName or pname}"
Expand Down
118 changes: 9 additions & 109 deletions nix/ext/tests/http.nix
Original file line number Diff line number Diff line change
@@ -1,127 +1,27 @@
{ self, pkgs }:
let
pname = "http";
inherit (pkgs) lib;
installedExtension =
postgresMajorVersion:
self.legacyPackages.${pkgs.stdenv.hostPlatform.system}."psql_${postgresMajorVersion}".exts."${
pname
}";
versions = postgresqlMajorVersion: (installedExtension postgresqlMajorVersion).versions;
postgresqlWithExtension =
postgresql:
let
majorVersion = lib.versions.major postgresql.version;
pkg = pkgs.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.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;
testLib = import ./lib.nix {
inherit self pkgs;
testedExtensionName = pname;
};
inherit (testLib) versions psql_15 psql_17;
in
self.inputs.nixpkgs.lib.nixos.runTest {
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;
};

specialisation.postgresql17.configuration = {
services.postgresql = {
package = lib.mkForce (
postgresqlWithExtension self.packages.${pkgs.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.stdenv.hostPlatform.system}.postgresql_15;
newPostgresql =
postgresqlWithExtension
self.packages.${pkgs.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" ];
};
};
};
nodes.server = { config, ... }: testLib.mkDefaultNixosTestNode { inherit config psql_15 psql_17; };
testScript =
{ nodes, ... }:
let
pg17-configuration = "${nodes.server.system.build.toplevel}/specialisation/postgresql17";
# Convert versions to major.minor format (e.g., "1.5.0" -> "1.5")
toMajorMinor = map (v: lib.versions.majorMinor v);
toMajorMinor = map (v: pkgs.lib.versions.majorMinor v);
in
''
versions = {
"15": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (toMajorMinor (versions "15")))}],
"17": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (toMajorMinor (versions "17")))}],
"15": [${pkgs.lib.concatStringsSep ", " (map (s: ''"${s}"'') (toMajorMinor (versions "15")))}],
"17": [${pkgs.lib.concatStringsSep ", " (map (s: ''"${s}"'') (toMajorMinor (versions "17")))}],
}

def run_sql(query):
Expand Down
Loading
Loading