signal.alarm is not available in Windows and would trigger an exception when called. Implemented this to mentain compatibility between Windows and Linux for python tests.
Signed-off-by: Paul-Daniel Boca <pb...@cloudbasesolutions.com> --- V2: No changes V3: Code styling changes V4: No changes --- tests/appctl.py | 27 ++++++++++++++++++++++++++- tests/test-ovsdb.py | 26 +++++++++++++++++++++++++- tests/test-unix-socket.py | 26 +++++++++++++++++++++++++- 3 files changed, 76 insertions(+), 3 deletions(-) diff --git a/tests/appctl.py b/tests/appctl.py index e5bcf2c..a465544 100644 --- a/tests/appctl.py +++ b/tests/appctl.py @@ -22,6 +22,28 @@ import ovs.unixctl.client import ovs.util import ovs.vlog +if sys.platform == 'win32': + import os + import time + import threading + +def _win_signal_alarm(timeout): + + class Alarm (threading.Thread): + def __init__ (self, timeout): + super(Alarm, self).__init__ () + self.timeout = timeout + self.setDaemon (True) + + def run (self): + time.sleep (self.timeout) + os._exit (1) + + def win_signal(timeout): + alarm = Alarm (timeout) + alarm.start () + + win_signal(timeout) def connect_to_target(target): error, str_result = ovs.unixctl.socket_name_from_target(target) @@ -52,7 +74,10 @@ def main(): args = parser.parse_args() if args.timeout: - signal.alarm(int(args.timeout)) + if sys.platform == "win32": + _win_signal_alarm(int(args.timeout)) + else: + signal.alarm(int(args.timeout)) ovs.vlog.Vlog.init() target = args.target diff --git a/tests/test-ovsdb.py b/tests/test-ovsdb.py index 42d36d4..4bbdadd 100644 --- a/tests/test-ovsdb.py +++ b/tests/test-ovsdb.py @@ -31,6 +31,27 @@ import ovs.poller import ovs.util import six +def _win_signal_alarm(timeout): + import signal + import os + import time + import threading + + class Alarm (threading.Thread): + def __init__ (self, timeout): + threading.Thread.__init__ (self) + self.timeout = timeout + self.setDaemon (True) + + def run (self): + time.sleep (self.timeout) + os._exit (1) + + def win_signal(timeout): + alarm = Alarm (timeout) + alarm.start () + + win_signal(timeout) def unbox_json(json): if type(json) == list and len(json) == 1: @@ -612,7 +633,10 @@ def main(argv): except TypeError: raise error.Error("value %s on -t or --timeout is not at " "least 1" % value) - signal.alarm(timeout) + if sys.platform == "win32": + _win_signal_alarm(timeout) + else: + signal.alarm(timeout) else: sys.exit(0) diff --git a/tests/test-unix-socket.py b/tests/test-unix-socket.py index ebfa054..b666872 100644 --- a/tests/test-unix-socket.py +++ b/tests/test-unix-socket.py @@ -20,6 +20,27 @@ import sys import ovs.socket_util +def _win_signal_alarm(timeout): + import signal + import os + import time + import threading + + class Alarm (threading.Thread): + def __init__ (self, timeout): + threading.Thread.__init__ (self) + self.timeout = timeout + self.setDaemon (True) + + def run (self): + time.sleep (self.timeout) + os._exit (1) + + def win_signal(timeout): + alarm = Alarm (timeout) + alarm.start () + + win_signal(timeout) def main(argv): if len(argv) not in (2, 3): @@ -33,7 +54,10 @@ def main(argv): sockname2 = sockname1 signal.signal(signal.SIGALRM, signal.SIG_DFL) - signal.alarm(5) + if sys.platform == "win32": + _win_signal_alarm(5) + else: + signal.alarm(5) # Create a listening socket under name 'sockname1'. error, sock1 = ovs.socket_util.make_unix_socket(socket.SOCK_STREAM, False, -- 2.7.2.windows.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev