Skip to content

Commit 72d0373

Browse files
committed
replace pg_version_ge() with explicit per-node version
1 parent 0583873 commit 72d0373

File tree

3 files changed

+25
-24
lines changed

3 files changed

+25
-24
lines changed

testgres/node.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,11 @@
6666
from .pubsub import Publication, Subscription
6767

6868
from .utils import \
69+
PgVer, \
6970
eprint, \
7071
get_bin_path, \
72+
get_pg_version, \
7173
file_tail, \
72-
pg_version_ge, \
7374
reserve_port, \
7475
release_port, \
7576
execute_utility, \
@@ -113,6 +114,7 @@ def __init__(self, name=None, port=None, base_dir=None):
113114
"""
114115

115116
# private
117+
self._pg_version = PgVer(get_pg_version())
116118
self._should_free_port = port is None
117119
self._base_dir = base_dir
118120
self._logger = None
@@ -489,7 +491,7 @@ def get_auth_method(t):
489491
if allow_streaming:
490492

491493
# select a proper wal_level for PostgreSQL
492-
if pg_version_ge('9.6'):
494+
if self._pg_version >= '9.6':
493495
wal_level = "replica"
494496
else:
495497
wal_level = "hot_standby"
@@ -504,7 +506,7 @@ def get_auth_method(t):
504506
wal_level)) # yapf: disable
505507

506508
if allow_logical:
507-
if not pg_version_ge('10'):
509+
if self._pg_version < '10':
508510
raise InitNodeException(
509511
"Logical replication is only available for Postgres 10 "
510512
"and newer")
@@ -568,7 +570,7 @@ def get_control_data(self):
568570

569571
# this one is tricky (blame PG 9.4)
570572
_params = [get_bin_path("pg_controldata")]
571-
_params += ["-D"] if pg_version_ge('9.5') else []
573+
_params += ["-D"] if self._pg_version >= '9.5' else []
572574
_params += [self.data_dir]
573575

574576
data = execute_utility(_params, self.utils_log_file)
@@ -1042,7 +1044,7 @@ def catchup(self, dbname=None, username=None):
10421044
if not self.master:
10431045
raise TestgresException("Node doesn't have a master")
10441046

1045-
if pg_version_ge('10'):
1047+
if self._pg_version >= '10':
10461048
poll_lsn = "select pg_catalog.pg_current_wal_lsn()::text"
10471049
wait_lsn = "select pg_catalog.pg_last_wal_replay_lsn() >= '{}'::pg_lsn"
10481050
else:

testgres/utils.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
# ports used by nodes
2323
bound_ports = set()
2424

25+
# re-export version type
26+
PgVer = LooseVersion
27+
2528

2629
def reserve_port():
2730
"""
@@ -180,17 +183,6 @@ def get_pg_version():
180183
return version
181184

182185

183-
def pg_version_ge(version):
184-
"""
185-
Check if PostgreSQL is 'version' or newer.
186-
"""
187-
188-
cur_ver = LooseVersion(get_pg_version())
189-
min_ver = LooseVersion(version)
190-
191-
return cur_ver >= min_ver
192-
193-
194186
def file_tail(f, num_lines):
195187
"""
196188
Get last N lines of a file.

tests/test_simple.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import logging.config
1313

1414
from contextlib import contextmanager
15-
from distutils.version import LooseVersion
1615
from shutil import rmtree
1716

1817
from testgres import \
@@ -32,16 +31,24 @@
3231

3332
from testgres import \
3433
NodeStatus, \
34+
ProcessType, \
3535
IsolationLevel, \
3636
get_new_node
3737

3838
from testgres import \
3939
get_bin_path, \
40-
get_pg_config
40+
get_pg_config, \
41+
get_pg_version
4142

43+
# NOTE: those are ugly imports
4244
from testgres import bound_ports
43-
from testgres.utils import pg_version_ge
44-
from testgres.enums import ProcessType
45+
from testgres.utils import PgVer
46+
47+
48+
def pg_version_ge(version):
49+
cur_ver = PgVer(get_pg_version())
50+
min_ver = PgVer(version)
51+
return cur_ver >= min_ver
4552

4653

4754
def util_exists(util):
@@ -110,7 +117,7 @@ def test_init_after_cleanup(self):
110117
node.init().start().execute('select 1')
111118

112119
@unittest.skipUnless(util_exists('pg_resetwal'), 'might be missing')
113-
@unittest.skipUnless(pg_version_ge('9.6'), 'query works on 9.6+')
120+
@unittest.skipUnless(pg_version_ge('9.6'), 'requires 9.6+')
114121
def test_init_unique_system_id(self):
115122
# this function exists in PostgreSQL 9.6+
116123
query = 'select system_identifier from pg_control_system()'
@@ -828,9 +835,9 @@ def test_exceptions(self):
828835
str(QueryException('msg', 'query'))
829836

830837
def test_version_management(self):
831-
a = LooseVersion('10.0')
832-
b = LooseVersion('10')
833-
c = LooseVersion('9.6.5')
838+
a = PgVer('10.0')
839+
b = PgVer('10')
840+
c = PgVer('9.6.5')
834841

835842
self.assertTrue(a > b)
836843
self.assertTrue(b > c)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy