@@ -140,7 +140,7 @@ def __str__(self):
140
140
return '\n ERROR: {0}\n CMD: {1}' .format (repr (self .message ), self .cmd )
141
141
142
142
143
- def slow_start (self , replica = False ):
143
+ def _slow_start (self , replica = False ):
144
144
145
145
# wait for https://github.com/postgrespro/testgres/pull/50
146
146
# self.start()
@@ -174,7 +174,7 @@ def slow_start(self, replica=False):
174
174
sleep (0.5 )
175
175
176
176
177
- def is_test_result_ok (test_case ):
177
+ def _is_test_result_ok (test_case ):
178
178
# sources of solution:
179
179
# 1. python versions 2.7 - 3.10, verified on 3.10, 3.7, 2.7, taken from:
180
180
# 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):
197
197
return ok
198
198
199
199
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
+
200
222
class ProbackupTest (object ):
201
223
# Class attributes
202
224
enterprise = is_enterprise ()
@@ -375,7 +397,7 @@ def __init__(self, *args, **kwargs):
375
397
os .environ ["PGAPPNAME" ] = "pg_probackup"
376
398
377
399
def tearDown (self ):
378
- if is_test_result_ok (self ):
400
+ if _is_test_result_ok (self ):
379
401
for node in self .nodes_to_cleanup :
380
402
node .cleanup ()
381
403
self .del_test_dir (self .module_name , self .fname )
@@ -418,10 +440,10 @@ def make_empty_node(
418
440
shutil .rmtree (real_base_dir , ignore_errors = True )
419
441
os .makedirs (real_base_dir )
420
442
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 )
424
444
node .should_rm_dirs = True
445
+ self .nodes_to_cleanup .append (node )
446
+
425
447
return node
426
448
427
449
def make_simple_node (
@@ -485,8 +507,6 @@ def make_simple_node(
485
507
self .set_auto_conf (
486
508
node , {}, 'postgresql.conf' , ['wal_keep_segments' ])
487
509
488
- self .nodes_to_cleanup .append (node )
489
-
490
510
return node
491
511
492
512
def simple_bootstrap (self , node , role ) -> None :
0 commit comments