Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_socketserver.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | a699550bc73b |
| children |
| rev | line source |
|---|---|
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
1 """ |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
2 Test suite for socketserver. |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
3 """ |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 |
|
84167
1b8f08c4efd5
Issue #17177: The imp module is pending deprecation.
Brett Cannon <brett@python.org>
parents:
80932
diff
changeset
|
5 import _imp as imp |
|
45555
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
6 import contextlib |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
7 import os |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 import select |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
9 import signal |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
10 import socket |
|
76165
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
11 import select |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
12 import errno |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
13 import tempfile |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
14 import unittest |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
15 import socketserver |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
16 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46933
diff
changeset
|
17 import test.support |
|
56906
c9268fea8104
Merged revisions 75874 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
18 from test.support import reap_children, reap_threads, verbose |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
60968
diff
changeset
|
19 try: |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
60968
diff
changeset
|
20 import threading |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
60968
diff
changeset
|
21 except ImportError: |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
60968
diff
changeset
|
22 threading = None |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
23 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46933
diff
changeset
|
24 test.support.requires("network") |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
26 TEST_STR = b"hello world\n" |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46933
diff
changeset
|
27 HOST = test.support.HOST |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
28 |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
29 HAVE_UNIX_SOCKETS = hasattr(socket, "AF_UNIX") |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
30 requires_unix_sockets = unittest.skipUnless(HAVE_UNIX_SOCKETS, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
31 'requires Unix sockets') |
|
79479
d853354e1470
#16135: Removal of OS/2 support (Remove OS2 and OS/2 references)
Jesus Cea <jcea@jcea.es>
parents:
76172
diff
changeset
|
32 HAVE_FORKING = hasattr(os, "fork") |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
33 requires_forking = unittest.skipUnless(HAVE_FORKING, 'requires forking') |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
34 |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
35 def signal_alarm(n): |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
36 """Call signal.alarm when it exists (i.e. not on Windows).""" |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
37 if hasattr(signal, 'alarm'): |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
38 signal.alarm(n) |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 |
|
76169
4f5b44de5c37
Fix flakiness in test_socketserver
Antoine Pitrou <solipsis@pitrou.net>
parents:
76165
diff
changeset
|
40 # Remember real select() to avoid interferences with mocking |
|
4f5b44de5c37
Fix flakiness in test_socketserver
Antoine Pitrou <solipsis@pitrou.net>
parents:
76165
diff
changeset
|
41 _real_select = select.select |
|
4f5b44de5c37
Fix flakiness in test_socketserver
Antoine Pitrou <solipsis@pitrou.net>
parents:
76165
diff
changeset
|
42 |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
43 def receive(sock, n, timeout=20): |
|
76169
4f5b44de5c37
Fix flakiness in test_socketserver
Antoine Pitrou <solipsis@pitrou.net>
parents:
76165
diff
changeset
|
44 r, w, x = _real_select([sock], [], [], timeout) |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
45 if sock in r: |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
46 return sock.recv(n) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
47 else: |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
48 raise RuntimeError("timed out on %r" % (sock,)) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
49 |
|
45145
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45136
diff
changeset
|
50 if HAVE_UNIX_SOCKETS: |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
51 class ForkingUnixStreamServer(socketserver.ForkingMixIn, |
|
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
52 socketserver.UnixStreamServer): |
|
45145
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45136
diff
changeset
|
53 pass |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
54 |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
55 class ForkingUnixDatagramServer(socketserver.ForkingMixIn, |
|
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
56 socketserver.UnixDatagramServer): |
|
45145
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45136
diff
changeset
|
57 pass |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
58 |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
59 |
|
45555
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
60 @contextlib.contextmanager |
|
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
61 def simple_subprocess(testcase): |
|
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
62 pid = os.fork() |
|
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
63 if pid == 0: |
|
80928
fdf907708f49
Issue #16714: use 'raise' exceptions, don't 'throw'.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
76171
diff
changeset
|
64 # Don't raise an exception; it would be caught by the test harness. |
|
45555
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
65 os._exit(72) |
|
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
66 yield None |
|
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
67 pid2, status = os.waitpid(pid, 0) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61929
diff
changeset
|
68 testcase.assertEqual(pid2, pid) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61929
diff
changeset
|
69 testcase.assertEqual(72 << 8, status) |
|
45555
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
70 |
|
0cb481956452
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61108 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45549
diff
changeset
|
71 |
|
61929
9b8b1403f8dd
Merged revisions 81545 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
60972
diff
changeset
|
72 @unittest.skipUnless(threading, 'Threading required for this test.') |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
73 class SocketServerTest(unittest.TestCase): |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
74 """Test all socket servers.""" |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
75 |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
76 def setUp(self): |
|
71327
05dfed82457a
Issue #12250: test_socketserver uses a timeout of 60 seconds instead of 20
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68257
diff
changeset
|
77 signal_alarm(60) # Kill deadlocks after 60 seconds. |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
78 self.port_seed = 0 |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
79 self.test_files = [] |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
80 |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
81 def tearDown(self): |
|
46034
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45773
diff
changeset
|
82 signal_alarm(0) # Didn't deadlock. |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
83 reap_children() |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
84 |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
85 for fn in self.test_files: |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
86 try: |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
87 os.remove(fn) |
|
80932
47f98a550d42
Issue #16706: get rid of os.error
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80930
diff
changeset
|
88 except OSError: |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
89 pass |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
90 self.test_files[:] = [] |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
91 |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
92 def pickaddr(self, proto): |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
93 if proto == socket.AF_INET: |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
94 return (HOST, 0) |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
95 else: |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
96 # XXX: We need a way to tell AF_UNIX to pick its own name |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
97 # like AF_INET provides port==0. |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
98 dir = None |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
99 fn = tempfile.mktemp(prefix='unix_socket.', dir=dir) |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
100 self.test_files.append(fn) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
101 return fn |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
102 |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
103 def make_server(self, addr, svrcls, hdlrbase): |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
104 class MyServer(svrcls): |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
105 def handle_error(self, request, client_address): |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
106 self.close_request(request) |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
107 self.server_close() |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
108 raise |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
109 |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
110 class MyHandler(hdlrbase): |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
111 def handle(self): |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
112 line = self.rfile.readline() |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
113 self.wfile.write(line) |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
114 |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
115 if verbose: print("creating server") |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
116 server = MyServer(addr, MyHandler) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61929
diff
changeset
|
117 self.assertEqual(server.server_address, server.socket.getsockname()) |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
118 return server |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
119 |
|
56906
c9268fea8104
Merged revisions 75874 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
120 @reap_threads |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
121 def run_server(self, svrcls, hdlrbase, testfunc): |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
122 server = self.make_server(self.pickaddr(svrcls.address_family), |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
123 svrcls, hdlrbase) |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
124 # We had the OS pick a port, so pull the real address out of |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
125 # the server. |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
126 addr = server.server_address |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
127 if verbose: |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
128 print("ADDR =", addr) |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
129 print("CLASS =", svrcls) |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
130 |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
131 t = threading.Thread( |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
132 name='%s serving' % svrcls, |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
133 target=server.serve_forever, |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
134 # Short poll interval to make the test finish quickly. |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
135 # Time between requests is short enough that we won't wake |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
136 # up spuriously too many times. |
|
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
137 kwargs={'poll_interval':0.01}) |
|
48747
1fdfa382ae13
Merged revisions 65824 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47615
diff
changeset
|
138 t.daemon = True # In case this function raises. |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
139 t.start() |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
140 if verbose: print("server running") |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
141 for i in range(3): |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
142 if verbose: print("test client", i) |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
143 testfunc(svrcls.address_family, addr) |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
144 if verbose: print("waiting for server") |
|
45773
832c820e9d14
Merged revisions 61239-61249,61252-61257,61260-61264,61269-61275,61278-61279,61285-61286,61288-61290,61298,61303-61305,61312-61314,61317,61329,61332,61344,61350-61351,61363-61376,61378-61379,61382-61383,61387-61388,61392,61395-61396,61402-61403 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45555
diff
changeset
|
145 server.shutdown() |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
146 t.join() |
|
67295
80600c0c33b7
test_sockserver: close servers when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66310
diff
changeset
|
147 server.server_close() |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
148 if verbose: print("done") |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
149 |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
150 def stream_examine(self, proto, addr): |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
151 s = socket.socket(proto, socket.SOCK_STREAM) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
152 s.connect(addr) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
153 s.sendall(TEST_STR) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
154 buf = data = receive(s, 100) |
|
45136
eb97e8302fa3
Fixed socketserver tests
Christian Heimes <christian@cheimes.de>
parents:
45134
diff
changeset
|
155 while data and b'\n' not in buf: |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
156 data = receive(s, 100) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
157 buf += data |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61929
diff
changeset
|
158 self.assertEqual(buf, TEST_STR) |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
159 s.close() |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
160 |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
161 def dgram_examine(self, proto, addr): |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
162 s = socket.socket(proto, socket.SOCK_DGRAM) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
163 s.sendto(TEST_STR, addr) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
164 buf = data = receive(s, 100) |
|
45136
eb97e8302fa3
Fixed socketserver tests
Christian Heimes <christian@cheimes.de>
parents:
45134
diff
changeset
|
165 while data and b'\n' not in buf: |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
166 data = receive(s, 100) |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
167 buf += data |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
61929
diff
changeset
|
168 self.assertEqual(buf, TEST_STR) |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
169 s.close() |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
170 |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
171 def test_TCPServer(self): |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
172 self.run_server(socketserver.TCPServer, |
|
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
173 socketserver.StreamRequestHandler, |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
174 self.stream_examine) |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
175 |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
176 def test_ThreadingTCPServer(self): |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
177 self.run_server(socketserver.ThreadingTCPServer, |
|
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
178 socketserver.StreamRequestHandler, |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
179 self.stream_examine) |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
180 |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
181 @requires_forking |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
182 def test_ForkingTCPServer(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
183 with simple_subprocess(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
184 self.run_server(socketserver.ForkingTCPServer, |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
185 socketserver.StreamRequestHandler, |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
186 self.stream_examine) |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
187 |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
188 @requires_unix_sockets |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
189 def test_UnixStreamServer(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
190 self.run_server(socketserver.UnixStreamServer, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
191 socketserver.StreamRequestHandler, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
192 self.stream_examine) |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
193 |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
194 @requires_unix_sockets |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
195 def test_ThreadingUnixStreamServer(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
196 self.run_server(socketserver.ThreadingUnixStreamServer, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
197 socketserver.StreamRequestHandler, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
198 self.stream_examine) |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
199 |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
200 @requires_unix_sockets |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
201 @requires_forking |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
202 def test_ForkingUnixStreamServer(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
203 with simple_subprocess(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
204 self.run_server(ForkingUnixStreamServer, |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
205 socketserver.StreamRequestHandler, |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
206 self.stream_examine) |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
207 |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
208 def test_UDPServer(self): |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
209 self.run_server(socketserver.UDPServer, |
|
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
210 socketserver.DatagramRequestHandler, |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
211 self.dgram_examine) |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
212 |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
213 def test_ThreadingUDPServer(self): |
|
46933
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
214 self.run_server(socketserver.ThreadingUDPServer, |
|
aca5c1d1c569
Renamed the SocketServer module to 'socketserver'.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
215 socketserver.DatagramRequestHandler, |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
216 self.dgram_examine) |
|
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
217 |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
218 @requires_forking |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
219 def test_ForkingUDPServer(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
220 with simple_subprocess(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
221 self.run_server(socketserver.ForkingUDPServer, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
222 socketserver.DatagramRequestHandler, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
223 self.dgram_examine) |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
224 |
|
76165
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
225 @contextlib.contextmanager |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
226 def mocked_select_module(self): |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
227 """Mocks the select.select() call to raise EINTR for first call""" |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
228 old_select = select.select |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
229 |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
230 class MockSelect: |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
231 def __init__(self): |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
232 self.called = 0 |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
233 |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
234 def __call__(self, *args): |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
235 self.called += 1 |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
236 if self.called == 1: |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
237 # raise the exception on first call |
| 76172 | 238 raise OSError(errno.EINTR, os.strerror(errno.EINTR)) |
|
76165
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
239 else: |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
240 # Return real select value for consecutive calls |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
241 return old_select(*args) |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
242 |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
243 select.select = MockSelect() |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
244 try: |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
245 yield select.select |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
246 finally: |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
247 select.select = old_select |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
248 |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
249 def test_InterruptServerSelectCall(self): |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
250 with self.mocked_select_module() as mock_select: |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
251 pid = self.run_server(socketserver.TCPServer, |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
252 socketserver.StreamRequestHandler, |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
253 self.stream_examine) |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
254 # Make sure select was called again: |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
255 self.assertGreater(mock_select.called, 1) |
|
5493d44b56d8
Issue #7978: socketserver now restarts the select() call when EINTR is returned.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73348
diff
changeset
|
256 |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
257 # Alas, on Linux (at least) recvfrom() doesn't return a meaningful |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
258 # client address so this cannot work: |
|
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
259 |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
260 # @requires_unix_sockets |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
261 # def test_UnixDatagramServer(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
262 # self.run_server(socketserver.UnixDatagramServer, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
263 # socketserver.DatagramRequestHandler, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
264 # self.dgram_examine) |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
265 # |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
266 # @requires_unix_sockets |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
267 # def test_ThreadingUnixDatagramServer(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
268 # self.run_server(socketserver.ThreadingUnixDatagramServer, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
269 # socketserver.DatagramRequestHandler, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
270 # self.dgram_examine) |
|
45549
8dd30fe11a4b
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
271 # |
|
86895
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
272 # @requires_unix_sockets |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
273 # @requires_forking |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
274 # def test_ForkingUnixDatagramServer(self): |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
275 # self.run_server(socketserver.ForkingUnixDatagramServer, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
276 # socketserver.DatagramRequestHandler, |
|
1feeeb8992f8
Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents:
80929
diff
changeset
|
277 # self.dgram_examine) |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
278 |
|
60968
f523e40df9c5
Merged revisions 80484 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59615
diff
changeset
|
279 @reap_threads |
|
60972
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
280 def test_shutdown(self): |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
281 # Issue #2302: shutdown() should always succeed in making an |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
282 # other thread leave serve_forever(). |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
283 class MyServer(socketserver.TCPServer): |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
284 pass |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
285 |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
286 class MyHandler(socketserver.StreamRequestHandler): |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
287 pass |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
288 |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
289 threads = [] |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
290 for i in range(20): |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
291 s = MyServer((HOST, 0), MyHandler) |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
292 t = threading.Thread( |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
293 name='MyServer serving', |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
294 target=s.serve_forever, |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
295 kwargs={'poll_interval':0.01}) |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
296 t.daemon = True # In case this function raises. |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
297 threads.append((t, s)) |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
298 for t, s in threads: |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
299 t.start() |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
300 s.shutdown() |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
301 for t, s in threads: |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
302 t.join() |
|
67295
80600c0c33b7
test_sockserver: close servers when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66310
diff
changeset
|
303 s.server_close() |
|
60972
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
52389
diff
changeset
|
304 |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
305 |
|
19949
04ce2a48c0a8
Rework akin to test_threaded_import, so that this can run under regrtest.
Tim Peters <tim.peters@gmail.com>
parents:
18545
diff
changeset
|
306 def test_main(): |
|
04ce2a48c0a8
Rework akin to test_threaded_import, so that this can run under regrtest.
Tim Peters <tim.peters@gmail.com>
parents:
18545
diff
changeset
|
307 if imp.lock_held(): |
|
45134
bdcf40d1b38e
Merged revisions 60481,60485,60489-60520,60523-60527,60530-60533,60535-60538,60540-60551 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43014
diff
changeset
|
308 # If the import lock is held, the threads will hang |
|
52389
d4e7470bd660
Merged revisions 70554,70588-70589,70598,70605,70611-70621,70623-70624,70626-70627 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48747
diff
changeset
|
309 raise unittest.SkipTest("can't run when import lock is held") |
|
19949
04ce2a48c0a8
Rework akin to test_threaded_import, so that this can run under regrtest.
Tim Peters <tim.peters@gmail.com>
parents:
18545
diff
changeset
|
310 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46933
diff
changeset
|
311 test.support.run_unittest(SocketServerTest) |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
312 |
|
19949
04ce2a48c0a8
Rework akin to test_threaded_import, so that this can run under regrtest.
Tim Peters <tim.peters@gmail.com>
parents:
18545
diff
changeset
|
313 if __name__ == "__main__": |
|
04ce2a48c0a8
Rework akin to test_threaded_import, so that this can run under regrtest.
Tim Peters <tim.peters@gmail.com>
parents:
18545
diff
changeset
|
314 test_main() |
