nixosTests.postgresql: run nixfmt

Because with as many changes as in here anybody working on those test
files will have merge conflicts anyway.
This commit is contained in:
Wolfgang Walther
2024-11-02 23:04:45 +01:00
parent 128244b598
commit 45cef36e39
10 changed files with 416 additions and 343 deletions

View File

@@ -1,16 +1,20 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
makeTestFor = package: makeTestFor =
package:
makeTest { makeTest {
name = "postgresql_anonymizer-${package.name}"; name = "postgresql_anonymizer-${package.name}";
meta.maintainers = lib.teams.flyingcircus.members; meta.maintainers = lib.teams.flyingcircus.members;
nodes.machine = { pkgs, ... }: { nodes.machine =
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.pg-dump-anon ]; environment.systemPackages = [ pkgs.pg-dump-anon ];
services.postgresql = { services.postgresql = {
inherit package; inherit package;
@@ -103,7 +107,9 @@ let
}; };
in in
lib.recurseIntoAttrs ( lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.anonymizer.meta.broken) pkgs.postgresqlVersions) lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.anonymizer.meta.broken) pkgs.postgresqlVersions
)
// { // {
passthru.override = p: makeTestFor p; passthru.override = p: makeTestFor p;
} }

View File

@@ -1,27 +1,38 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
makeTestFor = package: makeTestFor =
package:
makeTest { makeTest {
name = "pgjwt-${package.name}"; name = "pgjwt-${package.name}";
meta = with lib.maintainers; { meta = with lib.maintainers; {
maintainers = [ spinus willibutz ]; maintainers = [
spinus
willibutz
];
}; };
nodes.master = { ... }: nodes.master =
{ ... }:
{ {
services.postgresql = { services.postgresql = {
inherit package; inherit package;
enable = true; enable = true;
extraPlugins = ps: with ps; [ pgjwt pgtap ]; extraPlugins =
ps: with ps; [
pgjwt
pgtap
];
}; };
}; };
testScript = { nodes, ... }: testScript =
{ nodes, ... }:
let let
sqlSU = "${nodes.master.services.postgresql.superUser}"; sqlSU = "${nodes.master.services.postgresql.superUser}";
pgProve = "${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}"; pgProve = "${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}";
@@ -37,7 +48,9 @@ let
}; };
in in
lib.recurseIntoAttrs ( lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.pgjwt.meta.broken) pkgs.postgresqlVersions) lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.pgjwt.meta.broken) pkgs.postgresqlVersions
)
// { // {
passthru.override = p: makeTestFor p; passthru.override = p: makeTestFor p;
} }

View File

@@ -1,5 +1,6 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
@@ -22,26 +23,30 @@ let
('a thin dog sat on a mat and ate a thin rat', '[10, 11, 12]'); ('a thin dog sat on a mat and ate a thin rat', '[10, 11, 12]');
''; '';
makeTestFor = postgresqlPackage: makeTestFor =
postgresqlPackage:
makeTest { makeTest {
name = "pgvecto-rs-${postgresqlPackage.name}"; name = "pgvecto-rs-${postgresqlPackage.name}";
meta = with lib.maintainers; { meta = with lib.maintainers; {
maintainers = [ diogotcorreia ]; maintainers = [ diogotcorreia ];
}; };
nodes.machine = { ... }: nodes.machine =
{ ... }:
{ {
services.postgresql = { services.postgresql = {
enable = true; enable = true;
package = postgresqlPackage; package = postgresqlPackage;
extraPlugins = ps: with ps; [ extraPlugins =
ps: with ps; [
pgvecto-rs pgvecto-rs
]; ];
settings.shared_preload_libraries = "vectors"; settings.shared_preload_libraries = "vectors";
}; };
}; };
testScript = { nodes, ... }: testScript =
{ nodes, ... }:
let let
inherit (nodes.machine.services.postgresql.package.pkgs) pgvecto-rs; inherit (nodes.machine.services.postgresql.package.pkgs) pgvecto-rs;
in in
@@ -67,7 +72,9 @@ let
}; };
in in
lib.recurseIntoAttrs ( lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.pgvecto-rs.meta.broken) pkgs.postgresqlVersions) lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.pgvecto-rs.meta.broken) pkgs.postgresqlVersions
)
// { // {
passthru.override = p: makeTestFor p; passthru.override = p: makeTestFor p;
} }

