1
1
# coding: utf-8
2
2
3
- import io
4
3
import os
5
4
import random
6
- import shutil
7
5
import signal
8
6
import threading
9
7
from queue import Queue
10
8
11
9
import psutil
12
- import subprocess
13
10
import time
14
11
15
- from op_ops .local_ops import LocalOperations
16
- from op_ops .os_ops import OsOperations
17
- from op_ops .remote_ops import RemoteOperations
12
+ from .os_ops .local_ops import LocalOperations
13
+ from .os_ops .remote_ops import RemoteOperations
18
14
19
15
try :
20
16
from collections .abc import Iterable
32
28
33
29
from shutil import rmtree
34
30
from six import raise_from , iteritems , text_type
35
- from tempfile import mkstemp , mkdtemp
36
31
37
32
from .enums import \
38
33
NodeStatus , \
96
91
eprint , \
97
92
get_bin_path , \
98
93
get_pg_version , \
99
- file_tail , \
100
94
reserve_port , \
101
95
release_port , \
102
96
execute_utility , \
@@ -163,6 +157,7 @@ def __init__(self, name=None, port=None, base_dir=None,
163
157
else :
164
158
self .os_ops = RemoteOperations (host , hostname , ssh_key )
165
159
160
+ testgres_config .os_ops = self .os_ops
166
161
# defaults for __exit__()
167
162
self .cleanup_on_good_exit = testgres_config .node_cleanup_on_good_exit
168
163
self .cleanup_on_bad_exit = testgres_config .node_cleanup_on_bad_exit
@@ -289,7 +284,7 @@ def base_dir(self):
289
284
self ._base_dir = self .os_ops .mkdtemp (prefix = TMP_NODE )
290
285
291
286
# NOTE: it's safe to create a new dir
292
- if not self .os_ops .exists (self ._base_dir ):
287
+ if not self .os_ops .path_exists (self ._base_dir ):
293
288
self .os_ops .makedirs (self ._base_dir )
294
289
295
290
return self ._base_dir
@@ -299,7 +294,7 @@ def logs_dir(self):
299
294
path = os .path .join (self .base_dir , LOGS_DIR )
300
295
301
296
# NOTE: it's safe to create a new dir
302
- if not self .os_ops .exists (path ):
297
+ if not self .os_ops .path_exists (path ):
303
298
self .os_ops .makedirs (path )
304
299
305
300
return path
@@ -628,7 +623,7 @@ def status(self):
628
623
"-D" , self .data_dir ,
629
624
"status"
630
625
] # yapf: disable
631
- execute_utility (_params , self .utils_log_file )
626
+ execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
632
627
return NodeStatus .Running
633
628
634
629
except ExecUtilException as e :
@@ -650,7 +645,7 @@ def get_control_data(self):
650
645
_params += ["-D" ] if self ._pg_version >= PgVer ('9.5' ) else []
651
646
_params += [self .data_dir ]
652
647
653
- data = execute_utility (_params , self .utils_log_file )
648
+ data = execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
654
649
655
650
out_dict = {}
656
651
@@ -713,7 +708,7 @@ def start(self, params=[], wait=True):
713
708
] + params # yapf: disable
714
709
715
710
try :
716
- execute_utility (_params , self .utils_log_file )
711
+ execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
717
712
except ExecUtilException as e :
718
713
msg = 'Cannot start node'
719
714
files = self ._collect_special_files ()
@@ -744,7 +739,7 @@ def stop(self, params=[], wait=True):
744
739
"stop"
745
740
] + params # yapf: disable
746
741
747
- execute_utility (_params , self .utils_log_file )
742
+ execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
748
743
749
744
self ._maybe_stop_logger ()
750
745
self .is_started = False
@@ -786,7 +781,7 @@ def restart(self, params=[]):
786
781
] + params # yapf: disable
787
782
788
783
try :
789
- execute_utility (_params , self .utils_log_file )
784
+ execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
790
785
except ExecUtilException as e :
791
786
msg = 'Cannot restart node'
792
787
files = self ._collect_special_files ()
@@ -813,7 +808,7 @@ def reload(self, params=[]):
813
808
"reload"
814
809
] + params # yapf: disable
815
810
816
- execute_utility (_params , self .utils_log_file )
811
+ execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
817
812
818
813
return self
819
814
@@ -835,7 +830,7 @@ def promote(self, dbname=None, username=None):
835
830
"promote"
836
831
] # yapf: disable
837
832
838
- execute_utility (_params , self .utils_log_file )
833
+ execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
839
834
840
835
# for versions below 10 `promote` is asynchronous so we need to wait
841
836
# until it actually becomes writable
@@ -870,7 +865,7 @@ def pg_ctl(self, params):
870
865
"-w" # wait
871
866
] + params # yapf: disable
872
867
873
- return execute_utility (_params , self .utils_log_file )
868
+ return execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
874
869
875
870
def free_port (self ):
876
871
"""
@@ -1035,10 +1030,9 @@ def dump(self,
1035
1030
# Generate tmpfile or tmpdir
1036
1031
def tmpfile ():
1037
1032
if format == DumpFormat .Directory :
1038
- fname = mkdtemp (prefix = TMP_DUMP )
1033
+ fname = self . os_ops . mkdtemp (prefix = TMP_DUMP )
1039
1034
else :
1040
- fd , fname = mkstemp (prefix = TMP_DUMP )
1041
- os .close (fd )
1035
+ fname = self .os_ops .mkstemp (prefix = TMP_DUMP )
1042
1036
return fname
1043
1037
1044
1038
# Set default arguments
@@ -1056,7 +1050,7 @@ def tmpfile():
1056
1050
"-F" , format .value
1057
1051
] # yapf: disable
1058
1052
1059
- execute_utility (_params , self .utils_log_file )
1053
+ execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
1060
1054
1061
1055
return filename
1062
1056
@@ -1085,7 +1079,7 @@ def restore(self, filename, dbname=None, username=None):
1085
1079
1086
1080
# try pg_restore if dump is binary formate, and psql if not
1087
1081
try :
1088
- execute_utility (_params , self .utils_log_name )
1082
+ execute_utility (_params , self .utils_log_name , os_ops = self . os_ops )
1089
1083
except ExecUtilException :
1090
1084
self .psql (filename = filename , dbname = dbname , username = username )
1091
1085
@@ -1417,7 +1411,7 @@ def pgbench_run(self, dbname=None, username=None, options=[], **kwargs):
1417
1411
# should be the last one
1418
1412
_params .append (dbname )
1419
1413
1420
- return execute_utility (_params , self .utils_log_file )
1414
+ return execute_utility (_params , self .utils_log_file , os_ops = self . os_ops )
1421
1415
1422
1416
def connect (self ,
1423
1417
dbname = None ,
0 commit comments