# -*- coding: utf-8 -*- """ unit tests for the cache runner """ from __future__ import absolute_import, print_function, unicode_literals import os import salt.runners.queue as queue_mod from tests.support.helpers import slowTest from tests.support.mixins import LoaderModuleMockMixin from tests.support.mock import MagicMock, patch from tests.support.runtests import RUNTIME_VARS from tests.support.unit import TestCase class QueueTest(TestCase, LoaderModuleMockMixin): """ Validate the queue runner """ def setup_loader_modules(self): return { queue_mod: { "__opts__": { "sock_dir": os.path.join(RUNTIME_VARS.TMP, "queue-runner-sock-dir"), "transport": "zeromq", } } } def test_insert_runner(self): queue_insert = MagicMock(return_value=True) with patch.object(queue_mod, "insert", queue_insert): queue_mod.insert_runner("test.stdout_print", queue="salt") expected_call = { "queue": "salt", "items": {"fun": "test.stdout_print", "args": [], "kwargs": {}}, "backend": "pgjsonb", } queue_insert.assert_called_once_with(**expected_call) @slowTest def test_process_runner(self): ret = [{"fun": "test.stdout_print", "args": [], "kwargs": {}}] queue_pop = MagicMock(return_value=ret) test_stdout_print = MagicMock(return_value=True) with patch.dict(queue_mod.__salt__, {"test.stdout_print": test_stdout_print}): with patch.object(queue_mod, "pop", queue_pop): queue_mod.process_runner(queue="salt") queue_pop.assert_called_once_with( is_runner=True, queue="salt", quantity=1, backend="pgjsonb" ) test_stdout_print.assert_called_once_with() queue_pop.assert_called_once_with( is_runner=True, queue="salt", quantity=1, backend="pgjsonb" )