Unverified Commit 128244b5 authored by Wolfgang Walther's avatar Wolfgang Walther
Browse files

nixosTests.postgresql: use a common pattern throughout all tests

Avoiding "with", using the same names and basic structure in each test.

Consistency is key!
parent 90355738
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -5,16 +5,16 @@
let
  inherit (pkgs) lib;

  makeAnonymizerTest = postgresqlPackage:
  makeTestFor = package:
    makeTest {
      name = "postgresql_anonymizer-${postgresqlPackage.name}";
      name = "postgresql_anonymizer-${package.name}";
      meta.maintainers = lib.teams.flyingcircus.members;

      nodes.machine = { pkgs, ... }: {
        environment.systemPackages = [ pkgs.pg-dump-anon ];
        services.postgresql = {
          inherit package;
          enable = true;
          package = postgresqlPackage;
          extraPlugins = ps: [ ps.anonymizer ];
          settings.shared_preload_libraries = [ "anon" ];
        };
@@ -102,9 +102,9 @@ let
      '';
    };
in
pkgs.lib.recurseIntoAttrs (
  pkgs.lib.concatMapAttrs (n: p: { ${n} = makeAnonymizerTest p; }) pkgs.postgresqlVersions
lib.recurseIntoAttrs (
  lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.anonymizer.meta.broken) pkgs.postgresqlVersions)
  // {
    passthru.override = p: makeAnonymizerTest p;
    passthru.override = p: makeTestFor p;
  }
)
+6 −8
Original line number Diff line number Diff line
@@ -5,23 +5,21 @@
let
  inherit (pkgs) lib;

  makePgjwtTest = postgresqlPackage:
  makeTestFor = package:
    makeTest {
      name = "pgjwt-${postgresqlPackage.name}";
      name = "pgjwt-${package.name}";
      meta = with lib.maintainers; {
        maintainers = [ spinus willibutz ];
      };

      nodes = {
        master = { ... }:
      nodes.master = { ... }:
        {
          services.postgresql = {
            inherit package;
            enable = true;
            package = postgresqlPackage;
            extraPlugins = ps: with ps; [ pgjwt pgtap ];
          };
        };
      };

      testScript = { nodes, ... }:
      let
@@ -39,8 +37,8 @@ let
    };
in
lib.recurseIntoAttrs (
  lib.concatMapAttrs (n: p: { ${n} = makePgjwtTest p; }) pkgs.postgresqlVersions
  lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.pgjwt.meta.broken) pkgs.postgresqlVersions)
  // {
    passthru.override = p: makePgjwtTest p;
    passthru.override = p: makeTestFor p;
  }
)
+39 −39
Original line number Diff line number Diff line
@@ -2,9 +2,9 @@
, makeTest
}:

with pkgs.lib;

let
  inherit (pkgs) lib;

  # Test cases from https://docs.pgvecto.rs/use-cases/hybrid-search.html
  test-sql = pkgs.writeText "postgresql-test" ''
    CREATE EXTENSION vectors;
@@ -22,9 +22,10 @@ let
      ('a thin dog sat on a mat and ate a thin rat', '[10, 11, 12]');
  '';

  makePgVectorsTest = postgresqlPackage: makeTest {
  makeTestFor = postgresqlPackage:
    makeTest {
      name = "pgvecto-rs-${postgresqlPackage.name}";
    meta = with pkgs.lib.maintainers; {
      meta = with lib.maintainers; {
        maintainers = [ diogotcorreia ];
      };

@@ -63,12 +64,11 @@ let

        machine.shutdown()
      '';

    };
in
recurseIntoAttrs (
  concatMapAttrs (n: p: { ${n} = makePgVectorsTest p; }) (filterAttrs (n: p: !p.pkgs.pgvecto-rs.meta.broken) pkgs.postgresqlVersions)
lib.recurseIntoAttrs (
  lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (lib.filterAttrs (_: p: !p.pkgs.pgvecto-rs.meta.broken) pkgs.postgresqlVersions)
  // {
    passthru.override = p: makePgVectorsTest p;
    passthru.override = p: makeTestFor p;
  }
)
+36 −33
Original line number Diff line number Diff line
@@ -5,10 +5,12 @@
let
  inherit (pkgs) lib;

  mkJitTest = package: makeTest {
  makeTestFor = package:
    makeTest {
      name = "postgresql-jit-${package.name}";
      meta.maintainers = with lib.maintainers; [ ma27 ];
    nodes.machine = { pkgs, lib, ... }: {

      nodes.machine = { pkgs, ... }: {
        services.postgresql = {
          inherit package;
          enable = true;
@@ -19,6 +21,7 @@ let
          '';
        };
      };

      testScript = ''
        machine.start()
        machine.wait_for_unit("postgresql.service")
@@ -42,8 +45,8 @@ let
    };
in
lib.recurseIntoAttrs (
  lib.concatMapAttrs (n: p: { ${n} = mkJitTest 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: mkJitTest p;
    passthru.override = p: makeTestFor p;
  }
)
+36 −39
Original line number Diff line number Diff line
@@ -3,10 +3,8 @@
}:

let
  lib = pkgs.lib;
  inherit (pkgs) lib;

  makePostgresqlTlsClientCertTest = pkg:
    let
  runWithOpenSSL = file: cmd: pkgs.runCommand file
    {
      buildInputs = [ pkgs.openssl ];
@@ -37,9 +35,9 @@ let
    '';
  clientKeyPath = "/root";

    in
  makeTestFor = package:
    makeTest {
      name = "postgresql-tls-client-cert-${pkg.name}";
      name = "postgresql-tls-client-cert-${package.name}";
      meta.maintainers = with lib.maintainers; [ erictapen ];

      nodes.server = { ... }: {
@@ -52,7 +50,7 @@ let
          '';
        };
        services.postgresql = {
          package = pkg;
          inherit package;
          enable = true;
          enableTCPIP = true;
          ensureUsers = [
@@ -102,7 +100,7 @@ let
            PGSSLKEY = "${clientKeyPath}/client.key";
            PGSSLROOTCERT = caCert;
          };
          systemPackages = [ pkg ];
          systemPackages = [ package ];
        };
        networking = {
          interfaces.eth1 = {
@@ -120,11 +118,10 @@ let
        client.succeed("psql -c \"SELECT 1;\"")
      '';
    };

in
lib.recurseIntoAttrs (
  lib.concatMapAttrs (n: p: { ${n} = makePostgresqlTlsClientCertTest p; }) pkgs.postgresqlVersions
  lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) pkgs.postgresqlVersions
  // {
    passthru.override = p: makePostgresqlTlsClientCertTest p;
    passthru.override = p: makeTestFor p;
  }
)
Loading