View File

@@ -1,16 +1,20 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
makeTestFor = package: makeTestFor =
package:
makeTest { makeTest {
name = "postgresql-jit-${package.name}"; name = "postgresql-jit-${package.name}";
meta.maintainers = with lib.maintainers; [ ma27 ]; meta.maintainers = with lib.maintainers; [ ma27 ];
nodes.machine = { pkgs, ... }: { nodes.machine =
{ pkgs, ... }:
{
services.postgresql = { services.postgresql = {
inherit package; inherit package;
enable = true; enable = true;
@@ -45,7 +49,9 @@ let
}; };
in in
lib.recurseIntoAttrs ( lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (n: _: lib.hasSuffix "_jit" n) pkgs.postgresqlVersions) lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (n: _: lib.hasSuffix "_jit" n) pkgs.postgresqlVersions
)
// { // {
passthru.override = p: makeTestFor p; passthru.override = p: makeTestFor p;
} }

View File

@@ -1,46 +1,44 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
runWithOpenSSL = file: cmd: pkgs.runCommand file runWithOpenSSL =
{ file: cmd:
pkgs.runCommand file {
buildInputs = [ pkgs.openssl ]; buildInputs = [ pkgs.openssl ];
} } cmd;
cmd;
caKey = runWithOpenSSL "ca.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out"; caKey = runWithOpenSSL "ca.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
caCert = runWithOpenSSL caCert = runWithOpenSSL "ca.crt" ''
"ca.crt"
''
openssl req -new -x509 -sha256 -key ${caKey} -out $out -subj "/CN=test.example" -days 36500 openssl req -new -x509 -sha256 -key ${caKey} -out $out -subj "/CN=test.example" -days 36500
''; '';
serverKey = serverKey = runWithOpenSSL "server.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
runWithOpenSSL "server.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
serverKeyPath = "/var/lib/postgresql"; serverKeyPath = "/var/lib/postgresql";
serverCert = serverCert = runWithOpenSSL "server.crt" ''
runWithOpenSSL "server.crt" ''
openssl req -new -sha256 -key ${serverKey} -out server.csr -subj "/CN=db.test.example" openssl req -new -sha256 -key ${serverKey} -out server.csr -subj "/CN=db.test.example"
openssl x509 -req -in server.csr -CA ${caCert} -CAkey ${caKey} \ openssl x509 -req -in server.csr -CA ${caCert} -CAkey ${caKey} \
-CAcreateserial -out $out -days 36500 -sha256 -CAcreateserial -out $out -days 36500 -sha256
''; '';
clientKey = clientKey = runWithOpenSSL "client.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
runWithOpenSSL "client.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out"; clientCert = runWithOpenSSL "client.crt" ''
clientCert =
runWithOpenSSL "client.crt" ''
openssl req -new -sha256 -key ${clientKey} -out client.csr -subj "/CN=test" openssl req -new -sha256 -key ${clientKey} -out client.csr -subj "/CN=test"
openssl x509 -req -in client.csr -CA ${caCert} -CAkey ${caKey} \ openssl x509 -req -in client.csr -CA ${caCert} -CAkey ${caKey} \
-CAcreateserial -out $out -days 36500 -sha256 -CAcreateserial -out $out -days 36500 -sha256
''; '';
clientKeyPath = "/root"; clientKeyPath = "/root";
makeTestFor = package: makeTestFor =
package:
makeTest { makeTest {
name = "postgresql-tls-client-cert-${package.name}"; name = "postgresql-tls-client-cert-${package.name}";
meta.maintainers = with lib.maintainers; [ erictapen ]; meta.maintainers = with lib.maintainers; [ erictapen ];
nodes.server = { ... }: { nodes.server =
{ ... }:
{
system.activationScripts = { system.activationScripts = {
keyPlacement.text = '' keyPlacement.text = ''
mkdir -p '${serverKeyPath}' mkdir -p '${serverKeyPath}'
@@ -73,14 +71,19 @@ let
networking = { networking = {
interfaces.eth1 = { interfaces.eth1 = {
ipv6.addresses = [ ipv6.addresses = [
{ address = "fc00::1"; prefixLength = 120; } {
address = "fc00::1";
prefixLength = 120;
}
]; ];
}; };
firewall.allowedTCPPorts = [ 5432 ]; firewall.allowedTCPPorts = [ 5432 ];
}; };
}; };
nodes.client = { ... }: { nodes.client =
{ ... }:
{
system.activationScripts = { system.activationScripts = {
keyPlacement.text = '' keyPlacement.text = ''
mkdir -p '${clientKeyPath}' mkdir -p '${clientKeyPath}'
@@ -105,10 +108,15 @@ let
networking = { networking = {
interfaces.eth1 = { interfaces.eth1 = {
ipv6.addresses = [ ipv6.addresses = [
{ address = "fc00::2"; prefixLength = 120; } {
address = "fc00::2";
prefixLength = 120;
}
]; ];
}; };
hosts = { "fc00::1" = [ "db.test.example" ]; }; hosts = {
"fc00::1" = [ "db.test.example" ];
};
}; };
}; };

View File

@@ -1,11 +1,13 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
makeTestFor = package: makeTestFor =
package:
let let
postgresqlDataDir = "/var/lib/postgresql/${package.psqlSchema}"; postgresqlDataDir = "/var/lib/postgresql/${package.psqlSchema}";
replicationUser = "wal_receiver_user"; replicationUser = "wal_receiver_user";
@@ -19,7 +21,9 @@ let
name = "postgresql-wal-receiver-${package.name}"; name = "postgresql-wal-receiver-${package.name}";
meta.maintainers = with lib.maintainers; [ pacien ]; meta.maintainers = with lib.maintainers; [ pacien ];
nodes.machine = { ... }: { nodes.machine =
{ ... }:
{
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d /var/cache/wals 0750 postgres postgres - -" "d /var/cache/wals 0750 postgres postgres - -"
]; ];

View File

@@ -1,11 +1,13 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
makeTestFor = package: makeTestFor =
package:
lib.recurseIntoAttrs { lib.recurseIntoAttrs {
postgresql = makeTestForWithBackupAll package false; postgresql = makeTestForWithBackupAll package false;
postgresql-backup-all = makeTestForWithBackupAll package true; postgresql-backup-all = makeTestForWithBackupAll package true;
@@ -26,17 +28,19 @@ let
INSERT INTO xmltest (doc) VALUES ('<test>ok</test>'); -- check if libxml2 enabled INSERT INTO xmltest (doc) VALUES ('<test>ok</test>'); -- check if libxml2 enabled
''; '';
makeTestForWithBackupAll = package: backupAll: makeTestForWithBackupAll =
package: backupAll:
makeTest { makeTest {
name = "postgresql${lib.optionalString backupAll "-backup-all"}-${package.name}"; name = "postgresql${lib.optionalString backupAll "-backup-all"}-${package.name}";
meta = with lib.maintainers; { meta = with lib.maintainers; {
maintainers = [ zagy ]; maintainers = [ zagy ];
}; };
nodes.machine = {...}: nodes.machine =
{ ... }:
{ {
services.postgresql = { services.postgresql = {
inherit (package); inherit (package) ;
enable = true; enable = true;
}; };
@@ -46,11 +50,13 @@ let
}; };
}; };
testScript = let testScript =
let
backupName = if backupAll then "all" else "postgres"; backupName = if backupAll then "all" else "postgres";
backupService = if backupAll then "postgresqlBackup" else "postgresqlBackup-postgres"; backupService = if backupAll then "postgresqlBackup" else "postgresqlBackup-postgres";
backupFileBase = "/var/backup/postgresql/${backupName}"; backupFileBase = "/var/backup/postgresql/${backupName}";
in '' in
''
def check_count(statement, lines): def check_count(statement, lines):
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format( return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
statement, lines statement, lines
@@ -138,14 +144,16 @@ let
''; '';
}; };
makeEnsureTestFor = package: makeEnsureTestFor =
package:
makeTest { makeTest {
name = "postgresql-clauses-${package.name}"; name = "postgresql-clauses-${package.name}";
meta = with lib.maintainers; { meta = with lib.maintainers; {
maintainers = [ zagy ]; maintainers = [ zagy ];
}; };
nodes.machine = {...}: nodes.machine =
{ ... }:
{ {
services.postgresql = { services.postgresql = {
inherit package; inherit package;
@@ -170,9 +178,11 @@ let
}; };
}; };
testScript = let testScript =
getClausesQuery = user: lib.concatStringsSep " " let
[ getClausesQuery =
user:
lib.concatStringsSep " " [
"SELECT row_to_json(row)" "SELECT row_to_json(row)"
"FROM (" "FROM ("
"SELECT" "SELECT"
@@ -187,7 +197,8 @@ let
"WHERE rolname = '${user}'" "WHERE rolname = '${user}'"
") row;" ") row;"
]; ];
in '' in
''
import json import json
machine.start() machine.start()
machine.wait_for_unit("postgresql") machine.wait_for_unit("postgresql")

View File

@@ -1,5 +1,6 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
@@ -38,23 +39,28 @@ let
SELECT * FROM sth; SELECT * FROM sth;
''; '';
makeTestFor = package: makeTestFor =
package:
makeTest { makeTest {
name = "timescaledb-${package.name}"; name = "timescaledb-${package.name}";
meta = with lib.maintainers; { meta = with lib.maintainers; {
maintainers = [ typetetris ]; maintainers = [ typetetris ];
}; };
nodes.machine = { ... }: nodes.machine =
{ ... }:
{ {
services.postgresql = { services.postgresql = {
inherit package; inherit package;
enable = true; enable = true;
extraPlugins = ps: with ps; [ extraPlugins =
ps: with ps; [
timescaledb timescaledb
timescaledb_toolkit timescaledb_toolkit
]; ];
settings = { shared_preload_libraries = "timescaledb, timescaledb_toolkit"; }; settings = {
shared_preload_libraries = "timescaledb, timescaledb_toolkit";
};
}; };
}; };
@@ -85,7 +91,9 @@ in
# To run these tests: # To run these tests:
# NIXPKGS_ALLOW_UNFREE=1 nix-build -A nixosTests.postgresql.timescaledb # NIXPKGS_ALLOW_UNFREE=1 nix-build -A nixosTests.postgresql.timescaledb
lib.dontRecurseIntoAttrs ( lib.dontRecurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.timescaledb.meta.broken) pkgs.postgresqlVersions) lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.timescaledb.meta.broken) pkgs.postgresqlVersions
)
// { // {
passthru.override = p: makeTestFor p; passthru.override = p: makeTestFor p;
} }

View File

@@ -1,23 +1,27 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
makeTestFor = package: makeTestFor =
package:
makeTest { makeTest {
name = "tsja-${package.name}"; name = "tsja-${package.name}";
meta = { meta = {
maintainers = with lib.maintainers; [ chayleaf ]; maintainers = with lib.maintainers; [ chayleaf ];
}; };
nodes.master = { ... }: nodes.master =
{ ... }:
{ {
services.postgresql = { services.postgresql = {
inherit package; inherit package;
enable = true; enable = true;
extraPlugins = ps: with ps; [ extraPlugins =
ps: with ps; [
tsja tsja
]; ];
}; };
@@ -37,7 +41,9 @@ let
}; };
in in
lib.recurseIntoAttrs ( lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.tsja.meta.broken) pkgs.postgresqlVersions) lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.tsja.meta.broken) pkgs.postgresqlVersions
)
// { // {
passthru.override = p: makeTestFor p; passthru.override = p: makeTestFor p;
} }

View File

@@ -1,11 +1,13 @@
{ pkgs {
, makeTest pkgs,
makeTest,
}: }:
let let
inherit (pkgs) lib; inherit (pkgs) lib;
makeTestFor = package: makeTestFor =
package:
makeTest { makeTest {
name = "wal2json-${package.name}"; name = "wal2json-${package.name}";
meta.maintainers = with pkgs.lib.maintainers; [ euank ]; meta.maintainers = with pkgs.lib.maintainers; [ euank ];
@@ -41,7 +43,9 @@ let
}; };
in in
lib.recurseIntoAttrs ( lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.wal2json.meta.broken) pkgs.postgresqlVersions) lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.wal2json.meta.broken) pkgs.postgresqlVersions
)
// { // {
passthru.override = p: makeTestFor p; passthru.override = p: makeTestFor p;
} }