Re: [libvirt] [test-API][PATCH 1/2] Add test case get_cpu_shares.py for cpu scheduler info testing
On 12/14/2011 02:59 PM, Wayne Sun wrote: 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 000..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: nzh...@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'] + I think we need to do the check to the state of guestname before doing the test. The test is related to the state of guest as the flags said: VIR_DOMAIN_AFFECT_CURRENT = 0: Affect current domain state. VIR_DOMAIN_AFFECT_LIVE = 1: Affect running domain state. VIR_DOMAIN_AFFECT_CONFIG = 2: Affect persistent domain state When the guest is inactive, running the scripts get the following result: File /libvirt-test-API/repos/domain/get_cpu_shares.py, line 56, in check_cpu_shares logger.error(fail to get the value of cpu_shares: %s % out[0]) IndexError: list index out of range File /libvirt-test-API/repos/domain/get_cpu_shares.py, line 98, in get_cpu_shares cpu_shares = sched_info['cpu_shares'] TypeError: 'NoneType' object is unsubscriptable +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'] +
Re: [libvirt] [test-API][PATCH 1/2] Add test case get_cpu_shares.py for cpu scheduler info testing
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 000..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: nzh...@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. -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [test-API][PATCH 1/2] Add test case get_cpu_shares.py for cpu scheduler info testing
* 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 000..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: nzh...@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, 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 -- 1.7.4.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list