1
1
{ self , pkgs } :
2
2
let
3
+ pname = "pg_net" ;
3
4
inherit ( pkgs ) lib ;
4
5
installedExtension =
5
- postgresMajorVersion : self . packages . ${ pkgs . system } . "psql_${ postgresMajorVersion } /exts/pg_net-all" ;
6
- versions = ( installedExtension "17" ) . versions ;
7
- firstVersion = lib . head versions ;
8
- latestVersion = lib . last versions ;
6
+ postgresMajorVersion : self . packages . ${ pkgs . system } . "psql_${ postgresMajorVersion } /exts/${ pname } -all" ;
7
+ versions = postgresqlMajorVersion : ( installedExtension postgresqlMajorVersion ) . versions ;
9
8
postgresqlWithExtension =
10
9
postgresql :
11
10
let
12
11
majorVersion = lib . versions . major postgresql . version ;
13
12
pkg = pkgs . buildEnv {
14
- name = "postgresql-${ majorVersion } -pg_net " ;
13
+ name = "postgresql-${ majorVersion } -${ pname } " ;
15
14
paths = [
16
15
postgresql
17
16
postgresql . lib
40
39
psql_17 = postgresqlWithExtension self . packages . ${ pkgs . system } . postgresql_17 ;
41
40
in
42
41
self . inputs . nixpkgs . lib . nixos . runTest {
43
- name = "pg_net " ;
42
+ name = "${ pname } " ;
44
43
hostPkgs = pkgs ;
45
44
nodes . server =
46
45
{ config , ... } :
@@ -65,7 +64,7 @@ self.inputs.nixpkgs.lib.nixos.runTest {
65
64
enable = true ;
66
65
package = psql_15 ;
67
66
settings = {
68
- shared_preload_libraries = "pg_net" ;
67
+ shared_preload_libraries = pname ;
69
68
} ;
70
69
} ;
71
70
@@ -116,60 +115,68 @@ self.inputs.nixpkgs.lib.nixos.runTest {
116
115
pg17-configuration = "${ nodes . server . system . build . toplevel } /specialisation/postgresql17" ;
117
116
in
118
117
''
118
+ versions = {
119
+ "15": [${ lib . concatStringsSep ", " ( map ( s : ''"${ s } "'' ) ( versions "15" ) ) } ],
120
+ "17": [${ lib . concatStringsSep ", " ( map ( s : ''"${ s } "'' ) ( versions "17" ) ) } ],
121
+ }
122
+
119
123
def run_sql(query):
120
124
return server.succeed(f"""sudo -u postgres psql -t -A -F\",\" -c \"{query}\" """).strip()
121
125
122
- def check_upgrade_path():
123
- with subtest("Check pg_net upgrade path"):
124
- server.succeed("sudo -u postgres psql -c 'DROP EXTENSION IF EXISTS pg_net;'")
125
- run_sql(r"""CREATE EXTENSION pg_net WITH VERSION \"${ firstVersion } \";""")
126
- installed_version = run_sql(r"""SELECT extversion FROM pg_extension WHERE extname = 'pg_net';""")
127
- assert installed_version == "${ firstVersion } ", f"Expected pg_net version ${ firstVersion } , but found {installed_version}"
128
- for version in [${ lib . concatStringsSep ", " ( map ( s : ''"${ s } "'' ) versions ) } ][1:]:
129
- run_sql(f"""ALTER EXTENSION pg_net UPDATE TO '{version}';""")
130
- installed_version = run_sql(r"""SELECT extversion FROM pg_extension WHERE extname = 'pg_net';""")
131
- assert installed_version == version, f"Expected pg_net version {version}, but found {installed_version}"
126
+ def check_upgrade_path(pg_version):
127
+ with subtest("Check ${ pname } upgrade path"):
128
+ firstVersion = versions[pg_version][0]
129
+ server.succeed("sudo -u postgres psql -c 'DROP EXTENSION IF EXISTS ${ pname } ;'")
130
+ run_sql(f"""CREATE EXTENSION ${ pname } WITH VERSION '{firstVersion}' CASCADE;""")
131
+ installed_version = run_sql(r"""SELECT extversion FROM pg_extension WHERE extname = '${ pname } ';""")
132
+ assert installed_version == firstVersion, f"Expected ${ pname } version {firstVersion}, but found {installed_version}"
133
+ for version in versions[pg_version][1:]:
134
+ run_sql(f"""ALTER EXTENSION ${ pname } UPDATE TO '{version}';""")
135
+ installed_version = run_sql(r"""SELECT extversion FROM pg_extension WHERE extname = '${ pname } ';""")
136
+ assert installed_version == version, f"Expected ${ pname } version {version}, but found {installed_version}"
132
137
133
138
start_all()
134
139
135
140
server.wait_for_unit("multi-user.target")
136
141
server.wait_for_unit("postgresql.service")
137
142
138
- check_upgrade_path()
143
+ check_upgrade_path("15" )
139
144
140
- with subtest("Test switch_pg_net_version "):
145
+ with subtest("Test switch_ ${ pname } _version "):
141
146
# Check that we are using the last version first
142
- pg_net_version = server.succeed("readlink -f ${ psql_15 } /lib/pg_net.so").strip()
143
- print(f"Current pg_net version: {pg_net_version}")
144
- assert pg_net_version.endswith("pg_net-${ latestVersion } .so"), f"Expected pg_net version ${ latestVersion } , but found {pg_net_version}"
147
+ ext_version = server.succeed("readlink -f ${ psql_15 } /lib/${ pname } .so").strip()
148
+ firstVersion = versions["15"][0]
149
+ latestVersion = versions["15"][-1]
150
+ assert ext_version.endswith(f"${ pname } -{latestVersion}.so"), f"Expected ${ pname } version {latestVersion}, but found {ext_version}"
145
151
146
152
server.succeed(
147
- "switch_pg_net_version $ {firstVersion } "
153
+ f"switch_ ${ pname } _version {firstVersion}"
148
154
)
149
155
150
- pg_net_version = server.succeed("readlink -f ${ psql_15 } /lib/pg_net .so").strip()
151
- assert pg_net_version .endswith("pg_net- ${ firstVersion } .so"), f"Expected pg_net version $ {firstVersion } , but found {pg_net_version }"
156
+ ext_version = server.succeed("readlink -f ${ psql_15 } /lib/${ pname } .so").strip()
157
+ assert ext_version .endswith(f" ${ pname } -{ firstVersion}.so"), f"Expected ${ pname } version {firstVersion}, but found {ext_version }"
152
158
153
159
server.succeed(
154
- "switch_pg_net_version $ {latestVersion } "
160
+ f"switch_ ${ pname } _version {latestVersion}"
155
161
)
156
162
157
- with subtest("Check pg_net latest extension version"):
158
- server.succeed("sudo -u postgres psql -c 'DROP EXTENSION pg_net ;'")
159
- server.succeed("sudo -u postgres psql -c 'CREATE EXTENSION pg_net ;'")
163
+ with subtest("Check ${ pname } latest extension version"):
164
+ server.succeed("sudo -u postgres psql -c 'DROP EXTENSION ${ pname } ;'")
165
+ server.succeed("sudo -u postgres psql -c 'CREATE EXTENSION ${ pname } ;'")
160
166
installed_extensions=run_sql(r"""SELECT extname, extversion FROM pg_extension;""")
161
- assert "pg_net,${ latestVersion } " in installed_extensions
167
+ latestVersion = versions["15"][-1]
168
+ assert f"${ pname } ,{latestVersion}" in installed_extensions
162
169
163
170
with subtest("switch to multiple node configuration"):
164
171
server.succeed(
165
172
"${ pg17-configuration } /bin/switch-to-configuration test >&2"
166
173
)
167
174
168
- with subtest("Check pg_net latest extension version"):
175
+ with subtest("Check ${ pname } latest extension version"):
169
176
installed_extensions=run_sql(r"""SELECT extname, extversion FROM pg_extension;""")
170
- assert "pg_net,${ latestVersion } " in installed_extensions
171
-
172
- check_upgrade_path()
177
+ latestVersion = versions["15"][-1]
178
+ assert f"${ pname } ,{latestVersion}" in installed_extensions
173
179
180
+ check_upgrade_path("17")
174
181
'' ;
175
182
}
0 commit comments