From 57eaea1178b2d95f9952f38f09d0a2002becde72 Mon Sep 17 00:00:00 2001 From: Ildar Musin Date: Wed, 21 Mar 2018 18:18:17 +0300 Subject: [PATCH 1/3] Added PostgresNode.__repr__() method and fix doctests --- testgres/api.py | 12 ++++++------ testgres/config.py | 2 ++ testgres/node.py | 4 ++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/testgres/api.py b/testgres/api.py index 6bc276d5..7f9166e5 100644 --- a/testgres/api.py +++ b/testgres/api.py @@ -7,27 +7,27 @@ edit configuration files, start/stop cluster, execute queries. The typical flow may look like: ->>> with get_new_node() as node: +>>> with get_new_node('test') as node: ... node.init().start() ... result = node.safe_psql('postgres', 'select 1') ... print(result.decode('utf-8').strip()) ... node.stop() - +PostgresNode('test', port=..., base_dir=...) 1 - +PostgresNode('test', port=..., base_dir=...) Or: ->>> with get_new_node() as master: +>>> with get_new_node('master') as master: ... master.init().start() ... with master.backup() as backup: -... with backup.spawn_replica() as replica: +... with backup.spawn_replica('replica') as replica: ... replica = replica.start() ... master.execute('postgres', 'create table test (val int4)') ... master.execute('postgres', 'insert into test values (0), (1), (2)') ... replica.catchup() # wait until changes are visible ... print(replica.execute('postgres', 'select count(*) from test')) - +PostgresNode('master', port=..., base_dir=...) [(3,)] Copyright (c) 2016, Postgres Professional diff --git a/testgres/config.py b/testgres/config.py index 976263f7..e08baf1e 100644 --- a/testgres/config.py +++ b/testgres/config.py @@ -152,9 +152,11 @@ def scoped_config(**options): Temporarily set custom GlobalConfig options for this context. Example: + >>> from .api import get_new_node >>> with scoped_config(cache_initdb=False): ... with get_new_node().init().start() as node: ... print(node.execute('select 1')) + [(1,)] """ try: diff --git a/testgres/node.py b/testgres/node.py index 993837bf..fa24ab6d 100644 --- a/testgres/node.py +++ b/testgres/node.py @@ -135,6 +135,10 @@ def __exit__(self, type, value, traceback): else: self._try_shutdown(attempts) + def __repr__(self): + return "PostgresNode('{}', port={}, base_dir={})".format( + self.name, self.port, self.base_dir) + @property def pid(self): """ From 008236d0cb7ce3c24c2c55c86aa9bcc480e7e873 Mon Sep 17 00:00:00 2001 From: Ildar Musin Date: Thu, 22 Mar 2018 13:37:02 +0300 Subject: [PATCH 2/3] Added test for PostgresNode.__repr__() method; removed node name from examples --- testgres/api.py | 12 ++++++------ testgres/node.py | 2 +- tests/test_simple.py | 6 ++++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/testgres/api.py b/testgres/api.py index 7f9166e5..472a422a 100644 --- a/testgres/api.py +++ b/testgres/api.py @@ -7,27 +7,27 @@ edit configuration files, start/stop cluster, execute queries. The typical flow may look like: ->>> with get_new_node('test') as node: +>>> with get_new_node() as node: ... node.init().start() ... result = node.safe_psql('postgres', 'select 1') ... print(result.decode('utf-8').strip()) ... node.stop() -PostgresNode('test', port=..., base_dir=...) +PostgresNode(name='...', port=..., base_dir='...') 1 -PostgresNode('test', port=..., base_dir=...) +PostgresNode(name='...', port=..., base_dir='...') Or: ->>> with get_new_node('master') as master: +>>> with get_new_node() as master: ... master.init().start() ... with master.backup() as backup: -... with backup.spawn_replica('replica') as replica: +... with backup.spawn_replica() as replica: ... replica = replica.start() ... master.execute('postgres', 'create table test (val int4)') ... master.execute('postgres', 'insert into test values (0), (1), (2)') ... replica.catchup() # wait until changes are visible ... print(replica.execute('postgres', 'select count(*) from test')) -PostgresNode('master', port=..., base_dir=...) +PostgresNode(name='...', port=..., base_dir='...') [(3,)] Copyright (c) 2016, Postgres Professional diff --git a/testgres/node.py b/testgres/node.py index fa24ab6d..4971f1be 100644 --- a/testgres/node.py +++ b/testgres/node.py @@ -136,7 +136,7 @@ def __exit__(self, type, value, traceback): self._try_shutdown(attempts) def __repr__(self): - return "PostgresNode('{}', port={}, base_dir={})".format( + return "PostgresNode(name='{}', port={}, base_dir='{}')".format( self.name, self.port, self.base_dir) @property diff --git a/tests/test_simple.py b/tests/test_simple.py index 48f1130d..748d1df4 100755 --- a/tests/test_simple.py +++ b/tests/test_simple.py @@ -2,6 +2,7 @@ # coding: utf-8 import os +import re import subprocess import tempfile import testgres @@ -70,6 +71,11 @@ def removing(f): class TestgresTests(unittest.TestCase): + def test_node_repr(self): + with get_new_node() as node: + pattern = 'PostgresNode\(name=\'.+\', port=.+, base_dir=\'.+\'\)' + self.assertIsNotNone(re.match(pattern, str(node))) + def test_custom_init(self): with get_new_node() as node: # enable page checksums From 749de80e9de4f61dbc4ee6825cb36e64287bbb4d Mon Sep 17 00:00:00 2001 From: Ildar Musin Date: Thu, 22 Mar 2018 14:05:24 +0300 Subject: [PATCH 3/3] Use __class__.__name__ instead of 'PostgresNode' literal --- testgres/node.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testgres/node.py b/testgres/node.py index 4971f1be..3f0d52a2 100644 --- a/testgres/node.py +++ b/testgres/node.py @@ -136,8 +136,8 @@ def __exit__(self, type, value, traceback): self._try_shutdown(attempts) def __repr__(self): - return "PostgresNode(name='{}', port={}, base_dir='{}')".format( - self.name, self.port, self.base_dir) + return "{}(name='{}', port={}, base_dir='{}')".format( + self.__class__.__name__, self.name, self.port, self.base_dir) @property def pid(self):