]> granicus.if.org Git - python/commitdiff
Backout the last hack and add in this new one.
authorNeal Norwitz <nnorwitz@gmail.com>
Sun, 5 Mar 2006 02:16:12 +0000 (02:16 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Sun, 5 Mar 2006 02:16:12 +0000 (02:16 +0000)
The failure definitely seems timing related.  This change *seems* to work.
Since the failure isn't doesn't occur consistently, it's hard to tell.

Running these tests on Solaris in this order:
test_urllibnet test_operator test_cgi \
test_isinstance test_future test_ast test_logging

generally caused a failure (about 50% of the time) before the sleep.
I couldn't provoke the failure with the sleep.

This should really be cleaned up by using threading.Events or something
so it is not timing dependent and doesn't hang forever on failure.

Lib/test/test_logging.py

index 83c3b4fd0d9124ae0ed1e1116aabf61573e14c78..b689dc8bb5296ac0d1044ce9e75efc642ede016f 100644 (file)
@@ -98,22 +98,12 @@ class LogRecordSocketReceiver(ThreadingTCPServer):
         self.abort = 0
         self.timeout = 1
 
-    def _wait_and_process_data(self):
-        rd, wr, ex = select.select([self.socket.fileno()], [], [],
-                                   self.timeout)
-        if rd:
-            self.handle_request()
-
     def serve_until_stopped(self):
         while not self.abort:
-            self._wait_and_process_data()
-
-        # XXX(nnorwitz): Try to fix timing related test failures.
-        # It's possible self.aborted was set before the final message
-        # was received.  By calling _wait_and_process_data(),
-        # it gives us one last chance to read messages.
-        # The test generally only fails on Solaris.
-        self._wait_and_process_data()
+            rd, wr, ex = select.select([self.socket.fileno()], [], [],
+                                       self.timeout)
+            if rd:
+                self.handle_request()
         #notify the main thread that we're about to exit
         socketDataProcessed.set()
         # close the listen socket
@@ -633,6 +623,10 @@ def test_main_inner():
 
         rootLogger.addHandler(shdlr)
         test0()
+        # XXX(nnorwitz): Try to fix timing related test failures.
+        # This sleep gives us some extra time to read messages.
+        # The test generally only fails on Solaris without this sleep.
+        time.sleep(2.0)
         shdlr.close()
         rootLogger.removeHandler(shdlr)