diff mbox

[ovs-dev,V5,01/17] python tests: Implemented signal.alarm for Windows

Message ID 1467390322-12852-2-git-send-email-pboca@cloudbasesolutions.com
State Superseded
Delegated to: Guru Shetty
Headers show

Commit Message

Paul Boca July 1, 2016, 4:26 p.m. UTC
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>
---
V2: No changes
V3: Code styling changes
V4: No changes
V5: 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 mbox

Patch

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,