aboutsummaryrefslogtreecommitdiff
path: root/test/test_connectionpool.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_connectionpool.py')
-rw-r--r--test/test_connectionpool.py45
1 files changed, 32 insertions, 13 deletions
diff --git a/test/test_connectionpool.py b/test/test_connectionpool.py
index afc3098..a7e104a 100644
--- a/test/test_connectionpool.py
+++ b/test/test_connectionpool.py
@@ -11,7 +11,7 @@ from urllib3.exceptions import (
TimeoutError,
)
-from socket import timeout as SocketTimeout
+from socket import error as SocketError, timeout as SocketTimeout
from ssl import SSLError as BaseSSLError
try: # Python 3
@@ -23,6 +23,10 @@ except ImportError:
class TestConnectionPool(unittest.TestCase):
+ """
+ Tests in this suite should exercise the ConnectionPool functionality
+ without actually making any network requests or connections.
+ """
def test_same_host(self):
same_host = [
('http://google.com/', '/'),
@@ -86,6 +90,24 @@ class TestConnectionPool(unittest.TestCase):
str(EmptyPoolError(HTTPConnectionPool(host='localhost'), "Test.")),
"HTTPConnectionPool(host='localhost', port=None): Test.")
+ def test_retry_exception_str(self):
+ self.assertEqual(
+ str(MaxRetryError(
+ HTTPConnectionPool(host='localhost'), "Test.", None)),
+ "HTTPConnectionPool(host='localhost', port=None): "
+ "Max retries exceeded with url: Test. (Caused by redirect)")
+
+ err = SocketError("Test")
+
+ # using err.__class__ here, as socket.error is an alias for OSError
+ # since Py3.3 and gets printed as this
+ self.assertEqual(
+ str(MaxRetryError(
+ HTTPConnectionPool(host='localhost'), "Test.", err)),
+ "HTTPConnectionPool(host='localhost', port=None): "
+ "Max retries exceeded with url: Test. "
+ "(Caused by {0}: Test)".format(str(err.__class__)))
+
def test_pool_size(self):
POOL_SIZE = 1
pool = HTTPConnectionPool(host='localhost', maxsize=POOL_SIZE, block=True)
@@ -95,8 +117,7 @@ class TestConnectionPool(unittest.TestCase):
def _test(exception, expect):
pool._make_request = lambda *args, **kwargs: _raise(exception)
- with self.assertRaises(expect):
- pool.request('GET', '/')
+ self.assertRaises(expect, pool.request, 'GET', '/')
self.assertEqual(pool.pool.qsize(), POOL_SIZE)
@@ -111,15 +132,15 @@ class TestConnectionPool(unittest.TestCase):
# MaxRetryError, not EmptyPoolError
# See: https://github.com/shazow/urllib3/issues/76
pool._make_request = lambda *args, **kwargs: _raise(HTTPException)
- with self.assertRaises(MaxRetryError):
- pool.request('GET', '/', retries=1, pool_timeout=0.01)
+ self.assertRaises(MaxRetryError, pool.request,
+ 'GET', '/', retries=1, pool_timeout=0.01)
self.assertEqual(pool.pool.qsize(), POOL_SIZE)
def test_assert_same_host(self):
c = connection_from_url('http://google.com:80')
- with self.assertRaises(HostChangedError):
- c.request('GET', 'http://yahoo.com:80', assert_same_host=True)
+ self.assertRaises(HostChangedError, c.request,
+ 'GET', 'http://yahoo.com:80', assert_same_host=True)
def test_pool_close(self):
pool = connection_from_url('http://google.com:80')
@@ -136,16 +157,14 @@ class TestConnectionPool(unittest.TestCase):
pool.close()
self.assertEqual(pool.pool, None)
- with self.assertRaises(ClosedPoolError):
- pool._get_conn()
+ self.assertRaises(ClosedPoolError, pool._get_conn)
pool._put_conn(conn3)
- with self.assertRaises(ClosedPoolError):
- pool._get_conn()
+ self.assertRaises(ClosedPoolError, pool._get_conn)
+
+ self.assertRaises(Empty, old_pool_queue.get, block=False)
- with self.assertRaises(Empty):
- old_pool_queue.get(block=False)
if __name__ == '__main__':