ha-core/tests/util/test_logging.py

68 lines
2.1 KiB
Python

"""Test Home Assistant logging util methods."""
import asyncio
import logging
import threading
import homeassistant.util.logging as logging_util
def test_sensitive_data_filter():
"""Test the logging sensitive data filter."""
log_filter = logging_util.HideSensitiveDataFilter('mock_sensitive')
clean_record = logging.makeLogRecord({'msg': "clean log data"})
log_filter.filter(clean_record)
assert clean_record.msg == "clean log data"
sensitive_record = logging.makeLogRecord({'msg': "mock_sensitive log"})
log_filter.filter(sensitive_record)
assert sensitive_record.msg == "******* log"
@asyncio.coroutine
def test_async_handler_loop_log(loop):
"""Test the logging sensitive data filter."""
loop._thread_ident = threading.get_ident()
queue = asyncio.Queue(loop=loop)
base_handler = logging.handlers.QueueHandler(queue)
handler = logging_util.AsyncHandler(loop, base_handler)
# Test passthrough props and noop functions
assert handler.createLock() is None
assert handler.acquire() is None
assert handler.release() is None
assert handler.formatter is base_handler.formatter
assert handler.name is base_handler.get_name()
handler.name = 'mock_name'
assert base_handler.get_name() == 'mock_name'
log_record = logging.makeLogRecord({'msg': "Test Log Record"})
handler.emit(log_record)
yield from handler.async_close(True)
assert queue.get_nowait() == log_record
assert queue.empty()
@asyncio.coroutine
def test_async_handler_thread_log(loop):
"""Test the logging sensitive data filter."""
loop._thread_ident = threading.get_ident()
queue = asyncio.Queue(loop=loop)
base_handler = logging.handlers.QueueHandler(queue)
handler = logging_util.AsyncHandler(loop, base_handler)
log_record = logging.makeLogRecord({'msg': "Test Log Record"})
def add_log():
"""Emit a mock log."""
handler.emit(log_record)
handler.close()
yield from loop.run_in_executor(None, add_log)
yield from handler.async_close(True)
assert queue.get_nowait() == log_record
assert queue.empty()