[libvirt] [libvirt-test-api][PATCH 3/3] Add a new case for getCPUStatus

hongming honzhang at redhat.com
Mon Aug 24 03:41:28 UTC 2015


On 06/02/2015 07:57 AM, hongming wrote:
> ACK and pushed
> Don't forget to remove trailing whitespace next time.
> Thanks
>
> Hongming
> On 05/18/2015 09:28 AM, Luyao Huang wrote:
>> Signed-off-by: Luyao Huang <lhuang at redhat.com>
>> ---
>>   cases/linux_domain.conf    |   6 +++
>>   repos/domain/cpu_status.py | 113 
>> +++++++++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 119 insertions(+)
>>   create mode 100644 repos/domain/cpu_status.py
>>
>> diff --git a/cases/linux_domain.conf b/cases/linux_domain.conf
>> index 0a7d134..9f64226 100644
>> --- a/cases/linux_domain.conf
>> +++ b/cases/linux_domain.conf
>> @@ -269,6 +269,12 @@ virconn:connection_security_model
>>       guestname
>>           $defaultname
>>   +domain:virDomain_getCPUStats

The case name is wrong , I have fixed it directly

commit 5c433b7c934cd8ac3ad783939c5906b7cbc129a8
Author: Hongming Zhang <honzhang at redhat.com>
Date:   Mon Aug 24 11:25:04 2015 +0800

     Fix a wrong case name in linux_domain.conf

     Modify the virDomain_getCPUStats as cpu_status
     modified:   cases/linux_domain.conf


