diff options
| author | Sergey Shepelev <temotor@gmail.com> | 2017-01-05 05:08:38 +0300 |
|---|---|---|
| committer | Sergey Shepelev <temotor@gmail.com> | 2017-01-05 05:39:04 +0300 |
| commit | 60e54997f3bb973e408aa6d758befac1a98d60f7 (patch) | |
| tree | 5d9bb51285928949427b90100bd7256831bbb027 /tests/test__refcount.py | |
| parent | 461348f9a8459724be87c281eea4e0408138a82c (diff) | |
| download | eventlet-next.tar.gz | |
tests cleanup, CI with Python 3.6next
Diffstat (limited to 'tests/test__refcount.py')
| -rw-r--r-- | tests/test__refcount.py | 65 |
1 files changed, 29 insertions, 36 deletions
diff --git a/tests/test__refcount.py b/tests/test__refcount.py index 6ccfed7..1090a1f 100644 --- a/tests/test__refcount.py +++ b/tests/test__refcount.py @@ -2,78 +2,71 @@ are not leaked by the hub. """ import gc -from pprint import pformat +import pprint +import sys import weakref -from eventlet.support import clear_sys_exc_info +import eventlet from eventlet.green import socket -from eventlet.green.thread import start_new_thread -from eventlet.green.time import sleep - -SOCKET_TIMEOUT = 0.1 -def init_server(): - s = socket.socket() - s.settimeout(SOCKET_TIMEOUT) - s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - s.bind(('localhost', 0)) - s.listen(5) - return s, s.getsockname()[1] +SOCKET_TIMEOUT = 0.1 def handle_request(s, raise_on_timeout): try: conn, address = s.accept() except socket.timeout: + print('handle_request: server accept timeout') if raise_on_timeout: raise else: return - # print('handle_request - accepted') + print('handle_request: accepted') res = conn.recv(100) assert res == b'hello', repr(res) - # print('handle_request - recvd %r' % res) - res = conn.send(b'bye') - # print('handle_request - sent %r' % res) - # print('handle_request - conn refcount: %s' % sys.getrefcount(conn)) - # conn.close() + # print('handle_request: recvd %r' % res) + res = conn.sendall(b'bye') + # print('handle_request: sent %r' % res) + # print('handle_request: conn refcount: %s' % sys.getrefcount(conn)) -def make_request(port): +def make_request(addr): # print('make_request') - s = socket.socket() - s.connect(('localhost', port)) + s = eventlet.connect(addr) # print('make_request - connected') - res = s.send(b'hello') + res = s.sendall(b'hello') # print('make_request - sent %s' % res) res = s.recv(100) assert res == b'bye', repr(res) # print('make_request - recvd %r' % res) - # s.close() def run_interaction(run_client): - s, port = init_server() - start_new_thread(handle_request, (s, run_client)) + s = eventlet.listen(('127.0.0.1', 0)) + s.settimeout(SOCKET_TIMEOUT) + addr = s.getsockname() + print('run_interaction: addr:', addr) + eventlet.spawn(handle_request, s, run_client) if run_client: - start_new_thread(make_request, (port,)) - sleep(0.1 + SOCKET_TIMEOUT) - # print(sys.getrefcount(s.fd)) - # s.close() + eventlet.spawn(make_request, addr) + eventlet.sleep(0.1 + SOCKET_TIMEOUT) + print('run_interaction: refcount(s.fd)', sys.getrefcount(s.fd)) return weakref.ref(s.fd) def run_and_check(run_client): w = run_interaction(run_client=run_client) - clear_sys_exc_info() + # clear_sys_exc_info() gc.collect() - if w(): - print(pformat(gc.get_referrers(w()))) - for x in gc.get_referrers(w()): - print(pformat(x)) + fd = w() + print('run_and_check: weakref fd:', fd) + if fd: + print(pprint.pformat(gc.get_referrers(fd))) + for x in gc.get_referrers(fd): + print(pprint.pformat(x)) for y in gc.get_referrers(x): - print('- {0}'.format(pformat(y))) + print('- {0}'.format(pprint.pformat(y))) raise AssertionError('server should be dead by now') |
