[Kimchi-devel] [PATCH v4] [Kimchi 3/8] Changing network API: unit test changes

dhbarboza82 at gmail.com dhbarboza82 at gmail.com
Thu Feb 18 10:56:26 UTC 2016


From: Daniel Henrique Barboza <dhbarboza82 at gmail.com>

- test_mock_network: using FeatureTests.is_nm_running() instead of
its own function that does the same thing
- test_model_network: changed 'interface' to interfaces, added
network manager verification on vlan tag
- test_template: added network manager verification for macvtap
network with vlan tag
- fixed copyright dates and format in all those files

Signed-off-by: Daniel Henrique Barboza <dhbarboza82 at gmail.com>
---
 tests/test_mock_network.py  | 11 ++---------
 tests/test_model_network.py | 38 +++++++++++++++++++++++++++++++++-----
 tests/test_template.py      | 12 +++++++-----
 3 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/tests/test_mock_network.py b/tests/test_mock_network.py
index 3a9b7b5..3a2ca64 100644
--- a/tests/test_mock_network.py
+++ b/tests/test_mock_network.py
@@ -26,7 +26,7 @@ from functools import partial
 from tests.utils import get_free_port, patch_auth, request, run_server
 
 from wok.plugins.kimchi.mockmodel import MockModel
-from wok.utils import run_command
+from wok.plugins.kimchi.model.featuretests import FeatureTests
 
 from test_model_network import _do_network_test
 
@@ -57,19 +57,12 @@ def tearDownModule():
     os.unlink('/tmp/obj-store-test')
 
 
-def is_network_manager_running():
-    out, err, rc = run_command(['nmcli', 'dev', 'status'])
-    if rc != 0:
-        return False
-    return True
-
-
 class MockNetworkTests(unittest.TestCase):
     def setUp(self):
         self.request = partial(request, host, ssl_port)
         model.reset()
 
-    @unittest.skipIf(is_network_manager_running(),
+    @unittest.skipIf(FeatureTests.is_nm_running(),
                      'test_vlan_tag_bridge skipped because Network '
                      'Manager is running.')
     def test_vlan_tag_bridge(self):
diff --git a/tests/test_model_network.py b/tests/test_model_network.py
index 2abdd50..e27036d 100644
--- a/tests/test_model_network.py
+++ b/tests/test_model_network.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM, Corp. 2015
+# Copyright IBM Corp, 2015-2016
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -29,6 +29,7 @@ from tests.utils import run_server
 from wok.rollbackcontext import RollbackContext
 
 from wok.plugins.kimchi.model.model import Model
+from wok.plugins.kimchi.model.featuretests import FeatureTests
 
 
 model = None
@@ -124,7 +125,7 @@ class NetworkTests(unittest.TestCase):
             network = json.loads(
                 self.request('/plugins/kimchi/networks/network-1').read()
             )
-            keys = [u'name', u'connection', u'interface', u'subnet', u'dhcp',
+            keys = [u'name', u'connection', u'interfaces', u'subnet', u'dhcp',
                     u'vms', u'in_use', u'autostart', u'state', u'persistent']
             self.assertEquals(sorted(keys), sorted(network.keys()))
 
@@ -143,9 +144,36 @@ class NetworkTests(unittest.TestCase):
         if len(interfaces) > 0:
             iface = interfaces[0]['name']
             networks.append({'name': u'macvtap-network',
-                             'connection': 'macvtap', 'interface': iface})
-            networks.append({'name': u'bridge-network', 'connection': 'bridge',
-                             'interface': iface})
+                             'connection': 'macvtap', 'interfaces': [iface]})
+            if not FeatureTests.is_nm_running():
+                networks.append({'name': u'bridge-network',
+                                 'connection': 'bridge',
+                                 'interfaces': [iface]})
 
         for net in networks:
             _do_network_test(self, model, net)
+
+    def test_macvtap_network_create_fails_more_than_one_interface(self):
+        network = {
+            'name': u'macvtap-network',
+            'connection': 'macvtap',
+            'interfaces': ['fake_iface1', 'fake_iface2', 'fake_iface3']
+        }
+
+        expected_error_msg = "KCHNET0030E"
+        req = json.dumps(network)
+        resp = self.request('/plugins/kimchi/networks', req, 'POST')
+        self.assertEquals(400, resp.status)
+        self.assertIn(expected_error_msg, resp.read())
+
+    def test_bridge_network_create_fails_more_than_one_interface(self):
+        network = {
+            'name': u'bridge-network',
+            'connection': 'bridge',
+            'interfaces': ['fake_iface1', 'fake_iface2', 'fake_iface3']
+        }
+        expected_error_msg = "KCHNET0030E"
+        req = json.dumps(network)
+        resp = self.request('/plugins/kimchi/networks', req, 'POST')
+        self.assertEquals(400, resp.status)
+        self.assertIn(expected_error_msg, resp.read())
diff --git a/tests/test_template.py b/tests/test_template.py
index da0037e..7e53ae1 100644
--- a/tests/test_template.py
+++ b/tests/test_template.py
@@ -2,7 +2,7 @@
 #
 # Project Kimchi
 #
-# Copyright IBM, Corp. 2015-2016
+# Copyright IBM Corp, 2015-2016
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -28,6 +28,7 @@ from tests.utils import get_free_port, patch_auth, request, run_server
 
 from wok.plugins.kimchi.config import READONLY_POOL_TYPE
 from wok.plugins.kimchi.mockmodel import MockModel
+from wok.plugins.kimchi.model.featuretests import FeatureTests
 
 
 model = None
@@ -320,10 +321,11 @@ class TemplateTests(unittest.TestCase):
             iface = interfaces[0]['name']
             networks.append({'name': u'bridge-network',
                              'connection': 'macvtap',
-                             'interface': iface})
-            networks.append({'name': u'bridge-network',
-                             'connection': 'macvtap',
-                             'interface': iface, 'vlan_id': 987})
+                             'interfaces': [iface]})
+            if not FeatureTests.is_nm_running():
+                networks.append({'name': u'bridge-network-with-vlan',
+                                 'connection': 'bridge',
+                                 'interfaces': [iface], 'vlan_id': 987})
 
         tmpl_nets = []
         for net in networks:
-- 
2.5.0




More information about the Kimchi-devel mailing list