
From: Pooja Kulkarni <pkulkark@linux.vnet.ibm.com> v2: Corrected make check-local errors v1: This patch modifies the unit test cases to include the new features introduced for s390x in vm interfaces (macvtap and ovs) and ovsbridges api. Signed-off-by: Pooja Kulkarni <pkulkark@linux.vnet.ibm.com> --- tests/test_model.py | 24 +++++++++++++++++ tests/test_rest.py | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/tests/test_model.py b/tests/test_model.py index ff2a6cb..082cb9d 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -651,6 +651,30 @@ class ModelTests(unittest.TestCase): iface = inst.vmiface_lookup(vm_name, mac) self.assertEquals(mac, iface['mac']) + if os.uname()[4] == "s390x": + + # attach macvtap interface to vm + iface_args = {"type": "macvtap", + "source": "test-network", + "mode": "vepa"} + mac = inst.vmifaces_create(vm_name, iface_args) + rollback.prependDefer(inst.vmiface_delete, vm_name, mac) + + iface = inst.vmiface_lookup(vm_name, mac) + self.assertEquals("macvtap", iface["type"]) + self.assertEquals("test-network", iface['source']) + self.assertEquals("vepa", iface['mode']) + + # attach ovs interface to vm + iface_args = {"type": "ovs", + "source": "test-network"} + mac = inst.vmifaces_create(vm_name, iface_args) + rollback.prependDefer(inst.vmiface_delete, vm_name, mac) + + iface = inst.vmiface_lookup(vm_name, mac) + self.assertEquals("ovs", iface["type"]) + self.assertEquals("test-network", iface['source']) + @unittest.skipUnless(utils.running_as_root(), 'Must be run as root') def test_vm_netboot(self): inst = model.Model(objstore_loc=self.tmp_store) diff --git a/tests/test_rest.py b/tests/test_rest.py index 3a61d13..bfb25c6 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -967,6 +967,19 @@ class RestTests(unittest.TestCase): 'POST') self.assertEquals(400, resp.status) + # try to attach an interface of type "macvtap" without source + if os.uname()[4] == "s390x": + req = json.dumps({'type': 'macvtap'}) + resp = self.request('/plugins/kimchi/vms/test-vm/ifaces', req, + 'POST') + self.assertEqual(400, resp.status) + + # try to attach an interface of type "ovs" without source + req = json.dumps({'type': 'ovs'}) + resp = self.request('/plugins/kimchi/vms/test-vm/ifaces', req, + 'POST') + self.assertEqual(400, resp.status) + # attach network interface to vm req = json.dumps({"type": "network", "network": "test-network", @@ -1018,6 +1031,67 @@ class RestTests(unittest.TestCase): iface['mac'], '{}', 'DELETE') self.assertEquals(204, resp.status) + if os.uname()[4] == "s390x": + # attach macvtap interface to vm + req = json.dumps({"type": "macvtap", + "source": "test-network"}) + resp = self.request('/plugins/kimchi/vms/test-vm/ifaces', req, + 'POST') + self.assertEquals(201, resp.status) + iface = json.loads(resp.read()) + + self.assertEquals('test-network', iface['source']) + self.assertEquals('macvtap', iface['type']) + + # Start the VM + resp = self.request('/plugins/kimchi/vms/test-vm/start', '{}', + 'POST') + vm = json.loads( + self.request('/plugins/kimchi/vms/test-vm').read()) + self.assertEquals('running', vm['state']) + + # Force poweroff the VM + resp = self.request('/plugins/kimchi/vms/test-vm/poweroff', + '{}', 'POST') + vm = json.loads( + self.request('/plugins/kimchi/vms/test-vm').read()) + self.assertEquals('shutoff', vm['state']) + + # detach network interface from vm + resp = self.request('/plugins/kimchi/vms/test-vm/ifaces/%s' % + iface['mac'], '{}', 'DELETE') + self.assertEquals(204, resp.status) + + # attach ovs interface to vm + req = json.dumps({"type": "ovs", + "source": "test-network"}) + resp = self.request('/plugins/kimchi/vms/test-vm/ifaces', req, + 'POST') + self.assertEquals(201, resp.status) + iface = json.loads(resp.read()) + + self.assertEquals('test-network', iface['source']) + self.assertEquals('ovs', iface['type']) + + # Start the VM + resp = self.request('/plugins/kimchi/vms/test-vm/start', '{}', + 'POST') + vm = json.loads( + self.request('/plugins/kimchi/vms/test-vm').read()) + self.assertEquals('running', vm['state']) + + # Force poweroff the VM + resp = self.request('/plugins/kimchi/vms/test-vm/poweroff', + '{}', 'POST') + vm = json.loads( + self.request('/plugins/kimchi/vms/test-vm').read()) + self.assertEquals('shutoff', vm['state']) + + # detach ovs interface from vm + resp = self.request('/plugins/kimchi/vms/test-vm/ifaces/%s' % + iface['mac'], '{}', 'DELETE') + self.assertEquals(204, resp.status) + def test_vm_customise_storage(self): # Create a Template req = json.dumps({'name': 'test', 'disks': DISKS, @@ -1434,6 +1508,10 @@ class RestTests(unittest.TestCase): if distro.get('reason'): self.assertIn('KCHDISTRO0001E', distro.get('reason')) + def test_ovsbridges(self): + resp = self.request('/plugins/kimchi/ovsbridges') + self.assertEquals(200, resp.status) + class HttpsRestTests(RestTests): """ -- 2.1.0