public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] Adds a test to verify resources inside a VM
@ 2009-11-25  6:05 sudhir kumar
  2009-11-27  7:44 ` sudhir kumar
  2009-11-29  7:20 ` Yolkfull Chow
  0 siblings, 2 replies; 13+ messages in thread
From: sudhir kumar @ 2009-11-25  6:05 UTC (permalink / raw)
  To: kvm-devel
  Cc: Autotest mailing list, Lucas Meneghel Rodrigues, Michael Goldish,
	smalikphy

[-- Attachment #1: Type: text/plain, Size: 3423 bytes --]

This patch adds a test for verifying whether the number of cpus and amount
of memory as seen inside a guest is same as allocated to it on the qemu
command line.

Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com>

Index: kvm/tests/verify_resources.py
===================================================================
--- /dev/null
+++ kvm/tests/verify_resources.py
@@ -0,0 +1,74 @@
+import logging, time
+from autotest_lib.client.common_lib import error
+import kvm_subprocess, kvm_test_utils, kvm_utils
+
+"""
+Test to verify if the guest has the equal amount of resources
+as allocated through the qemu command line
+
+@Copyright: 2009 IBM Corporation
+@author: Sudhir Kumar <skumar@linux.vnet.ibm.com>
+
+"""
+
+def run_verify_resources(test, params, env):
+    """
+    KVM test for verifying VM resources(#vcpu, memory):
+    1) Get resources from the VM parameters
+    2) Log into the guest
+    3) Get actual resources, compare and report the pass/failure
+
+    @param test: kvm test object
+    @param params: Dictionary with the test parameters
+    @param env: Dictionary with test environment.
+    """
+    vm = kvm_test_utils.get_living_vm(env, params.get("main_vm"))
+
+    # Get info about vcpu and memory from dictionary
+    exp_vcpus = int(params.get("smp"))
+    exp_mem_mb = long(params.get("mem"))
+    real_vcpus = 0
+    real_mem_kb = 0
+    real_mem_mb = 0
+    # Some memory is used by bios and all, so lower the expected
value say by 5%
+    exp_mem_mb = long(exp_mem_mb * 0.95)
+    logging.info("The guest should have vcpus: %s" % exp_vcpus)
+    logging.info("The guest should have min mem: %s MB" % exp_mem_mb)
+
+    session = kvm_test_utils.wait_for_login(vm)
+
+    # Get info about vcpu and memory from within guest
+    if params.get("guest_os_type") == "Linux":
+        output = session.get_command_output("cat /proc/cpuinfo|grep processor")
+        for line in output.split('\n'):
+            if 'processor' in line:
+                real_vcpus = real_vcpus + 1
+
+        output = session.get_command_output("cat /proc/meminfo")
+        for line in output.split('\n'):
+            if 'MemTotal' in line:
+                real_mem_kb = long(line.split()[1])
+        real_mem_mb = real_mem_kb / 1024
+
+    elif params.get("guest_os_type") == "Windows":
+        # Windows takes long time to display output for systeminfo
+        output = session.get_command_output("systeminfo", timeout =
150, internal_timeout = 50)
+        for line in output.split('\n'):
+            if 'Processor' in line:
+                real_vcpus = int(line.split()[1])
+
+        for line in output.split('\n'):
+            if 'Total Physical Memory' in line:
+               real_mem_mb = long("".join("%s" % k for k in
line.split()[3].split(',')))
+
+    else:
+        raise error.TestFail("Till date this test is supported only
for Linux and Windows")
+
+    logging.info("The guest has cpus: %s" % real_vcpus)
+    logging.info("The guest has mem: %s MB" % real_mem_mb)
+    if exp_vcpus != real_vcpus or real_mem_mb < exp_mem_mb:
+        raise error.TestFail("Actual resources(cpu ='%s' memory ='%s' MB) "
+              "differ from Allocated resources(cpu = '%s' memory ='%s' MB"
+                         % (real_vcpus, real_mem_mb, exp_vcpus, exp_mem_mb))
+
+    session.close()




Sending the patch as an attachment too. Please review and provide your comments.
-- 
Sudhir Kumar

[-- Attachment #2: add_vcpu_verify_test.patch --]
[-- Type: text/x-patch, Size: 3322 bytes --]

This patch adds a test for verifying whether the number of cpus and amount 
of memory as seen inside a guest is same as allocated to it on the qemu
command line.

Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com>

Index: kvm/tests/verify_resources.py
===================================================================
--- /dev/null
+++ kvm/tests/verify_resources.py
@@ -0,0 +1,74 @@
+import logging, time
+from autotest_lib.client.common_lib import error
+import kvm_subprocess, kvm_test_utils, kvm_utils
+
+"""
+Test to verify if the guest has the equal amount of resources
+as allocated through the qemu command line
+
+@Copyright: 2009 IBM Corporation
+@author: Sudhir Kumar <skumar@linux.vnet.ibm.com>
+
+"""
+
+def run_verify_resources(test, params, env):
+    """
+    KVM test for verifying VM resources(#vcpu, memory):
+    1) Get resources from the VM parameters
+    2) Log into the guest
+    3) Get actual resources, compare and report the pass/failure
+
+    @param test: kvm test object
+    @param params: Dictionary with the test parameters
+    @param env: Dictionary with test environment.
+    """
+    vm = kvm_test_utils.get_living_vm(env, params.get("main_vm"))
+
+    # Get info about vcpu and memory from dictionary
+    exp_vcpus = int(params.get("smp"))
+    exp_mem_mb = long(params.get("mem"))
+    real_vcpus = 0
+    real_mem_kb = 0
+    real_mem_mb = 0
+    # Some memory is used by bios and all, so lower the expected value say by 5%
+    exp_mem_mb = long(exp_mem_mb * 0.95)
+    logging.info("The guest should have vcpus: %s" % exp_vcpus)
+    logging.info("The guest should have min mem: %s MB" % exp_mem_mb)
+
+    session = kvm_test_utils.wait_for_login(vm)
+
+    # Get info about vcpu and memory from within guest
+    if params.get("guest_os_type") == "Linux":
+        output = session.get_command_output("cat /proc/cpuinfo|grep processor")
+        for line in output.split('\n'):
+            if 'processor' in line:
+                real_vcpus = real_vcpus + 1
+
+        output = session.get_command_output("cat /proc/meminfo")
+        for line in output.split('\n'):
+            if 'MemTotal' in line:
+                real_mem_kb = long(line.split()[1])
+        real_mem_mb = real_mem_kb / 1024
+
+    elif params.get("guest_os_type") == "Windows":
+        # Windows takes long time to display output for systeminfo
+        output = session.get_command_output("systeminfo", timeout = 150, internal_timeout = 50)
+        for line in output.split('\n'):
+            if 'Processor' in line:
+                real_vcpus = int(line.split()[1])
+
+        for line in output.split('\n'):
+            if 'Total Physical Memory' in line:
+               real_mem_mb = long("".join("%s" % k for k in line.split()[3].split(',')))
+
+    else:
+        raise error.TestFail("Till date this test is supported only for Linux and Windows")
+
+    logging.info("The guest has cpus: %s" % real_vcpus)
+    logging.info("The guest has mem: %s MB" % real_mem_mb)
+    if exp_vcpus != real_vcpus or real_mem_mb < exp_mem_mb:
+        raise error.TestFail("Actual resources(cpu ='%s' memory ='%s' MB) "
+              "differ from Allocated resources(cpu = '%s' memory ='%s' MB"
+                         % (real_vcpus, real_mem_mb, exp_vcpus, exp_mem_mb))
+
+    session.close()

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2009-12-04  9:20 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-25  6:05 [PATCH 1/2] Adds a test to verify resources inside a VM sudhir kumar
2009-11-27  7:44 ` sudhir kumar
2009-11-27 12:08   ` [Autotest] " Lucas Meneghel Rodrigues
2009-11-29  7:20 ` Yolkfull Chow
2009-11-29  8:52   ` sudhir kumar
2009-11-29 10:40     ` Yolkfull Chow
2009-12-01 13:56       ` [Autotest] " Lucas Meneghel Rodrigues
2009-12-02  2:21         ` Yolkfull Chow
2009-12-02  3:29           ` sudhir kumar
2009-12-02  3:40             ` Lucas Meneghel Rodrigues
2009-12-02 17:09               ` sudhir kumar
2009-11-29  9:04   ` Yaniv Kaul
2009-12-04  9:20     ` Yolkfull Chow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox