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

Wayne Sun gsun at redhat.com
Wed Dec 14 06:59:25 UTC 2011


On 12/13/2011 11:45 AM, Nan Zhang wrote:
> * 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 |  117 ++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 118 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..5d26e82
> --- /dev/null
> +++ b/repos/domain/get_cpu_shares.py
> @@ -0,0 +1,117 @@
> +#!/usr/bin/env python
> +"""Get the value of cpu_shares property of the guest
> +   domain:get_cpu_shares
> +       guestname
> +           xxx
> +       flags
> +           current|live|config
> +"""
> +
> +__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
time module is not used
> +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, flags):
> +    """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])
> +    else:
> +        logger.info("from cgroup, the value of cpu_shares: %s" % out[0])
> +
> +    if flags == domainAPI.VIR_DOMAIN_AFFECT_CONFIG:
> +        return 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']
> +
> +    if params['flags'] == 'current':
> +        flags = domainAPI.VIR_DOMAIN_AFFECT_CURRENT
> +    elif params['flags'] == 'live':
> +        flags = domainAPI.VIR_DOMAIN_AFFECT_LIVE
> +    elif params['flags'] == 'config':
> +        flags = domainAPI.VIR_DOMAIN_AFFECT_CONFIG
> +    else:
> +        logger.error("Invalid flag was specified.")
> +        return 1
> +
> +    # Connect to local hypervisor connection URI
> +    util = utils.Utils()
> +    uri = util.get_uri('127.0.0.1')
> +    conn = connectAPI.ConnectAPI()
> +    virconn = conn.open(uri)
> +
> +    domobj = domainAPI.DomainAPI(virconn)
> +    try:
> +        sched_info = domobj.get_sched_params_flags(guestname, 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, flags)
> +    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
Ack, left is fine.




More information about the libvir-list mailing list