commit 76b6b49fd8164d858b3b081e6b6a7aa8cdf315cb Author: Damian Johnson atagar@torproject.org Date: Sat Feb 1 14:59:33 2020 -0800
Drop LogBuffer class
Deprecated class that was only used within our tests. Python 3's logging module has better handlers for us to use. --- stem/util/log.py | 31 ------------------------------- test/unit/response/events.py | 19 +++++++++++-------- test/unit/util/log.py | 13 +++++++++++-- 3 files changed, 22 insertions(+), 41 deletions(-)
diff --git a/stem/util/log.py b/stem/util/log.py index 4ef977b1..3093396f 100644 --- a/stem/util/log.py +++ b/stem/util/log.py @@ -218,37 +218,6 @@ def error(message): log(Runlevel.ERROR, message)
-class LogBuffer(logging.Handler): - """ - Basic log handler that listens for stem events and stores them so they can be - read later. Log entries are cleared as they are read. - - .. versionchanged:: 1.4.0 - Added the yield_records argument. - - .. deprecated:: 1.8.0 - This will be dropped in Stem 2.x. Use python's logging.BufferingHandler instead. - """ - - def __init__(self, runlevel, yield_records = False): - super(LogBuffer, self).__init__(level = logging_level(runlevel)) - - self.formatter = FORMATTER - self._buffer = [] - self._yield_records = yield_records - - def is_empty(self): - return not bool(self._buffer) - - def __iter__(self): - while self._buffer: - record = self._buffer.pop(0) - yield record if self._yield_records else self.formatter.format(record) - - def emit(self, record): - self._buffer.append(record) - - class _StdoutLogger(logging.Handler): def __init__(self, runlevel): logging.Handler.__init__(self, level = logging_level(runlevel)) diff --git a/test/unit/response/events.py b/test/unit/response/events.py index 27862054..8e2512bd 100644 --- a/test/unit/response/events.py +++ b/test/unit/response/events.py @@ -3,6 +3,8 @@ Unit tests for the stem.response.events classes. """
import datetime +import logging.handlers +import queue import threading import unittest
@@ -1642,21 +1644,22 @@ class TestEvents(unittest.TestCase): """
stem_logger = stem.util.log.get_logger() - logging_buffer = stem.util.log.LogBuffer(stem.util.log.INFO) - stem_logger.addHandler(logging_buffer) + + messages = queue.Queue() + handler = logging.handlers.QueueHandler(messages) + handler.setLevel(stem.util.log.INFO) + stem_logger.addHandler(handler)
# Try parsing a valid event. We shouldn't log anything.
_get_event(STATUS_GENERAL_CONSENSUS_ARRIVED) - self.assertTrue(logging_buffer.is_empty()) - self.assertEqual([], list(logging_buffer)) + self.assertTrue(messages.empty())
# Parse an invalid runlevel.
_get_event(STATUS_GENERAL_CONSENSUS_ARRIVED.replace('NOTICE', 'OMEGA_CRITICAL!!!')) - logged_events = list(logging_buffer)
- self.assertEqual(1, len(logged_events)) - self.assertTrue('STATUS_GENERAL event had an unrecognized runlevel' in logged_events[0]) + self.assertEqual(1, messages.qsize()) + self.assertTrue('STATUS_GENERAL event had an unrecognized runlevel' in str(messages.get_nowait()))
- stem_logger.removeHandler(logging_buffer) + stem_logger.removeHandler(handler) diff --git a/test/unit/util/log.py b/test/unit/util/log.py index 615d8d36..7b5f1209 100644 --- a/test/unit/util/log.py +++ b/test/unit/util/log.py @@ -2,6 +2,7 @@ Unit tests for the stem.util.log functions. """
+import logging import unittest
from stem.util import log @@ -15,9 +16,17 @@ class TestLog(unittest.TestCase):
try: self.assertFalse(log.is_tracing()) - logger.addHandler(log.LogBuffer(log.DEBUG)) + + handler = logging.NullHandler() + handler.setLevel(log.DEBUG) + logger.addHandler(handler) + self.assertFalse(log.is_tracing()) - logger.addHandler(log.LogBuffer(log.TRACE)) + + handler = logging.NullHandler() + handler.setLevel(log.TRACE) + logger.addHandler(handler) + self.assertTrue(log.is_tracing()) finally: logger.handlers = original_handlers
tor-commits@lists.torproject.org