tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
nixosTests.promscale: add tests for promscale_extension
Pavel Anpin
2 years ago
08ddf6f0
4e6ddd0c
+61
2 changed files
expand all
collapse all
unified
split
nixos
tests
all-tests.nix
promscale.nix
+1
nixos/tests/all-tests.nix
···
712
712
tiddlywiki = handleTest ./tiddlywiki.nix {};
713
713
tigervnc = handleTest ./tigervnc.nix {};
714
714
timescaledb = handleTest ./timescaledb.nix {};
715
715
+
promscale = handleTest ./promscale.nix {};
715
716
timezone = handleTest ./timezone.nix {};
716
717
tinc = handleTest ./tinc {};
717
718
tinydns = handleTest ./tinydns.nix {};
+60
nixos/tests/promscale.nix
···
1
1
+
# mostly copied from ./timescaledb.nix which was copied from ./postgresql.nix
2
2
+
# as it seemed unapproriate to test additional extensions for postgresql there.
3
3
+
4
4
+
{ system ? builtins.currentSystem
5
5
+
, config ? { }
6
6
+
, pkgs ? import ../.. { inherit system config; }
7
7
+
}:
8
8
+
9
9
+
with import ../lib/testing-python.nix { inherit system pkgs; };
10
10
+
with pkgs.lib;
11
11
+
12
12
+
let
13
13
+
postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs;
14
14
+
test-sql = pkgs.writeText "postgresql-test" ''
15
15
+
CREATE USER promscale SUPERUSER PASSWORD 'promscale';
16
16
+
CREATE DATABASE promscale OWNER promscale;
17
17
+
'';
18
18
+
19
19
+
make-postgresql-test = postgresql-name: postgresql-package: makeTest {
20
20
+
name = postgresql-name;
21
21
+
meta = with pkgs.lib.maintainers; {
22
22
+
maintainers = [ anpin ];
23
23
+
};
24
24
+
25
25
+
nodes.machine = { config, pkgs, ... }:
26
26
+
{
27
27
+
services.postgresql = {
28
28
+
enable = true;
29
29
+
package = postgresql-package;
30
30
+
extraPlugins = with postgresql-package.pkgs; [
31
31
+
timescaledb
32
32
+
promscale_extension
33
33
+
];
34
34
+
settings = { shared_preload_libraries = "timescaledb, promscale"; };
35
35
+
};
36
36
+
environment.systemPackages = with pkgs; [ promscale ];
37
37
+
};
38
38
+
39
39
+
testScript = ''
40
40
+
machine.start()
41
41
+
machine.wait_for_unit("postgresql")
42
42
+
with subtest("Postgresql with extensions timescaledb and promscale is available just after unit start"):
43
43
+
print(machine.succeed("sudo -u postgres psql -f ${test-sql}"))
44
44
+
machine.succeed("sudo -u postgres psql promscale -c 'SHOW shared_preload_libraries;' | grep promscale")
45
45
+
machine.succeed(
46
46
+
"promscale --db.name promscale --db.password promscale --db.user promscale --db.ssl-mode allow --startup.install-extensions --startup.only"
47
47
+
)
48
48
+
machine.succeed("sudo -u postgres psql promscale -c 'SELECT ps_trace.get_trace_retention_period();' | grep '(1 row)'")
49
49
+
machine.shutdown()
50
50
+
'';
51
51
+
};
52
52
+
#version 15 is not supported yet
53
53
+
applicablePostgresqlVersions = filterAttrs (_: value: versionAtLeast value.version "12" && !(versionAtLeast value.version "15")) postgresql-versions;
54
54
+
in
55
55
+
mapAttrs'
56
56
+
(name: package: {
57
57
+
inherit name;
58
58
+
value = make-postgresql-test name package;
59
59
+
})
60
60
+
applicablePostgresqlVersions