]> granicus.if.org Git - python/commitdiff
New version from Vinaj, should solve the threading problems (hopefully).
authorGuido van Rossum <guido@python.org>
Fri, 25 Apr 2003 14:22:00 +0000 (14:22 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 25 Apr 2003 14:22:00 +0000 (14:22 +0000)
Lib/test/output/test_logging
Lib/test/test_logging.py

index 0b0c4a0cdf6352a916674575c0a698dd16c2f165..e7c3eef176d72b4b7ce5c9d89d1ca1028f6df5d2 100644 (file)
@@ -25,7 +25,7 @@ WARNING:UNDEF:Message 21
 INFO:UNDEF:Message 22
 CRITICAL:INF.BADPARENT.UNDEF:Message 23
 CRITICAL:INF.BADPARENT:Message 24
-INFO:INF:Messages should bear numbers 0 through 24.
+INFO:INF:Finish up, it's closing time. Messages should bear numbers 0 through 24.
 -- log_test0  end    ---------------------------------------------------
 -- log_test1  begin  ---------------------------------------------------
 -- setting logging level to 'Boring' -----
@@ -511,5 +511,5 @@ UNDEF -> WARNING: Message 21 (via logrecv.tcp.UNDEF)
 UNDEF -> INFO: Message 22 (via logrecv.tcp.UNDEF)
 INF.BADPARENT.UNDEF -> CRITICAL: Message 23 (via logrecv.tcp.INF.BADPARENT.UNDEF)
 INF.BADPARENT -> CRITICAL: Message 24 (via logrecv.tcp.INF.BADPARENT)
-INF -> INFO: Messages should bear numbers 0 through 24. (via logrecv.tcp.INF)
+INF -> INFO: Finish up, it's closing time. Messages should bear numbers 0 through 24. (via logrecv.tcp.INF)
 -- logrecv output end    ---------------------------------------------------
index 9c47408b23ae6d5e0e537dbd38107f8768abcb40..d43b33e8a9f34590adaa3266cdb8ac9c0d12bf3d 100644 (file)
@@ -38,6 +38,8 @@ except (ValueError, locale.Error):
 
 BANNER = "-- %-10s %-6s ---------------------------------------------------\n"
 
+FINISH_UP = "Finish up, it's closing time. Messages should bear numbers 0 through 24."
+
 #----------------------------------------------------------------------------
 # Log receiver
 #----------------------------------------------------------------------------
@@ -79,10 +81,15 @@ class LogRecordStreamHandler(StreamRequestHandler):
 
     def handleLogRecord(self, record):
         logname = "logrecv.tcp." + record.name
+        #If the end-of-messages sentinel is seen, tell the server to terminate
+        if record.msg == FINISH_UP:
+            self.server.abort = 1
         record.msg = record.msg + " (via " + logname + ")"
         logger = logging.getLogger(logname)
         logger.handle(record)
 
+socketDataProcessed = threading.Condition()
+
 class LogRecordSocketReceiver(ThreadingTCPServer):
     """
     A simple-minded TCP socket-based logging receiver suitable for test
@@ -107,6 +114,10 @@ class LogRecordSocketReceiver(ThreadingTCPServer):
             if rd:
                 self.handle_request()
             abort = self.abort
+        #notify the main thread that we're about to exit
+        socketDataProcessed.acquire()
+        socketDataProcessed.notify()
+        socketDataProcessed.release()
 
     def process_request(self, request, client_address):
         #import threading
@@ -195,7 +206,7 @@ def test0():
     INF_ERR_UNDEF.info(nextmessage())
     INF_ERR_UNDEF.debug(nextmessage())
 
-    INF.info("Messages should bear numbers 0 through 24.")
+    INF.info(FINISH_UP)
 
 #----------------------------------------------------------------------------
 # Test 1
@@ -455,10 +466,10 @@ def test_main():
         banner("log_test3", "end")
 
     finally:
-        #shut down server
-        tcpserver.abort = 1
-        for thread in threads:
-            thread.join()
+        #wait for TCP receiver to terminate
+        socketDataProcessed.acquire()
+        socketDataProcessed.wait()
+        socketDataProcessed.release()
         banner("logrecv output", "begin")
         sys.stdout.write(sockOut.getvalue())
         sockOut.close()