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

Diff for: testgres/node.py

+7-5
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:

Diff for: testgres/utils.py

+3-11
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.

Diff for: tests/test_simple.py

+15-8
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)