On 2 August 2016 at 10:45, Paul Boca <pb...@cloudbasesolutions.com> wrote:
> 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> > Acked-by: Alin Gabriel Serdean <aserd...@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 > V10: No changes > V11: 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 > I removed the above change and applied. > > _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 88180a3..e9d4510 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 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 > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev