[Kimchi-devel] [kimchi-devel][PATCH 2/2] Ignore cpu test case when exceed host cpu count
lvroyce at linux.vnet.ibm.com
lvroyce at linux.vnet.ibm.com
Mon Mar 9 13:52:21 UTC 2015
From: Royce Lv <lvroyce at linux.vnet.ibm.com>
If vpu given exceed host cpu count, ignore corresponding test.
Because test model does not support host cpu topology query,
using real model instead of test model in cpu related tests.
Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
---
tests/test_model.py | 54 +++++++++++++++++++++++++++++++++++------------------
tests/utils.py | 5 +++++
2 files changed, 41 insertions(+), 18 deletions(-)
diff --git a/tests/test_model.py b/tests/test_model.py
index f80f1c9..c3f5595 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -622,7 +622,7 @@ class ModelTests(unittest.TestCase):
@unittest.skipUnless(utils.running_as_root(), 'Must be run as root')
def test_template_create(self):
- inst = model.Model('test:///default',
+ inst = model.Model('qemu:///system',
objstore_loc=self.tmp_store)
# Test non-exist path raises InvalidParameter
params = {'name': 'test',
@@ -664,7 +664,7 @@ class ModelTests(unittest.TestCase):
@unittest.skipUnless(utils.running_as_root(), 'Must be run as root')
def test_template_integrity(self):
- inst = model.Model('test:///default',
+ inst = model.Model('qemu:///system',
objstore_loc=self.tmp_store)
with RollbackContext() as rollback:
@@ -723,6 +723,37 @@ class ModelTests(unittest.TestCase):
for key in clone_temp.keys():
self.assertEquals(clone_temp[key], orig_temp[key])
+ @unittest.skipUnless(utils.allow_vcpu_change(2), 'Host does not have enough CPUs')
+ @unittest.skipUnless(utils.running_as_root(), 'Must be run as root')
+ def test_template_update_vcpu(self):
+ params = {'name': 'new-test', 'memory': 512, 'cpus': 2}
+ inst.template_update('new-test', params)
+ rollback.prependDefer(inst.template_delete, 'new-test')
+
+ info = inst.template_lookup('new-test')
+ for key in params.keys():
+ self.assertEquals(params[key], info[key])
+
+ params = {'name': 'new-test', 'memory': 1024, 'cpus': 1,
+ 'networks': ['default', 'test-network', u'kīмсhī-пet']}
+ inst.template_update('new-test', params)
+ info = inst.template_lookup('new-test')
+ for key in params.keys():
+ self.assertEquals(params[key], info[key])
+
+ # test cpu_info
+ # new-test has 1 cpu, so this should fail:
+ params['cpu_info'] = {"topology":
+ {"sockets": 1, "cores": 1, "threads": 2}}
+ self.assertRaises(InvalidParameter, inst.template_update,
+ 'new-test', params)
+
+ params['cpus'] = 2
+ inst.template_update('new-test', params)
+ info = inst.template_lookup('new-test')
+ for key in params.keys():
+ self.assertEquals(params[key], info[key])
+
@unittest.skipUnless(utils.running_as_root(), 'Must be run as root')
def test_template_update(self):
inst = model.Model(None,
@@ -754,7 +785,7 @@ class ModelTests(unittest.TestCase):
self.assertEquals('new-test', inst.template_update('test', params))
self.assertRaises(NotFoundError, inst.template_delete, 'test')
- params = {'name': 'new-test', 'memory': 512, 'cpus': 2}
+ params = {'name': 'new-test', 'memory': 512}
inst.template_update('new-test', params)
rollback.prependDefer(inst.template_delete, 'new-test')
@@ -770,19 +801,6 @@ class ModelTests(unittest.TestCase):
for key in params.keys():
self.assertEquals(params[key], info[key])
- # test cpu_info
- # new-test has 1 cpu, so this should fail:
- params['cpu_info'] = {"topology":
- {"sockets": 1, "cores": 1, "threads": 2}}
- self.assertRaises(InvalidParameter, inst.template_update,
- 'new-test', params)
-
- params['cpus'] = 2
- inst.template_update('new-test', params)
- info = inst.template_lookup('new-test')
- for key in params.keys():
- self.assertEquals(params[key], info[key])
-
# test update with non-existent network
params = {'networks': ["no-exist"]}
self.assertRaises(InvalidParameter, inst.template_update,
@@ -798,10 +816,10 @@ class ModelTests(unittest.TestCase):
def test_vm_edit(self):
config.set("authentication", "method", "pam")
- inst = model.Model(None,
+ inst = model.Model("qemu:///system",
objstore_loc=self.tmp_store)
- orig_params = {'name': 'test', 'memory': '1024', 'cpus': '1',
+ orig_params = {'name': 'test', 'memory': '1024', 'cpus': 1,
'cdrom': self.kimchi_iso}
inst.templates_create(orig_params)
diff --git a/tests/utils.py b/tests/utils.py
index 2a8929f..7650433 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -23,6 +23,7 @@ import cherrypy
import grp
import httplib
import json
+import multiprocessing
import os
import socket
import sys
@@ -135,6 +136,10 @@ def running_as_root():
return os.geteuid() == 0
+def allow_vcpu_change(vcpu_cnt):
+ return multiprocessing.cpu_count() >= vcpu_cnt
+
+
def _request(conn, path, data, method, headers):
if headers is None:
headers = {'Content-Type': 'application/json',
--
1.9.1
More information about the Kimchi-devel
mailing list