Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e63371a

Browse files
author
Stepan Neretin
committed
probackup plugin fixes
1 parent b7595ad commit e63371a

File tree

1 file changed

+28
-23
lines changed
  • testgres/plugins/pg_probackup2/pg_probackup2

1 file changed

+28
-23
lines changed

testgres/plugins/pg_probackup2/pg_probackup2/app.py

+28-23
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,33 @@ def __init__(self, test_class: unittest.TestCase,
6161
self.test_class.output = None
6262
self.execution_time = None
6363

64+
def form_daemon_process(self, cmdline, env):
65+
def stream_output(stream: subprocess.PIPE) -> None:
66+
try:
67+
for line in iter(stream.readline, ''):
68+
print(line)
69+
self.test_class.output += line
70+
finally:
71+
stream.close()
72+
73+
self.process = subprocess.Popen(
74+
cmdline,
75+
stdout=subprocess.PIPE,
76+
stderr=subprocess.PIPE,
77+
text=True,
78+
env=env
79+
)
80+
logging.info(f"Process started in background with PID: {self.process.pid}")
81+
82+
if self.process.stdout and self.process.stderr:
83+
stdout_thread = threading.Thread(target=stream_output, args=(self.process.stdout,), daemon=True)
84+
stderr_thread = threading.Thread(target=stream_output, args=(self.process.stderr,), daemon=True)
85+
86+
stdout_thread.start()
87+
stderr_thread.start()
88+
89+
return self.process.pid
90+
6491
def run(self, command, gdb=False, old_binary=False, return_id=True, env=None,
6592
skip_log_directory=False, expect_error=False, use_backup_dir=True, daemonize=False):
6693
"""
@@ -120,29 +147,7 @@ def run(self, command, gdb=False, old_binary=False, return_id=True, env=None,
120147

121148
start_time = time.time()
122149
if daemonize:
123-
124-
def stream_output(stream: subprocess.PIPE) -> None:
125-
for line in iter(stream.readline, ''):
126-
print(line)
127-
self.test_class.output += line
128-
stream.close()
129-
130-
self.process = subprocess.Popen(
131-
cmdline,
132-
stdout=subprocess.PIPE,
133-
stderr=subprocess.PIPE,
134-
text=True,
135-
env=env
136-
)
137-
logging.info(f"Process started in background with PID: {self.process.pid}")
138-
139-
if self.process.stdout and self.process.stderr:
140-
stdout_thread = threading.Thread(target=stream_output, args=(self.process.stdout,))
141-
stderr_thread = threading.Thread(target=stream_output, args=(self.process.stderr,))
142-
143-
stdout_thread.start()
144-
stderr_thread.start()
145-
return self.process.pid
150+
return self.form_daemon_process(cmdline, env)
146151
else:
147152
self.test_class.output = subprocess.check_output(
148153
cmdline,

0 commit comments

Comments
 (0)