[libvirt] [test-API][PATCH] Add test case get_cpu_shares.py for cpu scheduler info testing

Nan Zhang nzhang at redhat.com
Mon Dec 12 06:26:05 UTC 2011


* repos/domain/get_cpu_shares.py: get the value of cpu_shares
  property of the guest.
---
 lib/domainAPI.py               |    2 +-
 repos/domain/get_cpu_shares.py |  109 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+), 1 deletions(-)
 create mode 100644 repos/domain/get_cpu_shares.py

diff --git a/lib/domainAPI.py b/lib/domainAPI.py
index a6efab7..0058254 100644
--- a/lib/domainAPI.py
+++ b/lib/domainAPI.py
@@ -546,7 +546,7 @@ class DomainAPI(object):
     def set_sched_params_flags(self, domname, params, flags):
         try:
             dom_obj = self.get_domain_by_name(domname)
-            retval = dom_obj.setSchedulerParameters(params, flags)
+            retval = dom_obj.setSchedulerParametersFlags(params, flags)
             return retval
         except libvirt.libvirtError, e:
             message = e.get_error_message()
diff --git a/repos/domain/get_cpu_shares.py b/repos/domain/get_cpu_shares.py
new file mode 100644
index 0000000..be7e649
--- /dev/null
+++ b/repos/domain/get_cpu_shares.py
@@ -0,0 +1,109 @@
+#!/usr/bin/env python
+"""Get the value of cpu_shares property of the guest
+   domain:get_cpu_shares
+       guestname
+           xxx
+       flags
+           0|1|2
+"""
+
+__author__ = 'Nan Zhang: nzhang at redhat.com'
+__date__ = 'Tue Sep 27, 2011'
+__version__ = '0.1.0'
+__credits__ = 'Copyright (C) 2011 Red Hat, Inc.'
+__all__ = ['check_params', 'check_cpu_shares', 'get_cpu_shares']
+
+import os
+import re
+import sys
+import time
+from xml.dom import minidom
+
+
+def append_path(path):
+    """Append root path of package"""
+    if path in sys.path:
+        pass
+    else:
+        sys.path.append(path)
+
+pwd = os.getcwd()
+result = re.search('(.*)libvirt-test-API', pwd)
+append_path(result.group(0))
+
+from lib import connectAPI
+from lib import domainAPI
+from utils.Python import utils
+from utils.Python import xmlbuilder
+from exception import LibvirtAPI
+
+def check_params(params):
+    """Verify inputing parameter dictionary"""
+    logger = params['logger']
+    keys = ['guestname', 'flags']
+    for key in keys:
+        if key not in params:
+            logger.error("%s is required" %key)
+            return 1
+    return 0
+
+def check_cpu_shares(params, util, guestname, cpu_shares):
+    """Check the value of cpu_shares"""
+    logger = params['logger']
+    cmd = "cat /cgroup/cpu/libvirt/qemu/%s/cpu.shares" % guestname
+    ret, out = util.exec_cmd(cmd, shell=True)
+    if ret:
+        logger.error("fail to get the value of cpu_shares: %s" % out[0])
+        return 0
+    else:
+        logger.info("the value of cpu_shares: %s (getting from cgroup)" % out[0])
+
+    if cmp(int(out[0]), cpu_shares):
+        return 1
+    else:
+        logger.info("the value of cpu_shares does match the original \
+cpu scheduler information.")
+        return 0
+
+def get_cpu_shares(params):
+    """Get the cpu scheduler information"""
+    # Initiate and check parameters
+    params_check_result = check_params(params)
+    if params_check_result:
+        return 1
+    logger = params['logger']
+    guestname = params['guestname']
+    flags = params['flags']
+
+    # Connect to local hypervisor connection URI
+    util = utils.Utils()
+    uri = util.get_uri('127.0.0.1')
+    conn = connectAPI.ConnectAPI()
+    virconn = conn.open(uri)
+
+    caps = conn.get_caps()
+    logger.debug(caps)
+
+    domobj = domainAPI.DomainAPI(virconn)
+    try:
+        sched_info = domobj.get_sched_params_flags(guestname, int(flags))
+        cpu_shares = sched_info['cpu_shares']
+        logger.debug("the value of cpu_shares is %s" % cpu_shares)
+    except LibvirtAPI, e:
+        logger.error("API error message: %s, error code is %s" %
+                     (e.response()['message'], e.response()['code']))
+        return 1
+
+    check_result = check_cpu_shares(params, util, guestname, cpu_shares)
+    if check_result:
+        logger.error("cpu_shares does not match.")
+        conn.close()
+        return 1
+
+    logger.info("success to get scheduler parameters.")
+    conn.close()
+    return 0
+
+def get_cpu_shares_clean():
+    """Clean testing environment"""
+    pass
-- 
1.7.4.4




More information about the libvir-list mailing list