[ovs-dev] [PATCH V9 01/17] python tests: Implemented signal.alarm for Windows
Paul Boca
pboca at cloudbasesolutions.com
Tue Jul 26 12:01:03 UTC 2016
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 at cloudbasesolutions.com>
Acked-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
---
V2: No changes
V3: Code styling changes
V4: No changes
V5: No changes
V6: No changes
V7: Added function signal_alarm in fatal_signal.py to avoid
duplicating code
V8: No changes
V9: No changes
---
python/ovs/fatal_signal.py | 24 +++++++++++++++++++++++-
tests/appctl.py | 4 ++--
tests/test-ovsdb.py | 4 ++--
tests/test-unix-socket.py | 3 ++-
4 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/python/ovs/fatal_signal.py b/python/ovs/fatal_signal.py
index 7308039..14605ac 100644
--- a/python/ovs/fatal_signal.py
+++ b/python/ovs/fatal_signal.py
@@ -15,7 +15,7 @@
import atexit
import os
import signal
-
+import sys
import ovs.vlog
_hooks = []
@@ -134,3 +134,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 e5bcf2c..e4f0696 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 83fe4af..c7c42c8 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
@@ -647,7 +647,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 ebfa054..c80fb13 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,
--
2.7.2.windows.1
More information about the dev
mailing list