Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_socketserver.py @ 58925:eecf1bef052d 2.6
Merged revisions 78207 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78207 | ezio.melotti | 2010-02-17 01:26:09 +0200 (Wed, 17 Feb 2010) | 1 line
#7930: fix stripid
........
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Tue, 16 Feb 2010 23:29:44 +0000 |
| parents | 024b2b984866 |
| children | ea43f7f6e84c e6009b9cd908 |
| rev | line source |
|---|---|
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
1 """ |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
2 Test suite for SocketServer.py. |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
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 |
|
45551
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
5 import contextlib |
|
38767
46f3eb474c84
Fix the socket tests so they can be run concurrently. Backport candidate
Neal Norwitz <nnorwitz@gmail.com>
parents:
31896
diff
changeset
|
6 import errno |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
7 import imp |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
8 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
|
9 import select |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
10 import signal |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
11 import socket |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
12 import tempfile |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
13 import threading |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 import time |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
15 import unittest |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
16 import SocketServer |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
17 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
18 import test.test_support |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
19 from test.test_support import reap_children, verbose, TestSkipped |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
20 from test.test_support import TESTFN as TEST_FILE |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
21 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
22 test.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
|
23 |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
24 TEST_STR = "hello world\n" |
|
46362
d917da2b1946
- Issue #2550: The approach used by client/server code for obtaining ports
Trent Nelson <trent.nelson@snakebite.org>
parents:
46025
diff
changeset
|
25 HOST = test.test_support.HOST |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
26 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
27 HAVE_UNIX_SOCKETS = hasattr(socket, "AF_UNIX") |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
28 HAVE_FORKING = hasattr(os, "fork") and os.name != "os2" |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
29 |
|
45669
436105125445
Fix test_socketserver on Windows after r61099 added several signal.alarm()
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45551
diff
changeset
|
30 def signal_alarm(n): |
|
436105125445
Fix test_socketserver on Windows after r61099 added several signal.alarm()
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45551
diff
changeset
|
31 """Call signal.alarm when it exists (i.e. not on Windows).""" |
|
436105125445
Fix test_socketserver on Windows after r61099 added several signal.alarm()
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45551
diff
changeset
|
32 if hasattr(signal, 'alarm'): |
|
436105125445
Fix test_socketserver on Windows after r61099 added several signal.alarm()
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45551
diff
changeset
|
33 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
|
34 |
|
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 def receive(sock, n, timeout=20): |
|
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 r, w, x = select.select([sock], [], [], timeout) |
|
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 if sock in r: |
|
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 return sock.recv(n) |
|
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 else: |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
27020
diff
changeset
|
40 raise RuntimeError, "timed out on %r" % (sock,) |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 |
|
45141
3850d13bf96b
Let test_socketserver pass on win32, which does not have AF_UNIX sockets.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
45117
diff
changeset
|
42 if HAVE_UNIX_SOCKETS: |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
43 class ForkingUnixStreamServer(SocketServer.ForkingMixIn, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
44 SocketServer.UnixStreamServer): |
|
45141
3850d13bf96b
Let test_socketserver pass on win32, which does not have AF_UNIX sockets.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
45117
diff
changeset
|
45 pass |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
47 class ForkingUnixDatagramServer(SocketServer.ForkingMixIn, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
48 SocketServer.UnixDatagramServer): |
|
45141
3850d13bf96b
Let test_socketserver pass on win32, which does not have AF_UNIX sockets.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
45117
diff
changeset
|
49 pass |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
50 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
51 |
|
45551
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
52 @contextlib.contextmanager |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
53 def simple_subprocess(testcase): |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
54 pid = os.fork() |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
55 if pid == 0: |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
56 # Don't throw an exception; it would be caught by the test harness. |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
57 os._exit(72) |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
58 yield None |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
59 pid2, status = os.waitpid(pid, 0) |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
60 testcase.assertEquals(pid2, pid) |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
61 testcase.assertEquals(72 << 8, status) |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
62 |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
63 |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
64 class SocketServerTest(unittest.TestCase): |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
65 """Test all socket servers.""" |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
66 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
67 def setUp(self): |
|
45669
436105125445
Fix test_socketserver on Windows after r61099 added several signal.alarm()
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45551
diff
changeset
|
68 signal_alarm(20) # Kill deadlocks after 20 seconds. |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
69 self.port_seed = 0 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
70 self.test_files = [] |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
71 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
72 def tearDown(self): |
|
46025
9634c17e8fe5
Try to prevent the alarm going off early in tearDown
Neal Norwitz <nnorwitz@gmail.com>
parents:
45944
diff
changeset
|
73 signal_alarm(0) # Didn't deadlock. |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
74 reap_children() |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
75 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
76 for fn in self.test_files: |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
77 try: |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
78 os.remove(fn) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
79 except os.error: |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
80 pass |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
81 self.test_files[:] = [] |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
82 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
83 def pickaddr(self, proto): |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
84 if proto == socket.AF_INET: |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
85 return (HOST, 0) |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
86 else: |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
87 # XXX: We need a way to tell AF_UNIX to pick its own name |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
88 # like AF_INET provides port==0. |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
89 dir = None |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
90 if os.name == 'os2': |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
91 dir = '\socket' |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
92 fn = tempfile.mktemp(prefix='unix_socket.', dir=dir) |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
93 if os.name == 'os2': |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
94 # AF_UNIX socket names on OS/2 require a specific prefix |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
95 # which can't include a drive letter and must also use |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
96 # backslashes as directory separators |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
97 if fn[1] == ':': |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
98 fn = fn[2:] |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
99 if fn[0] in (os.sep, os.altsep): |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
100 fn = fn[1:] |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
101 if os.sep == '/': |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
102 fn = fn.replace(os.sep, os.altsep) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
103 else: |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
104 fn = fn.replace(os.altsep, os.sep) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
105 self.test_files.append(fn) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
106 return fn |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
107 |
|
45702
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
108 def make_server(self, addr, svrcls, hdlrbase): |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
109 class MyServer(svrcls): |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
110 def handle_error(self, request, client_address): |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
111 self.close_request(request) |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
112 self.server_close() |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
113 raise |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
114 |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
115 class MyHandler(hdlrbase): |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
116 def handle(self): |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
117 line = self.rfile.readline() |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
118 self.wfile.write(line) |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
119 |
|
45702
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
120 if verbose: print "creating server" |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
121 server = MyServer(addr, MyHandler) |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
122 self.assertEquals(server.server_address, server.socket.getsockname()) |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
123 return server |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
124 |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
125 def run_server(self, svrcls, hdlrbase, testfunc): |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
126 server = self.make_server(self.pickaddr(svrcls.address_family), |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
127 svrcls, hdlrbase) |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
128 # We had the OS pick a port, so pull the real address out of |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
129 # the server. |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
130 addr = server.server_address |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
131 if verbose: |
|
45702
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
132 print "server created" |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
133 print "ADDR =", addr |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
134 print "CLASS =", svrcls |
|
45702
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
135 t = threading.Thread( |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
136 name='%s serving' % svrcls, |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
137 target=server.serve_forever, |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
138 # Short poll interval to make the test finish quickly. |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
139 # Time between requests is short enough that we won't wake |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
140 # up spuriously too many times. |
|
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
141 kwargs={'poll_interval':0.01}) |
|
48289
024b2b984866
change a few uses of the threading APIs
Benjamin Peterson <benjamin@python.org>
parents:
47598
diff
changeset
|
142 t.daemon = True # In case this function raises. |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
143 t.start() |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
144 if verbose: print "server running" |
|
45702
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
145 for i in range(3): |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
146 if verbose: print "test client", i |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
147 testfunc(svrcls.address_family, addr) |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
148 if verbose: print "waiting for server" |
|
45702
a8754c0db53f
Progress on issue #1193577 by adding a polling .shutdown() method to
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45669
diff
changeset
|
149 server.shutdown() |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
150 t.join() |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
151 if verbose: print "done" |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
152 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
153 def stream_examine(self, proto, addr): |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
154 s = socket.socket(proto, socket.SOCK_STREAM) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
155 s.connect(addr) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
156 s.sendall(TEST_STR) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
157 buf = data = receive(s, 100) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
158 while data and '\n' not in buf: |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
159 data = receive(s, 100) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
160 buf += data |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
161 self.assertEquals(buf, TEST_STR) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
162 s.close() |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
163 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
164 def dgram_examine(self, proto, addr): |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
165 s = socket.socket(proto, socket.SOCK_DGRAM) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
166 s.sendto(TEST_STR, addr) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
167 buf = data = receive(s, 100) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
168 while data and '\n' not in buf: |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
169 data = receive(s, 100) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
170 buf += data |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
171 self.assertEquals(buf, TEST_STR) |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
172 s.close() |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
173 |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
174 def test_TCPServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
175 self.run_server(SocketServer.TCPServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
176 SocketServer.StreamRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
177 self.stream_examine) |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
178 |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
179 def test_ThreadingTCPServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
180 self.run_server(SocketServer.ThreadingTCPServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
181 SocketServer.StreamRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
182 self.stream_examine) |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
183 |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
184 if HAVE_FORKING: |
|
45551
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
185 def test_ForkingTCPServer(self): |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
186 with simple_subprocess(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
187 self.run_server(SocketServer.ForkingTCPServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
188 SocketServer.StreamRequestHandler, |
|
45551
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
189 self.stream_examine) |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
190 |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
191 if HAVE_UNIX_SOCKETS: |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
192 def test_UnixStreamServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
193 self.run_server(SocketServer.UnixStreamServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
194 SocketServer.StreamRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
195 self.stream_examine) |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
196 |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
197 def test_ThreadingUnixStreamServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
198 self.run_server(SocketServer.ThreadingUnixStreamServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
199 SocketServer.StreamRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
200 self.stream_examine) |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
201 |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
202 if HAVE_FORKING: |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
203 def test_ForkingUnixStreamServer(self): |
|
45551
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
204 with simple_subprocess(self): |
|
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
205 self.run_server(ForkingUnixStreamServer, |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
206 SocketServer.StreamRequestHandler, |
|
45551
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
207 self.stream_examine) |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
208 |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
209 def test_UDPServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
210 self.run_server(SocketServer.UDPServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
211 SocketServer.DatagramRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
212 self.dgram_examine) |
|
39505
e90e7e768cb3
Fix the test for SocketServer so it should pass on cygwin and not fail
Neal Norwitz <nnorwitz@gmail.com>
parents:
38961
diff
changeset
|
213 |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
214 def test_ThreadingUDPServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
215 self.run_server(SocketServer.ThreadingUDPServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
216 SocketServer.DatagramRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
217 self.dgram_examine) |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
218 |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
219 if HAVE_FORKING: |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
220 def test_ForkingUDPServer(self): |
|
45551
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
221 with simple_subprocess(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
222 self.run_server(SocketServer.ForkingUDPServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
223 SocketServer.DatagramRequestHandler, |
|
45551
cc220745e4e5
Prevent SocketServer.ForkingMixIn from waiting on child processes that it
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45544
diff
changeset
|
224 self.dgram_examine) |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
225 |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
226 # Alas, on Linux (at least) recvfrom() doesn't return a meaningful |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
227 # client address so this cannot work: |
|
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
228 |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
229 # if HAVE_UNIX_SOCKETS: |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
230 # def test_UnixDatagramServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
231 # self.run_server(SocketServer.UnixDatagramServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
232 # SocketServer.DatagramRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
233 # self.dgram_examine) |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
234 # |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
235 # def test_ThreadingUnixDatagramServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
236 # self.run_server(SocketServer.ThreadingUnixDatagramServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
237 # SocketServer.DatagramRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
238 # self.dgram_examine) |
|
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
239 # |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
240 # if HAVE_FORKING: |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
241 # def test_ForkingUnixDatagramServer(self): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
242 # self.run_server(SocketServer.ForkingUnixDatagramServer, |
|
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
46929
diff
changeset
|
243 # SocketServer.DatagramRequestHandler, |
|
45544
8aaf1495da39
Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
Jeffrey Yasskin <jyasskin@gmail.com>
parents:
45468
diff
changeset
|
244 # self.dgram_examine) |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
245 |
|
18443
9c04e23f8d43
A test suite for SocketServer.py that exposes the various bugs just
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
246 |
|
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
|
247 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
|
248 if imp.lock_held(): |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
249 # If the import lock is held, the threads will hang |
|
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
|
250 raise TestSkipped("can't run when import lock is held") |
|
04ce2a48c0a8
Rework akin to test_threaded_import, so that this can run under regrtest.
Tim Peters <tim.peters@gmail.com>
parents:
18545
diff
changeset
|
251 |
|
45109
a81ef63a1009
Rewrite test_socketserver as unittest, written for GHOP by Benjamin Petersen.
Georg Brandl <georg@python.org>
parents:
42861
diff
changeset
|
252 test.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
|
253 |
|
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
|
254 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
|
255 test_main() |
|
45944
d00a9f75d223
Revert r61650; the intent of this commit was to try and address alarm failures on some of the build slaves. As Neal points out, it's called after test_main(), so it's not going to factor into the test when run via regrtest.py (and removes the original functionality that Jeffrey wanted that would kill the test if it took longer than 3 seconds to run when executing it directly during development).
Trent Nelson <trent.nelson@snakebite.org>
parents:
45937
diff
changeset
|
256 signal_alarm(3) # Shutdown shouldn't take more than 3 seconds. |
