[Python-3000-checkins] r59424 - python/branches/py3k/Lib/test/test_xmlrpc.py

christian.heimes python-3000-checkins at python.org
Sat Dec 8 18:09:18 CET 2007


Author: christian.heimes
Date: Sat Dec  8 18:09:18 2007
New Revision: 59424

Modified:
   python/branches/py3k/Lib/test/test_xmlrpc.py
Log:
Added stop_serving and a timeout to tearDown()
It prevents the XML RPC tests from blocking until the end of the world.
I think it's a backport candidate and other modules may benefit from the feature, too.

Modified: python/branches/py3k/Lib/test/test_xmlrpc.py
==============================================================================
--- python/branches/py3k/Lib/test/test_xmlrpc.py	(original)
+++ python/branches/py3k/Lib/test/test_xmlrpc.py	Sat Dec  8 18:09:18 2007
@@ -293,6 +293,14 @@
         PORT = None
         evt.set()
 
+def stop_serving():
+    global PORT
+    if PORT is None:
+        return
+    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    sock.connect(('localhost', int(PORT)))
+    sock.send(b"")
+    sock.close()
 
 
 class SimpleServerTestCase(unittest.TestCase):
@@ -315,7 +323,11 @@
 
     def tearDown(self):
         # wait on the server thread to terminate
-        self.evt.wait()
+        self.evt.wait(4.0)
+        if not self.evt.isSet():
+            self.evt.set()
+            stop_serving()
+            raise RuntimeError("timeout reached, test has failed")
 
         # disable traceback reporting
         SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = False
@@ -328,7 +340,7 @@
             # protocol error; provide additional information in test output
             self.fail("%s\n%s" % (e, e.headers))
 
-    def DISABLED_test_404(self):
+    def test_404(self):
         # send POST with httplib, it should return 404 header and
         # 'Not Found' message.
         conn = httplib.HTTPConnection('localhost', PORT)


More information about the Python-3000-checkins mailing list