THis patch adds a test to check memory hotplug in non-NUMA guests
running in PowerPC.
Only PowerPC supports hotplug in guest without NUMA configuration:
https://libvirt.org/news-2015.html
Commit: qemu: ppc64: Support memory hotplug without NUMA
enabled (Peter Krempa)
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo(a)linux.vnet.ibm.com>
---
tests/test_model.py | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/tests/test_model.py b/tests/test_model.py
index c89c269..737b39c 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -54,6 +54,19 @@ invalid_repository_urls = ['www.fedora.org', # missing
protocol
TMP_DIR = '/var/lib/kimchi/tests/'
UBUNTU_ISO = TMP_DIR + 'ubuntu14.04.iso'
+NON_NUMA_XML = """
+<domain type='kvm'>
+ <name>non-numa-kimchi-test</name>
+ <maxMemory slots='2' unit='GiB'>4</maxMemory>
+ <memory unit='GiB'>2</memory>
+ <os>
+ <type arch='ppc64'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <acpi/>
+ </features>
+</domain>"""
def setUpModule():
@@ -821,6 +834,38 @@ class ModelTests(unittest.TestCase):
self.assertRaises(InvalidOperation, inst.vm_update,
'kimchi-vm1', params)
+ msg = "Memory hotplug in non-numa guests only for PowerPC arch."
+
+ @unittest.skipUnless(('ppc64' in os.uname()[4]), msg)
+ def test_non_numa_vm_memory_hotplug(self):
+ config.set("authentication", "method", "pam")
+ inst = model.Model(None, objstore_loc=self.tmp_store)
+ conn = inst.conn.get()
+ vm = 'non-numa-kimchi-test'
+
+ with RollbackContext() as rollback:
+ conn.defineXML(NON_NUMA_XML)
+ rollback.prependDefer(conn.lookupByName(vm).undefine)
+
+ # Start vm
+ inst.vm_start(vm)
+
+ # Hotplug memory
+ params = {'memory': {'current': 3072}}
+ inst.vm_update(vm, params)
+ self.assertEquals(params['memory']['current'],
+ inst.vm_lookup(vm)['memory']['current'])
+
+ params = {'memory': {'current': 4096}}
+ inst.vm_update(vm, params)
+ self.assertEquals(params['memory']['current'],
+ inst.vm_lookup(vm)['memory']['current'])
+
+ # Stop vm and test persistence
+ inst.vm_poweroff(vm)
+ self.assertEquals(params['memory']['current'],
+ inst.vm_lookup(vm)['memory']['current'])
+
def test_vm_edit(self):
config.set("authentication", "method", "pam")
inst = model.Model(None,
--
2.1.0