summaryrefslogtreecommitdiff
path: root/tests/isolated/hub_fork.py
diff options
context:
space:
mode:
authorSergey Shepelev <temotor@gmail.com>2016-12-22 04:35:14 +0300
committerSergey Shepelev <temotor@gmail.com>2017-01-04 23:42:32 +0300
commite4049a8a0016b28cbbdf3ab01425fc92a623e380 (patch)
tree58d140b6e9f784e5b28a0435fb41ae8f238984af /tests/isolated/hub_fork.py
parent461348f9a8459724be87c281eea4e0408138a82c (diff)
downloadeventlet-is-timeout.tar.gz
WIP https://github.com/eventlet/eventlet/pull/346is-timeout
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')