diff options
author | Bill Janssen <janssen@parc.com> | 2007-09-10 23:41:24 +0000 |
---|---|---|
committer | Bill Janssen <janssen@parc.com> | 2007-09-10 23:41:24 +0000 |
commit | 119c7a623a2a246d02168520c3a224b7b191673a (patch) | |
tree | d7814ba24eece8fcd495f497476aed41c7de8320 | |
parent | b55911378fb34df08cd303895ef212e2a86d6606 (diff) | |
download | cpython-git-119c7a623a2a246d02168520c3a224b7b191673a.tar.gz |
A better way of finding an open port to test with.
-rw-r--r-- | Lib/test/test_ssl.py | 29 |
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] |