summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Janssen <janssen@parc.com>2007-09-10 23:41:24 +0000
committerBill Janssen <janssen@parc.com>2007-09-10 23:41:24 +0000
commit119c7a623a2a246d02168520c3a224b7b191673a (patch)
treed7814ba24eece8fcd495f497476aed41c7de8320
parentb55911378fb34df08cd303895ef212e2a86d6606 (diff)
downloadcpython-git-119c7a623a2a246d02168520c3a224b7b191673a.tar.gz
A better way of finding an open port to test with.
-rw-r--r--Lib/test/test_ssl.py29
1 files changed, 26 insertions, 3 deletions
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 7eedbdc8ac..8254c40744 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -381,9 +381,11 @@ else:
# to let the main thread know the socket is gone.
def listener():
s = socket.socket()
+ if hasattr(socket, 'SO_REUSEADDR'):
+ s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if hasattr(socket, 'SO_REUSEPORT'):
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
- port = test_support.bind_port(s, 'localhost', TESTPORT)
+ port = test_support.bind_port(s, '127.0.0.1', TESTPORT)
s.listen(5)
listener_ready.set()
s.accept()
@@ -393,7 +395,7 @@ else:
def connector():
listener_ready.wait()
s = socket.socket()
- s.connect(('localhost', TESTPORT))
+ s.connect(('127.0.0.1', TESTPORT))
listener_gone.wait()
try:
ssl_sock = ssl.wrap_socket(s)
@@ -668,15 +670,36 @@ def create_cert_files(hostname=None):
return d, crtfile
+def findtestsocket(start, end):
+ def testbind(i):
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ try:
+ s.bind(("127.0.0.1", i))
+ except:
+ return 0
+ else:
+ return 1
+ finally:
+ s.close()
+
+ for i in range(start, end):
+ if testbind(i) and testbind(i+1):
+ return i
+ return 0
+
+
def test_main(verbose=False):
if skip_expected:
raise test_support.TestSkipped("No SSL support")
- global CERTFILE
+ global CERTFILE, TESTPORT
CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
"keycert.pem")
if (not os.path.exists(CERTFILE)):
raise test_support.TestFailed("Can't read certificate files!")
+ TESTPORT = findtestsocket(10025, 12000)
+ if not TESTPORT:
+ raise test_support.TestFailed("Can't find open port to test servers on!")
tests = [BasicTests]