classification
Title: Skip test_ssl.test_connect_ex() on connection error
Type: Stage:
Components: Tests Versions: Python 3.2, Python 3.3, Python 2.7
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: BreamoreBoy, nadeem.vawda, pitrou, vstinner
Priority: normal Keywords: patch

Created on 2011-07-05 08:25 by vstinner, last changed 2015-03-18 11:01 by vstinner. This issue is now closed.

Files
File name Uploaded Description Edit
test_ssl-2.patch vstinner, 2011-07-05 12:19 review
Messages (7)
msg139833 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-07-05 08:25
======================================================================
ERROR: test_non_blocking_connect_ex (test.test_ssl.NetworkedTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\cygwin\home\db3l\buildarea\3.x.bolen-windows\build\lib\test\test_ssl.py", line 518, in test_non_blocking_connect_ex
    s.do_handshake()
  File "D:\cygwin\home\db3l\buildarea\3.x.bolen-windows\build\lib\ssl.py", line 442, in do_handshake
    self._sslobj.do_handshake()
socket.error: [Errno 10057] A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied

======================================================================
FAIL: test_connect_ex (test.test_ssl.NetworkedTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:\cygwin\home\db3l\buildarea\3.x.bolen-windows\build\lib\test\test_ssl.py", line 495, in test_connect_ex
    self.assertEqual(0, s.connect_ex(("svn.python.org", 443)))
AssertionError: 0 != 10061

http://www.python.org/dev/buildbot/all/builders/x86%20XP-4%203.x/builds/4918/steps/test/logs/stdio

WSAECONNREFUSED (10061): "Connection refused."

WSAENOTCONN (10057): "Socket is not connected."

It is obvious that transient_internet() should catch WSAECONNREFUSED, but for WSAENOTCONN, I don't understand why it happens on a SSL handshake.

Attached patch catchs both errors. We may start with only WSAECONNREFUSED, and maybe add a specific code for test_ssl?
msg139851 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2011-07-05 11:23
You don't need to add WSAECONNREFUSED, it's already there as ECONNREFUSED:

>>> errno.ECONNREFUSED
10061
>>> errno.WSAECONNREFUSED
10061

As for (WSA)ENOTCONN, I don't want to add it before knowing what happens. It may signal a programming error.
msg139854 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-07-05 11:38
> You don't need to add WSAECONNREFUSED,
> it's already there as ECONNREFUSED

Oh ok. Here is a patch for test_ssl.test_connect_ex() ignoring ECONNREFUSED error.
msg139857 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2011-07-05 11:45
> Oh ok. Here is a patch for test_ssl.test_connect_ex() ignoring ECONNREFUSED error.

IMO you also want to test for the other errnos in transient_internet.
Also, it should skip the test if the connection is refused.
msg139862 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2011-07-05 12:19
Updated patch: add support.transient_errors tuple.
msg221806 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2014-06-28 18:20
@Victor would you like to follow up with your patch?
msg238412 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2015-03-18 11:01
> @Victor would you like to follow up with your patch?

No. So I just close the issue.
History
Date User Action Args
2015-03-18 11:01:03vstinnersetstatus: open -> closed
resolution: out of date
messages: + msg238412
2014-06-28 18:20:30BreamoreBoysetnosy: + BreamoreBoy
messages: + msg221806
2012-01-25 06:41:57nadeem.vawdasetnosy: + nadeem.vawda
2011-07-05 12:20:05vstinnersettitle: support.transient_internet(): catch also Windows socket errors -> Skip test_ssl.test_connect_ex() on connection error
2011-07-05 12:19:46vstinnersetfiles: - test_ssl.patch
2011-07-05 12:19:44vstinnersetfiles: - transient_internet_windows.patch
2011-07-05 12:19:40vstinnersetfiles: + test_ssl-2.patch

messages: + msg139862
2011-07-05 11:45:14pitrousetmessages: + msg139857
2011-07-05 11:38:48vstinnersetfiles: + test_ssl.patch

messages: + msg139854
2011-07-05 11:23:38pitrousetmessages: + msg139851
2011-07-05 08:25:14vstinnercreate