diff options
Diffstat (limited to 'os_net_config/tests/test_objects.py')
-rw-r--r-- | os_net_config/tests/test_objects.py | 75 |
1 files changed, 67 insertions, 8 deletions
diff --git a/os_net_config/tests/test_objects.py b/os_net_config/tests/test_objects.py index 2f43997..268a48b 100644 --- a/os_net_config/tests/test_objects.py +++ b/os_net_config/tests/test_objects.py @@ -15,9 +15,11 @@ # under the License. import json +import six from os_net_config import objects from os_net_config.tests import base +from os_net_config import utils class TestRoute(base.TestCase): @@ -93,9 +95,9 @@ class TestInterface(base.TestCase): self.assertEqual(True, interface.use_dhcp) def test_from_json_dhcp_nic1(self): - def test_numbered_nics(): + def dummy_numbered_nics(nic_mapping=None): return {"nic1": "em3"} - self.stubs.Set(objects, '_numbered_nics', test_numbered_nics) + self.stubs.Set(objects, '_numbered_nics', dummy_numbered_nics) data = '{"type": "interface", "name": "nic1", "use_dhcp": true}' interface = objects.object_from_json(json.loads(data)) @@ -141,9 +143,9 @@ class TestVlan(base.TestCase): self.assertEqual(True, vlan.use_dhcp) def test_from_json_dhcp_nic1(self): - def test_numbered_nics(): + def dummy_numbered_nics(nic_mapping=None): return {"nic1": "em4"} - self.stubs.Set(objects, '_numbered_nics', test_numbered_nics) + self.stubs.Set(objects, '_numbered_nics', dummy_numbered_nics) data = '{"type": "vlan", "device": "nic1", "vlan_id": 16,' \ '"use_dhcp": true}' @@ -175,9 +177,9 @@ class TestBridge(base.TestCase): self.assertEqual("br-foo", interface1.bridge_name) def test_from_json_dhcp_with_nic1(self): - def test_numbered_nics(): + def dummy_numbered_nics(nic_mapping=None): return {"nic1": "em5"} - self.stubs.Set(objects, '_numbered_nics', test_numbered_nics) + self.stubs.Set(objects, '_numbered_nics', dummy_numbered_nics) data = """{ "type": "ovs_bridge", @@ -258,9 +260,9 @@ class TestBond(base.TestCase): def test_from_json_dhcp_with_nic1_nic2(self): - def test_numbered_nics(): + def dummy_numbered_nics(nic_mapping=None): return {"nic1": "em1", "nic2": "em2"} - self.stubs.Set(objects, '_numbered_nics', test_numbered_nics) + self.stubs.Set(objects, '_numbered_nics', dummy_numbered_nics) data = """{ "type": "ovs_bond", @@ -285,3 +287,60 @@ class TestBond(base.TestCase): self.assertEqual("em1", interface1.name) interface2 = bridge.members[1] self.assertEqual("em2", interface2.name) + + +class TestNumberedNicsMapping(base.TestCase): + + # We want to test the function, not the dummy.. + stub_numbered_nics = False + + def tearDown(self): + super(TestNumberedNicsMapping, self).tearDown() + objects._NUMBERED_NICS = None + + def _stub_active_nics(self, nics): + def dummy_ordered_active_nics(): + return nics + self.stubs.Set(utils, 'ordered_active_nics', dummy_ordered_active_nics) + + def test_numbered_nics_default(self): + self._stub_active_nics(['em1', 'em2']) + expected = {'nic1': 'em1', 'nic2': 'em2'} + self.assertEqual(expected, objects._numbered_nics()) + + def test_numbered_nics_mapped(self): + self._stub_active_nics(['em1', 'em2']) + mapping = {'nic1': 'em2', 'nic2': 'em1'} + expected = {'nic1': 'em2', 'nic2': 'em1'} + self.assertEqual(expected, objects._numbered_nics(nic_mapping=mapping)) + + def test_numbered_nics_mapped_partial(self): + self._stub_active_nics(['em1', 'em2', 'em3', 'em4']) + mapping = {'nic1': 'em2', 'nic2': 'em1'} + expected = {'nic1': 'em2', 'nic2': 'em1', 'nic3': 'em3', 'nic4': 'em4'} + self.assertEqual(expected, objects._numbered_nics(nic_mapping=mapping)) + + def test_numbered_nics_map_error_notactive(self): + self._stub_active_nics(['em1', 'em2']) + mapping = {'nic1': 'em3', 'nic2': 'em1'} + expected = {'nic2': 'em1'} + self.assertEqual(expected, objects._numbered_nics(nic_mapping=mapping)) + + def test_numbered_nics_map_error_duplicate(self): + self._stub_active_nics(['em1', 'em2']) + mapping = {'nic1': 'em1', 'nic2': 'em1'} + err = self.assertRaises(objects.InvalidConfigException, + objects._numbered_nics, nic_mapping=mapping) + expected = 'em1 already mapped, check mapping file for duplicates' + self.assertIn(expected, six.text_type(err)) + + def test_numbered_nics_map_mac(self): + def dummy_interface_mac(name): + mac_map = {'em1': '12:34:56:78:9a:bc', + 'em2': '12:34:56:de:f0:12'} + return mac_map[name] + self.stubs.Set(utils, 'interface_mac', dummy_interface_mac) + self._stub_active_nics(['em1', 'em2']) + mapping = {'nic1': '12:34:56:de:f0:12', 'nic2': '12:34:56:78:9a:bc'} + expected = {'nic1': 'em2', 'nic2': 'em1'} + self.assertEqual(expected, objects._numbered_nics(nic_mapping=mapping)) |