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))
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
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
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 "
# 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 """