예제 #1
0
 def test_statuses(self):
     os.chdir(BASE_DIR)
     test_path = os.path.join(data_dir.get_test_providers_dir(),
                              "downloads", "io-github-autotest-qemu",
                              "generic", "tests", "test_statuses.py")
     self.assertTrue(os.path.exists(os.path.dirname(test_path)),
                     "The qemu providers dir does not exists, Avocado-vt "
                     "is probably not configured properly.")
     self.rm_files.append(test_path)
     script.make_script(test_path, TEST_STATUSES_PY)
     cfg = script.make_script(os.path.join(self.tmpdir,
                                           "test_statuses.cfg"),
                              TEST_STATUSES_CFG)
     result = process.run("avocado --show all run --vt-config %s "
                          "--job-results-dir %s"
                          % (cfg, self.tmpdir), ignore_status=True)
     self.assertEqual(result.exit_status, 1, "Exit status is not 1:\n%s"
                      % result)
     status = json.load(open(os.path.join(self.tmpdir, "latest",
                                          "results.json")))
     act_statuses = [_["status"] for _ in status["tests"]]
     statuses_master = ["SKIP", "PASS", "FAIL", "ERROR", "CANCEL", "PASS",
                        "FAIL", "ERROR", "ERROR"]
     statuses_36lts = ["SKIP", "PASS", "FAIL", "ERROR", "SKIP", "PASS",
                       "FAIL", "ERROR", "ERROR"]
     if not (act_statuses == statuses_master or
             act_statuses == statuses_36lts):
         self.fail("Test statuses does not match any of expected results:"
                   "\nmaster: %s\n36lts: %s\nactual: %s\n\noutput:\n%s"
                   % (statuses_master, statuses_36lts, act_statuses,
                      result))
예제 #2
0
def get_test_provider_names(backend=None):
    """
    Get the names of all test providers available in test-providers.d.

    :return: List with the names of all test providers.
    """
    provider_name_list = []
    provider_dir = data_dir.get_test_providers_dir()
    for provider in glob.glob(os.path.join(provider_dir, '*.ini')):
        provider_name = os.path.basename(provider).split('.')[0]
        provider_info = get_test_provider_info(provider_name)
        if backend is not None:
            if backend in provider_info['backends']:
                provider_name_list.append(provider_name)
        else:
            provider_name_list.append(provider_name)
    return provider_name_list
예제 #3
0
def get_test_provider_names(backend=None):
    """
    Get the names of all test providers available in test-providers.d.

    :return: List with the names of all test providers.
    """
    provider_name_list = []
    provider_dir = data_dir.get_test_providers_dir()
    for provider in glob.glob(os.path.join(provider_dir, '*.ini')):
        provider_name = os.path.basename(provider).split('.')[0]
        provider_info = get_test_provider_info(provider_name)
        if backend is not None:
            if backend in provider_info['backends']:
                provider_name_list.append(provider_name)
        else:
            provider_name_list.append(provider_name)
    return provider_name_list
예제 #4
0
def get_test_provider_info(provider):
    """
    Get a dictionary with relevant test provider info, such as:

    * provider uri (git repo or filesystem location)
    * provider git repo data, such as branch, ref, pubkey
    * backends that this provider has tests for. For each backend type the
        provider has tests for, the 'path' will be also available.

    :param provider: Test provider name, such as 'io-github-autotest-qemu'.
    """
    provider_info = {}
    provider_path = os.path.join(data_dir.get_test_providers_dir(),
                                 '%s.ini' % provider)
    provider_cfg = ConfigLoader(provider_path)
    provider_info['name'] = provider
    provider_info['uri'] = provider_cfg.get('provider', 'uri')
    provider_info['branch'] = provider_cfg.get('provider', 'branch', 'master')
    provider_info['ref'] = provider_cfg.get('provider', 'ref')
    provider_info['pubkey'] = provider_cfg.get('provider', 'pubkey')
    provider_info['backends'] = {}

    for backend in get_known_backends():
        subdir = provider_cfg.get(backend, 'subdir')
        cart_cfgs = provider_cfg.get(backend, 'configs')

        backend_dic = {}
        if cart_cfgs is not None:
            # Give ability to specify few required configs separated with comma
            cart_cfgs = [x.strip() for x in cart_cfgs.split(',')]
            backend_dic.update({'cartesian_configs': cart_cfgs})

        if subdir is not None:
            if provider_info['uri'].startswith('file://'):
                src = os.path.join(provider_info['uri'][7:],
                                   subdir)
            else:
                src = os.path.join(data_dir.get_test_provider_dir(provider),
                                   subdir)
            backend_dic.update({'path': src})
            provider_info['backends'].update({backend: backend_dic})

    return provider_info
