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(a)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(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list