]> granicus.if.org Git - python/commitdiff
I think the test_logging failure on Solaris is timing related. We don't
authorNeal Norwitz <nnorwitz@gmail.com>
Fri, 3 Mar 2006 21:53:14 +0000 (21:53 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Fri, 3 Mar 2006 21:53:14 +0000 (21:53 +0000)
want to wait forever if we don't receive the last message.  But we also
don't want the test to fail if we shutdown too quickly.  I can't reliably
reproduce this failure, so I'm kinda guessing this is the problem.
We'll see if this band-aid helps.

Lib/test/test_logging.py

index bf1e23487e2c4a6dbe87c768b007cd7438c9d3be..83c3b4fd0d9124ae0ed1e1116aabf61573e14c78 100644 (file)
@@ -98,13 +98,22 @@ 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:
-            rd, wr, ex = select.select([self.socket.fileno()],
-                                       [], [],
-                                       self.timeout)
-            if rd:
-                self.handle_request()
+            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()
         #notify the main thread that we're about to exit
         socketDataProcessed.set()
         # close the listen socket