8 |
8 |
|
9 |
9 |
from django.contrib.auth.models import User
|
10 |
10 |
|
|
11 |
from hobo.journal import JournalHandler
|
|
12 |
|
|
13 |
from systemd.test.test_journal import MockSender
|
|
14 |
|
11 |
15 |
|
12 |
16 |
def test_request_context_filter(caplog, settings, tenants, client):
|
13 |
17 |
root_logger = logging.getLogger()
|
... | ... | |
43 |
47 |
|
44 |
48 |
|
45 |
49 |
@pytest.fixture
|
46 |
|
def journald_handler():
|
47 |
|
from hobo.journal import JournalHandler
|
|
50 |
def sender():
|
|
51 |
yield MockSender()
|
|
52 |
|
48 |
53 |
|
|
54 |
@pytest.fixture
|
|
55 |
def journald_handler(sender):
|
49 |
56 |
root_logger = logging.getLogger()
|
50 |
|
journald_handler = JournalHandler()
|
|
57 |
journald_handler = JournalHandler(sender_function=sender.send)
|
|
58 |
journald_handler.addFilter(RequestContextFilter())
|
51 |
59 |
root_logger.handlers.append(journald_handler)
|
52 |
60 |
try:
|
53 |
61 |
yield journald_handler
|
... | ... | |
55 |
63 |
root_logger.handlers.remove(journald_handler)
|
56 |
64 |
|
57 |
65 |
|
58 |
|
def test_systemd(settings, tenants, client, journald_handler):
|
|
66 |
def test_systemd(settings, tenants, client, journald_handler, sender):
|
59 |
67 |
root_logger = logging.getLogger()
|
60 |
68 |
assert len(root_logger.handlers) == 2
|
61 |
|
journald_handler.addFilter(RequestContextFilter())
|
62 |
69 |
|
63 |
70 |
for tenant in tenants:
|
64 |
71 |
with tenant_context(tenant):
|
... | ... | |
75 |
82 |
client.get('/', SERVER_NAME=tenant.domain_url,
|
76 |
83 |
HTTP_X_FORWARDED_FOR='99.99.99.99, 127.0.0.1')
|
77 |
84 |
|
78 |
|
from systemd.journal import Reader
|
79 |
|
import time
|
80 |
|
|
81 |
|
reader = Reader()
|
82 |
|
reader.seek_realtime(time.time() - 10)
|
83 |
|
records = [l for l in reader if l['MESSAGE'] == 'wat!']
|
84 |
|
assert len(records) == 2
|
85 |
|
for tenant, record in zip(tenants, records):
|
|
85 |
assert len(sender.buf) == 2
|
|
86 |
for tenant, args in zip(tenants, sender.buf):
|
|
87 |
record = dict(arg.split('=', 1) for arg in args)
|
86 |
88 |
assert record['IP'] == '99.99.99.99'
|
87 |
89 |
assert record['TENANT'] == tenant.domain_url
|
88 |
90 |
assert record['PATH'] == '/'
|
89 |
|
-
|