Xqt created this task.
Xqt added projects: Pywikibot, Pywikibot-tests.
Restricted Application added subscribers: pywikibot-bugs-list, Aklapper.

TASK DESCRIPTION
  **Steps to replicate the issue**:
  
  `pwb http_tests -v TestHttpStatus.test_server_not_found`
  
  **What happens?**:
  
    =================================== FAILURES 
===================================
    18:06:56 _____________________ TestHttpStatus.test_server_not_found 
_____________________
    18:06:56 
    18:06:56 self = <tests.http_tests.TestHttpStatus 
testMethod=test_server_not_found>
    18:06:56 
    18:06:56     def test_server_not_found(self):
    18:06:56         """Test server not found exception."""
    18:06:56         with self.assertRaisesRegex(
    18:06:56                 ConnectionError,
    18:06:56                 'Max retries exceeded with url: /w/api.php'):
    18:06:56 >           http.fetch('http://ru-sib.wikipedia.org/w/api.php',
    18:06:56                        default_error_handling=True)
    18:06:56 
    18:06:56 tests/http_tests.py:149: 
    18:06:56 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ 
    18:06:56 pywikibot/comms/http.py:453: in fetch
    18:06:56     callback(response)
    18:06:56 pywikibot/comms/http.py:338: in error_handling_callback
    18:06:56     raise response from None
    18:06:56 pywikibot/comms/http.py:444: in fetch
    18:06:56     response = session.request(method, uri,
    18:06:56 
.tox/deeptest-py39/lib/python3.9/site-packages/requests/sessions.py:587: in 
request
    18:06:56     resp = self.send(prep, **send_kwargs)
    18:06:56 
.tox/deeptest-py39/lib/python3.9/site-packages/requests/sessions.py:701: in send
    18:06:56     r = adapter.send(request, **kwargs)
    18:06:56 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ 
    18:06:56 
    18:06:56     def send(
    18:06:56         self, request, stream=False, timeout=None, verify=True, 
cert=None, proxies=None
    18:06:56     ):
    18:06:56         """Sends PreparedRequest object. Returns Response object.
    18:06:56     
    18:06:56         :param request: The :class:`PreparedRequest 
<PreparedRequest>` being sent.
    18:06:56         :param stream: (optional) Whether to stream the request 
content.
    18:06:56         :param timeout: (optional) How long to wait for the server 
to send
    18:06:56             data before giving up, as a float, or a :ref:`(connect 
timeout,
    18:06:56             read timeout) <timeouts>` tuple.
    18:06:56         :type timeout: float or tuple or urllib3 Timeout object
    18:06:56         :param verify: (optional) Either a boolean, in which case 
it controls whether
    18:06:56             we verify the server's TLS certificate, or a string, 
in which case it
    18:06:56             must be a path to a CA bundle to use
    18:06:56         :param cert: (optional) Any user-provided SSL certificate 
to be trusted.
    18:06:56         :param proxies: (optional) The proxies dictionary to apply 
to the request.
    18:06:56         :rtype: requests.Response
    18:06:56         """
    18:06:56     
    18:06:56         try:
    18:06:56             conn = self.get_connection(request.url, proxies)
    18:06:56         except LocationValueError as e:
    18:06:56             raise InvalidURL(e, request=request)
    18:06:56     
    18:06:56         self.cert_verify(conn, request.url, verify, cert)
    18:06:56         url = self.request_url(request, proxies)
    18:06:56         self.add_headers(
    18:06:56             request,
    18:06:56             stream=stream,
    18:06:56             timeout=timeout,
    18:06:56             verify=verify,
    18:06:56             cert=cert,
    18:06:56             proxies=proxies,
    18:06:56         )
    18:06:56     
    18:06:56         chunked = not (request.body is None or "Content-Length" in 
request.headers)
    18:06:56     
    18:06:56         if isinstance(timeout, tuple):
    18:06:56             try:
    18:06:56                 connect, read = timeout
    18:06:56                 timeout = TimeoutSauce(connect=connect, read=read)
    18:06:56             except ValueError:
    18:06:56                 raise ValueError(
    18:06:56                     f"Invalid timeout {timeout}. Pass a (connect, 
read) timeout tuple, "
    18:06:56                     f"or a single float to set both timeouts to 
the same value."
    18:06:56                 )
    18:06:56         elif isinstance(timeout, TimeoutSauce):
    18:06:56             pass
    18:06:56         else:
    18:06:56             timeout = TimeoutSauce(connect=timeout, read=timeout)
    18:06:56     
    18:06:56         try:
    18:06:56             resp = conn.urlopen(
    18:06:56                 method=request.method,
    18:06:56                 url=url,
    18:06:56                 body=request.body,
    18:06:56                 headers=request.headers,
    18:06:56                 redirect=False,
    18:06:56                 assert_same_host=False,
    18:06:56                 preload_content=False,
    18:06:56                 decode_content=False,
    18:06:56                 retries=self.max_retries,
    18:06:56                 timeout=timeout,
    18:06:56                 chunked=chunked,
    18:06:56             )
    18:06:56     
    18:06:56         except (ProtocolError, OSError) as err:
    18:06:56             raise ConnectionError(err, request=request)
    18:06:56     
    18:06:56         except MaxRetryError as e:
    18:06:56             if isinstance(e.reason, ConnectTimeoutError):
    18:06:56                 # TODO: Remove this in 3.0.0: see #2811
    18:06:56                 if not isinstance(e.reason, NewConnectionError):
    18:06:56                     raise ConnectTimeout(e, request=request)
    18:06:56     
    18:06:56             if isinstance(e.reason, ResponseError):
    18:06:56                 raise RetryError(e, request=request)
    18:06:56     
    18:06:56             if isinstance(e.reason, _ProxyError):
    18:06:56                 raise ProxyError(e, request=request)
    18:06:56     
    18:06:56             if isinstance(e.reason, _SSLError):
    18:06:56                 # This branch is for urllib3 v1.22 and later.
    18:06:56                 raise SSLError(e, request=request)
    18:06:56     
    18:06:56 >           raise ConnectionError(e, request=request)
    18:06:56 E           requests.exceptions.ConnectionError: 
HTTPConnectionPool(host='ru-sib.wikipedia.org', port=80): Max retries exceeded 
with url: /w/api.php (Caused by 
NameResolutionError("<urllib3.connection.HTTPConnection object at 
0x7fcdf204e910>: Failed to resolve 'ru-sib.wikipedia.org' ([Errno -2] Name or 
service not known)"))
    18:06:56 
    18:06:56 
.tox/deeptest-py39/lib/python3.9/site-packages/requests/adapters.py:519: 
ConnectionError

TASK DETAIL
  https://phabricator.wikimedia.org/T336280

EMAIL PREFERENCES
  https://phabricator.wikimedia.org/settings/panel/emailpreferences/

To: Xqt
Cc: Aklapper, pywikibot-bugs-list, Xqt, PotsdamLamb, Jyoo1011, JohnsonLee01, 
SHEKH, Dijkstra, Khutuck, Zkhalido, Viztor, Wenyi, Tbscho, MayS, Framawiki, 
Mdupont, JJMC89, Dvorapa, Altostratus, binbot, Avicennasis, mys_721tx, jayvdb, 
Masti, Alchimista
_______________________________________________
pywikibot-bugs mailing list -- pywikibot-bugs@lists.wikimedia.org
To unsubscribe send an email to pywikibot-bugs-le...@lists.wikimedia.org

Reply via email to