From 7c1b8da1a1bc9f1b22ac4a05e31b259c50888b9d Mon Sep 17 00:00:00 2001 From: Ricardo Carrillo Cruz Date: Thu, 27 Apr 2017 14:48:37 +0200 Subject: [PATCH] Refactor openvswitch unit tests (#24055) Rather than passing a file to load fixture, build a matrix containing the run_command side_effect per test. This will allow more code-reuse for other ovs modules unit tests. --- test/units/modules/network/ovs/ovs_module.py | 6 +-- .../network/ovs/test_openvswitch_db.py | 42 +++++++++++++++---- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/test/units/modules/network/ovs/ovs_module.py b/test/units/modules/network/ovs/ovs_module.py index 1b8626cba3..05d1a3d323 100644 --- a/test/units/modules/network/ovs/ovs_module.py +++ b/test/units/modules/network/ovs/ovs_module.py @@ -65,9 +65,9 @@ class AnsibleFailJson(Exception): class TestOpenVSwitchModule(unittest.TestCase): def execute_module(self, failed=False, changed=False, - command=None, fixture_name=None): + command=None, test_name=None): - self.load_fixtures(fixture_name) + self.load_fixtures(test_name) if failed: result = self.failed() @@ -108,5 +108,5 @@ class TestOpenVSwitchModule(unittest.TestCase): self.assertEqual(result['changed'], changed, result) return result - def load_fixtures(self, fixture_name): + def load_fixtures(self, test_name): pass diff --git a/test/units/modules/network/ovs/test_openvswitch_db.py b/test/units/modules/network/ovs/test_openvswitch_db.py index 69eec6e6ad..f3eb32b7ce 100644 --- a/test/units/modules/network/ovs/test_openvswitch_db.py +++ b/test/units/modules/network/ovs/test_openvswitch_db.py @@ -26,6 +26,24 @@ from ansible.compat.tests.mock import patch from ansible.modules.network.ovs import openvswitch_db from .ovs_module import TestOpenVSwitchModule, load_fixture, set_module_args +test_name_side_effect_matrix = { + 'test_openvswitch_db_absent_idempotent': [ + (0, 'openvswitch_db_disable_in_band_missing.cfg', None), + (0, None, None)], + 'test_openvswitch_db_absent_removes_key': [ + (0, 'openvswitch_db_disable_in_band_true.cfg', None), + (0, None, None)], + 'test_openvswitch_db_present_idempotent': [ + (0, 'openvswitch_db_disable_in_band_true.cfg', None), + (0, None, None)], + 'test_openvswitch_db_present_adds_key': [ + (0, 'openvswitch_db_disable_in_band_missing.cfg', None), + (0, None, None)], + 'test_openvswitch_db_present_updates_key': [ + (0, 'openvswitch_db_disable_in_band_true.cfg', None), + (0, None, None)], +} + class TestOpenVSwitchDBModule(TestOpenVSwitchModule): @@ -43,10 +61,16 @@ class TestOpenVSwitchDBModule(TestOpenVSwitchModule): self.mock_run_command.stop() self.mock_get_bin_path.stop() - def load_fixtures(self, fixture_name): - self.run_command.side_effect = [ - (0, load_fixture(fixture_name + '.cfg'), None), - (0, None, None)] + def load_fixtures(self, test_name): + test_side_effects = [] + for s in test_name_side_effect_matrix[test_name]: + rc = s[0] + out = load_fixture(s[1]) if s[1] else None + err = s[2] + side_effect_with_fixture_loaded = (rc, out, err) + test_side_effects.append(side_effect_with_fixture_loaded) + self.run_command.side_effect = test_side_effects + self.get_bin_path.return_value = '/usr/bin/ovs-vsctl' def test_openvswitch_db_absent_idempotent(self): @@ -54,7 +78,7 @@ class TestOpenVSwitchDBModule(TestOpenVSwitchModule): table='Bridge', record='test-br', col='other_config', key='disable-in-band', value='True')) - self.execute_module(fixture_name='openvswitch_db_disable_in_band_missing') + self.execute_module(test_name='test_openvswitch_db_absent_idempotent') def test_openvswitch_db_absent_removes_key(self): set_module_args(dict(state='absent', @@ -65,14 +89,14 @@ class TestOpenVSwitchDBModule(TestOpenVSwitchModule): changed=True, command='/usr/bin/ovs-vsctl -t 5 remove Bridge test-br other_config' ' disable-in-band=True', - fixture_name='openvswitch_db_disable_in_band_true') + test_name='test_openvswitch_db_absent_removes_key') def test_openvswitch_db_present_idempotent(self): set_module_args(dict(state='present', table='Bridge', record='test-br', col='other_config', key='disable-in-band', value='True')) - self.execute_module(fixture_name='openvswitch_db_disable_in_band_true') + self.execute_module(test_name='test_openvswitch_db_present_idempotent') def test_openvswitch_db_present_adds_key(self): set_module_args(dict(state='present', @@ -83,7 +107,7 @@ class TestOpenVSwitchDBModule(TestOpenVSwitchModule): changed=True, command='/usr/bin/ovs-vsctl -t 5 add Bridge test-br other_config' ' disable-in-band=True', - fixture_name='openvswitch_db_disable_in_band_missing') + test_name='test_openvswitch_db_present_adds_key') def test_openvswitch_db_present_updates_key(self): set_module_args(dict(state='present', @@ -94,4 +118,4 @@ class TestOpenVSwitchDBModule(TestOpenVSwitchModule): changed=True, command='/usr/bin/ovs-vsctl -t 5 set Bridge test-br other_config' ':disable-in-band=False', - fixture_name='openvswitch_db_disable_in_band_true') + test_name='test_openvswitch_db_present_updates_key')