The tests covered the case where the template is created and the
type of the disk is changed.
Signed-off-by: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
---
tests/test_mockmodel.py | 62 ++++++++++++++++++++++++++++++++++++++++---------
tests/test_model.py | 14 +++++++++++
2 files changed, 65 insertions(+), 11 deletions(-)
diff --git a/tests/test_mockmodel.py b/tests/test_mockmodel.py
index 7319531..5d9fdab 100644
--- a/tests/test_mockmodel.py
+++ b/tests/test_mockmodel.py
@@ -90,12 +90,15 @@ class MockModelTests(unittest.TestCase):
else:
self.fail("Expected exception not raised")
- def test_template_cpu_info(self):
+ def _create_default_template(self):
# Create default template
req = json.dumps({'name': 'test', 'cdrom': fake_iso})
resp = request(host, ssl_port, '/templates', req, 'POST')
rsp_body = resp.read()
- template_data = json.loads(rsp_body)
+ return json.loads(rsp_body)
+
+ def test_template_cpu_info(self):
+ template_data = self._get_default_template()
# GET of cpu_info will be {}
cpu_info = template_data['cpu_info']
self.assertEquals(cpu_info, {})
@@ -103,16 +106,53 @@ class MockModelTests(unittest.TestCase):
# Update topology
# GET of cpu_info will contain 'topology'
- req = json.dumps({'cpu_info': {'topology': {'sockets':
1,
- 'cores': 1,
- 'threads': 1}}})
- resp = request(host, ssl_port, '/templates/test', req, 'PUT')
+ cpu_info_data = {'cpu_info': {'topology': {'sockets': 1,
+ 'cores': 1,
+ 'threads': 1}}}
+ updated_template, _ = self._get_PUT_response('/templates/test',
+ cpu_info_data)
+ self.assertEquals(updated_template['cpu_info'],
+ cpu_info_data['cpu_info'])
+
+ def test_template_update_disk_type(self):
+ def _get_default_disk_data(disk_type):
+ return {'disks': [{'index': 0, 'type': disk_type,
'size': 10}]}
+
+ template = self._create_default_template()
+ # Default template is created with 1 disk without any declared
+ # type.
+ disk_data = template['disks']
+ self.assertEquals(disk_data, [{'index': 0, 'size': 10}])
+
+ # For all supported types, edit the template and check if
+ # the change was made.
+ disk_types = ['bochs', 'cloop', 'cow', 'dmg',
'qcow', 'qcow2',
+ 'qed', 'raw', 'vmdk', 'vpc']
+ for disk_type in disk_types:
+ disk_data = _get_default_disk_data(disk_type)
+ updated_template, resp_code = \
+ self._get_PUT_response('/templates/test',
+ disk_data)
+ self.assertEquals(200, resp_code)
+ self.assertEquals(updated_template['disks'],
disk_data['disks'])
+
+ # Check Bad Request when type is invalid
+ bad_disk_data = _get_default_disk_data('invalid_disk_type')
+ _, resp_code = self._get_PUT_response('/templates/test', bad_disk_data)
+ self.assertEquals(400, resp_code)
+
+ def _get_default_template(self):
+ # Create default template
+ req = json.dumps({'name': 'test', 'cdrom': fake_iso})
+ resp = request(host, ssl_port, '/templates', req, 'POST')
rsp_body = resp.read()
- template_data = json.loads(rsp_body)
- cpu_info = template_data['cpu_info']
- self.assertEquals(cpu_info, {'topology': {'sockets': 1,
- 'cores': 1,
- 'threads': 1}})
+ return json.loads(rsp_body)
+
+ def _get_PUT_response(self, url, data):
+ req = json.dumps(data)
+ resp = request(host, ssl_port, url, req, 'PUT')
+ rsp_body = resp.read()
+ return json.loads(rsp_body), resp.status
def test_screenshot_refresh(self):
# Create a VM
diff --git a/tests/test_model.py b/tests/test_model.py
index d9bbe9e..0ff1ea3 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -628,6 +628,20 @@ class ModelTests(unittest.TestCase):
self.assertRaises(InvalidParameter, inst.template_update,
'test', params)
+ # For all supported types, edit the template and check if
+ # the change was made.
+ disk_types = ['bochs', 'cloop', 'cow', 'dmg',
'qcow', 'qcow2',
+ 'qed', 'raw', 'vmdk', 'vpc']
+ for disk_type in disk_types:
+ disk_data = {'disks': [{'index': 0, 'type':
disk_type,
+ 'size': 1}]}
+ inst.template_update('test', disk_data)
+ updated_template = inst.template_lookup('test')
+ self.assertEquals(updated_template['disks'],
+ disk_data['disks'])
+ # Restore disk data to default value
+ inst.template_update('test', {'disks': [{'index': 0,
'size': 1}]})
+
args = {'name': pool,
'path': path,
'type': 'dir'}
--
1.8.3.1