diff --git a/test/test_celery_worker_global.py b/test/test_celery_worker_global.py new file mode 100644 index 0000000000000000000000000000000000000000..92633f8eb97c165cff3b40a9faaa0925926c5edc --- /dev/null +++ b/test/test_celery_worker_global.py @@ -0,0 +1,46 @@ +""" +just checks that the worker methods call the right functions +and some data ends up in the right place ... otherwise not very detailed +""" +import contextlib + +from inventory_provider.tasks import worker +from inventory_provider.tasks.common import get_redis + + +def backend_db(): + return get_redis({ + 'redis': {'hostname': None, 'port': None} + }).db + + +@contextlib.contextmanager +def _mocked_connection(x): + yield x + + +def test_update_locations(mocker, mocked_worker_module): + + mocker.patch( + 'inventory_provider.db.opsdb.lookup_pop_info', + lambda c, h: [{'C': c, 'H': h}]) + mocker.patch( + 'inventory_provider.db.db.connection', + _mocked_connection) + + def _cached_locations(): + db = backend_db() + for k in db.keys(): + if k.startswith('opsdb:location:'): + yield k + + db = backend_db() + for k in list(_cached_locations()): + del db[k] + + assert len(list(_cached_locations())) == 0 # sanity + worker.update_equipment_locations() + assert len(list(_cached_locations())) > 0 + + for k in _cached_locations(): + print(db[k])