From: Vinay Sajip Date: Sat, 23 Mar 2013 11:22:00 +0000 (+0000) Subject: Issue #17521: Merged fix from 3.2. X-Git-Tag: v3.3.1rc1~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9b862b9d6679ed0de6dfeba158b417d79d4d6ed1;p=python Issue #17521: Merged fix from 3.2. --- 9b862b9d6679ed0de6dfeba158b417d79d4d6ed1 diff --cc Lib/test/test_logging.py index 69da27a945,d11b938937..2ff8c9134d --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@@ -1363,41 -891,28 +1384,50 @@@ class ConfigFileTest(BaseTest) # Original logger output is empty. self.assert_log_lines([]) + def test_logger_disabling(self): + self.apply_config(self.disable_test) + logger = logging.getLogger('foo') + self.assertFalse(logger.disabled) + self.apply_config(self.disable_test) + self.assertTrue(logger.disabled) + self.apply_config(self.disable_test, disable_existing_loggers=False) + self.assertFalse(logger.disabled) + -class LogRecordStreamHandler(StreamRequestHandler): - """Handler for a streaming logging request. It saves the log message in the - TCP server's 'log_output' attribute.""" +@unittest.skipUnless(threading, 'Threading required for this test.') +class SocketHandlerTest(BaseTest): + + """Test for SocketHandler objects.""" + + def setUp(self): + """Set up a TCP server to receive log messages, and a SocketHandler + pointing to that server's address and port.""" + BaseTest.setUp(self) + addr = ('localhost', 0) + self.server = server = TestTCPServer(addr, self.handle_socket, + 0.01) + server.start() + server.ready.wait() + self.sock_hdlr = logging.handlers.SocketHandler('localhost', + server.port) + self.log_output = '' + self.root_logger.removeHandler(self.root_logger.handlers[0]) + self.root_logger.addHandler(self.sock_hdlr) + self.handled = threading.Semaphore(0) - TCP_LOG_END = "!!!END!!!" + def tearDown(self): + """Shutdown the TCP server.""" + try: + self.server.stop(2.0) + self.root_logger.removeHandler(self.sock_hdlr) + self.sock_hdlr.close() + finally: + BaseTest.tearDown(self) - def handle(self): - """Handle multiple requests - each expected to be of 4-byte length, - followed by the LogRecord in pickle format. Logs the record - according to whatever policy is configured locally.""" + def handle_socket(self, request): + conn = request.connection while True: - chunk = self.connection.recv(4) + chunk = conn.recv(4) if len(chunk) < 4: break slen = struct.unpack(">L", chunk)[0]