From e3555d3a0de5e341b0ddd8a712214f95aa9f5f02 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Wed, 3 Jun 2020 13:24:11 +0200 Subject: [PATCH] test that log entries are written to redis --- test/test_monitoring.py | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/test/test_monitoring.py b/test/test_monitoring.py index c8bb739f..f25d3793 100644 --- a/test/test_monitoring.py +++ b/test/test_monitoring.py @@ -1,10 +1,25 @@ import contextlib +import json import os from unittest import mock from inventory_provider.tasks import monitor +from inventory_provider.tasks.common import _get_redis CONNECTION_FINGERPRINT = "SDF@#$@#" +TEST_MANAGEMENT_EVENTS = [ + {'type': 'task-aaaa', 'uuid': 'AAAA', 'clock': 999}, + {'type': 'task-infox', 'uuid': 'AAAA', 'clock': 999} +] + +TEST_LOG_EVENTS = [ + {'type': 'task-info', 'uuid': 'AAAA', 'clock': 99}, + {'type': 'task-info', 'uuid': 'AAAA', 'clock': 999}, + {'type': 'task-warning', 'uuid': 'AAAA', 'clock': 88}, + {'type': 'task-warning', 'uuid': 'AAAA', 'clock': 888}, + {'type': 'task-error', 'uuid': 'AAAA', 'clock': 77}, + {'type': 'task-error', 'uuid': 'AAAA', 'clock': 777} +] @contextlib.contextmanager def mocked_connection(): @@ -25,12 +40,35 @@ class MockedReceiver(): self.handlers = handlers def capture(self, **kwargs): - pass + # write test events to log, check in the test case + for e in TEST_MANAGEMENT_EVENTS + TEST_LOG_EVENTS: + self.handlers['*'](e) + + +def backend_db(): + return _get_redis({ + 'redis': { + 'hostname': None, + 'port': None + }, + 'redis-databases': [0, 7] + }).db @mock.patch('inventory_provider.tasks.monitor.app.events.State', MockedState) @mock.patch('inventory_provider.tasks.monitor.app.connection', mocked_connection) +@mock.patch('inventory_provider.tasks.monitor.app.events.Receiver', MockedReceiver) def test_latchdb(data_config_filename, mocked_redis): os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME'] = data_config_filename monitor.run() + + db = backend_db() + + for e in TEST_MANAGEMENT_EVENTS: + expected_key = f'joblog:{e["uuid"]}:{e["type"]}' + assert e == json.loads(db[expected_key]) + + for e in TEST_LOG_EVENTS: + expected_key = f'joblog:{e["uuid"]}:{e["type"]}:{e["clock"]}' + assert e == json.loads(db[expected_key]) -- GitLab