X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=eventlet%2Ftests%2Ffork_test.py;fp=eventlet%2Ftests%2Ffork_test.py;h=f15883fd34f0897f3b161203b668c5b59b5c2ffe;hb=376ff3bfe7071cc0793184a378c4e74508fb0d97;hp=0000000000000000000000000000000000000000;hpb=70992db4bef26426213a8eae488be377cdd655ae;p=packages%2Ftrusty%2Fpython-eventlet.git diff --git a/eventlet/tests/fork_test.py b/eventlet/tests/fork_test.py new file mode 100644 index 0000000..f15883f --- /dev/null +++ b/eventlet/tests/fork_test.py @@ -0,0 +1,52 @@ +from tests.patcher_test import ProcessBase + + +class ForkTest(ProcessBase): + def test_simple(self): + newmod = ''' +import eventlet +import os +import sys +import signal +from eventlet.support import bytes_to_str, six +mydir = %r +signal_file = os.path.join(mydir, "output.txt") +pid = os.fork() +if (pid != 0): + eventlet.Timeout(10) + try: + port = None + while True: + try: + contents = open(signal_file, "rb").read() + port = int(contents.split()[0]) + break + except (IOError, IndexError, ValueError, TypeError): + eventlet.sleep(0.1) + eventlet.connect(('127.0.0.1', port)) + while True: + try: + contents = open(signal_file, "rb").read() + result = contents.split()[1] + break + except (IOError, IndexError): + eventlet.sleep(0.1) + print('result {0}'.format(bytes_to_str(result))) + finally: + os.kill(pid, signal.SIGTERM) +else: + try: + s = eventlet.listen(('', 0)) + fd = open(signal_file, "wb") + fd.write(six.b(str(s.getsockname()[1]))) + fd.write(b"\\n") + fd.flush() + s.accept() + fd.write(b"done") + fd.flush() + finally: + fd.close() +''' + self.write_to_tempfile("newmod", newmod % self.tempdir) + output, lines = self.launch_subprocess('newmod.py') + self.assertEqual(lines[0], "result done", output)