diff options
| author | Sergey Shepelev <temotor@gmail.com> | 2016-12-22 04:35:14 +0300 |
|---|---|---|
| committer | Sergey Shepelev <temotor@gmail.com> | 2017-01-04 23:42:32 +0300 |
| commit | e4049a8a0016b28cbbdf3ab01425fc92a623e380 (patch) | |
| tree | 58d140b6e9f784e5b28a0435fb41ae8f238984af /tests/isolated/hub_fork.py | |
| parent | 461348f9a8459724be87c281eea4e0408138a82c (diff) | |
| download | eventlet-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.py | 33 |
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') |
