Unit tests for fuel network manegement ansible module

- Refactored code
- Added unit test

Change-Id: I22c6346280194d570a4c47fc95fdde2bc96e8264
This commit is contained in:
Anton Studenov 2016-09-16 17:21:51 +03:00
parent 3b0fdcea39
commit 5b3de0b151
4 changed files with 56 additions and 11 deletions

View File

@ -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()

View File

View File

@ -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',
)