[libvirt] [libvirt-test-API][PATCH V2 1/2] Add freepage test

hongming honzhang at redhat.com
Wed Mar 11 07:36:03 UTC 2015


ACK and Pushed
Thanks

On 03/10/2015 07:07 PM, jiahu wrote:
> ACK
>
> Please pay attention to below format next time.
> Applying: Add freepage test
> /root/libvirt-test-API/.git/rebase-apply/patch:88: trailing whitespace.
>
> /root/libvirt-test-API/.git/rebase-apply/patch:90: trailing whitespace.
>
> /root/libvirt-test-API/.git/rebase-apply/patch:95: trailing whitespace.
>
> warning: 3 lines add whitespace errors.
>
> BR,
> Jianwei
> On 03/10/2015 05:29 PM, Jincheng Miao wrote:
>> For system default pagesize, it's hard to calculate,
>> and it changes all the time, so just skip it. For others,
>> reading from sysfs to get free pages.
>>
>> Signed-off-by: Jincheng Miao <jmiao at redhat.com>
>> ---
>>   repos/virconn/free_pages.py |   97 
>> +++++++++++++++++++++++++++++++++++++++++++
>>   1 files changed, 97 insertions(+), 0 deletions(-)
>>   create mode 100644 repos/virconn/free_pages.py
>>
>> diff --git a/repos/virconn/free_pages.py b/repos/virconn/free_pages.py
>> new file mode 100644
>> index 0000000..516b9f2
>> --- /dev/null
>> +++ b/repos/virconn/free_pages.py
>> @@ -0,0 +1,97 @@
>> +#!/usr/bin/env python
>> +# test libvirt free pages
>> +
>> +import os
>> +import resource
>> +
>> +import libvirt
>> +from libvirt import libvirtError
>> +
>> +from src import sharedmod
>> +
>> +required_params = ('cellid', 'pagesize',)
>> +optional_params = {}
>> +
>> +HUGEPAGE_PATH = 
>> '/sys/devices/system/node/node%s/hugepages/hugepages-%skB/free_hugepages'
>> +
>> +def parse_unit(pagesz):
>> +    """ parse a integer value, its unit is KiB
>> +    """
>> +    val = int(pagesz[0:len(pagesz)-1])
>> +    unit = pagesz[-1]
>> +    if unit == 'K':
>> +        unit = 1
>> +    elif unit == 'M':
>> +        unit = 1024
>> +    elif unit == 'G':
>> +        unit = 1024*1024
>> +    else:
>> +        return None
>> +
>> +    return val * unit
>> +
>> +def parse_page_list(pagesize):
>> +    """ parse page size
>> +    """
>> +    if pagesize == None:
>> +        return None
>> +
>> +    l = list()
>> +    for ps in pagesize.split(','):
>> +        ps = ps.strip().upper()
>> +        val = parse_unit(ps)
>> +        if val == None:
>> +            return None
>> +        l.append(val)
>> +    return l
>> +
>> +def check_free_pages(page_list, cell_id, free_page, logger):
>> +    """ check page size
>> +    """
>> +    for ps in page_list:
>> +        # if pagesize is equal to system pagesize, since it is hard to
>> +        # calculate, so we just pass it
>> +        if resource.getpagesize()/1024 == ps:
>> +            logger.info("skip to check default %sKB-page" % ps)
>> +            continue
>> +
>> +        sysfs_path = HUGEPAGE_PATH % (cell_id, ps)
>> +        if not os.access(sysfs_path, os.R_OK):
>> +            logger.error("could not find %s" % sysfs_path)
>> +            return False
>> +        f= open(sysfs_path)
>> +        fp = int(f.read())
>> +        f.close()
>> +        if not fp == free_page[0][ps]:
>> +            logger.error("Free %sKB page checking failed" % ps)
>> +            return False
>> +        logger.info("Free %sKB page: %s" % (ps, fp))
>> +
>> +    return True
>> +
>> +def free_pages(params):
>> +    """ test libvirt free pages
>> +    """
>> +    logger = params['logger']
>> +    cell_id = int(params['cellid'])
>> +
>> +    conn = sharedmod.libvirtobj['conn']
>> +
>> +    page_list = parse_page_list(params['pagesize'])
>> +    if page_list == None:
>> +        logger.error("pagesize could not be recognized")
>> +        return 1
>> +
>> +    try:
>> +        free_page = conn.getFreePages(page_list, cell_id, 1)
>> +
>> +        if check_free_pages(page_list, cell_id, free_page, logger):
>> +            logger.info("Success to check free page")
>> +        else:
>> +            logger.error("Failed to check free page")
>> +            return 1
>> +    except libvirtError, e:
>> +        logger.error("API error message: %s, error code is %s" %
>> +                     e.message)
>> +        return 1
>> +    return 0
>> \ No newline at end of file
>
> -- 
> 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