process: Make sure sync process is terminated if ogt is stopped
Change-Id: Iecdac96ea576a312be2a6c6b6799e249074687ef
diff --git a/src/osmo_gsm_tester/process.py b/src/osmo_gsm_tester/process.py
index 534cdba..fb5c6f6 100644
--- a/src/osmo_gsm_tester/process.py
+++ b/src/osmo_gsm_tester/process.py
@@ -236,25 +236,26 @@
' '.join(self.popen_args))]
self.dbg(self.popen_args, dir=self.run_dir, conf=self.popen_kwargs)
+def run_proc_sync(proc):
+ try:
+ proc.launch()
+ proc.wait()
+ except Exception as e:
+ proc.terminate()
+ raise e
+ if proc.result != 0:
+ log.ctx(proc)
+ raise log.Error('Exited in error')
def run_local_sync(run_dir, name, popen_args):
run_dir =run_dir.new_dir(name)
proc = Process(name, run_dir, popen_args)
- proc.launch()
- proc.wait()
- if proc.result != 0:
- log.ctx(proc)
- raise log.Error('Exited in error')
+ run_proc_sync(proc)
def run_remote_sync(run_dir, remote_user, remote_addr, name, popen_args, remote_cwd=None):
run_dir = run_dir.new_dir(name)
- proc = RemoteProcess(name, run_dir, remote_user, remote_addr, remote_cwd,
- popen_args)
- proc.launch()
- proc.wait()
- if proc.result != 0:
- log.ctx(proc)
- raise log.Error('Exited in error')
+ proc = RemoteProcess(name, run_dir, remote_user, remote_addr, remote_cwd, popen_args)
+ run_proc_sync(proc)
def scp(run_dir, remote_user, remote_addr, name, local_path, remote_path):
run_local_sync(run_dir, name, ('scp', '-r', local_path, '%s@%s:%s' % (remote_user, remote_addr, remote_path)))