summaryrefslogtreecommitdiff
path: root/tests/isolated/hub_fork.py
diff options
context:
space:
mode:
authorSergey Shepelev <temotor@gmail.com>2017-01-05 05:08:38 +0300
committerSergey Shepelev <temotor@gmail.com>2017-01-05 05:39:04 +0300
commit60e54997f3bb973e408aa6d758befac1a98d60f7 (patch)
tree5d9bb51285928949427b90100bd7256831bbb027 /tests/isolated/hub_fork.py
parent461348f9a8459724be87c281eea4e0408138a82c (diff)
downloadeventlet-next.tar.gz
tests cleanup, CI with Python 3.6next
Diffstat (limited to 'tests/isolated/hub_fork.py')
-rw-r--r--tests/isolated/hub_fork.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/isolated/hub_fork.py b/tests/isolated/hub_fork.py
new file mode 100644
index 0000000..1872942
--- /dev/null
+++ b/tests/isolated/hub_fork.py
@@ -0,0 +1,33 @@
+# verify eventlet.listen() accepts in forked children
+__test__ = False
+
+if __name__ == '__main__':
+ import os
+ import sys
+ import eventlet
+
+ server = eventlet.listen(('127.0.0.1', 0))
+ result = eventlet.with_timeout(0.01, server.accept, timeout_value=True)
+ assert result is True, 'Expected timeout'
+
+ pid = os.fork()
+ if pid < 0:
+ print('fork error')
+ sys.exit(1)
+ elif pid == 0:
+ with eventlet.Timeout(1):
+ sock, _ = server.accept()
+ sock.sendall('ok {0}'.format(os.getpid()).encode())
+ sock.close()
+ sys.exit(0)
+ elif pid > 0:
+ with eventlet.Timeout(1):
+ sock = eventlet.connect(server.getsockname())
+ data = sock.recv(20).decode()
+ assert data.startswith('ok ')
+ spid = int(data[3:].strip())
+ assert spid == pid
+ kpid, status = os.wait()
+ assert kpid == pid
+ assert status == 0
+ print('pass')