diff options
author | Daniele Tricoli <eriol@mornie.org> | 2015-10-09 23:19:30 +0200 |
---|---|---|
committer | Daniele Tricoli <eriol@mornie.org> | 2015-10-09 23:19:30 +0200 |
commit | cd2a4010a9e1356c36cfb42b57501343c29e2608 (patch) | |
tree | 81af3946a53bb27e34e85eb28035ace8c3e7b27e /dummyserver/testcase.py | |
parent | ebc01af6ebb87c1e27e50b4ea572b8c1a20e70b0 (diff) | |
parent | 7db0aa9b18e70f43ef0bfcdec7f223e5b681aaf0 (diff) | |
download | python-urllib3-cd2a4010a9e1356c36cfb42b57501343c29e2608.tar python-urllib3-cd2a4010a9e1356c36cfb42b57501343c29e2608.tar.gz |
merge patched into master
Diffstat (limited to 'dummyserver/testcase.py')
-rw-r--r-- | dummyserver/testcase.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/dummyserver/testcase.py b/dummyserver/testcase.py index de6aedd..e5ae51b 100644 --- a/dummyserver/testcase.py +++ b/dummyserver/testcase.py @@ -14,6 +14,11 @@ from dummyserver.handlers import TestingApp from dummyserver.proxy import ProxyHandler +def consume_socket(sock, chunks=65536): + while not sock.recv(chunks).endswith(b'\r\n\r\n'): + pass + + class SocketDummyServerTestCase(unittest.TestCase): """ A simple socket-based server is created for this class that is good for @@ -35,6 +40,32 @@ class SocketDummyServerTestCase(unittest.TestCase): cls.port = cls.server_thread.port @classmethod + def start_response_handler(cls, response, num=1, block_send=None): + ready_event = threading.Event() + def socket_handler(listener): + for _ in range(num): + ready_event.set() + ready_event.clear() + + sock = listener.accept()[0] + consume_socket(sock) + if block_send: + block_send.wait() + block_send.clear() + sock.send(response) + sock.close() + + cls._start_server(socket_handler) + return ready_event + + @classmethod + def start_basic_handler(cls, **kw): + return cls.start_response_handler( + b'HTTP/1.1 200 OK\r\n' + b'Content-Length: 0\r\n' + b'\r\n', **kw) + + @classmethod def tearDownClass(cls): if hasattr(cls, 'server_thread'): cls.server_thread.join(0.1) |