Exemplo n.º 1
0
    def test_https_connect_timeout(self):
        url = '/'
        host, port = self.host, self.port
        timeout = Timeout(connect=SHORT_TIMEOUT)

        # Pool-global timeout
        pool = HTTPSConnectionPool(host, port, timeout=timeout)
        conn = pool._get_conn()
        exc = ReadTimeoutError  # Until we fix it to be ConnectTimeoutError
        pos = 0  # Will be 1 once we fix ConnectTimeoutError
        with self.assertRaises(exc) as cmgr:
            pool._make_request(conn, 'GET', url)
        self.assertEqual(cmgr.exception.args[pos].split()[-1],
                         'timeout=%s)' % timeout.connect_timeout)

        # Retries
        retries = Retry(connect=0)
        self.assertRaises(MaxRetryError,
                          pool.request,
                          'GET',
                          url,
                          retries=retries,
                          timeout=timeout)

        # Request-specific connection timeouts
        timeout2 = Timeout(read=LONG_TIMEOUT, connect=SHORT_TIMEOUT / 100)
        pool = HTTPSConnectionPool(host, port, timeout=timeout2, retries=False)
        conn = pool._get_conn()
        with self.assertRaises(exc) as cmgr:
            pool._make_request(conn, 'GET', url, timeout=timeout2)
        self.assertEqual(cmgr.exception.args[pos].split()[-1],
                         'timeout=%s)' % timeout2.connect_timeout)

        pool._put_conn(conn)
        timeout = Timeout(connect=SHORT_TIMEOUT)
        with self.assertRaises(exc) as cmgr:
            pool.request('GET', url, timeout=timeout)
        self.assertEqual(cmgr.exception.args[pos].split()[-1],
                         'timeout=%s)' % timeout.connect_timeout)