Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_ssl.py @ 67467:abe201dfd3dc 3.1
Merged revisions 87861,87863 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r87861 | antoine.pitrou | 2011-01-08 11:23:29 +0100 (sam., 08 janv. 2011) | 3 lines
Fix test_ssl after r87849
........
r87863 | antoine.pitrou | 2011-01-08 11:28:11 +0100 (sam., 08 janv. 2011) | 3 lines
Add EHOSTUNREACH ('No route to host') to the errnos trapped by transient_internet().
........
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Sat, 08 Jan 2011 10:31:09 +0000 |
| parents | 9bead909d8ef |
| children | b7abf0590e1c 3c9232a684ae |
| rev | line source |
|---|---|
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1 # Test the support for SSL and sockets |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
2 |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
3 import sys |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
4 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
5 from test import support |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
6 import socket |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
7 import select |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
8 import errno |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
9 import subprocess |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
10 import time |
|
60911
95c5e094b380
Merged revisions 80429 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60908
diff
changeset
|
11 import gc |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
12 import os |
|
60911
95c5e094b380
Merged revisions 80429 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60908
diff
changeset
|
13 import errno |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
14 import pprint |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
15 import urllib.parse, urllib.request |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
16 import shutil |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
17 import traceback |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
18 import asyncore |
|
60908
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
19 import weakref |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
20 |
|
47318
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
21 from http.server import HTTPServer, SimpleHTTPRequestHandler |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
22 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
23 # Optionally test SSL support, if we have it in the tested platform |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
24 skip_expected = False |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
25 try: |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
26 import ssl |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
27 except ImportError: |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
28 skip_expected = True |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
29 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
30 HOST = support.HOST |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
31 CERTFILE = None |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
32 SVN_PYTHON_ORG_ROOT_CERT = None |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
33 |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
34 def handle_error(prefix): |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
35 exc_format = ' '.join(traceback.format_exception(*sys.exc_info())) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
36 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
37 sys.stdout.write(prefix + exc_format) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
38 |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
39 |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
40 class BasicTests(unittest.TestCase): |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
41 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
42 def test_constants(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
43 ssl.PROTOCOL_SSLv2 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
44 ssl.PROTOCOL_SSLv23 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
45 ssl.PROTOCOL_SSLv3 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
46 ssl.PROTOCOL_TLSv1 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
47 ssl.CERT_NONE |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
48 ssl.CERT_OPTIONAL |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
49 ssl.CERT_REQUIRED |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
50 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
51 def test_random(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
52 v = ssl.RAND_status() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
53 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
54 sys.stdout.write("\n RAND_status is %d (%s)\n" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
55 % (v, (v and "sufficient randomness") or |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
56 "insufficient randomness")) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
57 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
58 ssl.RAND_egd(1) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
59 except TypeError: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
60 pass |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
61 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
62 print("didn't raise TypeError") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
63 ssl.RAND_add("this is a random string", 75.0) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
64 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
65 def test_parse_cert(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
66 # note that this uses an 'unofficial' function in _ssl.c, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
67 # provided solely for this test, to exercise the certificate |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
68 # parsing code |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
69 p = ssl._ssl._test_decode_cert(CERTFILE, False) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
70 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
71 sys.stdout.write("\n" + pprint.pformat(p) + "\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
72 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
73 def test_DER_to_PEM(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
74 with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
75 pem = f.read() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
76 d1 = ssl.PEM_cert_to_DER_cert(pem) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
77 p2 = ssl.DER_cert_to_PEM_cert(d1) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
78 d2 = ssl.PEM_cert_to_DER_cert(p2) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
79 self.assertEqual(d1, d2) |
|
61035
827920c546af
Merged revisions 80559 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61012
diff
changeset
|
80 if not p2.startswith(ssl.PEM_HEADER + '\n'): |
|
827920c546af
Merged revisions 80559 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61012
diff
changeset
|
81 self.fail("DER-to-PEM didn't include correct header:\n%r\n" % p2) |
|
827920c546af
Merged revisions 80559 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61012
diff
changeset
|
82 if not p2.endswith('\n' + ssl.PEM_FOOTER + '\n'): |
|
827920c546af
Merged revisions 80559 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61012
diff
changeset
|
83 self.fail("DER-to-PEM didn't include correct footer:\n%r\n" % p2) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
84 |
|
60908
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
85 @support.cpython_only |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
86 def test_refcycle(self): |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
87 # Issue #7943: an SSL object doesn't create reference cycles with |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
88 # itself. |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
89 s = socket.socket(socket.AF_INET) |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
90 ss = ssl.wrap_socket(s) |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
91 wr = weakref.ref(ss) |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
92 del ss |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
93 self.assertEqual(wr(), None) |
|
54e5ab29b30b
Merged revisions 80426 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60873
diff
changeset
|
94 |
|
64743
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
95 def test_wrapped_unconnected(self): |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
96 # Methods on an unconnected SSLSocket propagate the original |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
97 # socket.error raise by the underlying socket object. |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
98 s = socket.socket(socket.AF_INET) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
99 ss = ssl.wrap_socket(s) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
100 self.assertRaises(socket.error, ss.recv, 1) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
101 self.assertRaises(socket.error, ss.recv_into, bytearray(b'x')) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
102 self.assertRaises(socket.error, ss.recvfrom, 1) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
103 self.assertRaises(socket.error, ss.recvfrom_into, bytearray(b'x'), 1) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
104 self.assertRaises(socket.error, ss.send, b'x') |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
105 self.assertRaises(socket.error, ss.sendto, b'x', ('0.0.0.0', 0)) |
|
80d1c7734df2
Merged revisions 84807 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64586
diff
changeset
|
106 |
|
60938
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
107 def test_timeout(self): |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
108 # Issue #8524: when creating an SSL socket, the timeout of the |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
109 # original socket should be retained. |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
110 for timeout in (None, 0.0, 5.0): |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
111 s = socket.socket(socket.AF_INET) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
112 s.settimeout(timeout) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
113 ss = ssl.wrap_socket(s) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
114 self.assertEqual(timeout, ss.gettimeout()) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
115 |
|
60911
95c5e094b380
Merged revisions 80429 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60908
diff
changeset
|
116 |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
117 class NetworkedTests(unittest.TestCase): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
118 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
119 def test_connect(self): |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
120 with support.transient_internet("svn.python.org"): |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
121 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
122 cert_reqs=ssl.CERT_NONE) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
123 s.connect(("svn.python.org", 443)) |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
124 c = s.getpeercert() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
125 if c: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
126 self.fail("Peer cert %s shouldn't be here!") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
127 s.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
128 |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
129 # this should fail because we have no verification certs |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
130 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
131 cert_reqs=ssl.CERT_REQUIRED) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
132 try: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
133 s.connect(("svn.python.org", 443)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
134 except ssl.SSLError: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
135 pass |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
136 finally: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
137 s.close() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
138 |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
139 # this should succeed because we specify the root cert |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
140 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
141 cert_reqs=ssl.CERT_REQUIRED, |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
142 ca_certs=SVN_PYTHON_ORG_ROOT_CERT) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
143 try: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
144 s.connect(("svn.python.org", 443)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
145 finally: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
146 s.close() |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
147 |
|
60918
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
148 @unittest.skipIf(os.name == "nt", "Can't use a socket as a file under Windows") |
|
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
149 def test_makefile_close(self): |
|
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
150 # Issue #5238: creating a file-like object with makefile() shouldn't |
|
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
151 # delay closing the underlying "real socket" (here tested with its |
|
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
152 # file descriptor, hence skipping the test under Windows). |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
153 with support.transient_internet("svn.python.org"): |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
154 ss = ssl.wrap_socket(socket.socket(socket.AF_INET)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
155 ss.connect(("svn.python.org", 443)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
156 fd = ss.fileno() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
157 f = ss.makefile() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
158 f.close() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
159 # The fd is still open |
|
60918
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
160 os.read(fd, 0) |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
161 # Closing the SSL socket should close the fd too |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
162 ss.close() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
163 gc.collect() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
164 try: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
165 os.read(fd, 0) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
166 except OSError as e: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
167 self.assertEqual(e.errno, errno.EBADF) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
168 else: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
169 self.fail("OSError wasn't raised") |
|
60918
d81eff118d81
Merged revisions 80436 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60911
diff
changeset
|
170 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
171 def test_non_blocking_handshake(self): |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
172 with support.transient_internet("svn.python.org"): |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
173 s = socket.socket(socket.AF_INET) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
174 s.connect(("svn.python.org", 443)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
175 s.setblocking(False) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
176 s = ssl.wrap_socket(s, |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
177 cert_reqs=ssl.CERT_NONE, |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
178 do_handshake_on_connect=False) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
179 count = 0 |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
180 while True: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
181 try: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
182 count += 1 |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
183 s.do_handshake() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
184 break |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
185 except ssl.SSLError as err: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
186 if err.args[0] == ssl.SSL_ERROR_WANT_READ: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
187 select.select([s], [], []) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
188 elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
189 select.select([], [s], []) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
190 else: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
191 raise |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
192 s.close() |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
193 if support.verbose: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
194 sys.stdout.write("\nNeeded %d calls to do_handshake() to establish session.\n" % count) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
195 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
196 def test_get_server_certificate(self): |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
197 with support.transient_internet("svn.python.org"): |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
198 pem = ssl.get_server_certificate(("svn.python.org", 443)) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
199 if not pem: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
200 self.fail("No server certificate on svn.python.org:443!") |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
201 |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
202 try: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
203 pem = ssl.get_server_certificate(("svn.python.org", 443), ca_certs=CERTFILE) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
204 except ssl.SSLError as x: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
205 #should fail |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
206 if support.verbose: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
207 sys.stdout.write("%s\n" % x) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
208 else: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
209 self.fail("Got server certificate %s for svn.python.org!" % pem) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
210 |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
211 pem = ssl.get_server_certificate(("svn.python.org", 443), ca_certs=SVN_PYTHON_ORG_ROOT_CERT) |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
212 if not pem: |
|
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
213 self.fail("No server certificate on svn.python.org:443!") |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
214 if support.verbose: |
|
64586
a51f467f5e1e
Merged revisions 84650 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
215 sys.stdout.write("\nVerified certificate for svn.python.org:443 is\n%s\n" % pem) |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
216 |
|
60873
c4b53433735a
Little fix in test comment
Antoine Pitrou <solipsis@pitrou.net>
parents:
60872
diff
changeset
|
217 # Test disabled: OPENSSL_VERSION* not available in Python 3.1 |
|
60818
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
218 def test_algorithms(self): |
|
60872
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
219 if support.verbose: |
|
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
220 sys.stdout.write("test_algorithms disabled, " |
|
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
221 "as it fails on some old OpenSSL versions") |
|
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
222 return |
|
60818
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
223 # Issue #8484: all algorithms should be available when verifying a |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
224 # certificate. |
|
60872
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
225 # SHA256 was added in OpenSSL 0.9.8 |
|
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
226 if ssl.OPENSSL_VERSION_INFO < (0, 9, 8, 0, 15): |
|
4b7f3ae22c8f
Merged revisions 80379 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60818
diff
changeset
|
227 self.skipTest("SHA256 not available on %r" % ssl.OPENSSL_VERSION) |
|
60818
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
228 # NOTE: https://sha256.tbs-internet.com is another possible test host |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
229 remote = ("sha2.hboeck.de", 443) |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
230 sha256_cert = os.path.join(os.path.dirname(__file__), "sha256.pem") |
|
67467
abe201dfd3dc
Merged revisions 87861,87863 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66475
diff
changeset
|
231 with support.transient_internet("sha256.tbs-internet.com"): |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64006
diff
changeset
|
232 s = ssl.wrap_socket(socket.socket(socket.AF_INET), |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64006
diff
changeset
|
233 cert_reqs=ssl.CERT_REQUIRED, |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64006
diff
changeset
|
234 ca_certs=sha256_cert,) |
|
60818
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
235 try: |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
236 s.connect(remote) |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
237 if support.verbose: |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
238 sys.stdout.write("\nCipher with %r is %r\n" % |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
239 (remote, s.cipher())) |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
240 sys.stdout.write("Certificate is:\n%s\n" % |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
241 pprint.pformat(s.getpeercert())) |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
242 finally: |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
243 s.close() |
|
a0b8af1be560
Merged revisions 80317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
244 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
245 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
246 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
247 import threading |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
248 except ImportError: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
249 _have_threads = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
250 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
251 _have_threads = True |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
252 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
253 class ThreadedEchoServer(threading.Thread): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
254 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
255 class ConnectionHandler(threading.Thread): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
256 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
257 """A mildly complicated class, because we want it to work both |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
258 with and without the SSL wrapper around the socket connection, so |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
259 that we can test the STARTTLS functionality.""" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
260 |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
261 def __init__(self, server, connsock, addr): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
262 self.server = server |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
263 self.running = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
264 self.sock = connsock |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
265 self.addr = addr |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
266 self.sock.setblocking(1) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
267 self.sslconn = None |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
268 threading.Thread.__init__(self) |
|
48754
2bac0d421929
Merged revisions 65829 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48681
diff
changeset
|
269 self.daemon = True |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
270 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
271 def wrap_conn(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
272 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
273 self.sslconn = ssl.wrap_socket(self.sock, server_side=True, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
274 certfile=self.server.certificate, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
275 ssl_version=self.server.protocol, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
276 ca_certs=self.server.cacerts, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
277 cert_reqs=self.server.certreqs) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
278 except ssl.SSLError: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
279 # XXX Various errors can have happened here, for example |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
280 # a mismatching protocol version, an invalid certificate, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
281 # or a low-level bug. This should be made more discriminating. |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
282 if self.server.chatty: |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
283 handle_error("\n server: bad connection attempt from " + repr(self.addr) + ":\n") |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
284 self.running = False |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
285 self.server.stop() |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
286 self.close() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
287 return False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
288 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
289 if self.server.certreqs == ssl.CERT_REQUIRED: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
290 cert = self.sslconn.getpeercert() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
291 if support.verbose and self.server.chatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
292 sys.stdout.write(" client cert is " + pprint.pformat(cert) + "\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
293 cert_binary = self.sslconn.getpeercert(True) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
294 if support.verbose and self.server.chatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
295 sys.stdout.write(" cert binary is " + str(len(cert_binary)) + " bytes\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
296 cipher = self.sslconn.cipher() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
297 if support.verbose and self.server.chatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
298 sys.stdout.write(" server: connection cipher is now " + str(cipher) + "\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
299 return True |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
300 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
301 def read(self): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
302 if self.sslconn: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
303 return self.sslconn.read() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
304 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
305 return self.sock.recv(1024) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
306 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
307 def write(self, bytes): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
308 if self.sslconn: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
309 return self.sslconn.write(bytes) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
310 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
311 return self.sock.send(bytes) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
312 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
313 def close(self): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
314 if self.sslconn: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
315 self.sslconn.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
316 else: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
317 self.sock.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
318 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
319 def run(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
320 self.running = True |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
321 if not self.server.starttls_server: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
322 if not self.wrap_conn(): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
323 return |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
324 while self.running: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
325 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
326 msg = self.read() |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
327 stripped = msg.strip() |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
328 if not stripped: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
329 # eof, so quit this handler |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
330 self.running = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
331 self.close() |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
332 elif stripped == b'over': |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
333 if support.verbose and self.server.connectionchatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
334 sys.stdout.write(" server: client closed connection\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
335 self.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
336 return |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
337 elif (self.server.starttls_server and |
|
61077
007319a9c888
Merged revisions 80603 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61072
diff
changeset
|
338 stripped == b'STARTTLS'): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
339 if support.verbose and self.server.connectionchatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
340 sys.stdout.write(" server: read STARTTLS from client, sending OK...\n") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
341 self.write(b"OK\n") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
342 if not self.wrap_conn(): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
343 return |
|
48681
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
344 elif (self.server.starttls_server and self.sslconn |
|
61077
007319a9c888
Merged revisions 80603 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61072
diff
changeset
|
345 and stripped == b'ENDTLS'): |
|
48681
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
346 if support.verbose and self.server.connectionchatty: |
|
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
347 sys.stdout.write(" server: read ENDTLS from client, sending OK...\n") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
348 self.write(b"OK\n") |
|
48681
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
349 self.sock = self.sslconn.unwrap() |
|
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
350 self.sslconn = None |
|
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
351 if support.verbose and self.server.connectionchatty: |
|
3c8ef3466923
clean up ssl.py; expose unwrap and add test for it
Bill Janssen <janssen@parc.com>
parents:
48521
diff
changeset
|
352 sys.stdout.write(" server: connection is now unencrypted...\n") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
353 else: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
354 if (support.verbose and |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
355 self.server.connectionchatty): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
356 ctype = (self.sslconn and "encrypted") or "unencrypted" |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
357 sys.stdout.write(" server: read %r (%s), sending back %r (%s)...\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
358 % (msg, ctype, msg.lower(), ctype)) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
359 self.write(msg.lower()) |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
360 except socket.error: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
361 if self.server.chatty: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
362 handle_error("Test server failure:\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
363 self.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
364 self.running = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
365 # normally, we'd just stop here, but for the test |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
366 # harness, we want to stop the server |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
367 self.server.stop() |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
368 |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
369 def __init__(self, certificate, ssl_version=None, |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
370 certreqs=None, cacerts=None, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
371 chatty=True, connectionchatty=False, starttls_server=False): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
372 if ssl_version is None: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
373 ssl_version = ssl.PROTOCOL_TLSv1 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
374 if certreqs is None: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
375 certreqs = ssl.CERT_NONE |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
376 self.certificate = certificate |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
377 self.protocol = ssl_version |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
378 self.certreqs = certreqs |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
379 self.cacerts = cacerts |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
380 self.chatty = chatty |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
381 self.connectionchatty = connectionchatty |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
382 self.starttls_server = starttls_server |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
383 self.sock = socket.socket() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
384 self.port = support.bind_port(self.sock) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
385 self.flag = None |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
386 self.active = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
387 threading.Thread.__init__(self) |
|
48754
2bac0d421929
Merged revisions 65829 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48681
diff
changeset
|
388 self.daemon = True |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
389 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
390 def start(self, flag=None): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
391 self.flag = flag |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
392 threading.Thread.start(self) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
393 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
394 def run(self): |
|
61005
1e1b2351cf12
Merged revisions 80528 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61000
diff
changeset
|
395 self.sock.settimeout(0.05) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
396 self.sock.listen(5) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
397 self.active = True |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
398 if self.flag: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
399 # signal an event |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
400 self.flag.set() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
401 while self.active: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
402 try: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
403 newconn, connaddr = self.sock.accept() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
404 if support.verbose and self.chatty: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
405 sys.stdout.write(' server: new connection from ' |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
406 + repr(connaddr) + '\n') |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
407 handler = self.ConnectionHandler(self, newconn, connaddr) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
408 handler.start() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
409 except socket.timeout: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
410 pass |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
411 except KeyboardInterrupt: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
412 self.stop() |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
413 self.sock.close() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
414 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
415 def stop(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
416 self.active = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
417 |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
418 class OurHTTPSServer(threading.Thread): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
419 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
420 # This one's based on HTTPServer, which is based on SocketServer |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
421 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
422 class HTTPSServer(HTTPServer): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
423 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
424 def __init__(self, server_address, RequestHandlerClass, certfile): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
425 HTTPServer.__init__(self, server_address, RequestHandlerClass) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
426 # we assume the certfile contains both private key and certificate |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
427 self.certfile = certfile |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
428 self.allow_reuse_address = True |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
429 |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
430 def __str__(self): |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
431 return ('<%s %s:%s>' % |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
432 (self.__class__.__name__, |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
433 self.server_name, |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
434 self.server_port)) |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
435 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
436 def get_request(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
437 # override this to wrap socket with SSL |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
438 sock, addr = self.socket.accept() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
439 sslconn = ssl.wrap_socket(sock, server_side=True, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
440 certfile=self.certfile) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
441 return sslconn, addr |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
442 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
443 class RootedHTTPRequestHandler(SimpleHTTPRequestHandler): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
444 # need to override translate_path to get a known root, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
445 # instead of using os.curdir, since the test could be |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
446 # run from anywhere |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
447 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
448 server_version = "TestHTTPS/1.0" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
449 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
450 root = None |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
451 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
452 def translate_path(self, path): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
453 """Translate a /-separated PATH to the local filename syntax. |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
454 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
455 Components that mean special things to the local file system |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
456 (e.g. drive or directory names) are ignored. (XXX They should |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
457 probably be diagnosed.) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
458 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
459 """ |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
460 # abandon query parameters |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
461 path = urllib.parse.urlparse(path)[2] |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
462 path = os.path.normpath(urllib.parse.unquote(path)) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
463 words = path.split('/') |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
464 words = filter(None, words) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
465 path = self.root |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
466 for word in words: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
467 drive, word = os.path.splitdrive(word) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
468 head, word = os.path.split(word) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
469 if word in self.root: continue |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
470 path = os.path.join(path, word) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
471 return path |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
472 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
473 def log_message(self, format, *args): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
474 # we override this to suppress logging unless "verbose" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
475 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
476 if support.verbose: |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
477 sys.stdout.write(" server (%s:%d %s):\n [%s] %s\n" % |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
478 (self.server.server_address, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
479 self.server.server_port, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
480 self.request.cipher(), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
481 self.log_date_time_string(), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
482 format%args)) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
483 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
484 |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
485 def __init__(self, certfile): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
486 self.flag = None |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
487 self.RootedHTTPRequestHandler.root = os.path.split(CERTFILE)[0] |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
488 self.server = self.HTTPSServer( |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
489 (HOST, 0), self.RootedHTTPRequestHandler, certfile) |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
490 self.port = self.server.server_port |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
491 threading.Thread.__init__(self) |
|
48754
2bac0d421929
Merged revisions 65829 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48681
diff
changeset
|
492 self.daemon = True |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
493 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
494 def __str__(self): |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
495 return "<%s %s>" % (self.__class__.__name__, self.server) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
496 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
497 def start(self, flag=None): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
498 self.flag = flag |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
499 threading.Thread.start(self) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
500 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
501 def run(self): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
502 if self.flag: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
503 self.flag.set() |
|
61005
1e1b2351cf12
Merged revisions 80528 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61000
diff
changeset
|
504 self.server.serve_forever(0.05) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
505 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
506 def stop(self): |
|
61005
1e1b2351cf12
Merged revisions 80528 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61000
diff
changeset
|
507 self.server.shutdown() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
508 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
509 |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
510 class AsyncoreEchoServer(threading.Thread): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
511 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
512 # this one's based on asyncore.dispatcher |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
513 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
514 class EchoServer (asyncore.dispatcher): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
515 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
516 class ConnectionHandler (asyncore.dispatcher_with_send): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
517 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
518 def __init__(self, conn, certfile): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
519 self.socket = ssl.wrap_socket(conn, server_side=True, |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
520 certfile=certfile, |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
521 do_handshake_on_connect=False) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
522 asyncore.dispatcher_with_send.__init__(self, self.socket) |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
523 self._ssl_accepting = True |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
524 self._do_ssl_handshake() |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
525 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
526 def readable(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
527 if isinstance(self.socket, ssl.SSLSocket): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
528 while self.socket.pending() > 0: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
529 self.handle_read_event() |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
530 return True |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
531 |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
532 def _do_ssl_handshake(self): |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
533 try: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
534 self.socket.do_handshake() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
535 except ssl.SSLError as err: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
536 if err.args[0] in (ssl.SSL_ERROR_WANT_READ, |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
537 ssl.SSL_ERROR_WANT_WRITE): |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
538 return |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
539 elif err.args[0] == ssl.SSL_ERROR_EOF: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
540 return self.handle_close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
541 raise |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
542 except socket.error as err: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
543 if err.args[0] == errno.ECONNABORTED: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
544 return self.handle_close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
545 else: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
546 self._ssl_accepting = False |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
547 |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
548 def handle_read(self): |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
549 if self._ssl_accepting: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
550 self._do_ssl_handshake() |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
551 else: |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
552 data = self.recv(1024) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
553 if support.verbose: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
554 sys.stdout.write(" server: read %s from client\n" % repr(data)) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
555 if not data: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
556 self.close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
557 else: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
558 self.send(data.lower()) |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
559 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
560 def handle_close(self): |
|
48384
4d2d0a21d494
close asyncore.dispatcher on EOF
Bill Janssen <janssen@parc.com>
parents:
48334
diff
changeset
|
561 self.close() |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
562 if support.verbose: |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
563 sys.stdout.write(" server: closed connection %s\n" % self.socket) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
564 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
565 def handle_error(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
566 raise |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
567 |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
568 def __init__(self, certfile): |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
569 self.certfile = certfile |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
570 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
571 self.port = support.bind_port(sock, '') |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
572 asyncore.dispatcher.__init__(self, sock) |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
573 self.listen(5) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
574 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
575 def handle_accept(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
576 sock_obj, addr = self.accept() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
577 if support.verbose: |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
578 sys.stdout.write(" server: new connection from %s:%s\n" %addr) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
579 self.ConnectionHandler(sock_obj, self.certfile) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
580 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
581 def handle_error(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
582 raise |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
583 |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
584 def __init__(self, certfile): |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
585 self.flag = None |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
586 self.active = False |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
587 self.server = self.EchoServer(certfile) |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
588 self.port = self.server.port |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
589 threading.Thread.__init__(self) |
|
48754
2bac0d421929
Merged revisions 65829 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48681
diff
changeset
|
590 self.daemon = True |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
591 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
592 def __str__(self): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
593 return "<%s %s>" % (self.__class__.__name__, self.server) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
594 |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
595 def start (self, flag=None): |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
596 self.flag = flag |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
597 threading.Thread.start(self) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
598 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
599 def run(self): |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
600 self.active = True |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
601 if self.flag: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
602 self.flag.set() |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
603 while self.active: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
604 try: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
605 asyncore.loop(1) |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
606 except: |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
607 pass |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
608 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
609 def stop(self): |
|
44305
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
610 self.active = False |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
611 self.server.close() |
|
19f894ae864a
update to fix leak in SSL code
Bill Janssen <janssen@parc.com>
parents:
43869
diff
changeset
|
612 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
613 def bad_cert_test(certfile): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
614 """ |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
615 Launch a server with CERT_REQUIRED, and check that trying to |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
616 connect to it with the given client certificate fails. |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
617 """ |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
618 server = ThreadedEchoServer(CERTFILE, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
619 certreqs=ssl.CERT_REQUIRED, |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
620 cacerts=CERTFILE, chatty=False, |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
621 connectionchatty=False) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
622 flag = threading.Event() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
623 server.start(flag) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
624 # wait for it to start |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
625 flag.wait() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
626 # try to connect |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
627 try: |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
628 try: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
629 s = ssl.wrap_socket(socket.socket(), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
630 certfile=certfile, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
631 ssl_version=ssl.PROTOCOL_TLSv1) |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
632 s.connect((HOST, server.port)) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
633 except ssl.SSLError as x: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
634 if support.verbose: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
635 sys.stdout.write("\nSSLError is %s\n" % x.args[1]) |
|
61012
71152ce701ea
Merged revisions 80536 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61008
diff
changeset
|
636 except socket.error as x: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
637 if support.verbose: |
|
66475
9bead909d8ef
Merged revisions 85820,85823,85825,85840,85843-85845,85849-85851,85855,85867,85875,85907-85908,85911,85914 via svnmerge from
Georg Brandl <georg@python.org>
parents:
64743
diff
changeset
|
638 sys.stdout.write("\nsocket.error is %s\n" % x.args[1]) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
639 else: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
640 self.fail("Use of invalid cert should have failed!") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
641 finally: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
642 server.stop() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
643 server.join() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
644 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
645 def server_params_test(certfile, protocol, certreqs, cacertsfile, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
646 client_certfile, client_protocol=None, indata=b"FOO\n", |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
647 chatty=True, connectionchatty=False): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
648 """ |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
649 Launch a server, connect a client to it and try various reads |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
650 and writes. |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
651 """ |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
652 server = ThreadedEchoServer(certfile, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
653 certreqs=certreqs, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
654 ssl_version=protocol, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
655 cacerts=cacertsfile, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
656 chatty=chatty, |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
657 connectionchatty=False) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
658 flag = threading.Event() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
659 server.start(flag) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
660 # wait for it to start |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
661 flag.wait() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
662 # try to connect |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
663 if client_protocol is None: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
664 client_protocol = protocol |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
665 try: |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
666 s = ssl.wrap_socket(socket.socket(), |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
667 certfile=client_certfile, |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
668 ca_certs=cacertsfile, |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
669 cert_reqs=certreqs, |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
670 ssl_version=client_protocol) |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
671 s.connect((HOST, server.port)) |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
672 arg = indata |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
673 if connectionchatty: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
674 if support.verbose: |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
675 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
676 " client: sending %r...\n" % indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
677 s.write(arg) |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
678 outdata = s.read() |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
679 if connectionchatty: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
680 if support.verbose: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
681 sys.stdout.write(" client: read %r\n" % outdata) |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
682 if outdata != indata.lower(): |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
683 self.fail( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
684 "bad data <<%r>> (%d) received; expected <<%r>> (%d)\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
685 % (outdata[:20], len(outdata), |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
686 indata[:20].lower(), len(indata))) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
687 s.write(b"over\n") |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
688 if connectionchatty: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
689 if support.verbose: |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
690 sys.stdout.write(" client: closing connection.\n") |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
691 s.close() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
692 finally: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
693 server.stop() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
694 server.join() |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
695 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
696 def try_protocol_combo(server_protocol, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
697 client_protocol, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
698 expect_success, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
699 certsreqs=None): |
|
46222
aed698c8647b
Merged revisions 62021,62029,62035-62038,62043-62044,62052-62053 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
45773
diff
changeset
|
700 if certsreqs is None: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
701 certsreqs = ssl.CERT_NONE |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
702 certtype = { |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
703 ssl.CERT_NONE: "CERT_NONE", |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
704 ssl.CERT_OPTIONAL: "CERT_OPTIONAL", |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
705 ssl.CERT_REQUIRED: "CERT_REQUIRED", |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
706 }[certsreqs] |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
707 if support.verbose: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
708 formatstr = (expect_success and " %s->%s %s\n") or " {%s->%s} %s\n" |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
709 sys.stdout.write(formatstr % |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
710 (ssl.get_protocol_name(client_protocol), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
711 ssl.get_protocol_name(server_protocol), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
712 certtype)) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
713 try: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
714 server_params_test(CERTFILE, server_protocol, certsreqs, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
715 CERTFILE, CERTFILE, client_protocol, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
716 chatty=False, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
717 connectionchatty=False) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
718 # Protocol mismatch can result in either an SSLError, or a |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
719 # "Connection reset by peer" error. |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
720 except ssl.SSLError: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
721 if expect_success: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
722 raise |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
723 except socket.error as e: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
724 if expect_success or e.errno != errno.ECONNRESET: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
725 raise |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
726 else: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
727 if not expect_success: |
|
61317
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
728 raise AssertionError( |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
729 "Client protocol %s succeeded with server protocol %s!" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
730 % (ssl.get_protocol_name(client_protocol), |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
731 ssl.get_protocol_name(server_protocol))) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
732 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
733 |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
734 class ThreadedTests(unittest.TestCase): |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
735 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
736 def test_echo(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
737 """Basic test of an SSL client connecting to a server""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
738 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
739 sys.stdout.write("\n") |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
740 server_params_test(CERTFILE, ssl.PROTOCOL_TLSv1, ssl.CERT_NONE, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
741 CERTFILE, CERTFILE, ssl.PROTOCOL_TLSv1, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
742 chatty=True, connectionchatty=True) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
743 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
744 def test_getpeercert(self): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
745 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
746 sys.stdout.write("\n") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
747 s2 = socket.socket() |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
748 server = ThreadedEchoServer(CERTFILE, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
749 certreqs=ssl.CERT_NONE, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
750 ssl_version=ssl.PROTOCOL_SSLv23, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
751 cacerts=CERTFILE, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
752 chatty=False) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
753 flag = threading.Event() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
754 server.start(flag) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
755 # wait for it to start |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
756 flag.wait() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
757 # try to connect |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
758 try: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
759 s = ssl.wrap_socket(socket.socket(), |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
760 certfile=CERTFILE, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
761 ca_certs=CERTFILE, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
762 cert_reqs=ssl.CERT_REQUIRED, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
763 ssl_version=ssl.PROTOCOL_SSLv23) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
764 s.connect((HOST, server.port)) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
765 cert = s.getpeercert() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
766 self.assertTrue(cert, "Can't get peer certificate.") |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
767 cipher = s.cipher() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
768 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
769 sys.stdout.write(pprint.pformat(cert) + '\n') |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
770 sys.stdout.write("Connection cipher is " + str(cipher) + '.\n') |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
771 if 'subject' not in cert: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
772 self.fail("No subject field in certificate: %s." % |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
773 pprint.pformat(cert)) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
774 if ((('organizationName', 'Python Software Foundation'),) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
775 not in cert['subject']): |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
776 self.fail( |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
777 "Missing or invalid 'organizationName' field in certificate subject; " |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
778 "should be 'Python Software Foundation'.") |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
779 s.close() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
780 finally: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
781 server.stop() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
782 server.join() |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
783 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
784 def test_empty_cert(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
785 """Connecting with an empty cert file""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
786 bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
787 "nullcert.pem")) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
788 def test_malformed_cert(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
789 """Connecting with a badly formatted certificate (syntax error)""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
790 bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
791 "badcert.pem")) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
792 def test_nonexisting_cert(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
793 """Connecting with a non-existing cert file""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
794 bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
795 "wrongcert.pem")) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
796 def test_malformed_key(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
797 """Connecting with a badly formatted key (syntax error)""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
798 bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir, |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
799 "badkey.pem")) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
800 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
801 def test_rude_shutdown(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
802 """A brutal shutdown of an SSL server should raise an IOError |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
803 in the client when attempting handshake. |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
804 """ |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
805 listener_ready = threading.Event() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
806 listener_gone = threading.Event() |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
807 |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
808 s = socket.socket() |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
809 port = support.bind_port(s, HOST) |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
810 |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
811 # `listener` runs in a thread. It sits in an accept() until |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
812 # the main thread connects. Then it rudely closes the socket, |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
813 # and sets Event `listener_gone` to let the main thread know |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
814 # the socket is gone. |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
815 def listener(): |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
816 s.listen(5) |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
817 listener_ready.set() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
818 s.accept() |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
819 s.close() |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
820 listener_gone.set() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
821 |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
822 def connector(): |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
823 listener_ready.wait() |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
824 c = socket.socket() |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
825 c.connect((HOST, port)) |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
826 listener_gone.wait() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
827 try: |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
828 ssl_sock = ssl.wrap_socket(c) |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
829 except IOError: |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
830 pass |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
831 else: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
832 self.fail('connecting to closed SSL socket should have failed') |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
833 |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
834 t = threading.Thread(target=listener) |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
835 t.start() |
|
61000
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
836 try: |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
837 connector() |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
838 finally: |
|
46aae406742d
Merged revisions 80524 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60938
diff
changeset
|
839 t.join() |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
840 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
841 def test_protocol_sslv2(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
842 """Connecting to an SSLv2 server with various client options""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
843 if support.verbose: |
|
61317
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
844 sys.stdout.write("\ntest_protocol_sslv2 disabled, " |
|
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
845 "as it fails on OpenSSL 1.0.0+") |
|
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
846 return |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
847 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
848 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
849 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_REQUIRED) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
850 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv23, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
851 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv3, False) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
852 try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_TLSv1, False) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
853 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
854 def test_protocol_sslv23(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
855 """Connecting to an SSLv23 server with various client options""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
856 if support.verbose: |
|
61317
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
857 sys.stdout.write("\ntest_protocol_sslv23 disabled, " |
|
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
858 "as it fails on OpenSSL 1.0.0+") |
|
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
859 return |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
860 try: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
861 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv2, True) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
862 except (ssl.SSLError, socket.error) as x: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
863 # this fails on some older versions of OpenSSL (0.9.7l, for instance) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
864 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
865 sys.stdout.write( |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
866 " SSL2 client to SSL23 server test unexpectedly failed:\n %s\n" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
867 % str(x)) |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
868 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
869 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
870 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
871 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
872 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
873 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
874 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
875 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
876 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
877 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_REQUIRED) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
878 try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
879 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
880 def test_protocol_sslv3(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
881 """Connecting to an SSLv3 server with various client options""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
882 if support.verbose: |
|
61317
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
883 sys.stdout.write("\ntest_protocol_sslv3 disabled, " |
|
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
884 "as it fails on OpenSSL 1.0.0+") |
|
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
885 return |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
886 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
887 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
888 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
889 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv2, False) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
890 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv23, False) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
891 try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_TLSv1, False) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
892 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
893 def test_protocol_tlsv1(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
894 """Connecting to a TLSv1 server with various client options""" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
895 if support.verbose: |
|
61317
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
896 sys.stdout.write("\ntest_protocol_tlsv1 disabled, " |
|
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
897 "as it fails on OpenSSL 1.0.0+") |
|
2166b63b6fdf
Issue #8629: Disable some test_ssl tests, since they give different
Antoine Pitrou <solipsis@pitrou.net>
parents:
61153
diff
changeset
|
898 return |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
899 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
900 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
901 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
902 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv2, False) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
903 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv3, False) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
904 try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv23, False) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
905 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
906 def test_starttls(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
907 """Switching from clear text to encrypted and back again.""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
908 msgs = (b"msg 1", b"MSG 2", b"STARTTLS", b"MSG 3", b"msg 4", b"ENDTLS", b"msg 5", b"msg 6") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
909 |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
910 server = ThreadedEchoServer(CERTFILE, |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
911 ssl_version=ssl.PROTOCOL_TLSv1, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
912 starttls_server=True, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
913 chatty=True, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
914 connectionchatty=True) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
915 flag = threading.Event() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
916 server.start(flag) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
917 # wait for it to start |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
918 flag.wait() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
919 # try to connect |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
920 wrapped = False |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
921 try: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
922 s = socket.socket() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
923 s.setblocking(1) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
924 s.connect((HOST, server.port)) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
925 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
926 sys.stdout.write("\n") |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
927 for indata in msgs: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
928 if support.verbose: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
929 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
930 " client: sending %r...\n" % indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
931 if wrapped: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
932 conn.write(indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
933 outdata = conn.read() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
934 else: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
935 s.send(indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
936 outdata = s.recv(1024) |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
937 msg = outdata.strip().lower() |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
938 if indata == b"STARTTLS" and msg.startswith(b"ok"): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
939 # STARTTLS ok, switch to secure mode |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
940 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
941 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
942 " client: read %r from server, starting TLS...\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
943 % msg) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
944 conn = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
945 wrapped = True |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
946 elif indata == b"ENDTLS" and msg.startswith(b"ok"): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
947 # ENDTLS ok, switch back to clear text |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
948 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
949 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
950 " client: read %r from server, ending TLS...\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
951 % msg) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
952 s = conn.unwrap() |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
953 wrapped = False |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
954 else: |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
955 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
956 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
957 " client: read %r from server\n" % msg) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
958 if support.verbose: |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
959 sys.stdout.write(" client: closing connection.\n") |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
960 if wrapped: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
961 conn.write(b"over\n") |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
962 else: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
963 s.send(b"over\n") |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
964 if wrapped: |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
965 conn.close() |
|
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
966 else: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
967 s.close() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
968 finally: |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
969 server.stop() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
970 server.join() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
971 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
972 def test_socketserver(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
973 """Using a SocketServer to create and manage SSL connections.""" |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
974 server = OurHTTPSServer(CERTFILE) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
975 flag = threading.Event() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
976 server.start(flag) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
977 # wait for it to start |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
978 flag.wait() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
979 # try to connect |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
980 try: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
981 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
982 sys.stdout.write('\n') |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
983 with open(CERTFILE, 'rb') as f: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
984 d1 = f.read() |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
985 d2 = '' |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
986 # now fetch the same data from the HTTPS server |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
987 url = 'https://%s:%d/%s' % ( |
|
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
988 HOST, server.port, os.path.split(CERTFILE)[1]) |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
989 f = urllib.request.urlopen(url) |
|
47635
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47624
diff
changeset
|
990 dlen = f.info().get("content-length") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
991 if dlen and (int(dlen) > 0): |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
992 d2 = f.read(int(dlen)) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
993 if support.verbose: |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
994 sys.stdout.write( |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
995 " client: read %d bytes from remote server '%s'\n" |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
996 % (len(d2), server)) |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
997 f.close() |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
998 self.assertEqual(d1, d2) |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
999 finally: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1000 if support.verbose: |
|
46234
415156d4cbd2
This was required on OS X to prevent the test from deadlocking. I'm not sure
Neal Norwitz <nnorwitz@gmail.com>
parents:
46222
diff
changeset
|
1001 sys.stdout.write('stopping server\n') |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1002 server.stop() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1003 if support.verbose: |
|
46234
415156d4cbd2
This was required on OS X to prevent the test from deadlocking. I'm not sure
Neal Norwitz <nnorwitz@gmail.com>
parents:
46222
diff
changeset
|
1004 sys.stdout.write('joining thread\n') |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1005 server.join() |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1006 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1007 def test_asyncore_server(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1008 """Check the example asyncore integration.""" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1009 indata = "TEST MESSAGE of mixed case\n" |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1010 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1011 if support.verbose: |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1012 sys.stdout.write("\n") |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1013 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1014 indata = b"FOO\n" |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
1015 server = AsyncoreEchoServer(CERTFILE) |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1016 flag = threading.Event() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1017 server.start(flag) |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1018 # wait for it to start |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1019 flag.wait() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1020 # try to connect |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1021 try: |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1022 s = ssl.wrap_socket(socket.socket()) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1023 s.connect(('127.0.0.1', server.port)) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1024 if support.verbose: |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1025 sys.stdout.write( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1026 " client: sending %r...\n" % indata) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1027 s.write(indata) |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1028 outdata = s.read() |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1029 if support.verbose: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1030 sys.stdout.write(" client: read %r\n" % outdata) |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1031 if outdata != indata.lower(): |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1032 self.fail( |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1033 "bad data <<%r>> (%d) received; expected <<%r>> (%d)\n" |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1034 % (outdata[:20], len(outdata), |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1035 indata[:20].lower(), len(indata))) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1036 s.write(b"over\n") |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1037 if support.verbose: |
|
46393
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1038 sys.stdout.write(" client: closing connection.\n") |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1039 s.close() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1040 finally: |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1041 server.stop() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1042 server.join() |
|
645c535f8223
Revert r62242: trunk's test_ssl.py isn't as up-to-date as py3k's, and should't have been brought over in the merge.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46370
diff
changeset
|
1043 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1044 def test_recv_send(self): |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1045 """Test recv(), send() and friends.""" |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1046 if support.verbose: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1047 sys.stdout.write("\n") |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1048 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1049 server = ThreadedEchoServer(CERTFILE, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1050 certreqs=ssl.CERT_NONE, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1051 ssl_version=ssl.PROTOCOL_TLSv1, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1052 cacerts=CERTFILE, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1053 chatty=True, |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1054 connectionchatty=False) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1055 flag = threading.Event() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1056 server.start(flag) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1057 # wait for it to start |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1058 flag.wait() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1059 # try to connect |
|
61008
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1060 s = ssl.wrap_socket(socket.socket(), |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1061 server_side=False, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1062 certfile=CERTFILE, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1063 ca_certs=CERTFILE, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1064 cert_reqs=ssl.CERT_NONE, |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1065 ssl_version=ssl.PROTOCOL_TLSv1) |
|
c869408d4d3e
Merged revisions 80532 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61005
diff
changeset
|
1066 s.connect((HOST, server.port)) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1067 try: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1068 # helper methods for standardising recv* method signatures |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1069 def _recv_into(): |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1070 b = bytearray(b"\0"*100) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1071 count = s.recv_into(b) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1072 return b[:count] |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1073 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1074 def _recvfrom_into(): |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1075 b = bytearray(b"\0"*100) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1076 count, addr = s.recvfrom_into(b) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1077 return b[:count] |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1078 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1079 # (name, method, whether to expect success, *args) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1080 send_methods = [ |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1081 ('send', s.send, True, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1082 ('sendto', s.sendto, False, ["some.address"]), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1083 ('sendall', s.sendall, True, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1084 ] |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1085 recv_methods = [ |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1086 ('recv', s.recv, True, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1087 ('recvfrom', s.recvfrom, False, ["some.address"]), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1088 ('recv_into', _recv_into, True, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1089 ('recvfrom_into', _recvfrom_into, False, []), |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1090 ] |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1091 data_prefix = "PREFIX_" |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1092 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1093 for meth_name, send_meth, expect_success, args in send_methods: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1094 indata = (data_prefix + meth_name).encode('ascii') |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1095 try: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1096 send_meth(indata, *args) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1097 outdata = s.read() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1098 if outdata != indata.lower(): |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1099 raise support.TestFailed( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1100 "While sending with <<{name:s}>> bad data " |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1101 "<<{outdata:r}>> ({nout:d}) received; " |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1102 "expected <<{indata:r}>> ({nin:d})\n".format( |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1103 name=meth_name, outdata=outdata[:20], |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1104 nout=len(outdata), |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1105 indata=indata[:20], nin=len(indata) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1106 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1107 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1108 except ValueError as e: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1109 if expect_success: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1110 raise support.TestFailed( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1111 "Failed to send with method <<{name:s}>>; " |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1112 "expected to succeed.\n".format(name=meth_name) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1113 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1114 if not str(e).startswith(meth_name): |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1115 raise support.TestFailed( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1116 "Method <<{name:s}>> failed with unexpected " |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1117 "exception message: {exp:s}\n".format( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1118 name=meth_name, exp=e |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1119 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1120 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1121 |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1122 for meth_name, recv_meth, expect_success, args in recv_methods: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1123 indata = (data_prefix + meth_name).encode('ascii') |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1124 try: |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1125 s.send(indata) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1126 outdata = recv_meth(*args) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1127 if outdata != indata.lower(): |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1128 raise support.TestFailed( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1129 "While receiving with <<{name:s}>> bad data " |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1130 "<<{outdata:r}>> ({nout:d}) received; " |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1131 "expected <<{indata:r}>> ({nin:d})\n".format( |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1132 name=meth_name, outdata=outdata[:20], |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1133 nout=len(outdata), |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1134 indata=indata[:20], nin=len(indata) |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1135 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1136 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1137 except ValueError as e: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1138 if expect_success: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1139 raise support.TestFailed( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1140 "Failed to receive with method <<{name:s}>>; " |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1141 "expected to succeed.\n".format(name=meth_name) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1142 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1143 if not str(e).startswith(meth_name): |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1144 raise support.TestFailed( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1145 "Method <<{name:s}>> failed with unexpected " |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1146 "exception message: {exp:s}\n".format( |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1147 name=meth_name, exp=e |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1148 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1149 ) |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1150 # consume data |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1151 s.read() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1152 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1153 s.write(b"over\n") |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1154 s.close() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1155 finally: |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1156 server.stop() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1157 server.join() |
|
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1158 |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1159 def test_handshake_timeout(self): |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1160 # Issue #5103: SSL handshake must respect the socket timeout |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1161 server = socket.socket(socket.AF_INET) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1162 host = "127.0.0.1" |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1163 port = support.bind_port(server) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1164 started = threading.Event() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1165 finish = False |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1166 |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1167 def serve(): |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1168 server.listen(5) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1169 started.set() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1170 conns = [] |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1171 while not finish: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1172 r, w, e = select.select([server], [], [], 0.1) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1173 if server in r: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1174 # Let the socket hang around rather than having |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1175 # it closed by garbage collection. |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1176 conns.append(server.accept()[0]) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1177 |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1178 t = threading.Thread(target=serve) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1179 t.start() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1180 started.wait() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1181 |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1182 try: |
|
60938
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1183 try: |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1184 c = socket.socket(socket.AF_INET) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1185 c.settimeout(0.2) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1186 c.connect((host, port)) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1187 # Will attempt handshake and time out |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1188 self.assertRaisesRegexp(ssl.SSLError, "timed out", |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1189 ssl.wrap_socket, c) |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1190 finally: |
|
0ff8adde609c
Merged revisions 80456 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60936
diff
changeset
|
1191 c.close() |
|
60936
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1192 try: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1193 c = socket.socket(socket.AF_INET) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1194 c = ssl.wrap_socket(c) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1195 c.settimeout(0.2) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1196 # Will attempt handshake and time out |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1197 self.assertRaisesRegexp(ssl.SSLError, "timed out", |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1198 c.connect, (host, port)) |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1199 finally: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1200 c.close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1201 finally: |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1202 finish = True |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1203 t.join() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1204 server.close() |
|
5ed34f3f6c35
Merged revisions 80454 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60918
diff
changeset
|
1205 |
|
49090
ac3b67043361
fixes from issue 3162 for SSL module
Bill Janssen <janssen@parc.com>
parents:
48754
diff
changeset
|
1206 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1207 def test_main(verbose=False): |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1208 if skip_expected: |
|
52389
d4e7470bd660
Merged revisions 70554,70588-70589,70598,70605,70611-70621,70623-70624,70626-70627 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49090
diff
changeset
|
1209 raise unittest.SkipTest("No SSL support") |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1210 |
|
46394
8416cdd11c11
Update test_ssl.py to reflect the new approach for writing network-oriented tests in such a way that contention for ports is eliminated, thus allowing multiple instances of the same test to be run in parallel without issue (import for buildbots to run smoothly). This change is in line with the changes made to network-oriented tests in trunk in r62234. test_ssl.py is an odd case because the py3k version was newer than trunk. When the most recent svnmerge was run from trunk to py3k in r62242, the older trunk version was brought over on top of the newer py3k version. So, the plan was/is: revert the recent svnmerged version (done), manually make the changes to improve running in parallel (done with this commit), copy this version back to trunk and manually 3to2 it (to do next), check that in, then svnmerge block it. Then when future changes need to be made to test_ssl.py, we can make them against trunk, and hopefully the merge to py3k should be a lot less painful.
Trent Nelson <trent.nelson@snakebite.org>
parents:
46393
diff
changeset
|
1211 global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1212 CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir, |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1213 "keycert.pem") |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1214 SVN_PYTHON_ORG_ROOT_CERT = os.path.join( |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1215 os.path.dirname(__file__) or os.curdir, |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1216 "https_svn_python_org_root.pem") |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1217 |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1218 if (not os.path.exists(CERTFILE) or |
|
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1219 not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT)): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1220 raise support.TestFailed("Can't read certificate files!") |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1221 |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1222 tests = [BasicTests] |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1223 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1224 if support.is_resource_enabled('network'): |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1225 tests.append(NetworkedTests) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1226 |
|
43400
1bac386c17cc
Merged revisions 58095-58132,58136-58148,58151-58197 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
43292
diff
changeset
|
1227 if _have_threads: |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1228 thread_info = support.threading_setup() |
|
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46394
diff
changeset
|
1229 if thread_info and support.is_resource_enabled('network'): |
|
43869
b59825d9db8f
get SSL support to work again
Bill Janssen <janssen@parc.com>
parents:
43400
diff
changeset
|
1230 tests.append(ThreadedTests) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1231 |
|
61072
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1232 try: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1233 support.run_unittest(*tests) |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1234 finally: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1235 if _have_threads: |
|
1d2b322c46be
Merged revisions 80598 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61035
diff
changeset
|
1236 support.threading_cleanup(*thread_info) |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1237 |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1238 if __name__ == "__main__": |
|
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
diff
changeset
|
1239 test_main() |
