def test_cleanup_on_extreme_connection_error(self): """ This test validates that we clean up properly even on exceptions that we'd not otherwise catch, i.e. those that inherit from BaseException like KeyboardInterrupt or gevent.Timeout. See #805 for more details. """ class RealBad(BaseException): pass def kaboom(*args, **kwargs): raise RealBad() with connection_from_url('http://localhost:80') as c: c._make_request = kaboom initial_pool_size = c.pool.qsize() try: # We need to release_conn this way or we'd put it away # regardless. c.urlopen('GET', '/', release_conn=False) except RealBad: pass new_pool_size = c.pool.qsize() assert initial_pool_size == new_pool_size
def test_pool_close(self): pool = connection_from_url('http://google.com:80') # Populate with some connections conn1 = pool._get_conn() conn2 = pool._get_conn() conn3 = pool._get_conn() pool._put_conn(conn1) pool._put_conn(conn2) old_pool_queue = pool.pool pool.close() assert pool.pool is None with pytest.raises(ClosedPoolError): pool._get_conn() pool._put_conn(conn3) with pytest.raises(ClosedPoolError): pool._get_conn() with pytest.raises(Empty): old_pool_queue.get(block=False)
def test_pool_close_twice(self): pool = connection_from_url('http://google.com:80') # Populate with some connections conn1 = pool._get_conn() conn2 = pool._get_conn() pool._put_conn(conn1) pool._put_conn(conn2) pool.close() assert pool.pool is None try: pool.close() except AttributeError: pytest.fail( "Pool of the ConnectionPool is None and has no attribute get.")
def test_not_same_host(self, a, b): with connection_from_url(a) as c: assert not c.is_same_host(b) with connection_from_url(b) as c: assert not c.is_same_host(a)
def test_ca_certs_default_cert_required(self): with connection_from_url('https://google.com:80', ca_certs=DEFAULT_CA) as pool: assert pool.ssl_context.verify_mode == CERT_REQUIRED
def test_absolute_url(self): with connection_from_url('http://google.com:80') as c: assert 'http://google.com:80/path?query=foo' == c._absolute_url( 'path?query=foo')