[libvirt] [libvirt-test-API][PATCH] Add connection_cpu_models test case

hongming honzhang at redhat.com
Thu Jan 22 08:09:20 UTC 2015


On 01/09/2015 03:58 PM, jiahu wrote:
> The connection_cpu_models.py uses getCPUModelNames() to validate
> new API virConnectGetCPUModelNames of libvirt.
> ---
>   cases/test_connection.conf             | 12 +++++
>   repos/virconn/connection_cpu_models.py | 82 ++++++++++++++++++++++++++++++++++
>   2 files changed, 94 insertions(+)
>   create mode 100644 repos/virconn/connection_cpu_models.py
>
> diff --git a/cases/test_connection.conf b/cases/test_connection.conf
> index ccde119..e916886 100644
> --- a/cases/test_connection.conf
> +++ b/cases/test_connection.conf
> @@ -29,3 +29,15 @@ virconn:connection_nodeinfo
>   virconn:connection_version
>       conn
>           lxc:///
> +
> +virconn:connection_cpu_models
> +    arch
> +        x86_64
> +
> +virconn:connection_cpu_models
> +    arch
> +        i686
> +
> +virconn:connection_cpu_models
> +    arch
> +        ppc64
> diff --git a/repos/virconn/connection_cpu_models.py b/repos/virconn/connection_cpu_models.py
> new file mode 100644
> index 0000000..4588188
> --- /dev/null
> +++ b/repos/virconn/connection_cpu_models.py
> @@ -0,0 +1,82 @@
> +#!/usr/bin/env python
> +# test getCPUModelNames() API for libvirt
> +
> +import os
> +import libvirt
> +
> +from xml.dom import minidom
> +from libvirt import libvirtError
> +from src import sharedmod
> +from utils import utils
> +
> +required_params = ('arch',)
> +optional_params = {}
> +
> +CPU_MAP_FILE = "/usr/share/libvirt/cpu_map.xml"
> +
> +def get_cpu_archs_from_xml(logger):
> +    """
> +       return supported cpu archs from cpu_map.xml
> +    """
> +    cpu_archs_from_xml = []
> +    xml = minidom.parse(CPU_MAP_FILE)
> +    for arch in xml.getElementsByTagName('arch'):
> +        cpu_archs_from_xml.append(str(arch.getAttribute('name')))
> +    return cpu_archs_from_xml
> +
> +def get_cpu_models_from_xml(arch, logger):
> +    """
> +       return supported cpu models from cpu_map.xml
> +    """
> +    cpu_models_from_xml = []
> +    if arch == 'x86_64' or arch == 'i686':
> +       real_arch = 'x86'
> +    else:
> +       real_arch = arch
> +
> +    xml = minidom.parse(CPU_MAP_FILE)
> +    for model in xml.getElementsByTagName('model'):
> +        if model.parentNode.getAttribute('name') == real_arch:
> +            cpu_models_from_xml.append(str(model.getAttribute('name')))
> +    return cpu_models_from_xml
> +
> +def connection_cpu_models(params):
> +    """
> +       test API for getCPUModelNames in class virConnect
> +    """
> +    logger = params['logger']
> +    arch_value = params['arch']
> +    try:
> +        logger.info("get cpu archs from cpu_map.xml")
> +        if not os.path.exists(CPU_MAP_FILE):
> +           logger.error("%s is not exist" % CPU_MAP_FILE)
> +           return 1
> +        cpu_archs_from_xml = get_cpu_archs_from_xml(logger)
> +        logger.info("The supported cpu archs in xml are %s" \
> +                     % cpu_archs_from_xml)
> +        cpu_models_from_xml = get_cpu_models_from_xml(arch_value, logger)
> +        logger.info("The supported cpu models in xml are %s" \
> +                     % cpu_models_from_xml)
> +
> +        conn = sharedmod.libvirtobj['conn']
> +
> +        cpu_models_from_libvirt = conn.getCPUModelNames(arch_value ,0)
> +        logger.info("The specified architecture is %s" \
> +                    % arch_value)
> +        logger.info("The supported cpu models is %s" \
> +                    % cpu_models_from_libvirt)
> +
> +        #compare with cpu_map.xml
> +        for cpu_model in cpu_models_from_libvirt:
> +            if cpu_model in cpu_models_from_xml:
> +                logger.debug("'%s' model: PASS" % cpu_model)
> +            else:
> +                logger.debug("'%s' model: FAIL, not in libvirt"\
> +                             % cpu_model)
> +                return 1
> +        logger.debug("check all cpu models: PASS")
> +    except libvirtError, e:
> +        logger.error("API error message: %s" % e.message)
> +        return 1
> +
> +    return 0
ACK and Pushed

Please note to remove the trailing spaces next time. Thanks.
Appending the following two lines into /etc/vimrc could highlights them, 
then remove them.
             "highlight RedundantSpaces ctermbg=red guibg=red
              match RedundantSpaces /\s\+$\| \+\ze\t/
             "




More information about the libvir-list mailing list