summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_logging.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index bf1e234..83c3b4f 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -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