@@ -140,7 +140,7 @@ def __str__(self):
140140 return '\n ERROR: {0}\n CMD: {1}' .format (repr (self .message ), self .cmd )
141141
142142
143- def slow_start (self , replica = False ):
143+ def _slow_start (self , replica = False ):
144144
145145 # wait for https://github.com/postgrespro/testgres/pull/50
146146# self.start()
@@ -174,7 +174,7 @@ def slow_start(self, replica=False):
174174 sleep (0.5 )
175175
176176
177- def is_test_result_ok (test_case ):
177+ def _is_test_result_ok (test_case ):
178178 # sources of solution:
179179 # 1. python versions 2.7 - 3.10, verified on 3.10, 3.7, 2.7, taken from:
180180 # https://tousu.in/qa/?qa=555402/unit-testing-getting-pythons-unittest-results-in-a-teardown-method&show=555403#a555403
@@ -197,6 +197,28 @@ def is_test_result_ok(test_case):
197197 return ok
198198
199199
200+ class PostgresNodeExtended (testgres .PostgresNode ):
201+
202+ def __init__ (self , base_dir = None , * args , ** kwargs ):
203+ super (PostgresNodeExtended , self ).__init__ (name = 'test' , base_dir = base_dir , * args , ** kwargs )
204+ self .is_started = False
205+
206+ def slow_start (self , replica = False ):
207+ _slow_start (self , replica = replica )
208+
209+ def start (self , * args , ** kwargs ):
210+ if not self .is_started :
211+ super (PostgresNodeExtended , self ).start (* args , ** kwargs )
212+ self .is_started = True
213+ return self
214+
215+ def stop (self , * args , ** kwargs ):
216+ if self .is_started :
217+ result = super (PostgresNodeExtended , self ).stop (* args , ** kwargs )
218+ self .is_started = False
219+ return result
220+
221+
200222class ProbackupTest (object ):
201223 # Class attributes
202224 enterprise = is_enterprise ()
@@ -375,7 +397,7 @@ def __init__(self, *args, **kwargs):
375397 os .environ ["PGAPPNAME" ] = "pg_probackup"
376398
377399 def tearDown (self ):
378- if is_test_result_ok (self ):
400+ if _is_test_result_ok (self ):
379401 for node in self .nodes_to_cleanup :
380402 node .cleanup ()
381403 self .del_test_dir (self .module_name , self .fname )
@@ -418,10 +440,10 @@ def make_empty_node(
418440 shutil .rmtree (real_base_dir , ignore_errors = True )
419441 os .makedirs (real_base_dir )
420442
421- node = testgres .get_new_node ('test' , base_dir = real_base_dir )
422- # bound method slow_start() to 'node' class instance
423- node .slow_start = slow_start .__get__ (node )
443+ node = PostgresNodeExtended (base_dir = real_base_dir )
424444 node .should_rm_dirs = True
445+ self .nodes_to_cleanup .append (node )
446+
425447 return node
426448
427449 def make_simple_node (
@@ -485,8 +507,6 @@ def make_simple_node(
485507 self .set_auto_conf (
486508 node , {}, 'postgresql.conf' , ['wal_keep_segments' ])
487509
488- self .nodes_to_cleanup .append (node )
489-
490510 return node
491511
492512 def simple_bootstrap (self , node , role ) -> None :
0 commit comments