Fix vlog level filtering

use_python_logger() receives a max_level argument which determines
the maximum level of traces that have to be logged. Current
implementation doesn't handle the max_level properly and this patch
fixes it.

Also, as the current unit test was only testing a case which worked,
this patch extends the coverage by testing also some corner cases.

Change-Id: Ic9718825fc8c97ae77bce773ecb42579f7527383
This commit is contained in:
Daniel Alvarez
2017-06-21 10:07:47 +00:00
parent a7afa1fe7b
commit 4e7190d1f0
2 changed files with 25 additions and 5 deletions

View File

@@ -56,7 +56,7 @@ def use_python_logger(levels=ALL_LEVELS, max_level=None):
"""
if max_level:
levels = levels[:-levels.index(max_level)]
levels = levels[:levels.index(max_level) + 1]
# NOTE(twilson) Replace functions directly instead of subclassing so that
# debug messages contain the correct function/filename/line information

View File

@@ -38,13 +38,33 @@ class TestOvsdbVlog(base.TestCase):
self.assertTrue(vlog.is_patched(lvl))
self.assertFalse(vlog.is_patched(removed_level))
def test_vlog_max_level(self):
def _test_vlog_max_level_helper(self, max_level, patched_levels,
unpatched_levels):
vlog.reset_logger()
max_level = vlog.WARN
vlog.use_python_logger(max_level=max_level)
patched_levels = (vlog.CRITICAL, vlog.ERROR, vlog.WARN)
unpatched_levels = (vlog.INFO, vlog.DEBUG)
for lvl in patched_levels:
self.assertTrue(vlog.is_patched(lvl))
for lvl in unpatched_levels:
self.assertFalse(vlog.is_patched(lvl))
def test_vlog_max_level_WARN(self):
max_level = vlog.WARN
patched_levels = (vlog.CRITICAL, vlog.ERROR, vlog.WARN)
unpatched_levels = (vlog.INFO, vlog.DEBUG)
self._test_vlog_max_level_helper(
max_level, patched_levels, unpatched_levels)
def test_vlog_max_level_CRITICAL(self):
max_level = vlog.CRITICAL
patched_levels = (vlog.CRITICAL,)
unpatched_levels = (vlog.ERROR, vlog.WARN, vlog.INFO, vlog.DEBUG)
self._test_vlog_max_level_helper(
max_level, patched_levels, unpatched_levels)
def test_vlog_max_level_DEBUG(self):
max_level = vlog.DEBUG
patched_levels = (vlog.CRITICAL, vlog.ERROR, vlog.WARN, vlog.INFO,
vlog.DEBUG)
unpatched_levels = ()
self._test_vlog_max_level_helper(
max_level, patched_levels, unpatched_levels)