commit ebaf46e6e310301bc31bb4c45a0430fd52a8439f Author: Damian Johnson atagar@torproject.org Date: Sun Apr 12 15:22:21 2015 -0700
Basic deduplication unit tests
Just some simple unit tests to start with. No suprise, deduplication was completley borked. :P --- nyx/util/log.py | 8 ++++---- test/util/log/__init__.py | 1 + test/util/log/deduplication.py | 27 +++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/nyx/util/log.py b/nyx/util/log.py index a753390..6e28e6c 100644 --- a/nyx/util/log.py +++ b/nyx/util/log.py @@ -34,7 +34,7 @@ def _common_log_messages():
for conf_key in nyx_config.keys(): if conf_key.startswith('dedup.'): - event_type = conf_key[4:] + event_type = conf_key[6:] messages[event_type] = nyx_config.get(conf_key, [])
return messages @@ -69,10 +69,10 @@ class LogEntry(object): :returns: **True** if the given log message is a duplicate of us and **False** otherwise """
- if self.message == entry.message: - return True - elif self.type != entry.type: + if self.type != entry.type: return False + elif self.message == entry.message: + return True
for common_msg in _common_log_messages().get(self.type, []): # if it starts with an asterisk then check the whole message rather diff --git a/test/util/log/__init__.py b/test/util/log/__init__.py index b2fb6f7..9896955 100644 --- a/test/util/log/__init__.py +++ b/test/util/log/__init__.py @@ -3,5 +3,6 @@ Unit tests for nyx's log utilities. """
__all__ = [ + 'deduplication', 'read_tor_log', ] diff --git a/test/util/log/deduplication.py b/test/util/log/deduplication.py new file mode 100644 index 0000000..fdd97f2 --- /dev/null +++ b/test/util/log/deduplication.py @@ -0,0 +1,27 @@ +import unittest + +from nyx.util.log import LogEntry + + +class TestLogDeduplication(unittest.TestCase): + def test_matches_identical_messages(self): + # Simple case is that we match the same message but different timestamp. + + entry = LogEntry(1333738434, 'INFO', 'tor_lockfile_lock(): Locking "/home/atagar/.tor/lock"') + self.assertTrue(entry.is_duplicate(LogEntry(1333738457, 'INFO', 'tor_lockfile_lock(): Locking "/home/atagar/.tor/lock"'))) + + # ... but we shouldn't match if the runlevel differs. + + self.assertFalse(entry.is_duplicate(LogEntry(1333738457, 'DEBUG', 'tor_lockfile_lock(): Locking "/home/atagar/.tor/lock"'))) + + def test_matches_based_on_prefix(self): + # matches using a prefix specified in dedup.cfg + + entry = LogEntry(1333738434, 'NYX_DEBUG', 'GETCONF MyFamily (runtime: 0.0007)') + self.assertTrue(entry.is_duplicate(LogEntry(1333738457, 'NYX_DEBUG', 'GETCONF MyFamily (runtime: 0.0015)'))) + + def test_matches_with_wildcard(self): + # matches using a wildcard specified in dedup.cfg + + entry = LogEntry(1333738434, 'NOTICE', 'Bootstrapped 72%: Loading relay descriptors.') + self.assertTrue(entry.is_duplicate(LogEntry(1333738457, 'NOTICE', 'Bootstrapped 55%: Loading relay descriptors.')))
tor-commits@lists.torproject.org