This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Pau Espin Pedrol gerrit-no-reply at lists.osmocom.org
Review at https://gerrit.osmocom.org/2670
Free resources and kill subprocesses when signal to stop is received
Change-Id: I039e4d1908a04bf606b101ddc6a186ba67e6178e
---
M src/osmo-gsm-tester.py
M src/osmo_gsm_tester/suite.py
2 files changed, 29 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/70/2670/1
diff --git a/src/osmo-gsm-tester.py b/src/osmo-gsm-tester.py
index ddec926..b03ceca 100755
--- a/src/osmo-gsm-tester.py
+++ b/src/osmo-gsm-tester.py
@@ -68,10 +68,22 @@
import sys
import argparse
+from signal import *
from osmo_gsm_tester import __version__
from osmo_gsm_tester import trial, suite, log, config, trial_report
+def sig_handler_cleanup(signum, frame):
+ print("killed by signal %d" % signum)
+ # This sys.exit() will raise a SystemExit base exception at the current
+ # point of execution. Code must be prepared to clean system-wide resources
+ # by using the "finally" section. This allows at the end 'atexit' hooks to
+ # be called before exiting.
+ sys.exit(1)
+
def main():
+
+ for sig in (SIGINT, SIGTERM, SIGQUIT, SIGPIPE, SIGHUP):
+ signal(sig, sig_handler_cleanup)
parser = argparse.ArgumentParser(epilog=__doc__, formatter_class=argparse.RawTextHelpFormatter)
# Note: since we're using RawTextHelpFormatter to keep nicely separate
@@ -196,7 +208,7 @@
any_failed = True
report.write_junit_report()
trials_run.append((current_trial.name(), report))
- except:
+ except Exception:
current_trial.log_exn()
sys.stderr.flush()
diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index 4c99c5e..65e9470 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -296,17 +296,23 @@
def run_tests(self, names=None):
self.log('Suite run start')
- if not self.reserved_resources:
- self.reserve_resources()
+ # if sys.exit() called from SIGTINT handler, SystemExit base exception
+ # is raised. Make sure to clean resources/processes in the finally
+ # section:
results = SuiteRun.Results(self)
- for test in self.definition.tests:
- if names and not test.name() in names:
- test.set_skip()
- else:
- with self:
- test.run(self)
- results.add_test(test)
- self.stop_processes()
+ try:
+ if not self.reserved_resources:
+ self.reserve_resources()
+ for test in self.definition.tests:
+ if names and not test.name() in names:
+ test.set_skip()
+ else:
+ with self:
+ test.run(self)
+ results.add_test(test)
+ finally:
+ self.stop_processes()
+
return results.conclude()
def remember_to_stop(self, process):
--
To view, visit https://gerrit.osmocom.org/2670
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I039e4d1908a04bf606b101ddc6a186ba67e6178e
Gerrit-PatchSet: 1
Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: report
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>