diff options
author | Paul Boca <pboca@cloudbasesolutions.com> | 2016-08-02 17:45:39 +0000 |
---|---|---|
committer | Gurucharan Shetty <guru@ovn.org> | 2016-08-03 08:23:39 -0700 |
commit | 36d516346a9a780342db065eb016bd3015537b8f (patch) | |
tree | 1d24933a26fe70eb95d9cfa54f16fe8fc7f4b758 | |
parent | 922247c68438d5718dbfbbb11d6c4bb0799105c7 (diff) | |
download | openvswitch-36d516346a9a780342db065eb016bd3015537b8f.tar.gz |
python tests: Implemented signal.alarm for Windows
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 <pboca@cloudbasesolutions.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Signed-off-by: Gurucharan Shetty <guru@ovn.org>
-rw-r--r-- | python/ovs/fatal_signal.py | 23 | ||||
-rw-r--r-- | tests/appctl.py | 4 | ||||
-rw-r--r-- | tests/test-ovsdb.py | 4 | ||||
-rw-r--r-- | tests/test-unix-socket.py | 3 |
4 files changed, 29 insertions, 5 deletions
diff --git a/python/ovs/fatal_signal.py b/python/ovs/fatal_signal.py index 730803922..719f21b0e 100644 --- a/python/ovs/fatal_signal.py +++ b/python/ovs/fatal_signal.py @@ -15,6 +15,7 @@ import atexit import os import signal +import sys import ovs.vlog @@ -134,3 +135,25 @@ def _init(): if signal.getsignal(signr) == signal.SIG_DFL: signal.signal(signr, _signal_handler) atexit.register(_atexit_handler) + + +def signal_alarm(timeout): + if sys.platform == "win32": + import os + import time + import threading + + 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) + + alarm = Alarm(timeout) + alarm.start() + else: + signal.alarm(timeout) diff --git a/tests/appctl.py b/tests/appctl.py index e5bcf2c03..e4f069665 100644 --- a/tests/appctl.py +++ b/tests/appctl.py @@ -13,7 +13,6 @@ # limitations under the License. import argparse -import signal import sys import ovs.daemon @@ -21,6 +20,7 @@ import ovs.unixctl import ovs.unixctl.client import ovs.util import ovs.vlog +from ovs.fatal_signal import signal_alarm def connect_to_target(target): @@ -52,7 +52,7 @@ def main(): args = parser.parse_args() if args.timeout: - signal.alarm(int(args.timeout)) + 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 88180a38a..e9d451085 100644 --- a/tests/test-ovsdb.py +++ b/tests/test-ovsdb.py @@ -17,7 +17,6 @@ from __future__ import print_function import getopt import re import os -import signal import sys import uuid @@ -29,6 +28,7 @@ import ovs.db.types import ovs.ovsuuid import ovs.poller import ovs.util +from ovs.fatal_signal import signal_alarm import six @@ -676,7 +676,7 @@ def main(argv): except TypeError: raise error.Error("value %s on -t or --timeout is not at " "least 1" % value) - signal.alarm(timeout) + signal_alarm(timeout) else: sys.exit(0) diff --git a/tests/test-unix-socket.py b/tests/test-unix-socket.py index ebfa05442..c80fb13d2 100644 --- a/tests/test-unix-socket.py +++ b/tests/test-unix-socket.py @@ -19,6 +19,7 @@ import socket import sys import ovs.socket_util +from ovs.fatal_signal import signal_alarm def main(argv): @@ -33,7 +34,7 @@ def main(argv): sockname2 = sockname1 signal.signal(signal.SIGALRM, signal.SIG_DFL) - signal.alarm(5) + signal_alarm(5) # Create a listening socket under name 'sockname1'. error, sock1 = ovs.socket_util.make_unix_socket(socket.SOCK_STREAM, False, |