From 5b3de0b1517f5e9f04192c4ea548152ffc00d3f2 Mon Sep 17 00:00:00 2001 From: Anton Studenov Date: Fri, 16 Sep 2016 17:21:51 +0300 Subject: [PATCH] Unit tests for fuel network manegement ansible module - Refactored code - Added unit test Change-Id: I22c6346280194d570a4c47fc95fdde2bc96e8264 --- .../ansible/modules/fuel_network_mgmt.py | 16 ++---- os_faults/tests/ansible/__init__.py | 0 os_faults/tests/ansible/modules/__init__.py | 0 .../ansible/modules/test_fule_network_mgmt.py | 51 +++++++++++++++++++ 4 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 os_faults/tests/ansible/__init__.py create mode 100644 os_faults/tests/ansible/modules/__init__.py create mode 100644 os_faults/tests/ansible/modules/test_fule_network_mgmt.py diff --git a/os_faults/ansible/modules/fuel_network_mgmt.py b/os_faults/ansible/modules/fuel_network_mgmt.py index b926133..b42cfe5 100644 --- a/os_faults/ansible/modules/fuel_network_mgmt.py +++ b/os_faults/ansible/modules/fuel_network_mgmt.py @@ -12,6 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. +from ansible.module_utils.basic import * # noqa NETWORK_NAME_TO_INTERFACE = { 'management': 'br-mgmt', @@ -32,19 +33,12 @@ def main(): operation = module.params['operation'] network_name = module.params['network_name'] - interface = NETWORK_NAME_TO_INTERFACE.get(network_name) - cmd = 'ip link set %s %s ' % (interface, operation) + interface = NETWORK_NAME_TO_INTERFACE[network_name] + cmd = 'ip link set %s %s' % (interface, operation) - rc, stdout, stderr = module.run_command(cmd) + rc, stdout, stderr = module.run_command(cmd, check_rc=True) + module.exit_json(cmd=cmd, rc=rc, stderr=stderr, stdout=stdout) - try: - result = dict(rc=rc, stderr=stderr, stdout=stdout, cmd=cmd) - module.exit_json(**result) - except Exception as e: - module.fail_json(msg=e, rc=rc, stderr=stderr, stdout=stdout, cmd=cmd) - - -from ansible.module_utils.basic import * # noqa if __name__ == '__main__': main() diff --git a/os_faults/tests/ansible/__init__.py b/os_faults/tests/ansible/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/os_faults/tests/ansible/modules/__init__.py b/os_faults/tests/ansible/modules/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/os_faults/tests/ansible/modules/test_fule_network_mgmt.py b/os_faults/tests/ansible/modules/test_fule_network_mgmt.py new file mode 100644 index 0000000..619a285 --- /dev/null +++ b/os_faults/tests/ansible/modules/test_fule_network_mgmt.py @@ -0,0 +1,51 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import ddt +import mock + +from os_faults.ansible.modules import fuel_network_mgmt +from os_faults.tests import test + + +@ddt.ddt +class FuelNetworkManagementTestCase(test.TestCase): + + def setUp(self): + super(FuelNetworkManagementTestCase, self).setUp() + + @ddt.data(['management', 'up', 'ip link set br-mgmt up'], + ['management', 'down', 'ip link set br-mgmt down'], + ['public', 'up', 'ip link set br-ex up'], + ['public', 'down', 'ip link set br-ex down'], + ['private', 'up', 'ip link set br-prv up'], + ['private', 'down', 'ip link set br-prv down'], + ['storage', 'up', 'ip link set br-storage up'], + ['storage', 'down', 'ip link set br-storage down']) + @ddt.unpack + @mock.patch("os_faults.ansible.modules.fuel_network_mgmt.AnsibleModule") + def test_main(self, network_name, operation, cmd, mock_ansible_module): + ansible_module_inst = mock_ansible_module.return_value + ansible_module_inst.run_command.return_value = [ + 'myrc', 'mystdout', 'mystderr'] + ansible_module_inst.params = { + 'network_name': network_name, + 'operation': operation, + } + fuel_network_mgmt.main() + ansible_module_inst.exit_json.assert_called_once_with( + cmd=cmd, + rc='myrc', + stdout='mystdout', + stderr='mystderr', + )