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

2011-12-14 Thread Guannan Ren

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

2011-12-13 Thread Wayne Sun

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

2011-12-12 Thread Nan Zhang
* 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