On 03/19/2012 05:04 PM, guyanhua wrote:
> 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<guyanhua-f...@cn.fujitsu.com>
> ---
>   client/tests/libvirt/tests/virsh_nodeinfo.py |  126 
> ++++++++++++++++++++++++++
>   1 files changed, 126 insertions(+), 0 deletions(-)
>   create mode 100644 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 100644
> index 0000000..d433329
> --- /dev/null
> +++ b/client/tests/libvirt/tests/virsh_nodeinfo.py
> @@ -0,0 +1,126 @@
> +import logging, re
> +from autotest_lib.client.common_lib import utils, error
> +from autotest_lib.client.virt import libvirt_vm
> +
> +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 virsh_nodeinfo(option):
> +        cmd = "virsh nodeinfo  %s" % option
> +        cmd_result = utils.run(cmd, ignore_status=True)
> +        logging.info("Output: %s", cmd_result.stdout.strip())
> +        logging.error("Error: %s", cmd_result.stderr.strip())
> +        logging.info("Status: %d", cmd_result.exit_status)
> +        return cmd_result.exit_status, cmd_result.stdout.strip()
> +
> +    def output_check():
> +        #check the CPU model
> +        cmd = "virsh nodeinfo | grep 'CPU model' | awk '{print $3}'"
> +        cmd_result_test = utils.run(cmd, ignore_status=True)
> +        logging.info("CPU model of virsh nodeinfo output:%s",\
> +                      cmd_result_test.stdout.strip())
> +        cmd = "uname -m"
> +        cmd_result = utils.run(cmd, ignore_status=True)
> +        if not re.match(cmd_result_test.stdout.strip(),\
> +                        cmd_result.stdout.strip()):
> +            raise error.TestFail("virsh nodeinfo output invalid;\
> +                                  didn't match CPU model")
> +
> +
> +        #check CPU(s)
> +        cmd = "virsh nodeinfo | grep 'CPU(s)' | awk '{print $2}'"
> +        cmd_result_test = utils.run(cmd, ignore_status=True)
> +        logging.info("CPU(s) of virsh nodeinfo output:%s",\
> +                      cmd_result_test.stdout.strip())
> +        cmd = "grep processor /proc/cpuinfo | wc -l"
> +        cmd_result = utils.run(cmd, ignore_status=True)
> +        if not re.match(cmd_result_test.stdout.strip(), \
> +                        cmd_result.stdout.strip()):
> +            raise error.TestFail("virsh nodeinfo output invalid;\
> +                                  didn't match CPU(s)")
> +
> +        #check CPU frequency
> +        cmd = "virsh nodeinfo | grep 'CPU frequency' | awk '{print $3}'"
> +        cmd_result_test = utils.run(cmd, ignore_status=True)
> +        logging.info("CPU frequency of virsh nodeinfo output:%s",\
> +                      cmd_result_test.stdout.strip())
> +        cmd = "cat /proc/cpuinfo | grep 'cpu MHz' | head -n1| awk '{print 
> $4}'|\
> +               awk -F. '{print $1}'"
> +        cmd_result = utils.run(cmd, ignore_status=True)
> +        if not re.match(cmd_result_test.stdout.strip(),\
> +                        cmd_result.stdout.strip()):
> +            raise error.TestFail("virsh nodeinfo output invalid; \
> +                                  didn't match CPU frequency")
> +
> +        #check CPU socket(s)
> +        cmd = "virsh nodeinfo | grep 'CPU socket(s)' | awk '{print $3}'"
> +        cmd_result_test = utils.run(cmd, ignore_status=True)
> +        logging.info("CPU socket(s) of virsh nodeinfo output:%s",\
> +                      cmd_result_test.stdout.strip())
> +        cmd = "grep 'physical id' /proc/cpuinfo | uniq | wc -l"
> +        cmd_result = utils.run(cmd, ignore_status=True)
> +        if not re.match(cmd_result_test.stdout.strip(), \
> +                        cmd_result.stdout.strip()):
> +            raise error.TestFail("virsh nodeinfo output invalid; \
> +                                  didn't match CPU socket(s)")
> +
> +        #check Core(s) per socket
> +        cmd = "virsh nodeinfo | grep 'Core(s) per socket' | awk '{print $4}'"
> +        cmd_result_test = utils.run(cmd, ignore_status=True)
> +        logging.info("Core(s) per socket of virsh nodeinfo output:%s", \
> +                      cmd_result_test.stdout.strip())
> +        cmd = "grep 'cpu cores' /proc/cpuinfo | head -n1 | awk '{print $4}'"
> +        cmd_result = utils.run(cmd, ignore_status=True)
> +        if not re.match(cmd_result_test.stdout.strip(), \
> +                        cmd_result.stdout.strip()):
> +            raise error.TestFail("virsh nodeinfo output invalid; \
> +                                  didn't match Core(s) per socket")
You had better to abstract a common function to return
related CPU/Memory information from virsh nodeinfo
instead of repeating run the following cmdline:

cmd = "virsh nodeinfo | grep 'XXXXXX' | awk '{print $N}'"



The physical host check is same as above:

cmd = "grep 'XXXX' /proc/XXXXX | awk '{print $N}'"


Others are fine for me.

Thanks,
Alex
> +
> +        #check Memory size
> +        cmd = "virsh nodeinfo | grep 'Memory size' | awk '{print $3}'"
> +        cmd_result_test = utils.run(cmd, ignore_status=True)
> +        logging.info("Memory size of virsh nodeinfo output:%s", \
> +                      cmd_result_test.stdout.strip())
> +        cmd = "grep 'MemTotal' /proc/meminfo | awk '{print $2}'"
> +        cmd_result = utils.run(cmd, ignore_status=True)
> +        if not re.match(cmd_result_test.stdout.strip(), \
> +                        cmd_result.stdout.strip()):
> +            raise error.TestFail("virsh nodeinfo output invalid; \
> +                                  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 = 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
> Autotest@test.kernel.org
> http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

_______________________________________________
Autotest mailing list
Autotest@test.kernel.org
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to