예제 #5
0
def get_test_provider_info(provider):
    """
    Get a dictionary with relevant test provider info, such as:

    * provider uri (git repo or filesystem location)
    * provider git repo data, such as branch, ref, pubkey
    * backends that this provider has tests for. For each backend type the
        provider has tests for, the 'path' will be also available.

    :param provider: Test provider name, such as 'io-github-autotest-qemu'.
    """
    provider_info = {}
    provider_path = os.path.join(data_dir.get_test_providers_dir(),
                                 '%s.ini' % provider)
    provider_cfg = ConfigLoader(provider_path)
    provider_info['name'] = provider
    provider_info['uri'] = provider_cfg.get('provider', 'uri')
    provider_info['branch'] = provider_cfg.get('provider', 'branch', 'master')
    provider_info['ref'] = provider_cfg.get('provider', 'ref')
    provider_info['pubkey'] = provider_cfg.get('provider', 'pubkey')
    provider_info['backends'] = {}

    for backend in get_known_backends():
        subdir = provider_cfg.get(backend, 'subdir')
        cart_cfgs = provider_cfg.get(backend, 'configs')

        backend_dic = {}
        if cart_cfgs is not None:
            # Give ability to specify few required configs separated with comma
            cart_cfgs = [x.strip() for x in cart_cfgs.split(',')]
            backend_dic.update({'cartesian_configs': cart_cfgs})

        if subdir is not None:
            if provider_info['uri'].startswith('file://'):
                src = os.path.join(provider_info['uri'][7:], subdir)
            else:
                src = os.path.join(data_dir.get_test_provider_dir(provider),
                                   subdir)
            backend_dic.update({'path': src})
            provider_info['backends'].update({backend: backend_dic})

    return provider_info
예제 #6
0
파일: vt.py 프로젝트: EIChaoYang/avocado-vt
try:
    from avocado.core.plugin_interfaces import CLI
except ImportError:
    from avocado.plugins.base import CLI    # pylint: disable=E0611,E0401

from virttest import data_dir
from virttest import defaults
from virttest import standalone_test
from virttest.standalone_test import SUPPORTED_TEST_TYPES
from virttest.standalone_test import SUPPORTED_LIBVIRT_URIS
from virttest.standalone_test import SUPPORTED_NET_TYPES

from ..loader import VirtTestLoader


_PROVIDERS_DOWNLOAD_DIR = os.path.join(data_dir.get_test_providers_dir(),
                                       'downloads')
try:
    assert len(os.listdir(_PROVIDERS_DOWNLOAD_DIR)) != 0
except (OSError, AssertionError):
    raise EnvironmentError("Bootstrap missing. "
                           "Execute 'avocado vt-bootstrap' or disable this "
                           "plugin to get rid of this message")


def add_basic_vt_options(parser):
    """
    Add basic vt options to parser
    """
    parser.add_argument("--vt-config", action="store", dest="vt_config",
                        help="Explicitly choose a cartesian config. When "
예제 #7
0
# fail to load.
VIRT_TEST_PATH = None

if 'VIRT_TEST_PATH' in os.environ:
    VIRT_TEST_PATH = os.environ['VIRT_TEST_PATH']
else:
    VIRT_TEST_PATH = settings.get_value(section='virt_test',
                                        key='virt_test_path',
                                        default=None)

if VIRT_TEST_PATH is not None:
    sys.path.append(os.path.expanduser(VIRT_TEST_PATH))

from virttest import data_dir  # pylint: disable=C0413

_PROVIDERS_DOWNLOAD_DIR = os.path.join(data_dir.get_test_providers_dir(),
                                       'downloads')

try:
    assert len(os.listdir(_PROVIDERS_DOWNLOAD_DIR)) != 0
except (OSError, AssertionError):
    raise EnvironmentError("Bootstrap missing. "
                           "Execute 'avocado vt-bootstrap' or disable this "
                           "plugin to get rid of this message")


class VTLister(CLI):
    """
    Avocado VT - implements legacy virt-test listing
    """