Add service to change log levels (#6221)
* Add service to change log levels * Fix review comments
This commit is contained in:
parent
86d4d10176
commit
9490cb4c8f
3 changed files with 104 additions and 23 deletions
|
@ -10,6 +10,14 @@ from tests.common import get_test_home_assistant
|
|||
|
||||
RECORD = namedtuple('record', ('name', 'levelno'))
|
||||
|
||||
NO_LOGS_CONFIG = {'logger': {'default': 'info'}}
|
||||
TEST_CONFIG = {
|
||||
'logger': {
|
||||
'default': 'warning',
|
||||
'logs': {'test': 'info'}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class TestUpdater(unittest.TestCase):
|
||||
"""Test logger component."""
|
||||
|
@ -17,17 +25,29 @@ class TestUpdater(unittest.TestCase):
|
|||
def setUp(self):
|
||||
"""Setup things to be run when tests are started."""
|
||||
self.hass = get_test_home_assistant()
|
||||
self.log_config = {'logger':
|
||||
{'default': 'warning', 'logs': {'test': 'info'}}}
|
||||
self.log_filter = None
|
||||
|
||||
def tearDown(self):
|
||||
"""Stop everything that was started."""
|
||||
del logging.root.handlers[-1]
|
||||
self.hass.stop()
|
||||
|
||||
def setup_logger(self, config):
|
||||
"""Setup logger and save log filter."""
|
||||
setup_component(self.hass, logger.DOMAIN, config)
|
||||
self.log_filter = logging.root.handlers[-1].filters[0]
|
||||
|
||||
def assert_logged(self, name, level):
|
||||
"""Assert that a certain record was logged."""
|
||||
self.assertTrue(self.log_filter.filter(RECORD(name, level)))
|
||||
|
||||
def assert_not_logged(self, name, level):
|
||||
"""Assert that a certain record was not logged."""
|
||||
self.assertFalse(self.log_filter.filter(RECORD(name, level)))
|
||||
|
||||
def test_logger_setup(self):
|
||||
"""Use logger to create a logging filter."""
|
||||
setup_component(self.hass, logger.DOMAIN, self.log_config)
|
||||
self.setup_logger(TEST_CONFIG)
|
||||
|
||||
self.assertTrue(len(logging.root.handlers) > 0)
|
||||
handler = logging.root.handlers[-1]
|
||||
|
@ -40,22 +60,42 @@ class TestUpdater(unittest.TestCase):
|
|||
|
||||
def test_logger_test_filters(self):
|
||||
"""Test resulting filter operation."""
|
||||
setup_component(self.hass, logger.DOMAIN, self.log_config)
|
||||
|
||||
log_filter = logging.root.handlers[-1].filters[0]
|
||||
self.setup_logger(TEST_CONFIG)
|
||||
|
||||
# Blocked default record
|
||||
record = RECORD('asdf', logging.DEBUG)
|
||||
self.assertFalse(log_filter.filter(record))
|
||||
self.assert_not_logged('asdf', logging.DEBUG)
|
||||
|
||||
# Allowed default record
|
||||
record = RECORD('asdf', logging.WARNING)
|
||||
self.assertTrue(log_filter.filter(record))
|
||||
self.assert_logged('asdf', logging.WARNING)
|
||||
|
||||
# Blocked named record
|
||||
record = RECORD('test', logging.DEBUG)
|
||||
self.assertFalse(log_filter.filter(record))
|
||||
self.assert_not_logged('test', logging.DEBUG)
|
||||
|
||||
# Allowed named record
|
||||
record = RECORD('test', logging.INFO)
|
||||
self.assertTrue(log_filter.filter(record))
|
||||
self.assert_logged('test', logging.INFO)
|
||||
|
||||
def test_set_filter_empty_config(self):
|
||||
"""Test change log level from empty configuration."""
|
||||
self.setup_logger(NO_LOGS_CONFIG)
|
||||
|
||||
self.assert_not_logged('test', logging.DEBUG)
|
||||
|
||||
self.hass.services.call(
|
||||
logger.DOMAIN, 'set_level', {'test': 'debug'})
|
||||
self.hass.block_till_done()
|
||||
|
||||
self.assert_logged('test', logging.DEBUG)
|
||||
|
||||
def test_set_filter(self):
|
||||
"""Test change log level of existing filter."""
|
||||
self.setup_logger(TEST_CONFIG)
|
||||
|
||||
self.assert_not_logged('asdf', logging.DEBUG)
|
||||
self.assert_logged('dummy', logging.WARNING)
|
||||
|
||||
self.hass.services.call(logger.DOMAIN, 'set_level',
|
||||
{'asdf': 'debug', 'dummy': 'info'})
|
||||
self.hass.block_till_done()
|
||||
|
||||
self.assert_logged('asdf', logging.DEBUG)
|
||||
self.assert_logged('dummy', logging.WARNING)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue