From c3b1dc4fcc8a344ea5c2e262a2d8ddccf4fddcb4 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 13 Apr 2020 11:47:31 +0200 Subject: [PATCH] tests_multitenant: mock journald sender (#41250) --- .../test_request_context_filter.py | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/tests_multitenant/test_request_context_filter.py b/tests_multitenant/test_request_context_filter.py index 4e00fcf..b64bac6 100644 --- a/tests_multitenant/test_request_context_filter.py +++ b/tests_multitenant/test_request_context_filter.py @@ -8,6 +8,10 @@ from tenant_schemas.utils import tenant_context from django.contrib.auth.models import User +from hobo.journal import JournalHandler + +from systemd.test.test_journal import MockSender + def test_request_context_filter(caplog, settings, tenants, client): root_logger = logging.getLogger() @@ -43,11 +47,15 @@ def test_request_context_filter(caplog, settings, tenants, client): @pytest.fixture -def journald_handler(): - from hobo.journal import JournalHandler +def sender(): + yield MockSender() + +@pytest.fixture +def journald_handler(sender): root_logger = logging.getLogger() - journald_handler = JournalHandler() + journald_handler = JournalHandler(sender_function=sender.send) + journald_handler.addFilter(RequestContextFilter()) root_logger.handlers.append(journald_handler) try: yield journald_handler @@ -55,10 +63,9 @@ def journald_handler(): root_logger.handlers.remove(journald_handler) -def test_systemd(settings, tenants, client, journald_handler): +def test_systemd(settings, tenants, client, journald_handler, sender): root_logger = logging.getLogger() assert len(root_logger.handlers) == 2 - journald_handler.addFilter(RequestContextFilter()) for tenant in tenants: with tenant_context(tenant): @@ -75,14 +82,9 @@ def test_systemd(settings, tenants, client, journald_handler): client.get('/', SERVER_NAME=tenant.domain_url, HTTP_X_FORWARDED_FOR='99.99.99.99, 127.0.0.1') - from systemd.journal import Reader - import time - - reader = Reader() - reader.seek_realtime(time.time() - 10) - records = [l for l in reader if l['MESSAGE'] == 'wat!'] - assert len(records) == 2 - for tenant, record in zip(tenants, records): + assert len(sender.buf) == 2 + for tenant, args in zip(tenants, sender.buf): + record = dict(arg.split('=', 1) for arg in args) assert record['IP'] == '99.99.99.99' assert record['TENANT'] == tenant.domain_url assert record['PATH'] == '/' -- 2.24.0