
This patch fixes some problems with max memory checkings and add 2 new tests. Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo@linux.vnet.ibm.com> --- tests/test_template.py | 13 +++++++++++++ tests/test_vmtemplate.py | 24 +++++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/tests/test_template.py b/tests/test_template.py index 0cc5ac8..0b3dd98 100644 --- a/tests/test_template.py +++ b/tests/test_template.py @@ -20,6 +20,7 @@ import json import os +import psutil import unittest from functools import partial @@ -140,6 +141,18 @@ class TemplateTests(unittest.TestCase): ) self.assertEquals(tmpl['disks'][0]['format'], 'vmdk') + # Create template with memory higher than host max + if hasattr(psutil, 'virtual_memory'): + max_mem = (psutil.virtual_memory().total >> 10 >> 10) + else: + max_mem = (psutil.TOTAL_PHYMEM >> 10 >> 10) + memory = max_mem + 1024 + t = {'name': 'test-maxmem', 'cdrom': '/tmp/mock.iso', 'memory': memory} + req = json.dumps(t) + resp = self.request('/plugins/kimchi/templates', req, 'POST') + self.assertEquals(500, resp.status) + self.assertTrue(str(max_mem) in resp.read()) + def test_customized_tmpl(self): # Create a template t = {'name': 'test', 'cdrom': '/tmp/mock.iso'} diff --git a/tests/test_vmtemplate.py b/tests/test_vmtemplate.py index 79e3b52..de2d542 100644 --- a/tests/test_vmtemplate.py +++ b/tests/test_vmtemplate.py @@ -18,6 +18,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import os +import psutil import unittest import uuid @@ -88,12 +89,7 @@ class VMTemplateTests(unittest.TestCase): def test_to_xml(self): graphics = {'type': 'spice', 'listen': '127.0.0.1'} vm_uuid = str(uuid.uuid4()).replace('-', '') - if os.uname()[4] in ['ppc', 'ppc64', 'ppc64le']: - maxmem = 3328 - else: - maxmem = 3072 - t = VMTemplate({'name': 'test-template', 'cdrom': self.iso, - 'max_memory': maxmem << 10}) + t = VMTemplate({'name': 'test-template', 'cdrom': self.iso}) xml = t.to_vm_xml('test-vm', vm_uuid, graphics=graphics) self.assertEquals(vm_uuid, xpath_get_text(xml, "/domain/uuid")[0]) self.assertEquals('test-vm', xpath_get_text(xml, "/domain/name")[0]) @@ -102,7 +98,21 @@ class VMTemplateTests(unittest.TestCase): expr = "/domain/devices/graphics/@listen" self.assertEquals(graphics['listen'], xpath_get_text(xml, expr)[0]) expr = "/domain/maxMemory/@slots" - self.assertEquals('2', xpath_get_text(xml, expr)[0]) + self.assertEquals('3', xpath_get_text(xml, expr)[0]) + expr = "/domain/maxMemory" + self.assertEquals(str((1024 * 4) << 10), xpath_get_text(xml, expr)[0]) + + if hasattr(psutil, 'virtual_memory'): + host_memory = psutil.virtual_memory().total >> 10 + else: + host_memory = psutil.TOTAL_PHYMEM >> 10 + t = VMTemplate({'name': 'test-template', 'cdrom': self.iso, + 'memory': (host_memory >> 10) - 512}) + xml = t.to_vm_xml('test-vm', vm_uuid, graphics=graphics) + expr = "/domain/maxMemory" + self.assertEquals(str(host_memory), xpath_get_text(xml, expr)[0]) + expr = "/domain/maxMemory/@slots" + self.assertEquals('1', xpath_get_text(xml, expr)[0]) def test_arg_merging(self): """ -- 2.1.0