From f60dda4b1d02eebd2b3fa17d708807b4fbe84820 Mon Sep 17 00:00:00 2001 From: Jayesh Kariya Date: Tue, 5 May 2015 15:37:35 +0530 Subject: [PATCH] adding states/zk_concurrency unit test case --- tests/unit/states/zk_concurrency_test.py | 80 ++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tests/unit/states/zk_concurrency_test.py diff --git a/tests/unit/states/zk_concurrency_test.py b/tests/unit/states/zk_concurrency_test.py new file mode 100644 index 0000000000..e894bc1bc1 --- /dev/null +++ b/tests/unit/states/zk_concurrency_test.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +''' + :codeauthor: :email:`Jayesh Kariya ` +''' +# Import Python libs +from __future__ import absolute_import + +# Import Salt Testing Libs +from salttesting import skipIf, TestCase +from salttesting.mock import ( + NO_MOCK, + NO_MOCK_REASON, + MagicMock, + patch) + +from salttesting.helpers import ensure_in_syspath + +ensure_in_syspath('../../') + +# Import Salt Libs +from salt.states import zk_concurrency + +# Globals +zk_concurrency.__salt__ = {} +zk_concurrency.__opts__ = {} + + +@skipIf(NO_MOCK, NO_MOCK_REASON) +class ZkConcurrencyTestCase(TestCase): + ''' + Validate the zk_concurrency state + ''' + def test_lock(self): + ''' + Test to block state execution until you are able to get the lock + ''' + ret = {'name': 'salt', + 'changes': {}, + 'result': True, + 'comment': ''} + + with patch.dict(zk_concurrency.__opts__, {"test": True}): + ret.update({'comment': 'Attempt to acquire lock', 'result': None}) + self.assertDictEqual(zk_concurrency.lock('salt', 'dude'), ret) + + with patch.dict(zk_concurrency.__opts__, {"test": False}): + mock = MagicMock(return_value=True) + with patch.dict(zk_concurrency.__salt__, + {"zk_concurrency.lock": mock}): + ret.update({'comment': 'lock acquired', 'result': True}) + self.assertDictEqual(zk_concurrency.lock('salt', 'dude', + 'stack'), ret) + + def test_unlock(self): + ''' + Test to remove lease from semaphore + ''' + ret = {'name': 'salt', + 'changes': {}, + 'result': True, + 'comment': ''} + + with patch.dict(zk_concurrency.__opts__, {"test": True}): + ret.update({'comment': 'Released lock if it is here', + 'result': None}) + self.assertDictEqual(zk_concurrency.unlock('salt'), ret) + + with patch.dict(zk_concurrency.__opts__, {"test": False}): + mock = MagicMock(return_value=True) + with patch.dict(zk_concurrency.__salt__, + {"zk_concurrency.unlock": mock}): + ret.update({'comment': '', 'result': True}) + self.assertDictEqual(zk_concurrency.unlock('salt', + identifier='stack'), + ret) + + +if __name__ == '__main__': + from integration import run_tests + run_tests(ZkConcurrencyTestCase, needs_daemon=False)