Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1827eff

Browse files
committed
Issue #5824: Fix DatagramRequestHandler tests by binding the client socket
1 parent ee3074e commit 1827eff

2 files changed

Lines changed: 20 additions & 29 deletions

File tree

Lib/socketserver.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,6 @@ class will essentially render the service "deaf" while one request is
120120

121121
# Author of the BaseServer patch: Luke Kenneth Casson Leighton
122122

123-
# XXX Warning!
124-
# There is a test suite for this module, but it cannot be run by the
125-
# standard regression test.
126-
# To run it manually, run Lib/test/test_socketserver.py.
127-
128123
__version__ = "0.4"
129124

130125

@@ -750,9 +745,6 @@ def finish(self):
750745

751746
class DatagramRequestHandler(BaseRequestHandler):
752747

753-
# XXX Regrettably, I cannot get this working on Linux;
754-
# s.recvfrom() doesn't return a meaningful client address.
755-
756748
"""Define self.rfile and self.wfile for datagram sockets."""
757749

758750
def setup(self):

Lib/test/test_socketserver.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ def stream_examine(self, proto, addr):
160160

161161
def dgram_examine(self, proto, addr):
162162
s = socket.socket(proto, socket.SOCK_DGRAM)
163+
if HAVE_UNIX_SOCKETS and proto == socket.AF_UNIX:
164+
s.bind(self.pickaddr(proto))
163165
s.sendto(TEST_STR, addr)
164166
buf = data = receive(s, 100)
165167
while data and b'\n' not in buf:
@@ -222,27 +224,24 @@ def test_ForkingUDPServer(self):
222224
socketserver.DatagramRequestHandler,
223225
self.dgram_examine)
224226

225-
# Alas, on Linux (at least) recvfrom() doesn't return a meaningful
226-
# client address so this cannot work:
227-
228-
# @requires_unix_sockets
229-
# def test_UnixDatagramServer(self):
230-
# self.run_server(socketserver.UnixDatagramServer,
231-
# socketserver.DatagramRequestHandler,
232-
# self.dgram_examine)
233-
#
234-
# @requires_unix_sockets
235-
# def test_ThreadingUnixDatagramServer(self):
236-
# self.run_server(socketserver.ThreadingUnixDatagramServer,
237-
# socketserver.DatagramRequestHandler,
238-
# self.dgram_examine)
239-
#
240-
# @requires_unix_sockets
241-
# @requires_forking
242-
# def test_ForkingUnixDatagramServer(self):
243-
# self.run_server(socketserver.ForkingUnixDatagramServer,
244-
# socketserver.DatagramRequestHandler,
245-
# self.dgram_examine)
227+
@requires_unix_sockets
228+
def test_UnixDatagramServer(self):
229+
self.run_server(socketserver.UnixDatagramServer,
230+
socketserver.DatagramRequestHandler,
231+
self.dgram_examine)
232+
233+
@requires_unix_sockets
234+
def test_ThreadingUnixDatagramServer(self):
235+
self.run_server(socketserver.ThreadingUnixDatagramServer,
236+
socketserver.DatagramRequestHandler,
237+
self.dgram_examine)
238+
239+
@requires_unix_sockets
240+
@requires_forking
241+
def test_ForkingUnixDatagramServer(self):
242+
self.run_server(ForkingUnixDatagramServer,
243+
socketserver.DatagramRequestHandler,
244+
self.dgram_examine)
246245

247246
@reap_threads
248247
def test_shutdown(self):

0 commit comments

Comments
 (0)