aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config/tests/test_objects.py
diff options
context:
space:
mode:
Diffstat (limited to 'os_net_config/tests/test_objects.py')
-rw-r--r--os_net_config/tests/test_objects.py75
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))