summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2003-04-25 14:22:00 (GMT)
committerGuido van Rossum <guido@python.org>2003-04-25 14:22:00 (GMT)
commit376e636f186e22ad479f35da4b973114d11ff2d9 (patch)
treebac789f3a0c454bdd8a8a539976a6a90f18a23d8
parent7d9963fea8295962e501b23800aee57a15bd2b8e (diff)
downloadcpython-376e636f186e22ad479f35da4b973114d11ff2d9.zip
cpython-376e636f186e22ad479f35da4b973114d11ff2d9.tar.gz
cpython-376e636f186e22ad479f35da4b973114d11ff2d9.tar.bz2
New version from Vinaj, should solve the threading problems (hopefully).
-rw-r--r--Lib/test/output/test_logging4
-rw-r--r--Lib/test/test_logging.py21
2 files changed, 18 insertions, 7 deletions
diff --git a/Lib/test/output/test_logging b/Lib/test/output/test_logging
index 0b0c4a0..e7c3eef 100644
--- a/Lib/test/output/test_logging
+++ b/Lib/test/output/test_logging
@@ -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 ---------------------------------------------------
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 9c47408..d43b33e 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -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()