summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Shepelev <temotor@gmail.com>2016-06-01 13:42:48 +0500
committerSergey Shepelev <temotor@gmail.com>2016-06-01 16:02:17 +0500
commit204a4c330db5742b9b37a0173c524c84d0816579 (patch)
tree8d2aacfce084ef9c816767b0064233ee6384c45f
parent752a4a84abda8eaf44d7c7999aba912731dc1190 (diff)
downloadeventlet-qwe123.tar.gz
tests: clean out unittest.main()qwe123
-rw-r--r--eventlet/wsgi.py5
-rw-r--r--tests/semaphore_test.py5
-rw-r--r--tests/test__event.py5
-rw-r--r--tests/test__greenness.py31
-rw-r--r--tests/test__refcount.py5
-rw-r--r--tests/test__socket_errors.py4
-rw-r--r--tests/wsgi_test.py41
7 files changed, 52 insertions, 44 deletions
diff --git a/eventlet/wsgi.py b/eventlet/wsgi.py
index 9d02d12..db44ef6 100644
--- a/eventlet/wsgi.py
+++ b/eventlet/wsgi.py
@@ -627,14 +627,18 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
return env
def finish(self):
+ print('http.finish')
try:
BaseHTTPServer.BaseHTTPRequestHandler.finish(self)
except socket.error as e:
+ print('http.finish error: '+str(e))
# Broken pipe, connection reset by peer
if support.get_errno(e) not in BROKEN_SOCK:
raise
+ print('http.finish attempt shutdown+close')
greenio.shutdown_safe(self.connection)
self.connection.close()
+ print('http.finish end shutdown+close')
def handle_expect_100(self):
return True
@@ -718,6 +722,7 @@ class Server(BaseHTTPServer.HTTPServer):
try:
proto.__init__(sock, address, self)
except socket.timeout:
+ print('socket.timeout')
# Expected exceptions are not exceptional
sock.close()
# similar to logging "accepted" in server()
diff --git a/tests/semaphore_test.py b/tests/semaphore_test.py
index 53a81f0..daf83f6 100644
--- a/tests/semaphore_test.py
+++ b/tests/semaphore_test.py
@@ -1,5 +1,4 @@
import time
-import unittest
import eventlet
from eventlet import semaphore
@@ -62,7 +61,3 @@ def test_semaphore_contention():
t2.kill()
assert abs(counts[0] - counts[1]) < int(min(counts) * 0.1), counts
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/tests/test__event.py b/tests/test__event.py
index 065e13b..17c709e 100644
--- a/tests/test__event.py
+++ b/tests/test__event.py
@@ -1,4 +1,3 @@
-import unittest
from eventlet import spawn, sleep, with_timeout
from eventlet.event import Event
import eventlet
@@ -39,7 +38,3 @@ class TestEvent(LimitedTestCase):
X = object()
result = with_timeout(DELAY, event2.wait, timeout_value=X)
assert result is X, 'Nobody sent anything to event2 yet it received %r' % (result, )
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/tests/test__greenness.py b/tests/test__greenness.py
index a594b4d..37a77d7 100644
--- a/tests/test__greenness.py
+++ b/tests/test__greenness.py
@@ -2,10 +2,8 @@
To do that spawn a green server and then access it using a green socket.
If either operation blocked the whole script would block and timeout.
"""
-import unittest
-
+import eventlet
from eventlet.green import BaseHTTPServer
-from eventlet import spawn, kill
from eventlet.support import six
if six.PY2:
@@ -34,27 +32,20 @@ def start_http_server():
# the send() for the response blocks (or at least appeared to be)
httpd.request_count += 1
httpd.handle_request()
- return spawn(serve), httpd, sa[1]
-
+ return eventlet.spawn(serve), httpd, sa[1]
-class TestGreenness(unittest.TestCase):
- def setUp(self):
- self.gthread, self.server, self.port = start_http_server()
- # print('Spawned the server')
+def test_urllib():
+ gthread, server, port = start_http_server()
- def tearDown(self):
- self.server.server_close()
- kill(self.gthread)
-
- def test_urllib(self):
- self.assertEqual(self.server.request_count, 0)
+ try:
+ assert server.request_count == 0
try:
- urlopen('http://127.0.0.1:%s' % self.port)
+ urlopen('http://127.0.0.1:{0}'.format(port))
assert False, 'should not get there'
except HTTPError as ex:
assert ex.code == 501, repr(ex)
- self.assertEqual(self.server.request_count, 1)
-
-if __name__ == '__main__':
- unittest.main()
+ assert server.request_count == 1
+ finally:
+ server.server_close()
+ eventlet.kill(gthread)
diff --git a/tests/test__refcount.py b/tests/test__refcount.py
index d38cf86..6ccfed7 100644
--- a/tests/test__refcount.py
+++ b/tests/test__refcount.py
@@ -3,7 +3,6 @@ are not leaked by the hub.
"""
import gc
from pprint import pformat
-import unittest
import weakref
from eventlet.support import clear_sys_exc_info
@@ -86,7 +85,3 @@ def test_clean_exit():
def test_timeout_exit():
run_and_check(False)
run_and_check(False)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/tests/test__socket_errors.py b/tests/test__socket_errors.py
index 21fab40..c33b227 100644
--- a/tests/test__socket_errors.py
+++ b/tests/test__socket_errors.py
@@ -60,7 +60,3 @@ def test_create_connection_refused():
except socket.error as ex:
errno = ex.errno
assert errno in [111, 61, 10061], 'Expected socket.error ECONNREFUSED, got {0}'.format(errno)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/tests/wsgi_test.py b/tests/wsgi_test.py
index 6b3c251..de6e7c7 100644
--- a/tests/wsgi_test.py
+++ b/tests/wsgi_test.py
@@ -8,7 +8,6 @@ import socket
import sys
import tempfile
import traceback
-import unittest
import eventlet
from eventlet import debug
@@ -1528,6 +1527,42 @@ class TestHttpd(_TestBase):
assert result.status == 'HTTP/1.1 200 OK'
assert result.body == b'Host: localhost\nx-ANY_k: one\nx-ANY_k: two'
+ def test_chunked_timeout(self):
+ assert len(open_fds()) == 0
+
+ def app(env, start_response):
+ start_response('200 OK', [('Content-type', 'text/plain')])
+ line = b'a' * (1 << 20)
+ for _ in range(10):
+ yield line
+ eventlet.sleep(0.1)
+
+ pool = eventlet.GreenPool()
+ self.spawn_server(site=app, socket_timeout=0.1, custom_pool=pool)
+ eventlet.sleep(0)
+ assert len(open_fds()) == 1
+ sock = eventlet.connect(self.server_addr)
+ sock.sendall(b'GET / HTTP/1.1\r\nHost: localhost\r\n\r\n')
+ assert len(open_fds()) == 2, repr(open_fds())
+ status, headers = read_headers(sock)
+ assert headers['transfer-encoding'] == 'chunked'
+ sock.recv(1)
+ eventlet.sleep(0.3)
+ pool.waitall()
+ eventlet.sleep(0)
+ assert len(open_fds()) == 1
+
+
+def open_fds():
+ hub = eventlet.hubs.get_hub()
+ fds = (
+ frozenset(hub.listeners[hub.READ])
+ | frozenset(hub.listeners[hub.WRITE])
+ | frozenset(hub.secondaries[hub.READ])
+ | frozenset(hub.secondaries[hub.WRITE])
+ )
+ return fds
+
def read_headers(sock):
fd = sock.makefile('rb')
@@ -1787,7 +1822,3 @@ class TestChunkedInput(_TestBase):
signal.signal(signal.SIGALRM, signal.SIG_DFL)
assert not got_signal, "caught alarm signal. infinite loop detected."
-
-
-if __name__ == '__main__':
- unittest.main()