>> +    guestname
>> +        $defaultname
>> +    conn
>> +        qemu:///system
>> +
>>   domain:destroy
>>       guestname
>>           $defaultname
>> diff --git a/repos/domain/cpu_status.py b/repos/domain/cpu_status.py
>> new file mode 100644
>> index 0000000..6e511c0
>> --- /dev/null
>> +++ b/repos/domain/cpu_status.py
>> @@ -0,0 +1,113 @@
>> +#!/usr/bin/env python
>> +import libvirt
>> +from libvirt import libvirtError
>> +from  utils import utils
>> +
>> +required_params = ('guestname',)
>> +optional_params = {'conn': 'qemu:///system'}
>> +
>> +ONLINE_CPU = '/sys/devices/system/cpu/online'
>> +CGROUP_PERCPU = 
>> '/sys/fs/cgroup/cpuacct/machine.slice/machine-qemu\\x2d%s.scope/cpuacct.usage_percpu'
>> +CGROUP_PERVCPU = 
>> '/sys/fs/cgroup/cpuacct/machine.slice/machine-qemu\\x2d%s.scope/vcpu%d/cpuacct.usage_percpu'
>> +CGROUP_USAGE = 
>> '/sys/fs/cgroup/cpuacct/machine.slice/machine-qemu\\x2d%s.scope/cpuacct.usage'
>> +CGROUP_STAT = 
>> '/sys/fs/cgroup/cpuacct/machine.slice/machine-qemu\\x2d%s.scope/cpuacct.stat'
>> +
>> +def getcputime(a):
>> +    return open(a[0]).read().split()[a[1]]
>> +
>> +def virtgetcputime(a):
>> +    return a[0].getCPUStats(0)[a[1]][a[2]]
>> +
>> +def getvcputime(a):
>> +    ret = 0
>> +    for i in range(int(a[0])):
>> +        ret += int(open(CGROUP_PERVCPU % (a[1], 
>> i)).read().split()[a[2]])
>> +
>> +    return ret
>> +
>> +def virtgettotalcputime(a):
>> +    return a[0].getCPUStats(1)[0][a[1]]
>> +
>> +def virtgettotalcputime2(a):
>> +    return a[0].getCPUStats(1)[0][a[1]]/10000000
>> +
>> +def cpu_status(params):
>> +    """
>> +       test API for getCPUStats in class virDomain
>> +    """
>> +    logger = params['logger']
>> +    fail=0
>> +
>> +    cpu = utils.file_read(ONLINE_CPU)
>> +    logger.info("host online cpulist is %s" % cpu)
>> +
>> +    cpu_tuple = utils.param_to_tuple_nolength(cpu)
>> +    if not cpu_tuple:
>> +        logger.info("error in function param_to_tuple_nolength")
>> +        return 1
>> +
>> +    try:
>> +        conn = libvirt.open(params['conn'])
>> +
>> +        logger.info("get connection to libvirtd")
>> +        guest = params['guestname']
>> +        vm = conn.lookupByName(guest)
>> +        vcpus = vm.info()[3]
>> +        for n in range(len(cpu_tuple)):
>> +            if not cpu_tuple[n]:
>> +                continue
>> +
>> +            D = utils.get_standard_deviation(getcputime, 
>> virtgetcputime, \
>> +                [CGROUP_PERCPU % guest, n], [vm,n,'cpu_time'])
>> +            logger.info("Standard Deviation for host cpu %d cputime 
>> is %d" % (n, D))
>> +
>> +            """ expectations 403423 is a average collected in a 
>> x86_64 low load machine"""
>> +            if D > 403423*5:
>> +                fail=1
>> +                logger.info("FAIL: Standard Deviation is too big \
>> +                             (biger than %d) for host cpu %d" % 
>> (403423*5, n))
>> +
>> +            D = utils.get_standard_deviation(getvcputime, 
>> virtgetcputime, \
>> +                [vcpus, guest, n], [vm,n,'vcpu_time'])
>> +            logger.info("Standard Deviation for host cpu %d vcputime 
>> is %d" % (n, D))
>> +
>> +            """ expectations 4034 is a average collected in a x86_64 
>> low load machine"""
>> +            if D > 4034*5*vcpus:
>> +                fail=1
>> +                logger.info("FAIL: Standard Deviation is too big \
>> +                             (biger than %d) for host cpu time %d" % 
>> (4034*5*vcpus, n))
>> +
>> +        D = utils.get_standard_deviation(getcputime, 
>> virtgettotalcputime, \
>> +            [CGROUP_USAGE % guest, 0], [vm,'cpu_time'])
>> +        logger.info("Standard Deviation for host cpu total cputime 
>> is %d" % D)
>> +
>> +        """ expectations 313451 is a average collected in a x86_64 
>> low load machine"""
>> +        if D > 313451*5*len(cpu_tuple):
>> +            fail=1
>> +            logger.info("FAIL: Standard Deviation is too big \
>> +                         (biger than %d) for host cpu time %d" % 
>> (313451*5*len(cpu_tuple), n))
>> +
>> +        D = utils.get_standard_deviation(getcputime, 
>> virtgettotalcputime2, \
>> +            [CGROUP_STAT % guest, 3], [vm,'system_time'])
>> +        logger.info("Standard Deviation for host cpu total system 
>> time is %d" % D)
>> +
>> +        """ expectations 10 is a average collected in a x86_64 low 
>> load machine"""
>> +        if D > 10*5:
>> +            fail=1
>> +            logger.info("FAIL: Standard Deviation is too big \
>> +                         (biger than %d) for host system cpu time 
>> %d" % (10*5, n))
>> +
>> +        D = utils.get_standard_deviation(getcputime, 
>> virtgettotalcputime2, \
>> +            [CGROUP_STAT % guest, 1], [vm,'user_time'])
>> +        logger.info("Standard Deviation for host cpu total user time 
>> is %d" % D)
>> +
>> +        """ expectations 10 is a average collected in a x86_64 low 
>> load machine"""
>> +        if D > 10*5:
>> +            fail=1
>> +            logger.info("FAIL: Standard Deviation is too big \
>> +                         (biger than %d) for host user cpu time %d" 
>> % (10*5, n))
>> +
>> +    except libvirtError, e:
>> +        logger.error("API error message: %s" % e.message)
>> +        fail=1
>> +    return fail
>
> -- 
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list




More information about the libvir-list mailing list