This patch adds three test cases for "virsh nodeinfo" command.
Use three cases:(1) Call virsh nodeinfo
(2) Call virsh nodeinfo with an unexpected option
(3) Call virsh nodeinfo with libvirtd service stop
Signed-off-by: Gu Yanhua <[email protected]>
---
client/tests/libvirt/tests/virsh_nodeinfo.py | 102 ++++++++++++++++++++++++++
1 files changed, 102 insertions(+), 0 deletions(-)
create mode 100755 client/tests/libvirt/tests/virsh_nodeinfo.py
diff --git a/client/tests/libvirt/tests/virsh_nodeinfo.py
b/client/tests/libvirt/tests/virsh_nodeinfo.py
new file mode 100755
index 0000000..8350b84
--- /dev/null
+++ b/client/tests/libvirt/tests/virsh_nodeinfo.py
@@ -0,0 +1,102 @@
+import re, logging
+from autotest.client.shared import utils, error
+from autotest.client.virt import libvirt_vm
+from autotest.client import *
+
+def run_virsh_nodeinfo(test, params, env):
+ """
+ Test the command virsh nodeinfo
+
+ (1) Call virsh nodeinfo
+ (2) Call virsh nodeinfo with an unexpected option
+ (3) Call virsh nodeinfo with libvirtd service stop
+ """
+ def _check_nodeinfo(verify_str, column):
+ cmd = "virsh nodeinfo | grep \"%s\" | awk '{print $%s}'" %
(verify_str, column)
+ cmd_result = utils.run(cmd, ignore_status=True)
+ stdout = cmd_result.stdout.strip()
+ logging.debug("Info %s on nodeinfo output:%s" % (verify_str, stdout))
+ return stdout
+
+
+ def output_check():
+ # Check CPU model
+ cpu_model_nodeinfo = _check_nodeinfo('CPU model', 3)
+ cpu_model_os = base_utils.get_current_kernel_arch()
+ if not re.match(cpu_model_nodeinfo, cpu_model_os):
+ raise error.TestFail("Virsh nodeinfo output didn't match CPU
model")
+
+ # Check number of CPUs
+ cpus_nodeinfo = int(_check_nodeinfo('CPU(s)', 2))
+ cpus_os = base_utils.count_cpus()
+ if cpus_nodeinfo != cpus_os:
+ raise error.TestFail("Virsh nodeinfo output didn't match number of
"
+ "CPU(s)")
+
+ # Check CPU frequency
+ cpu_frequency_nodeinfo = _check_nodeinfo('CPU frequency', 3)
+ cmd = ("cat /proc/cpuinfo | grep 'cpu MHz' | head -n1 | "
+ "awk '{print $4}' | awk -F. '{print $1}'")
+ cmd_result = utils.run(cmd, ignore_status=True)
+ cpu_frequency_os = cmd_result.stdout.strip()
+ if not re.match(cpu_frequency_nodeinfo, cpu_frequency_os):
+ raise error.TestFail("Virsh nodeinfo output didn't match CPU "
+ "frequency")
+
+ # Check CPU socket(s)
+ cpu_sockets_nodeinfo = int(_check_nodeinfo('CPU socket(s)', 3))
+ cmd = "grep 'physical id' /proc/cpuinfo | uniq | sort | uniq |wc -l"
+ cmd_result = utils.run(cmd, ignore_status=True)
+ cpu_NUMA_nodeinfo = _check_nodeinfo('NUMA cell(s)', 3)
+ cpu_sockets_os = int(cmd_result.stdout.strip())/int(cpu_NUMA_nodeinfo)
+ if cpu_sockets_os != cpu_sockets_nodeinfo:
+ raise error.TestFail("Virsh nodeinfo output didn't match CPU "
+ "socket(s)")
+
+ # Check Core(s) per socket
+ cores_per_socket_nodeinfo = _check_nodeinfo('Core(s) per socket', 4)
+ cmd = "grep 'cpu cores' /proc/cpuinfo | head -n1 | awk '{print $4}'"
+ cmd_result = utils.run(cmd, ignore_status=True)
+ cores_per_socket_os = cmd_result.stdout.strip()
+ if not re.match(cores_per_socket_nodeinfo, cores_per_socket_os):
+ raise error.TestFail("Virsh nodeinfo output didn't match Core(s) "
+ "per socket")
+
+ # Check Memory size
+ memory_size_nodeinfo = int(_check_nodeinfo('Memory size', 3))
+ memory_size_os = base_utils.memtotal()
+ if memory_size_nodeinfo != memory_size_os:
+ raise error.TestFail("Virsh nodeinfo output didn't match "
+ "Memory size")
+
+
+ # Prepare libvirtd service
+ check_libvirtd = params.has_key("libvirtd")
+ if check_libvirtd:
+ libvirtd = params.get("libvirtd")
+ if libvirtd == "off":
+ libvirt_vm.service_libvirtd_control("stop")
+
+ # Run test case
+ option = params.get("virsh_node_options")
+ status, output = libvirt_vm.virsh_nodeinfo(option)
+
+ # Recover libvirtd service start
+ if libvirtd == "off":
+ libvirt_vm.service_libvirtd_control("start")
+
+ # Check status_error
+ status_error = params.get("status_error")
+ if status_error == "yes":
+ if status == 0:
+ if libvirtd == "off":
+ raise error.TestFail("Command 'virsh nodeinfo' succeeded "
+ "with libvirtd service stopped,
incorrect")
+ else:
+ raise error.TestFail("Command 'virsh nodeinfo %s' succeeded"
+ "(incorrect command)" % option)
+ elif status_error == "no":
+ output_check()
+ if status != 0:
+ raise error.TestFail("Command 'virsh nodeinfo %s' failed "
+ "(correct command)" % option)
--
1.7.1
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest