From fd0bd3c225fcd0ed6e4735ab1307e14fba52c627 Mon Sep 17 00:00:00 2001 From: Anushree-Mathur Date: Thu, 4 Jun 2026 14:42:01 +0530 Subject: [PATCH 01/20] avocado-setup: Support minor version-specific package dependencies Currently, bootstrap only supports major version package definitions. This prevents handling packages that exist only in specific minor versions of an OS. This commit adds minor version support by: - Tracking both major and full version identifiers - Checking version-specific sections first (e.g., deps__) - Falling back to major version sections if not found - Applying same logic to environment-type packages (kvm, NV, pHyp) Example config usage: [deps_rhel9_3] packages = version-specific-package Signed-off-by: Anushree-Mathur --- avocado-setup.py | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/avocado-setup.py b/avocado-setup.py index 87e31653..e5c6e86d 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -135,16 +135,27 @@ def env_check(enable_kvm): (env_ver, env_type, cmd_pat) = helper.get_env_type(enable_kvm) # try to check base packages using major version numbers env_ver = env_ver.split('.')[0] + env_ver_full = env_ver.replace('.', '_') # Full version with underscore env_deps = [] - if not CONFIGFILE.has_section('deps_%s' % env_ver): + # Try full version first (e.g., deps_sles16_1) + if CONFIGFILE.has_section('deps_%s' % env_ver_full): + packages = CONFIGFILE.get('deps_%s' % env_ver_full, 'packages') + if packages != '': + env_deps = packages.split(',') + # Fallback to major version (e.g., deps_sles16) + elif CONFIGFILE.has_section('deps_%s' % env_ver_major): + packages = CONFIGFILE.get('deps_%s' % env_ver_major, 'packages') + if packages != '': + env_deps = packages.split(',') + else: # Fallback to base name if specific version is not found dist = helper.get_dist() - env_ver = dist[0] + env_ver_major = dist[0] + if CONFIGFILE.has_section('deps_%s' % env_ver_major): + packages = CONFIGFILE.get('deps_%s' % env_ver_major, 'packages') + if packages != '': + env_deps = packages.split(',') - if CONFIGFILE.has_section('deps_%s' % env_ver): - packages = CONFIGFILE.get('deps_%s' % env_ver, 'packages') - if packages != '': - env_deps = packages.split(',') for dep in env_deps: if(dep[-1] == "$"): #Substrings @@ -161,12 +172,19 @@ def env_check(enable_kvm): not_found.append(original_dep) env_deps = [] - # try to check env specific packages - if CONFIGFILE.has_section('deps_%s_%s' % (env_ver, env_type)): + # try to check env specific packages (with full version first) + if CONFIGFILE.has_section('deps_%s_%s' % (env_ver_full, env_type)): packages = CONFIGFILE.get('deps_%s_%s' % - (env_ver, env_type), 'packages') + (env_ver_full, env_type), 'packages') if packages != '': env_deps = packages.split(',') + # Fallback to major version with env_type + elif CONFIGFILE.has_section('deps_%s_%s' % (env_ver_major, env_type)): + packages = CONFIGFILE.get('deps_%s_%s' % + (env_ver_major, env_type), 'packages') + if packages != '': + env_deps = packages.split(',') + for dep in env_deps: if helper.runcmd(cmd_pat % dep, ignore_status=True)[0] != 0: not_found.append(dep) From 9cf8fec6e6de7552d03a176796816b005257b782 Mon Sep 17 00:00:00 2001 From: Aniket Sahu Date: Thu, 4 Jun 2026 15:56:08 +0530 Subject: [PATCH 02/20] network: disable tx queue value tests TX Queue size above 256 is not supported on power systems unless you're using user agent. Hence, these tests are not valid for our use cases. --- config/tests/guest/libvirt/network.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/tests/guest/libvirt/network.cfg b/config/tests/guest/libvirt/network.cfg index 30de5006..bc617f4f 100644 --- a/config/tests/guest/libvirt/network.cfg +++ b/config/tests/guest/libvirt/network.cfg @@ -170,6 +170,8 @@ variants: no virtual_network.iface_options.iface_type.type_user no virtual_network.iface_options.iface_type.type_vhostuser.vhost_dpdk no virtual_network.iface_options.iface_unprivileged_user + no type_specific.io-github-autotest-libvirt.virtual_network.iface_options.iface_driver.driver_tx_queue_size.start_success.right_boundary_value + no type_specific.io-github-autotest-libvirt.virtual_network.iface_options.iface_driver.driver_tx_queue_size.start_success.middle_value - net_virsh_attach_detach_interface: only virsh.attach_detach_interface no virsh.attach_detach_interface.normal_test.vm_paused.exist_bridge.domid From e35e4748c7474d3c9cd6352e0391fbd2994e49e9 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 28 Jul 2026 14:00:29 +0530 Subject: [PATCH 03/20] avocado-setup: add resume_job_dir parameter to run_test Add optional resume_job_dir parameter to run_test() to support resume mode. Defaults to None so all existing call sites are unaffected. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/avocado-setup.py b/avocado-setup.py index 6475da2b..19e28b77 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -383,13 +383,14 @@ def bootstrap(enable_kvm=False, guest_os=None): helper.copy_dir_file(postscript, postscript_dir) -def run_test(testsuite, avocado_bin, runner, linux_src_path): +def run_test(testsuite, avocado_bin, runner, linux_src_path, resume_job_dir=None): """ To run given testsuite :param testsuite: Testsuite object which has details about the tests :param avocado_bin: Executable path of avocado :param runner: Whether to use --test-runner runner (True) or --max-parallel-tasks=1 (False) :param linux_src_path: Path to kernel source for gcov coverage (or None) + :param resume_job_dir: Prior avocado job dir for resume mode (or None) """ nrun = True if runner: From 03f2c427dd63079f7d89908104fa2917cdf60834 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 28 Jul 2026 14:00:53 +0530 Subject: [PATCH 04/20] avocado-setup: restructure run_test normal path into else block Move the existing nrun/cmd build logic into an else branch to prepare for resume_job_dir handling in the if branch. No functional change to normal runs. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 65 +++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/avocado-setup.py b/avocado-setup.py index 19e28b77..adf40c61 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -392,39 +392,42 @@ def run_test(testsuite, avocado_bin, runner, linux_src_path, resume_job_dir=None :param linux_src_path: Path to kernel source for gcov coverage (or None) :param resume_job_dir: Prior avocado job dir for resume mode (or None) """ - nrun = True - if runner: - runner = '--test-runner runner' - nrun = False + if resume_job_dir: + pass # placeholder — filled in next commit else: - runner = '--max-parallel-tasks=1' - - logger.info('') - if 'guest' in testsuite.type: - guest_args = TestSuite.guest_add_args - logger.info("Running Guest Tests Suite %s", testsuite.shortname) - if "sanity" in testsuite.shortname: - guest_args = " --vt-only-filter %s " % args.guest_os - cmd = "%s run --vt-type %s --vt-config %s \ - --force-job-id %s \ - --job-results-dir %s %s" % (avocado_bin, testsuite.vt_type, - testsuite.config(), - testsuite.jobid, - testsuite.resultdir, guest_args) - if 'host' in testsuite.type: - logger.info("Running Host Tests Suite %s", testsuite.shortname) - if nrun: - cmd = "%s run %s %s" % (avocado_bin, runner, os.path.join(TEST_DIR, testsuite.test)) + nrun = True + if runner: + runner = '--test-runner runner' + nrun = False else: - cmd = "%s run %s %s" % (avocado_bin, runner, testsuite.test) - if testsuite.mux: - cmd += " -m %s" % os.path.join(TEST_DIR, testsuite.mux) - cmd += " --force-job-id %s \ - --job-results-dir %s %s" % (testsuite.jobid, - testsuite.resultdir, - TestSuite.host_add_args) - if testsuite.args: - cmd += testsuite.args + runner = '--max-parallel-tasks=1' + + logger.info('') + if 'guest' in testsuite.type: + guest_args = TestSuite.guest_add_args + logger.info("Running Guest Tests Suite %s", testsuite.shortname) + if "sanity" in testsuite.shortname: + guest_args = " --vt-only-filter %s " % args.guest_os + cmd = "%s run --vt-type %s --vt-config %s \ + --force-job-id %s \ + --job-results-dir %s %s" % (avocado_bin, testsuite.vt_type, + testsuite.config(), + testsuite.jobid, + testsuite.resultdir, guest_args) + if 'host' in testsuite.type: + logger.info("Running Host Tests Suite %s", testsuite.shortname) + if nrun: + cmd = "%s run %s %s" % (avocado_bin, runner, os.path.join(TEST_DIR, testsuite.test)) + else: + cmd = "%s run %s %s" % (avocado_bin, runner, testsuite.test) + if testsuite.mux: + cmd += " -m %s" % os.path.join(TEST_DIR, testsuite.mux) + cmd += " --force-job-id %s \ + --job-results-dir %s %s" % (testsuite.jobid, + testsuite.resultdir, + TestSuite.host_add_args) + if testsuite.args: + cmd += testsuite.args input_file = args.inputfile try: From ccb8c7f08693826b8879845b8d6170f094fc0a95 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 28 Jul 2026 14:01:19 +0530 Subject: [PATCH 05/20] avocado-setup: implement avocado replay for resume mode in run_test When resume_job_dir is set, extract the job ID from the job dir name and invoke 'avocado replay '. Modern avocado replay re-runs only the not-passed tests from the prior job automatically, works for both host and guest suites without extra flags. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/avocado-setup.py b/avocado-setup.py index adf40c61..ae5f283e 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -393,7 +393,13 @@ def run_test(testsuite, avocado_bin, runner, linux_src_path, resume_job_dir=None :param resume_job_dir: Prior avocado job dir for resume mode (or None) """ if resume_job_dir: - pass # placeholder — filled in next commit + # avocado replay re-runs only not-passed tests from that job. + # The job_id is the trailing hex in the job dir name e.g. + # job-2026-07-28T04.29-07add70 → job_id = 07add70 + job_id = os.path.basename(resume_job_dir).rsplit('-', 1)[-1] + logger.info("Resuming suite %s via avocado replay %s", + testsuite.name, job_id) + cmd = "%s replay %s" % (avocado_bin, job_id) else: nrun = True if runner: From eac505665dcba961e357f166dcce0e2b09e3ddaa Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 28 Jul 2026 14:01:43 +0530 Subject: [PATCH 06/20] avocado-setup: add --resume CLI argument Add --resume flag to argparse. When set the wrapper uses the existing outputdir to scan prior job results and resume from where the run was interrupted. Usage: python avocado-setup.py --run-suite host_a,host_b,host_c --resume Signed-off-by: Praveen K Pandey --- avocado-setup.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/avocado-setup.py b/avocado-setup.py index ae5f283e..b538d44d 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -732,6 +732,13 @@ def parse_test_config(test_config_file, avocado_bin, enable_kvm, runner): parser.add_argument('--config-norun', dest='NORUNTEST_PATH', action='store', default=NORUNTEST_PATH, help='Specify no run tests config path') + parser.add_argument('--resume', dest='resume', + action='store_true', default=False, + help='Resume an interrupted run using the same ' + '--output-dir results directory. Skips suites ' + 'that completed cleanly, replays the interrupted ' + 'suite via avocado replay, and runs remaining ' + 'suites fresh.') args = parser.parse_args() From 49dd389724c6b73f82633852eb853e5ae556e37e Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 28 Jul 2026 14:02:23 +0530 Subject: [PATCH 07/20] avocado-setup: scan prior job dirs to build suite_job_map on resume On --resume, scan all job-* subdirs in outputdir and build suite_job_map mapping suite_name to its prior job dir path. Host suites matched by test file basename in avocado test IDs. Guest suites matched by suite shortname in VT test IDs. Job dirs with no/unreadable results.json stored as __interrupted__ fallback (system crashed before results were written). Signed-off-by: Praveen K Pandey --- avocado-setup.py | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/avocado-setup.py b/avocado-setup.py index b538d44d..a0b2df53 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -898,6 +898,55 @@ def parse_test_config(test_config_file, avocado_bin, enable_kvm, runner): "Config file not present") count_testsuites_status[Testsuite_status.Cant_Run.value] += 1 continue + # Build suite_job_map: scan outputdir job-* dirs and match each to a + # suite name so the run loop knows which suites completed, which was + # interrupted, and which never ran. + suite_job_map = {} + if args.resume: + if not os.path.isdir(outputdir): + logger.error("RESUME: results dir does not exist: %s", outputdir) + sys.exit(1) + # host suites: match test file basename in avocado test IDs + # guest suites: match suite shortname in avocado VT test IDs + basename_to_suite = {} + shortname_to_suite = {} + for ts_name in Testsuites_list: + ts = Testsuites[ts_name] + if ts.test: + basename_to_suite[os.path.basename(ts.test.rstrip('$'))] = ts_name + elif ts.type == 'guest': + shortname_to_suite[ts.shortname] = ts_name + for entry in sorted(os.listdir(outputdir)): + job_path = os.path.join(outputdir, entry) + if not entry.startswith("job-") or not os.path.isdir(job_path): + continue + rj = os.path.join(job_path, "results.json") + matched = None + if os.path.isfile(rj): + try: + with open(rj, encoding="utf-8") as fp: + rdata = json.load(fp) + for t in rdata.get("tests", []): + tid = t.get("id", "") + tbase = tid.split(":")[0].split("/")[-1] + if tbase in basename_to_suite: + matched = basename_to_suite[tbase] + break + for sname, ts_name in shortname_to_suite.items(): + if sname in tid: + matched = ts_name + break + if matched: + break + except (OSError, json.JSONDecodeError): + pass + if matched: + suite_job_map[matched] = job_path + else: + suite_job_map.setdefault("__interrupted__", job_path) + logger.info("RESUME: suite to job dir map from %s: %s", + outputdir, suite_job_map) + # Run Tests count_testsuites_status[Testsuite_status.Total.value] = len(Testsuites_list) for test_suite in Testsuites_list: From c428a0638fc032ededd207af85d940bfec9ddb1d Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 28 Jul 2026 14:02:44 +0530 Subject: [PATCH 08/20] avocado-setup: add _suite_completed and _suite_replay_dir helpers _suite_completed: returns True when a suite has a prior job dir with a clean results.json (total > 0, interrupt == 0). _suite_replay_dir: returns the prior job dir to replay for a suite, or None when the suite never ran (no job dir) so it runs fresh. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/avocado-setup.py b/avocado-setup.py index a0b2df53..02c45e66 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -947,6 +947,34 @@ def parse_test_config(test_config_file, avocado_bin, enable_kvm, runner): logger.info("RESUME: suite to job dir map from %s: %s", outputdir, suite_job_map) + def _suite_completed(suite_name): + """Return True if suite has a prior job with a clean results.json. + A suite is complete when total > 0 and interrupt == 0. + """ + if suite_name not in suite_job_map: + return False + rj = os.path.join(suite_job_map[suite_name], "results.json") + if not os.path.isfile(rj): + return False + try: + with open(rj, encoding="utf-8") as fp: + d = json.load(fp) + return (int(d.get("total", 0)) > 0 and + int(d.get("interrupt", 0)) == 0) + except (OSError, json.JSONDecodeError): + return False + + def _suite_replay_dir(suite_name): + """Return the prior job dir to replay for this suite, or None. + Returns None when suite has no prior job dir (never ran) + so it gets a normal fresh run instead of a replay. + """ + if suite_name in suite_job_map and not _suite_completed(suite_name): + return suite_job_map[suite_name] + if "__interrupted__" in suite_job_map and suite_name in suite_job_map: + return suite_job_map.pop("__interrupted__") + return None + # Run Tests count_testsuites_status[Testsuite_status.Total.value] = len(Testsuites_list) for test_suite in Testsuites_list: From 982dc5bc0e854bc3bf5b6d527a04fc793cf72885 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 28 Jul 2026 14:03:12 +0530 Subject: [PATCH 09/20] avocado-setup: integrate resume logic into main run loop On --resume, for each suite in order: - completed (clean results.json) -> skip with logged message - interrupted (no/partial results) -> avocado replay - never ran (no job dir at all) -> normal fresh run Suites that never ran (e.g. system rebooted before they started) receive None from _suite_replay_dir and run fully fresh. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/avocado-setup.py b/avocado-setup.py index 02c45e66..ae09f767 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -978,10 +978,28 @@ def _suite_replay_dir(suite_name): # Run Tests count_testsuites_status[Testsuite_status.Total.value] = len(Testsuites_list) for test_suite in Testsuites_list: - if not Testsuites[test_suite].run == Testsuite_status.Cant_Run.value: - run_test(Testsuites[test_suite], avocado_bin, args.runner, args.linux_src_path) - if args.interval: - time.sleep(int(args.interval)) + if Testsuites[test_suite].run == Testsuite_status.Cant_Run.value: + continue + if args.resume: + if _suite_completed(test_suite): + logger.info("RESUME: skipping '%s' (completed in prior run)", + test_suite) + Testsuites[test_suite].runstatus( + Testsuite_status.Run.value, + "Skipped (completed in prior run)") + count_testsuites_status[Testsuite_status.Run.value] += 1 + else: + replay_dir = _suite_replay_dir(test_suite) + if replay_dir: + logger.info("RESUME: replaying '%s' from %s", + test_suite, replay_dir) + run_test(Testsuites[test_suite], avocado_bin, args.runner, + args.linux_src_path, replay_dir) + else: + run_test(Testsuites[test_suite], avocado_bin, args.runner, + args.linux_src_path) + if args.interval: + time.sleep(int(args.interval)) # Finding the space needed for formatting result summary test_name_list = [] From 98873351a9ebdd6078ddf71f6903b4f9f6062067 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 28 Jul 2026 14:13:29 +0530 Subject: [PATCH 10/20] README: document --resume option for interrupted run recovery Add --resume to the script help output block and add a new argument details entry (item 20) explaining: - What --resume does (scans results dir, classifies suites) - The three states: completed/skip, interrupted/replay, never ran/fresh - Usage examples with and without --output-dir - Note that --run-suite must match the original run - Works for both host and guest test suites Signed-off-by: Praveen K Pandey --- README.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b9b12ac..dcd20fb1 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ $ ./avocado-setup.py -h [--additional-args ADD_ARGS] [--guest-os GUEST_OS] [--vt {qemu,libvirt}] [--install] [--no-download] [--no-deps-check] [--install-deps] [--clean] [--enable-kvm] [--nrunner] [--run-tests RUN_TESTS] [--config-env CONFIG_PATH] - [--config-norun NORUNTEST_PATH] + [--config-norun NORUNTEST_PATH] [--resume] options: -h, --help show this help message and exit @@ -103,6 +103,9 @@ $ ./avocado-setup.py -h Specify env config path --config-norun NORUNTEST_PATH Specify no run tests config path + --resume Resume an interrupted run using the same --output-dir results + directory. Skips suites that completed cleanly, replays the + interrupted suite via avocado replay, and runs remaining suites fresh. ``` @@ -262,6 +265,36 @@ $ ./avocado-setup.py -h 19. `--config-norun`: > Path to a custom NORUNTEST File path +20. `--resume`: + > Use this option to resume a test run that was interrupted due to a system crash or reboot. + > The wrapper scans the results directory (from `--output-dir` or the default `results/` path) + > and automatically determines the state of each suite: + > + > | Suite state in prior run | Action on resume | + > |---|---| + > | Completed cleanly | Skipped — not re-run | + > | Was running at time of crash/reboot | Replayed via `avocado replay ` — only not-passed tests re-run | + > | Never started (system crashed before it was reached) | Normal fresh run | + > + > **Usage — first run:** + > ``` + > ./avocado-setup.py --run-suite host_a,host_b,host_c + > ``` + > + > **After system reboot/crash — same command with `--resume`:** + > ``` + > ./avocado-setup.py --run-suite host_a,host_b,host_c --resume + > ``` + > + > If a custom `--output-dir` was used in the original run, pass it again with `--resume`: + > ``` + > ./avocado-setup.py --run-suite host_a,host_b,host_c --output-dir /path/to/output --resume + > ``` + > + > NOTE: The `--run-suite` list must be identical to the original run so the wrapper can + > correctly identify which suites ran, which was interrupted, and which never started. + > Works for both host and guest test suites. + ### Customizing Test Suites: The Host and Guest sanity suites were created to include a varied collection of tests to validate new Host OS installations. From 50cc1625422ab7cf4cf135c04f5edea021e6af7f Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 4 Aug 2026 13:40:15 +0530 Subject: [PATCH 11/20] avocado-setup: replace job_id hash extraction with os.path.abspath() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Short 7-char hash suffix extracted from the job dir name is not unique enough when multiple prior jobs share the same suffix — avocado raises ValueError: 'hash is not unique enough'. Switch to passing the full absolute path directly. avocado's get_job_results_dir() accepts a direct path when the directory exists and contains an 'id' file, so no hash lookup is needed at all. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/avocado-setup.py b/avocado-setup.py index ae09f767..6800c169 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -393,10 +393,12 @@ def run_test(testsuite, avocado_bin, runner, linux_src_path, resume_job_dir=None :param resume_job_dir: Prior avocado job dir for resume mode (or None) """ if resume_job_dir: - # avocado replay re-runs only not-passed tests from that job. - # The job_id is the trailing hex in the job dir name e.g. - # job-2026-07-28T04.29-07add70 → job_id = 07add70 - job_id = os.path.basename(resume_job_dir).rsplit('-', 1)[-1] + # Pass the full absolute path so avocado can resolve the job directory + # unambiguously without hash prefix matching (which raises ValueError + # "hash is not unique enough" when multiple jobs share the same 7-char + # suffix). avocado's get_job_results_dir() accepts a direct path when + # the directory exists and contains an 'id' file. + replay_path = os.path.abspath(resume_job_dir) logger.info("Resuming suite %s via avocado replay %s", testsuite.name, job_id) cmd = "%s replay %s" % (avocado_bin, job_id) From 139047a7c539eb4b5e49ecb02b749edae483147c Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 4 Aug 2026 13:40:40 +0530 Subject: [PATCH 12/20] avocado-setup: use replay_path and add --resume flag to avocado replay cmd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wire up replay_path (introduced in the previous commit) into both the logger.info call and the avocado replay command string. Add --resume so avocado skips tests that already PASS/SKIP in the source job and only re-runs the remaining/interrupted tests — without it avocado replays the entire job from scratch. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/avocado-setup.py b/avocado-setup.py index 6800c169..bc1ffe22 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -399,9 +399,11 @@ def run_test(testsuite, avocado_bin, runner, linux_src_path, resume_job_dir=None # suffix). avocado's get_job_results_dir() accepts a direct path when # the directory exists and contains an 'id' file. replay_path = os.path.abspath(resume_job_dir) + # --resume tells avocado to skip tests that already passed/were skipped + # in the source job, so only the remaining/interrupted tests are re-run. logger.info("Resuming suite %s via avocado replay %s", - testsuite.name, job_id) - cmd = "%s replay %s" % (avocado_bin, job_id) + testsuite.name, replay_path) + cmd = "%s replay %s --resume" % (avocado_bin, replay_path) else: nrun = True if runner: From 71f5f08f1f4efd59d64c81a83351d6836463deba Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 4 Aug 2026 13:41:09 +0530 Subject: [PATCH 13/20] avocado-setup: expand _suite_replay_dir() docstring with priority order MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The old two-line docstring did not explain the three decision cases or why the __interrupted__ key is treated differently from a normal suite match. Replace it with an explicit numbered priority list so future readers understand the logic without having to trace through the code. No functional change — docstring only. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/avocado-setup.py b/avocado-setup.py index bc1ffe22..ceb9558a 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -970,8 +970,13 @@ def _suite_completed(suite_name): def _suite_replay_dir(suite_name): """Return the prior job dir to replay for this suite, or None. - Returns None when suite has no prior job dir (never ran) - so it gets a normal fresh run instead of a replay. + + Priority order: + 1. Suite has its own matched job dir and it is not complete → replay it. + 2. An unmatched interrupted job dir exists and this suite has no own + job dir (i.e. it was the suite running when the job was killed and + no results.json was written) → claim that dir for replay. + 3. Otherwise return None so the suite gets a normal fresh run. """ if suite_name in suite_job_map and not _suite_completed(suite_name): return suite_job_map[suite_name] From 8a1c03e2ed4106d4b879cf6801dffec8898b9628 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Tue, 4 Aug 2026 13:41:37 +0530 Subject: [PATCH 14/20] =?UTF-8?q?avocado-setup:=20fix=20=5Fsuite=5Freplay?= =?UTF-8?q?=5Fdir()=20interrupted=20job=20condition=20(in=20=E2=86=92=20no?= =?UTF-8?q?t=20in)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous condition: if '__interrupted__' in suite_job_map and suite_name in suite_job_map: ...required suite_name to already be present in suite_job_map, which is the exact opposite of the intended logic. The __interrupted__ dir should be claimed by the suite that has NO own entry in suite_job_map — i.e. the suite that was actively running when the process was killed and never wrote results.json. Fix: change 'suite_name in suite_job_map' to 'suite_name not in suite_job_map'. Symptom fixed: avocado-setup.py --run-suite host_rasci --resume restarted hwinfo from test 01/12 instead of resuming from 07/12. Signed-off-by: Praveen K Pandey --- avocado-setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avocado-setup.py b/avocado-setup.py index ceb9558a..4c08b31c 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -980,7 +980,7 @@ def _suite_replay_dir(suite_name): """ if suite_name in suite_job_map and not _suite_completed(suite_name): return suite_job_map[suite_name] - if "__interrupted__" in suite_job_map and suite_name in suite_job_map: + if "__interrupted__" in suite_job_map and suite_name not in suite_job_map: return suite_job_map.pop("__interrupted__") return None From 3f11bdb8f4ee55fcbba3c75eba164ce6c4cea720 Mon Sep 17 00:00:00 2001 From: Srikanth Aithal Date: Tue, 11 Aug 2026 09:08:16 +0000 Subject: [PATCH 15/20] Support optional isolated venv for Avocado bootstrap Keep the existing system-wide pip path as default. Add --use-venv / AVOCADO_USE_VENV for a clean virtualenv install that avoids distro package conflicts. Signed-off-by: Srikanth Aithal --- .gitignore | 1 + avocado-setup.py | 24 +++++++++- lib/helper.py | 111 ++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 125 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index b060eda6..f46176e3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.log __pycache__ *.pyc +.venv diff --git a/avocado-setup.py b/avocado-setup.py index ae09f767..d0c8d72a 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -206,7 +206,12 @@ def need_bootstrap(enable_kvm=False): logger.debug("Check if bootstrap required") needs_bootstrap = False # Check for avocado - if 'no avocado ' in helper.get_avocado_bin(ignore_status=True): + if helper.use_venv(): + venv_avocado = os.path.join(helper.get_venv_dir(), 'bin', 'avocado') + if not (os.path.isfile(venv_avocado) and os.access(venv_avocado, os.X_OK)): + logger.debug("Avocado needs to be installed") + needs_bootstrap = True + elif 'no avocado ' in helper.get_avocado_bin(ignore_status=True): logger.debug("Avocado needs to be installed") needs_bootstrap = True if enable_kvm: @@ -305,6 +310,10 @@ def create_config(logdir): with open(avocado_conf, 'w+') as conf: config.write(conf) + if helper.use_venv(): + venv_conf_dir = os.path.join(helper.get_venv_dir(), '.config', 'avocado') + os.makedirs(venv_conf_dir, exist_ok=True) + shutil.copy2(avocado_conf, os.path.join(venv_conf_dir, 'avocado.conf')) def guest_download(guestos): @@ -500,6 +509,9 @@ def env_clean(deep=False): """ logger.info("Cleaning the Environment") pipManager.uninstall() + if helper.use_venv(): + pipManager.uninstall_system_wide() + pipManager.remove_venv() if os.path.isdir(prescript): helper.remove_file(prescript, prescript_dir) @@ -717,6 +729,10 @@ def parse_test_config(test_config_file, avocado_bin, enable_kvm, runner): help='To remove/uninstall autotest, avocado from system') parser.add_argument('--enable-kvm', dest="enable_kvm", action='store_true', default=False, help='enable bootstrap kvm tests') + parser.add_argument('--use-venv', '--venv', dest='use_venv', action='store_true', + default=False, + help='Install Avocado into an isolated virtual environment (.venv). ' + 'Can also be enabled with AVOCADO_USE_VENV=1') parser.add_argument('--runner', dest="runner", action='store_true', default=False, help='To use legacy runner with --test-runner runner flag') parser.add_argument('--code-cov', dest='linux_src_path', action='store', @@ -742,6 +758,12 @@ def parse_test_config(test_config_file, avocado_bin, enable_kvm, runner): args = parser.parse_args() + if args.use_venv: + os.environ['AVOCADO_USE_VENV'] = '1' + if helper.use_venv() and not os.environ.get('AVOCADO_VENV'): + os.environ['AVOCADO_VENV'] = os.path.join(BASE_PATH, '.venv') + helper.prepend_venv_to_path() + if args.CONFIG_PATH: if os.path.exists(args.CONFIG_PATH): CONFIGFILE.read(args.CONFIG_PATH) diff --git a/lib/helper.py b/lib/helper.py index f850f4ba..4e749ae3 100644 --- a/lib/helper.py +++ b/lib/helper.py @@ -29,10 +29,33 @@ from .logger import logger_init LOG_PATH = os.path.dirname(os.path.abspath(os.path.join(__file__, os.pardir))) +DEFAULT_VENV_DIR = os.path.join(LOG_PATH, '.venv') logger = logger_init(filepath=LOG_PATH).getlogger() +def use_venv(): + """ + Return True when the isolated virtual-environment path is enabled. + Controlled by AVOCADO_USE_VENV=1 (or 'true'/'yes'/'on'). + """ + val = os.environ.get("AVOCADO_USE_VENV", "").lower() + return val in ("1", "true", "yes", "on") + + +def get_venv_dir(): + """Return the path of the optional Avocado virtual environment.""" + return os.environ.get("AVOCADO_VENV", DEFAULT_VENV_DIR) + + +def prepend_venv_to_path(): + """Prepend the venv bin directory to PATH when venv mode is enabled.""" + if use_venv(): + venv_bin = os.path.join(get_venv_dir(), 'bin') + os.environ['PATH'] = venv_bin + os.pathsep + os.environ.get('PATH', '') + logger.debug("Prepended %s to PATH (venv mode)", venv_bin) + + def runcmd(cmd, ignore_status=False, err_str="", info_str="", debug_str=""): """ Running command and get the results @@ -136,6 +159,15 @@ def get_avocado_bin(ignore_status=False): """ Get the avocado executable path """ + if use_venv(): + venv_avocado = os.path.join(get_venv_dir(), 'bin', 'avocado') + if os.path.isfile(venv_avocado) and os.access(venv_avocado, os.X_OK): + return venv_avocado + if not ignore_status: + logger.error("avocado command not installed or not found in venv at %s", + get_venv_dir()) + sys.exit(1) + return "" return runcmd('which avocado', ignore_status=ignore_status, err_str="avocado command not installed or not found in path")[1] @@ -218,14 +250,19 @@ def __init__(self, base_fw=[], opt_fw=[], kvm_fw=[], pip_packages=[], enable_kvm if sys.version_info[:2] < (3, 6): logger.error("System installed python version(%s) not supported, make sure python3.6 or above is installed to proceed" % sys.version_info[:2]) sys.exit(1) - self.pip_cmd = "pip%s" % sys.version_info[0] - # Check for pip if not attempt install and proceed - cmd = "%s --help >/dev/null 2>&1||(curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python%s ./get-pip.py)" % (self.pip_cmd, sys.version_info[0]) - runcmd(cmd, err_str='Unable to install pip3') + self.use_venv = use_venv() + self.venv_dir = get_venv_dir() - # Get pip version - pip_version_split = importlib.metadata.version(f"pip").split(".") - self.pip_vmajor, self.pip_vminor = int(pip_version_split[0]), int(pip_version_split[1]) + if self.use_venv: + self.python = os.path.join(self.venv_dir, 'bin', 'python') + self.pip_cmd = os.path.join(self.venv_dir, 'bin', 'pip') + logger.info("Using isolated virtual environment: %s", self.venv_dir) + else: + self.pip_cmd = "pip%s" % sys.version_info[0] + cmd = "%s --help >/dev/null 2>&1||(curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python%s ./get-pip.py)" % (self.pip_cmd, sys.version_info[0]) + runcmd(cmd, err_str='Unable to install pip3') + pip_version_split = importlib.metadata.version("pip").split(".") + self.pip_vmajor, self.pip_vminor = int(pip_version_split[0]), int(pip_version_split[1]) self.uninstallitems = base_fw + opt_fw + kvm_fw + pip_packages if enable_kvm: @@ -246,7 +283,33 @@ def __init__(self, base_fw=[], opt_fw=[], kvm_fw=[], pip_packages=[], enable_kvm else: self.install_packages.append(item[0]) + def _ensure_venv(self): + ready_marker = os.path.join(self.venv_dir, '.bootstrap_ok') + if (os.path.isdir(self.venv_dir) and os.path.isfile(self.python) + and os.path.isfile(ready_marker)): + logger.debug("Reusing existing virtual environment at %s", self.venv_dir) + return + if os.path.isdir(self.venv_dir): + logger.info("Removing incomplete virtual environment at %s", self.venv_dir) + shutil.rmtree(self.venv_dir, ignore_errors=True) + logger.info("Creating isolated virtual environment at %s", self.venv_dir) + runcmd('%s -m venv %s' % (sys.executable, self.venv_dir), + err_str='Failed to create virtual environment') + runcmd('%s -m pip install --upgrade pip "setuptools<82" wheel' % self.python, + err_str='Failed to upgrade pip inside venv') + with open(ready_marker, 'w') as marker_file: + marker_file.write('ok\n') + def install(self): + if self.use_venv: + self._ensure_venv() + pip_installcmd = '%s install -U' % self.pip_cmd + for package in self.install_packages: + cmd = '%s %s' % (pip_installcmd, package) + runcmd(cmd, + err_str='Package installation via pip failed: package %s' % package, + debug_str='Installing python package %s using pip' % package) + return if os.geteuid() != 0: pip_installcmd = '%s install --user -U' % self.pip_cmd else: @@ -260,14 +323,42 @@ def install(self): debug_str='Installing python package %s using pip' % package) def uninstall(self): + if self.use_venv: + return + self._pip_uninstall(self.pip_cmd, self.pip_vmajor, self.pip_vminor) + + def uninstall_system_wide(self): + venv_bin = os.path.join(self.venv_dir, 'bin') + path_entries = os.environ.get('PATH', '').split(os.pathsep) + system_path = os.pathsep.join(p for p in path_entries if p and p != venv_bin) + pip_cmd = shutil.which('pip%s' % sys.version_info[0], path=system_path) + if not pip_cmd: + logger.debug("System pip not found, skipping system-wide Avocado cleanup") + return + status, output = subprocess.getstatusoutput('%s --version' % pip_cmd) + match = re.search(r'pip (\d+)\.(\d+)', output) + if status != 0 or not match: + logger.debug("Could not determine system pip version, skipping system-wide Avocado cleanup") + return + pip_vmajor, pip_vminor = int(match.group(1)), int(match.group(2)) + logger.info("Removing system-wide Avocado packages") + self._pip_uninstall(pip_cmd, pip_vmajor, pip_vminor) + + def _pip_uninstall(self, pip_cmd, pip_vmajor, pip_vminor): for package in self.uninstall_packages: - cmd = '%s uninstall %s -y --disable-pip-version-check' % (self.pip_cmd, package) - if (self.pip_vmajor > 23) or (self.pip_vmajor == 23 and self.pip_vminor >= 1): + cmd = '%s uninstall %s -y --disable-pip-version-check' % (pip_cmd, package) + if (pip_vmajor > 23) or (pip_vmajor == 23 and pip_vminor >= 1): cmd = cmd + ' --break-system-packages' # --break-system-packages introduced in pip 23.1 runcmd(cmd, ignore_status=True, err_str="Error in removing package: %s" % package, debug_str="Uninstalling %s" % package) + def remove_venv(self): + if os.path.isdir(self.venv_dir): + logger.info("Cleaning up any previously existing virtual environment at %s", + self.venv_dir) + shutil.rmtree(self.venv_dir, ignore_errors=True) + class RemoteRunner: """ @@ -427,7 +518,7 @@ def gcov_code_coverage(basedir_name, test_name, driver_name=None): runcmd("sed -n -i '/Function/{N;p}' coverage.txt", ignore_status=True) covrg_percentage = 0 with open('coverage.txt', 'r+') as fs1: - for line1, line2 in itertools.zip_longest(*[fs1]*2): + for line1, line2 in itertools.zip_longest(*[fs1] * 2): if not line2.startswith("Line"): continue out = line2.split(":")[-1] From 02f5fb8028441c1edcb71a03bad029daf7e5b435 Mon Sep 17 00:00:00 2001 From: Sumit Kumar Date: Wed, 19 Aug 2026 09:22:34 +0000 Subject: [PATCH 16/20] env.conf: add aautils to framework base packages Install aautils alongside avocado-framework during bootstrap so tests that depend on autils helpers (e.g. LKP utilities for jitter and stress-ng) work without a separate manual pip step. aautils is a general-purpose Avocado utility library, not ELVES-specific, so keep it in the upstream package list. Signed-off-by: Sumit Kumar --- config/wrapper/env.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/wrapper/env.conf b/config/wrapper/env.conf index 31ff5eb0..f2de4b51 100644 --- a/config/wrapper/env.conf +++ b/config/wrapper/env.conf @@ -14,7 +14,7 @@ post_script_dir = 'config/postscript' # ('avocado-framework', 'git+https://github.com/avocado-framework/avocado.git@branch') -- Install version from the given git repo and checkout to specific branch # ('avocado-framework-plugin-varianter-yaml-to-mux', # 'git+https://github.com/avocado-framework/avocado.git#subdirectory=optional_plugins/varianter_yaml_to_mux') -- Install from subdirectory from the given git repo -base = [('avocado-framework', ''), ('avocado-framework-plugin-varianter-yaml-to-mux', '')] +base = [('avocado-framework', ''), ('avocado-framework-plugin-varianter-yaml-to-mux', ''), ('aautils', '')] kvm = [('avocado-framework-plugin-vt', 'git+https://github.com/avocado-framework/avocado-vt.git')] optional = [('avocado-framework-plugin-result-html', '')] From 1c06eaa926c0242d9f2660586228ad0bba2ce83e Mon Sep 17 00:00:00 2001 From: Anushree-Mathur2 Date: Fri, 18 Sep 2026 13:59:05 +0530 Subject: [PATCH 17/20] Add SLES 16.1 specific package dependencies Define SLES 16.1 specific packages in [deps_sles16_1] section. These packages are only available or required for SLES 16.1 and will not be installed on other SLES 16.x versions. Signed-off-by: Anushree-Mathur --- config/wrapper/env.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/wrapper/env.conf b/config/wrapper/env.conf index f2de4b51..dac448a1 100644 --- a/config/wrapper/env.conf +++ b/config/wrapper/env.conf @@ -154,7 +154,9 @@ packages = [deps_sles15_kvm] packages = tcpdump,qemu [deps_sles16] -packages = gcc,python3-devel,7zip,xz-devel,python3-setuptools,tcpdump,numactl +packages = gcc,python311-devel,7zip,xz-devel,python311-setuptools,tcpdump,numactl +[deps_sles16_1] +packages = numa-preplace,gcc,python313-devel,7zip,xz-devel,python313-setuptools,tcpdump,numactl,nfs-client,nfs-kernel-server [deps_slesbe] packages = gcc,python3-devel,xz-devel,python3-setuptools,tcpdump,numactl [deps_slesbe_NV] From 4703e1e3a2d6c64d56cd9197ea14ea4150eae692 Mon Sep 17 00:00:00 2001 From: Anushree-Mathur2 Date: Fri, 18 Sep 2026 14:14:14 +0530 Subject: [PATCH 18/20] docs: document minor version-specific package dependencies in README Currently, bootstrap only supports major version package definitions. This prevents handling packages that exist only in specific minor versions of an OS. This commit adds documentation for the minor version support by: - Explaining how the wrapper checks minor version-specific sections first (e.g., [deps_sles16_1]) before falling back to the major version section (e.g., [deps_sles16]) - Documenting the same fallback logic for environment-type packages (e.g., [deps_sles16_1_kvm] -> [deps_sles16_kvm]) - Providing a clear example config usage in config/wrapper/env.conf - Highlighting that packages in [deps_sles16_1] are pre-requisite packages only for SLES 16.1 and will not affect other SLES 16.x versions Signed-off-by: Anushree-Mathur --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index dcd20fb1..f7e28e0c 100644 --- a/README.md +++ b/README.md @@ -295,6 +295,28 @@ $ ./avocado-setup.py -h > correctly identify which suites ran, which was interrupted, and which never started. > Works for both host and guest test suites. +### Minor Version-Specific Package Dependencies: + + By default, the wrapper checks for OS-level dependency packages using the **major version** of the detected OS + (e.g., `[deps_sles16]`). The wrapper also supports **minor version-specific** sections that take priority over + the major version section. + + **How it works:** + 1. The wrapper first checks for a minor version-specific section (e.g., `[deps_sles16_1]`) + 2. If not found, it falls back to the major version section (e.g., `[deps_sles16]`) + 3. The same lookup logic applies to environment-type packages (e.g., `[deps_sles16_1_kvm]` → `[deps_sles16_kvm]`) + + **Example** — add packages only for SLES 16.1 in `config/wrapper/env.conf`: + ``` + [deps_sles16] + packages = gcc,python311-devel,xz-devel + + [deps_sles16_1] + packages = version-specific-package + ``` + + > **Note:** Packages in `[deps_sles16_1]` will **only** be the pre-requisite packages that need to be installed on SLES 16.1 and will not affect other SLES 16.x versions. + ### Customizing Test Suites: The Host and Guest sanity suites were created to include a varied collection of tests to validate new Host OS installations. From 5d09c0751877f9502d06c6b64ef5b035a6b7da99 Mon Sep 17 00:00:00 2001 From: Srikanth Aithal Date: Fri, 25 Sep 2026 09:02:24 +0530 Subject: [PATCH 19/20] Fix UnboundLocalError in env_check Initialize env_ver_full and env_ver_major from the original OS id before looking up deps_* sections so bootstrap does not crash when a version-specific section is missing. Error before fix: UnboundLocalError: cannot access local variable 'env_ver_major' where it is not associated with a value (avocado-setup.py env_check, elif CONFIGFILE.has_section('deps_%s' % env_ver_major)) Signed-off-by: Srikanth Aithal --- avocado-setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avocado-setup.py b/avocado-setup.py index 8a7c5811..482c3bdf 100644 --- a/avocado-setup.py +++ b/avocado-setup.py @@ -138,8 +138,8 @@ def env_check(enable_kvm): not_found = [] (env_ver, env_type, cmd_pat) = helper.get_env_type(enable_kvm) # try to check base packages using major version numbers - env_ver = env_ver.split('.')[0] env_ver_full = env_ver.replace('.', '_') # Full version with underscore + env_ver_major = env_ver.split('.')[0] env_deps = [] # Try full version first (e.g., deps_sles16_1) if CONFIGFILE.has_section('deps_%s' % env_ver_full): From f5ee8847f1062ed4e9a1e8883c225af08bf52efe Mon Sep 17 00:00:00 2001 From: Aniket Sahu Date: Fri, 18 Sep 2026 15:21:23 +0530 Subject: [PATCH 20/20] tests: Lifecycle test priority config files Added p1, p2 and p3 config files for lifecycle tests. Also disabled breaking tests which causes the system to lock up. Signed-off-by: Aniket Sahu --- config/tests/guest/libvirt/lifecycle.cfg | 7 ++- config/tests/guest/libvirt/lifecycle_p1.cfg | 63 +++++++++++++++++++++ config/tests/guest/libvirt/lifecycle_p2.cfg | 51 +++++++++++++++++ config/tests/guest/libvirt/lifecycle_p3.cfg | 51 +++++++++++++++++ 4 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 config/tests/guest/libvirt/lifecycle_p1.cfg create mode 100644 config/tests/guest/libvirt/lifecycle_p2.cfg create mode 100644 config/tests/guest/libvirt/lifecycle_p3.cfg diff --git a/config/tests/guest/libvirt/lifecycle.cfg b/config/tests/guest/libvirt/lifecycle.cfg index 5317f6c9..e241fa14 100644 --- a/config/tests/guest/libvirt/lifecycle.cfg +++ b/config/tests/guest/libvirt/lifecycle.cfg @@ -112,15 +112,19 @@ variants: only virsh.dominfo - domjobabort: only virsh.domjobabort + no virsh.domjobabort.normal_test.dump_option.live_dump - domjobinfo: only virsh.domjobinfo + no virsh.domjobinfo.normal_test.dump_action.live_dump + no virsh.domjobinfo.normal_test.dump_action.keep_complete_test - domname: only virsh.domname - domstate: only virsh.domstate # Only supported for libxl hypervisor driver no virsh.domstate.normal_test.reason.crash_vm.oncrash_rename_restart.restart_libvirtd - no virsh.domstate.normal_test.reason.crash_vm.oncrash_rename_restart.normal + no virsh.domstate.normal_test.reason.crash_vm.oncrash_rename_restart.normal + no virsh.domstate.normal_test.reason.dump_vm.dump_live # Stops libvirt and kills VM, thus halting the test run no virsh.domstate.error_test.kill_vm.after_stopping_libvirtd - domuuid: @@ -138,6 +142,7 @@ variants: only virsh.ttyconsole - uri: only virsh.uri + no virsh.uri.invalid_uri - vncdisplay: only virsh.vncdisplay - qemu_monitor_command: diff --git a/config/tests/guest/libvirt/lifecycle_p1.cfg b/config/tests/guest/libvirt/lifecycle_p1.cfg new file mode 100644 index 00000000..1ed4864c --- /dev/null +++ b/config/tests/guest/libvirt/lifecycle_p1.cfg @@ -0,0 +1,63 @@ +include tests-shared.cfg +username = root +password = 123456 +main_vm = avocado-vt-vm1 +vms = avocado-vt-vm1 +# Network +nettype = bridge +netdst=virbr0 +# Using Text mode of installation +display = 'nographic' +take_regular_screendumps = no +keep_screendumps_on_error = no +keep_screendumps = no +store_vm_register = no +virt_install_binary = /usr/bin/virt-install +qemu_img_binary = /usr/bin/qemu-img +qemu_binary = /usr/bin/qemu-system-ppc64 +emulator_path = /usr/bin/qemu-system-ppc64 +use_os_variant=yes +hvm_or_pv = hvm +machine_type = pseries +only bridge +no xen, lxc, esx, ovmf +# Filterout unwanted disk types +no ide,xenblk,lsi_scsi,ahci,sd +no qed,qcow2v3,raw_dd,vmdk, usb2 +no e1000-82540em,e1000-82545em,e1000-82544gc,xennet,nic_custom +only no_virtio_rng +only smp2 +no spapr-vlan # Running test for virtio-net +only no_9p_export +only no_pci_assignable +only (image_backend=filesystem) +only smallpages +smp = 32 +vcpu_cores = 32 +vcpu_threads = 1 +vcpu_sockets = 1 +# 32G +mem = 32768 +# fixup for virsh_save (libvirt polkit uses action_lookup) +action_lookup = "connect_driver:QEMU domain_name:${main_vm}" + +variants: + - guest_import: + only unattended_install.import.import.default_install.aio_native + - guest_lifecycle: + only virsh.autostart.positive_test.set_autostart, virsh.autostart.positive_test.set_disable, virsh.capabilities.no_option, virsh.connect.local_connect.normal_test.default, virsh.connect.local_connect.normal_test.qemu_system_uri, virsh.console.normal_test.non_acl.valid_domname, virsh.console.normal_test.non_acl.valid_domid, virsh.console.normal_test.non_acl.valid_domuuid, virsh.console.normal_test.acl_test.valid_domname, virsh.console.normal_test.acl_test.valid_domid, virsh.console.normal_test.acl_test.valid_domuuid, virsh.console.error_test.special_operation.vm_paused, virsh.console.error_test.special_operation.vm_shut_off, virsh.console.error_test.acl_test, virsh.create.none, virsh.create.dot_name, virsh.create.console, virsh.create.console_autodestroy, virsh.create.console_paused, virsh.create.console_autodestroy_paused, virsh.create.autodestroy, virsh.create.autodestroy_paused, virsh.create.paused, virsh.define.positive_test.number, virsh.define.positive_test.symbol_letter_number, virsh.define.positive_test.symbol, virsh.define.positive_test.option_none, virsh.define.positive_test.dot_name, virsh.destroy.normal_test.non_acl.no_option.clean_domain_socket, virsh.destroy.normal_test.non_acl.id_option, virsh.destroy.normal_test.non_acl.name_option, virsh.destroy.normal_test.non_acl.paused_option, virsh.destroy.normal_test.non_acl.uuid_option, virsh.destroy.normal_test.non_acl.graceful, virsh.destroy.normal_test.acl_test.id_option, virsh.destroy.normal_test.acl_test.name_option, virsh.destroy.normal_test.acl_test.paused_option, virsh.destroy.normal_test.acl_test.uuid_option, virsh.destroy.normal_test.acl_test.graceful, virsh.domid.normal_test.name_option, virsh.domid.normal_test.paused_option, virsh.domid.normal_test.uuid_option, virsh.domid.normal_test.shutoff_option, virsh.save.normal_test.id_option.no_option.no_progress, virsh.save.normal_test.id_option.no_option.show_progress, virsh.save.normal_test.id_option.paused_option.no_progress, virsh.save.normal_test.id_option.paused_option.show_progress, virsh.save.normal_test.id_option.running_option.no_progress, virsh.save.normal_test.id_option.running_option.show_progress, virsh.save.normal_test.normal_option.no_option.no_progress, virsh.save.normal_test.normal_option.no_option.show_progress, virsh.save.normal_test.normal_option.paused_option.no_progress, virsh.save.normal_test.normal_option.paused_option.show_progress, virsh.save.normal_test.normal_option.running_option.no_progress, virsh.save.normal_test.normal_option.running_option.show_progress, virsh.save.normal_test.normal_option.xml_option.no_progress, virsh.save.normal_test.paused_state.no_option.no_progress, virsh.save.normal_test.paused_state.no_option.show_progress, virsh.save.normal_test.paused_state.paused_option.no_progress, virsh.save.normal_test.paused_state.paused_option.show_progress, virsh.save.normal_test.paused_state.running_option.no_progress, virsh.save.normal_test.paused_state.running_option.show_progress, virsh.save.normal_test.uuid_option.no_option.no_progress, virsh.save.normal_test.uuid_option.no_option.show_progress, virsh.save.normal_test.uuid_option.paused_option.no_progress, virsh.save.normal_test.uuid_option.paused_option.show_progress, virsh.save.normal_test.uuid_option.running_option.no_progress, virsh.save.normal_test.uuid_option.running_option.show_progress, virsh.save.normal_test.acl_test.no_option.no_progress, virsh.save.normal_test.acl_test.no_option.show_progress, virsh.save.normal_test.acl_test.paused_option.no_progress, virsh.save.normal_test.acl_test.paused_option.show_progress, virsh.save.normal_test.acl_test.running_option.no_progress, virsh.save.normal_test.acl_test.running_option.show_progress, virsh.edit.positive_test.name_option.edit_vcpu, virsh.edit.positive_test.name_option.edit_memory.default_unit, virsh.edit.positive_test.name_option.edit_memory.mib_unit, virsh.edit.positive_test.name_option.edit_memory.gib_unit, virsh.edit.positive_test.name_option.edit_iface.iface_type, virsh.edit.positive_test.name_option.edit_iface.iface_model, virsh.edit.positive_test.name_option.edit_rng.backend_null, virsh.edit.positive_test.name_option.edit_rng.backend_dev, virsh.edit.positive_test.name_option.edit_rng.backend_type_unix, virsh.edit.positive_test.name_option.edit_rng.backend_type_invalid, virsh.edit.positive_test.id_option.edit_vcpu, virsh.edit.positive_test.shut_off_option.edit_vcpu, virsh.edit.positive_test.paused_option.edit_vcpu, virsh.edit.positive_test.uuid_option.edit_vcpu, virsh.resume.normal_test.vm_paused.valid_domname, virsh.resume.normal_test.vm_paused.valid_domid, virsh.resume.normal_test.vm_paused.valid_domuuid, virsh.undefine.normal_test.vm_shut_off.no_option, virsh.undefine.normal_test.vm_shut_off.snapshots, virsh.undefine.normal_test.acl_test.no_option, virsh.hostname.no_option, virsh.hostname.with_libvirtd_stop, virsh.list.normal_test.with_valid_options.list_table.inactive, virsh.list.normal_test.with_valid_options.list_table.all, virsh.suspend.normal_test.non_acl.id_option, virsh.suspend.normal_test.non_acl.name_option, virsh.suspend.normal_test.non_acl.paused_option, virsh.suspend.normal_test.non_acl.uuid_option, virsh.suspend.normal_test.acl_test.id_option, virsh.suspend.normal_test.acl_test.name_option, virsh.suspend.normal_test.acl_test.paused_option, virsh.suspend.normal_test.acl_test.uuid_option, virsh.restore.expected_option.non_acl.no_option, virsh.restore.expected_option.non_acl.paused_option, virsh.restore.expected_option.non_acl.running_option, virsh.restore.expected_option.non_acl.xml_option, virsh.restore.expected_option.acl_test.no_option, virsh.restore.expected_option.acl_test.paused_option, virsh.restore.expected_option.acl_test.running_option, virsh.restore.expected_option.acl_test.xml_option, virsh.restore.no_option, virsh.restore.unexpected_option, virsh.restore.new_file_option, virsh.restore.start_option, virsh.restore.extra_option, virsh.restore.with_libvirt_stop, virsh.restore.acl_test, virsh.domcapabilities.positive_test.local_host.default_option_values, virsh.domcontrol.normal_test.id_option, virsh.domcontrol.normal_test.name_option, virsh.domcontrol.normal_test.paused_option, virsh.domdisplay.have_passwd.no_options.positive_readonly.vnc_t.domain_uuid, virsh.domdisplay.have_passwd.no_options.readwrite.vnc_t.domain_uuid, virsh.domdisplay.have_passwd.option_include-passwd.negtive_readonly.vnc_t.domain_uuid, virsh.domdisplay.have_passwd.option_include-passwd.readwrite.vnc_t.domain_uuid, virsh.domdisplay.have_passwd.option_type.vnc_type.vnc_t.domain_uuid, virsh.domdisplay.have_passwd.option_type.spice_type.vnc_t.domain_uuid, virsh.domdisplay.have_passwd.option_type.type_without_post.vnc_t.domain_uuid, virsh.domdisplay.have_passwd.option_type.none_type.vnc_t.domain_uuid, virsh.domstats.normal_test.domain_state.active.no_option.specific_domain, virsh.domstats.normal_test.domain_state.active.option.state.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.state.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.state.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.state.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.cpu_total.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.cpu_total.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.cpu_total.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.cpu_total.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.interface.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.interface.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.interface.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.interface.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.state_block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.state_block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.state_block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.state_block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.cpu_total_vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.cpu_total_vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.cpu_total_vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.cpu_total_vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.nowait.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.interface_block_balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.interface_block_balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.interface_block_balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.active.option.interface_block_balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.no_option.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.state.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.state.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.state.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.state.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.cpu_total.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.cpu_total.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.cpu_total.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.cpu_total.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.interface.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.interface.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.interface.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.interface.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.state_block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.state_block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.state_block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.state_block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.cpu_total_vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.cpu_total_vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.cpu_total_vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.cpu_total_vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.interface_block_balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.interface_block_balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.interface_block_balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.inactive.option.interface_block_balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.no_option.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.state.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.state.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.state.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.state.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.cpu_total.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.cpu_total.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.cpu_total.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.cpu_total.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.interface.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.interface.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.interface.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.interface.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.state_block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.state_block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.state_block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.state_block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.cpu_total_vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.cpu_total_vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.cpu_total_vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.cpu_total_vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.interface_block_balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.interface_block_balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.interface_block_balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.persistent.option.interface_block_balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.no_option.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.state.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.state.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.state.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.state.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.cpu_total.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.cpu_total.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.cpu_total.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.cpu_total.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.interface.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.interface.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.interface.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.interface.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.state_block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.state_block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.state_block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.state_block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.cpu_total_vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.cpu_total_vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.cpu_total_vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.cpu_total_vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.interface_block_balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.interface_block_balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.interface_block_balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.transient.option.interface_block_balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.no_option.specific_domain, virsh.domstats.normal_test.domain_state.running.option.state.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.state.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.state.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.state.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.cpu_total.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.cpu_total.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.cpu_total.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.cpu_total.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.interface.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.interface.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.interface.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.interface.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.state_block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.state_block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.state_block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.state_block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.cpu_total_vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.cpu_total_vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.cpu_total_vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.cpu_total_vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.iothread.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.iothread.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.iothread.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.iothread.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.interface_block_balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.interface_block_balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.interface_block_balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.running.option.interface_block_balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.no_option.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.state.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.state.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.state.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.state.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.cpu_total.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.cpu_total.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.cpu_total.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.cpu_total.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.interface.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.interface.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.interface.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.interface.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.state_block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.state_block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.state_block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.state_block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.cpu_total_vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.cpu_total_vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.cpu_total_vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.cpu_total_vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.interface_block_balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.interface_block_balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.interface_block_balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.paused.option.interface_block_balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.no_option.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.state.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.state.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.state.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.state.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.cpu_total.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.cpu_total.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.cpu_total.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.cpu_total.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.interface.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.interface.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.interface.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.interface.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.state_block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.state_block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.state_block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.state_block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.cpu_total_vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.cpu_total_vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.cpu_total_vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.cpu_total_vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.interface_block_balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.interface_block_balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.interface_block_balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.shutoff.option.interface_block_balloon.raw_print.enforce.specific_domain, virsh.dominfo.normal_test.id_option, virsh.dominfo.normal_test.name_option, virsh.dominfo.normal_test.paused_option, virsh.dominfo.normal_test.uuid_option, virsh.dominfo.normal_test.shutoff_option, virsh.domjobabort.normal_test.dump_option.crash_dump.running_option.id_option, virsh.domjobabort.normal_test.dump_option.crash_dump.running_option.name_option, virsh.domjobabort.normal_test.dump_option.crash_dump.running_option.uuid_option, virsh.domjobabort.normal_test.dump_option.crash_dump.paused_option.id_option, virsh.domjobabort.normal_test.dump_option.crash_dump.paused_option.name_option, virsh.domjobabort.normal_test.dump_option.crash_dump.paused_option.uuid_option, virsh.domjobabort.normal_test.save_option.running_option.id_option, virsh.domjobabort.normal_test.save_option.running_option.name_option, virsh.domjobabort.normal_test.save_option.running_option.uuid_option, virsh.domjobabort.normal_test.save_option.paused_option.id_option, virsh.domjobabort.normal_test.save_option.paused_option.name_option, virsh.domjobabort.normal_test.save_option.paused_option.uuid_option, virsh.domjobabort.normal_test.managedsave_option.running_option.id_option, virsh.domjobabort.normal_test.managedsave_option.running_option.name_option, virsh.domjobabort.normal_test.managedsave_option.running_option.uuid_option, virsh.domjobabort.normal_test.managedsave_option.paused_option.id_option, virsh.domjobabort.normal_test.managedsave_option.paused_option.name_option, virsh.domjobabort.normal_test.managedsave_option.paused_option.uuid_option, virsh.domjobinfo.normal_test.dump_action.crash_dump.running_state.vm_id, virsh.domjobinfo.normal_test.dump_action.crash_dump.running_state.vm_name, virsh.domjobinfo.normal_test.dump_action.crash_dump.running_state.vm_uuid, virsh.domjobinfo.normal_test.save_action.running_state.vm_id, virsh.domjobinfo.normal_test.save_action.running_state.vm_name, virsh.domjobinfo.normal_test.save_action.running_state.vm_uuid, virsh.domjobinfo.normal_test.save_action.paused_state.vm_id, virsh.domjobinfo.normal_test.save_action.paused_state.vm_name, virsh.domjobinfo.normal_test.save_action.paused_state.vm_uuid, virsh.domjobinfo.normal_test.managedsave_action.running_state.vm_id, virsh.domjobinfo.normal_test.managedsave_action.running_state.vm_name, virsh.domjobinfo.normal_test.managedsave_action.running_state.vm_uuid, virsh.domjobinfo.normal_test.managedsave_action.paused_state.vm_id, virsh.domjobinfo.normal_test.managedsave_action.paused_state.vm_name, virsh.domjobinfo.normal_test.managedsave_action.paused_state.vm_uuid, virsh.domname.vm_state.vm_running.with_valid_option.domid, virsh.domname.vm_state.vm_running.with_valid_option.uuid, virsh.domname.vm_state.vm_running.with_invalid_option.none, virsh.domname.vm_state.vm_running.with_invalid_option.hex_domid, virsh.domname.vm_state.vm_running.with_invalid_option.invalid_domid, virsh.domname.vm_state.vm_running.with_invalid_option.invalid_uuid, virsh.domname.vm_state.vm_running.with_invalid_option.addition_invalid_param, virsh.domname.vm_state.vm_running.with_invalid_option.vm_name, virsh.domname.vm_state.vm_paused.with_valid_option.domid, virsh.domname.vm_state.vm_paused.with_valid_option.uuid, virsh.domname.vm_state.vm_paused.with_invalid_option.none, virsh.domname.vm_state.vm_paused.with_invalid_option.hex_domid, virsh.domname.vm_state.vm_paused.with_invalid_option.invalid_domid, virsh.domname.vm_state.vm_paused.with_invalid_option.invalid_uuid, virsh.domname.vm_state.vm_paused.with_invalid_option.addition_invalid_param, virsh.domname.vm_state.vm_paused.with_invalid_option.vm_name, virsh.domname.vm_state.vm_shut_off.with_valid_option.domid, virsh.domname.vm_state.vm_shut_off.with_valid_option.uuid, virsh.domname.vm_state.vm_shut_off.with_invalid_option.none, virsh.domname.vm_state.vm_shut_off.with_invalid_option.hex_domid, virsh.domname.vm_state.vm_shut_off.with_invalid_option.invalid_domid, virsh.domname.vm_state.vm_shut_off.with_invalid_option.invalid_uuid, virsh.domname.vm_state.vm_shut_off.with_invalid_option.addition_invalid_param, virsh.domname.vm_state.vm_shut_off.with_invalid_option.vm_name, virsh.domname.with_libvirtd_stop.with_valid_option.domid, virsh.domname.with_libvirtd_stop.with_valid_option.uuid, virsh.domstate.normal_test.id_option, virsh.domstate.normal_test.name_option, virsh.domstate.normal_test.paused_option, virsh.domstate.normal_test.uuid_option, virsh.domstate.normal_test.reason.suspend_vm, virsh.domstate.normal_test.reason.resume_vm, virsh.domstate.normal_test.reason.destroy_vm, virsh.domstate.normal_test.reason.start_vm.normal, virsh.domstate.normal_test.reason.start_vm.rename, virsh.domstate.normal_test.reason.start_vm.restart_libvirtd, virsh.domstate.normal_test.reason.crash_vm.oncrash_destroy, virsh.domstate.normal_test.reason.crash_vm.oncrash_restart, virsh.domstate.normal_test.reason.crash_vm.oncrash_preserve.normal, virsh.domstate.normal_test.reason.crash_vm.oncrash_preserve.reset, virsh.domstate.normal_test.reason.crash_vm.oncrash_coredump_destroy, virsh.domstate.normal_test.reason.crash_vm.oncrash_coredump_restart, virsh.domstate.normal_test.reason.dump_vm.dump_crash, virsh.domuuid.normal_test.vm_paused.valid_domid, virsh.domuuid.normal_test.vm_paused.valid_domname, virsh.domuuid.normal_test.vm_running.valid_domid, virsh.domuuid.normal_test.vm_running.valid_domname, virsh.domuuid.normal_test.vm_shutoff.valid_domname, virsh.domxml_to_native.positive_test.id_option, virsh.domxml_to_native.positive_test.uuid_option, virsh.domxml_to_native.positive_test.name_option, virsh.reboot.normal_test.id_option.no_mode, virsh.reboot.normal_test.id_option.agent_mode.no_agent, virsh.reboot.normal_test.id_option.agent_mode.agent_test, virsh.reboot.normal_test.name_option.no_mode, virsh.reboot.normal_test.name_option.agent_mode.no_agent, virsh.reboot.normal_test.name_option.agent_mode.agent_test, virsh.reboot.normal_test.paused_option.no_mode, virsh.reboot.normal_test.paused_option.agent_mode.no_agent, virsh.reboot.normal_test.paused_option.agent_mode.agent_test, virsh.reboot.normal_test.uuid_option.no_mode, virsh.reboot.normal_test.uuid_option.agent_mode.no_agent, virsh.reboot.normal_test.uuid_option.agent_mode.agent_test, virsh.reboot.error_test.readonly_option, virsh.secret_set_get.positive_testing.public_secret, virsh.secret_set_get.positive_testing.private_secret, virsh.secret_set_get.misc_testing.set_secret_value.file.public_secret, virsh.secret_set_get.misc_testing.set_secret_value.file_plain.public_secret, virsh.secret_set_get.misc_testing.set_secret_value.interactive.public_secret, virsh.shutdown.normal_test.id_option.no_mode, virsh.shutdown.normal_test.id_option.agent_mode.no_agent, virsh.shutdown.normal_test.id_option.agent_mode.agent_test, virsh.shutdown.normal_test.name_option.no_mode, virsh.shutdown.normal_test.name_option.agent_mode.no_agent, virsh.shutdown.normal_test.name_option.agent_mode.agent_test, virsh.shutdown.normal_test.suspend_option.no_mode, virsh.shutdown.normal_test.suspend_option.agent_mode.no_agent, virsh.shutdown.normal_test.suspend_option.agent_mode.agent_test, virsh.shutdown.normal_test.uuid_option.no_mode, virsh.shutdown.normal_test.uuid_option.agent_mode.no_agent, virsh.shutdown.normal_test.uuid_option.agent_mode.agent_test, virsh.shutdown.normal_test.acl_test.no_mode, virsh.shutdown.normal_test.acl_test.agent_mode.no_agent, virsh.shutdown.normal_test.acl_test.agent_mode.agent_test, virsh.uri.no_option.connect_to_local, virsh.uri.unexpect_option, virsh.uri.with_libvirtd_stop, virsh.uri.non_root_user, virsh.vncdisplay.normal_test.id_option, virsh.vncdisplay.normal_test.name_option, virsh.vncdisplay.normal_test.paused_option, virsh.vncdisplay.normal_test.uuid_option, virsh.qemu_monitor_command.normal_test.hmp_option.kvm_info.vm_running.valid_domname, virsh.qemu_monitor_command.normal_test.hmp_option.kvm_info.vm_running.valid_domid, virsh.qemu_monitor_command.normal_test.hmp_option.kvm_info.vm_running.valid_domuuid, virsh.qemu_monitor_command.normal_test.hmp_option.kvm_info.vm_paused.valid_domname, virsh.qemu_monitor_command.normal_test.hmp_option.kvm_info.vm_paused.valid_domid, virsh.qemu_monitor_command.normal_test.hmp_option.kvm_info.vm_paused.valid_domuuid, virsh.qemu_monitor_command.normal_test.hmp_option.cpus_info.vm_running.valid_domname, virsh.qemu_monitor_command.normal_test.hmp_option.cpus_info.vm_running.valid_domid, virsh.qemu_monitor_command.normal_test.hmp_option.cpus_info.vm_running.valid_domuuid, virsh.qemu_monitor_command.normal_test.hmp_option.cpus_info.vm_paused.valid_domname, virsh.qemu_monitor_command.normal_test.hmp_option.cpus_info.vm_paused.valid_domid, virsh.qemu_monitor_command.normal_test.hmp_option.cpus_info.vm_paused.valid_domuuid, virsh.qemu_monitor_command.normal_test.hmp_option.mem_info.vm_running.valid_domname, virsh.qemu_monitor_command.normal_test.hmp_option.mem_info.vm_running.valid_domid, virsh.qemu_monitor_command.normal_test.hmp_option.mem_info.vm_running.valid_domuuid, virsh.qemu_monitor_command.normal_test.hmp_option.mem_info.vm_paused.valid_domname, virsh.qemu_monitor_command.normal_test.hmp_option.mem_info.vm_paused.valid_domid, virsh.qemu_monitor_command.normal_test.hmp_option.mem_info.vm_paused.valid_domuuid, virsh.qemu_monitor_command.normal_test.qmp_option.vm_running.valid_domname, virsh.qemu_monitor_command.normal_test.qmp_option.vm_running.valid_domid, virsh.qemu_monitor_command.normal_test.qmp_option.vm_running.valid_domuuid, virsh.qemu_monitor_command.normal_test.qmp_option.vm_paused.valid_domname, virsh.qemu_monitor_command.normal_test.qmp_option.vm_paused.valid_domid, virsh.qemu_monitor_command.normal_test.qmp_option.vm_paused.valid_domuuid, virsh.qemu_monitor_command.normal_test.pretty_qmp.vm_running.valid_domname, virsh.qemu_monitor_command.normal_test.pretty_qmp.vm_running.valid_domid, virsh.qemu_monitor_command.normal_test.pretty_qmp.vm_running.valid_domuuid, virsh.qemu_monitor_command.normal_test.pretty_qmp.vm_paused.valid_domname, virsh.qemu_monitor_command.normal_test.pretty_qmp.vm_paused.valid_domid, virsh.qemu_monitor_command.normal_test.pretty_qmp.vm_paused.valid_domuuid + + - guest_remove: + only remove_guest.without_disk + # virsh sendkey testcases require guestxml with usb keyboard for the qemu to + # emulate keystokes + - virsh_sendkey: + variants: + - guest_import: + display = 'graphic' + vga="standard" + only unattended_install.import.import.default_install.aio_native + - sendkey: + only virsh.sendkey + - guest_remove: + only remove_guest.without_disk diff --git a/config/tests/guest/libvirt/lifecycle_p2.cfg b/config/tests/guest/libvirt/lifecycle_p2.cfg new file mode 100644 index 00000000..7edfd1c7 --- /dev/null +++ b/config/tests/guest/libvirt/lifecycle_p2.cfg @@ -0,0 +1,51 @@ +include tests-shared.cfg +username = root +password = 123456 +main_vm = avocado-vt-vm1 +vms = avocado-vt-vm1 +# Network +nettype = bridge +netdst=virbr0 +# Using Text mode of installation +display = 'nographic' +take_regular_screendumps = no +keep_screendumps_on_error = no +keep_screendumps = no +store_vm_register = no +virt_install_binary = /usr/bin/virt-install +qemu_img_binary = /usr/bin/qemu-img +qemu_binary = /usr/bin/qemu-system-ppc64 +emulator_path = /usr/bin/qemu-system-ppc64 +use_os_variant=yes +hvm_or_pv = hvm +machine_type = pseries +only bridge +no xen, lxc, esx, ovmf +# Filterout unwanted disk types +no ide,xenblk,lsi_scsi,ahci,sd +no qed,qcow2v3,raw_dd,vmdk, usb2 +no e1000-82540em,e1000-82545em,e1000-82544gc,xennet,nic_custom +only no_virtio_rng +only smp2 +no spapr-vlan # Running test for virtio-net +only no_9p_export +only no_pci_assignable +only (image_backend=filesystem) +only smallpages +smp = 32 +vcpu_cores = 32 +vcpu_threads = 1 +vcpu_sockets = 1 +# 32G +mem = 32768 +# fixup for virsh_save (libvirt polkit uses action_lookup) +action_lookup = "connect_driver:QEMU domain_name:${main_vm}" + +variants: + - guest_import: + only unattended_install.import.import.default_install.aio_native + - guest_lifecycle: + only virsh.connect.local_connect.normal_test.qemu_session_uri, virsh.connect.local_connect.normal_test.readonly, virsh.connect.local_connect.normal_test.connection_alive, virsh.connect.transport_connect.unix_transport, virsh.desc.positive_test.no_option, virsh.desc.positive_test.domain_ID_no_option, virsh.desc.positive_test.domain_UUID_no_option, virsh.desc.positive_test.title_option, virsh.desc.positive_test.live_desc, virsh.desc.positive_test.current_desc, virsh.desc.positive_test.config_desc, virsh.desc.positive_test.live_config_desc, virsh.desc.positive_test.live_title, virsh.desc.positive_test.current_title, virsh.desc.positive_test.config_title, virsh.desc.positive_test.live_config_title, virsh.desc.positive_test.edit_option, virsh.desc.positive_test.new_desc_option, virsh.desc.positive_test.transient_live, virsh.itself.normal_test.default_option, virsh.itself.normal_test.echo_xml_option, virsh.itself.normal_test.echo_shell_option, virsh.itself.normal_test.quit_option, virsh.itself.normal_test.readonly.default, virsh.itself.normal_test.readonly.echo_xml_option, virsh.itself.normal_test.readonly.echo_shell_option, virsh.itself.normal_test.readonly.quit_option, virsh.undefine.normal_test.vm_shut_off.remove_storage.wipe_data, virsh.undefine.normal_test.vm_shut_off.remove_storage.no_wipe_data, virsh.undefine.normal_test.vm_uuid.no_option, virsh.undefine.normal_test.undefine_twice.no_option, virsh.undefine.normal_test.vm_running.no_option, virsh.undefine.normal_test.vm_running.managedsave, virsh.hostname.unexpect_option, virsh.list.normal_test.with_valid_options.list_table.none, virsh.list.normal_test.with_valid_options.list_name.inactive, virsh.list.normal_test.with_valid_options.list_name.all, virsh.list.normal_test.with_valid_options.list_name.none, virsh.list.normal_test.with_valid_options.list_uuid.inactive, virsh.list.normal_test.with_valid_options.list_uuid.all, virsh.list.normal_test.with_valid_options.list_uuid.none, virsh.list.normal_test.with_valid_options.list_none.inactive, virsh.list.normal_test.with_valid_options.list_none.all, virsh.list.normal_test.with_valid_options.list_none.none, virsh.list.normal_test.with_valid_options.list_title.inactive, virsh.list.normal_test.with_valid_options.list_title.all, virsh.list.normal_test.with_valid_options.list_title.none, virsh.list.special_test.list_transient_domains.with_valid_options.list_table.inactive, virsh.list.special_test.list_transient_domains.with_valid_options.list_table.all, virsh.list.special_test.list_transient_domains.with_valid_options.list_table.none, virsh.list.special_test.list_transient_domains.with_valid_options.list_name.inactive, virsh.list.special_test.list_transient_domains.with_valid_options.list_name.all, virsh.list.special_test.list_transient_domains.with_valid_options.list_name.none, virsh.list.special_test.list_transient_domains.with_valid_options.list_uuid.inactive, virsh.list.special_test.list_transient_domains.with_valid_options.list_uuid.all, virsh.list.special_test.list_transient_domains.with_valid_options.list_uuid.none, virsh.list.special_test.list_transient_domains.with_valid_options.list_none.inactive, virsh.list.special_test.list_transient_domains.with_valid_options.list_none.all, virsh.list.special_test.list_transient_domains.with_valid_options.list_none.none, virsh.list.special_test.list_transient_domains.with_valid_options.list_title.inactive, virsh.list.special_test.list_transient_domains.with_valid_options.list_title.all, virsh.list.special_test.list_transient_domains.with_valid_options.list_title.none, virsh.list.special_test.list_persistent_domains.with_valid_options.list_table.inactive, virsh.list.special_test.list_persistent_domains.with_valid_options.list_table.all, virsh.list.special_test.list_persistent_domains.with_valid_options.list_table.none, virsh.list.special_test.list_persistent_domains.with_valid_options.list_name.inactive, virsh.list.special_test.list_persistent_domains.with_valid_options.list_name.all, virsh.list.special_test.list_persistent_domains.with_valid_options.list_name.none, virsh.list.special_test.list_persistent_domains.with_valid_options.list_uuid.inactive, virsh.list.special_test.list_persistent_domains.with_valid_options.list_uuid.all, virsh.list.special_test.list_persistent_domains.with_valid_options.list_uuid.none, virsh.list.special_test.list_persistent_domains.with_valid_options.list_none.inactive, virsh.list.special_test.list_persistent_domains.with_valid_options.list_none.all, virsh.list.special_test.list_persistent_domains.with_valid_options.list_none.none, virsh.list.special_test.list_persistent_domains.with_valid_options.list_title.inactive, virsh.list.special_test.list_persistent_domains.with_valid_options.list_title.all, virsh.list.special_test.list_persistent_domains.with_valid_options.list_title.none, virsh.list.special_test.with_managed_save.with_valid_options.list_table.all, virsh.list.special_test.with_libvirt_off.with_valid_options.list_table.inactive, virsh.list.special_test.with_libvirt_off.with_valid_options.list_table.all, virsh.list.special_test.with_libvirt_off.with_valid_options.list_table.none, virsh.list.special_test.with_libvirt_off.with_valid_options.list_name.inactive, virsh.list.special_test.with_libvirt_off.with_valid_options.list_name.all, virsh.list.special_test.with_libvirt_off.with_valid_options.list_name.none, virsh.list.special_test.with_libvirt_off.with_valid_options.list_uuid.inactive, virsh.list.special_test.with_libvirt_off.with_valid_options.list_uuid.all, virsh.list.special_test.with_libvirt_off.with_valid_options.list_uuid.none, virsh.list.special_test.with_libvirt_off.with_valid_options.list_none.inactive, virsh.list.special_test.with_libvirt_off.with_valid_options.list_none.all, virsh.list.special_test.with_libvirt_off.with_valid_options.list_none.none, virsh.list.special_test.with_libvirt_off.with_valid_options.list_title.inactive, virsh.list.special_test.with_libvirt_off.with_valid_options.list_title.all, virsh.list.special_test.with_libvirt_off.with_valid_options.list_title.none, virsh.version.no_option, virsh.version.unexpect_option, virsh.version.with_libvirtd_stop, virsh.version.daemon_option, virsh.domcapabilities.positive_test.local_host.auto_option_values, virsh.domcontrol.normal_test.uuid_option, virsh.domcontrol.normal_test.save_option, virsh.domcontrol.normal_test.managedsave_option, virsh.domcontrol.normal_test.restore_option, virsh.domcontrol.normal_test.readonly_option, virsh.domdisplay.no_passwd.no_options.positive_readonly.vnc_t.domain_uuid, virsh.domdisplay.no_passwd.no_options.readwrite.vnc_t.domain_uuid, virsh.domdisplay.no_passwd.option_include-passwd.negtive_readonly.vnc_t.domain_uuid, virsh.domdisplay.no_passwd.option_include-passwd.readwrite.vnc_t.domain_uuid, virsh.domdisplay.no_passwd.option_type.vnc_type.vnc_t.domain_uuid, virsh.domdisplay.no_passwd.option_type.spice_type.vnc_t.domain_uuid, virsh.domdisplay.no_passwd.option_type.type_without_post.vnc_t.domain_uuid, virsh.domdisplay.no_passwd.option_type.none_type.vnc_t.domain_uuid, virsh.domfsthaw.positive_tests.full_freeze, virsh.domfsthaw.positive_tests.no_freezed_fs, virsh.domstats.normal_test.domain_state.other.no_option.specific_domain, virsh.domstats.normal_test.domain_state.other.option.state.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.state.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.state.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.state.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.cpu_total.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.cpu_total.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.cpu_total.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.cpu_total.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.balloon.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.interface.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.interface.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.interface.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.interface.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.state_block.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.state_block.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.state_block.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.state_block.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.cpu_total_vcpu.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.cpu_total_vcpu.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.cpu_total_vcpu.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.cpu_total_vcpu.raw_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.interface_block_balloon.default_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.interface_block_balloon.default_print.enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.interface_block_balloon.raw_print.not_enforce.specific_domain, virsh.domstats.normal_test.domain_state.other.option.interface_block_balloon.raw_print.enforce.specific_domain, virsh.domjobinfo.normal_test.dump_action.crash_dump.paused_state.vm_id, virsh.domjobinfo.normal_test.dump_action.crash_dump.paused_state.vm_name, virsh.domjobinfo.normal_test.dump_action.crash_dump.paused_state.vm_uuid, virsh.domxml_from_native.no_option, virsh.ttyconsole.normal_test.vm_running.domname, virsh.ttyconsole.normal_test.vm_running.domuuid, virsh.ttyconsole.normal_test.vm_running.domid, virsh.ttyconsole.normal_test.vm_paused.domname, virsh.ttyconsole.normal_test.vm_paused.domuuid, virsh.ttyconsole.normal_test.vm_paused.domid + + - guest_remove: + only remove_guest.without_disk diff --git a/config/tests/guest/libvirt/lifecycle_p3.cfg b/config/tests/guest/libvirt/lifecycle_p3.cfg new file mode 100644 index 00000000..ee613cbf --- /dev/null +++ b/config/tests/guest/libvirt/lifecycle_p3.cfg @@ -0,0 +1,51 @@ +include tests-shared.cfg +username = root +password = 123456 +main_vm = avocado-vt-vm1 +vms = avocado-vt-vm1 +# Network +nettype = bridge +netdst=virbr0 +# Using Text mode of installation +display = 'nographic' +take_regular_screendumps = no +keep_screendumps_on_error = no +keep_screendumps = no +store_vm_register = no +virt_install_binary = /usr/bin/virt-install +qemu_img_binary = /usr/bin/qemu-img +qemu_binary = /usr/bin/qemu-system-ppc64 +emulator_path = /usr/bin/qemu-system-ppc64 +use_os_variant=yes +hvm_or_pv = hvm +machine_type = pseries +only bridge +no xen, lxc, esx, ovmf +# Filterout unwanted disk types +no ide,xenblk,lsi_scsi,ahci,sd +no qed,qcow2v3,raw_dd,vmdk, usb2 +no e1000-82540em,e1000-82545em,e1000-82544gc,xennet,nic_custom +only no_virtio_rng +only smp2 +no spapr-vlan # Running test for virtio-net +only no_9p_export +only no_pci_assignable +only (image_backend=filesystem) +only smallpages +smp = 32 +vcpu_cores = 32 +vcpu_threads = 1 +vcpu_sockets = 1 +# 32G +mem = 32768 +# fixup for virsh_save (libvirt polkit uses action_lookup) +action_lookup = "connect_driver:QEMU domain_name:${main_vm}" + +variants: + - guest_import: + only unattended_install.import.import.default_install.aio_native + - guest_lifecycle: + only virsh.autostart.negative_test.invalid_option, virsh.autostart.negative_test.transient_autostart, virsh.autostart.negative_test.transient_disable, virsh.autostart.negative_test.readonly_autostart, virsh.autostart.negative_test.readonly_disable, virsh.capabilities.unexpect_option, virsh.connect.local_connect.error_test.unrecognized_arg, virsh.connect.local_connect.error_test.unrecognized_opt, virsh.connect.local_connect.error_test.multi_arg, virsh.console.error_test.invalid_options.invalid_domname, virsh.console.error_test.invalid_options.invalid_domid, virsh.console.error_test.invalid_options.hex_domid, virsh.console.error_test.invalid_options.invalid_domuuid, virsh.console.error_test.invalid_options.none_domname, virsh.create.negtive_readonly, virsh.create.negative_validate, virsh.define.negative_test.option_validate, virsh.define.negative_test.readonly_test, virsh.desc.negative_test.invalid_domain_name, virsh.desc.negative_test.invalid_domain_uuid, virsh.desc.negative_test.invalid_option1, virsh.desc.negative_test.invalid_option2, virsh.desc.negative_test.invalid_option3, virsh.desc.negative_test.new_desc_without_string, virsh.desc.negative_test.transient_config, virsh.destroy.error_test.no_option, virsh.destroy.error_test.hex_id_option, virsh.destroy.error_test.invalid_id_option, virsh.destroy.error_test.unexpect_option, virsh.destroy.error_test.invalid_uuid_option, virsh.destroy.error_test.extra_option, virsh.destroy.error_test.shutdown_option, virsh.destroy.error_test.with_libvirtd_stop, virsh.destroy.error_test.acl_test, virsh.destroy.error_test.readonly_option, virsh.domid.error_test.space_option, virsh.domid.error_test.no_option, virsh.domid.error_test.id_option, virsh.domid.error_test.invalid_uuid_option, virsh.domid.error_test.with_libvirtd_stop, virsh.domid.error_test.extra_option, virsh.save.error_test.no_option, virsh.save.error_test.hex_id_option, virsh.save.error_test.invalid_id_option, virsh.save.error_test.unexpect_option, virsh.save.error_test.invalid_uuid_option, virsh.save.error_test.extra_option, virsh.save.error_test.shut_off_option, virsh.save.error_test.only_name_option, virsh.save.error_test.libvirtd_stop_option, virsh.save.error_test.acl_test, virsh.save.error_test.readonly, virsh.edit.negative_test.no_option.edit_vcpu, virsh.edit.negative_test.invalid_id_option.edit_vcpu, virsh.edit.negative_test.unexpect_option.edit_vcpu, virsh.edit.negative_test.invalid_uuid_option.edit_vcpu, virsh.edit.negative_test.extra_option.edit_vcpu, virsh.edit.negative_test.with_libvirtd_stop.edit_vcpu, virsh.itself.error_test.invalid_cmd, virsh.itself.error_test.invalid_cd_extra, virsh.itself.error_test.invalid_pwd_extra, virsh.itself.error_test.invalid_echo_extra, virsh.itself.error_test.readonly.invalid_cmd, virsh.itself.error_test.readonly.invalid_cd_extra, virsh.itself.error_test.readonly.invalid_pwd_extra, virsh.itself.error_test.readonly.invalid_echo_extra, virsh.resume.error_test.none, virsh.resume.error_test.invalid_domid, virsh.resume.error_test.invalid_domuuid, virsh.resume.error_test.hex_domid, virsh.resume.error_test.additional_arg, virsh.resume.error_test.vm_shutoff, virsh.resume.error_test.readonly, virsh.resume.error_test.vm_running, virsh.undefine.error_test.no_vm_name, virsh.undefine.error_test.invalid_vm_name, virsh.undefine.error_test.invalid_vm_id, virsh.undefine.error_test.pound_vm_name, virsh.undefine.error_test.libvirtd_stop, virsh.undefine.error_test.invalid_vm_uuid, virsh.undefine.error_test.unexpected_option, virsh.undefine.error_test.acl_test, virsh.list.normal_test.with_invalid_options.invalid_string, virsh.list.normal_test.with_invalid_options.vm_id, virsh.list.normal_test.with_invalid_options.vm_name, virsh.list.normal_test.with_invalid_options.vm_uuid, virsh.suspend.error_test.space_option, virsh.suspend.error_test.no_option, virsh.suspend.error_test.hex_id_option, virsh.suspend.error_test.invalid_id_option, virsh.suspend.error_test.unexpect_option, virsh.suspend.error_test.invalid_uuid_option, virsh.suspend.error_test.extra_option, virsh.suspend.error_test.shutdown_option, virsh.suspend.error_test.acl_test, virsh.suspend.error_test.readonly_option, virsh.restore.expected_option.non_acl.xml_option_dac, virsh.restore.expected_option.non_acl.iscsi_file.qemu_namespaces_mount, virsh.restore.expected_option.non_acl.iscsi_file.qemu_namespaces_none, virsh.domblkerror.nospace_error, virsh.domcapabilities.negative_test.invalid_option, virsh.domcapabilities.negative_test.invalid_virttype, virsh.domcapabilities.negative_test.invalid_emulatorbin, virsh.domcapabilities.negative_test.invalid_arch, virsh.domcapabilities.negative_test.invalid_machine, virsh.domcontrol.error_test.no_option, virsh.domcontrol.error_test.hex_id_option, virsh.domcontrol.error_test.invalid_id_option, virsh.domcontrol.error_test.unexpect_option, virsh.domcontrol.error_test.invalid_uuid_option, virsh.domcontrol.error_test.shut_off_option, virsh.domcontrol.error_test.invalid_option, virsh.domcontrol.error_test.readonly_with_invalid_option, virsh.domfsthaw.negative_tests.no_qemu_guest_agent, virsh.domfsthaw.negative_tests.no_start_qemu_guest_agent, virsh.domfsthaw.negative_tests.not_active_domain, virsh.domfsthaw.negative_tests.no_domain_ref, virsh.domfsthaw.negative_tests.invalid_mountpoint, virsh.domfsthaw.negative_tests.invalid_option, virsh.domstats.error_test.extra_option, virsh.dominfo.error_test.space_option, virsh.dominfo.error_test.no_option, virsh.dominfo.error_test.hex_id_option, virsh.dominfo.error_test.invalid_id_option, virsh.dominfo.error_test.invalid_uuid_option, virsh.dominfo.error_test.with_libvirtd_stop, virsh.dominfo.error_test.extra_option, virsh.domjobabort.error_test.no_option, virsh.domjobabort.error_test.hex_id_option, virsh.domjobabort.error_test.invalid_id_option, virsh.domjobabort.error_test.unexpect_option, virsh.domjobabort.error_test.invalid_uuid_option, virsh.domjobabort.error_test.shut_off_option, virsh.domjobabort.error_test.no_job_option, virsh.domjobabort.error_test.restore_option, virsh.domjobabort.error_test.readonly_mode_session, virsh.domjobinfo.error_test.no_name, virsh.domjobinfo.error_test.hex_id, virsh.domjobinfo.error_test.invalid_id, virsh.domjobinfo.error_test.unexpect_char_name, virsh.domjobinfo.error_test.invalid_uuid, virsh.domjobinfo.error_test.extra_params, virsh.domjobinfo.error_test.shutoff_state, virsh.domjobinfo.error_test.with_libvirtd_stop, virsh.domstate.error_test.no_option, virsh.domstate.error_test.hex_id_option, virsh.domstate.error_test.invalid_id_option, virsh.domstate.error_test.invalid_uuid_option, virsh.domstate.error_test.invalid_name_option, virsh.domstate.error_test.extra_option, virsh.domstate.error_test.with_libvirt_stop, virsh.domstate.error_test.kill_vm.normal, virsh.domstate.error_test.kill_vm.after_reboot_vm, virsh.domuuid.error_test.invalid_domid, virsh.domuuid.error_test.hex_domid, virsh.domuuid.error_test.additional_arg, virsh.domuuid.error_test.none, virsh.domuuid.error_test.libvirtd_off, virsh.domxml_to_native.negative_test.no_option, virsh.domxml_to_native.negative_test.expected_option, virsh.domxml_to_native.negative_test.invalid_format_option, virsh.domxml_to_native.negative_test.extra_option, virsh.domxml_to_native.negative_test.no_file_extra_option, virsh.domxml_to_native.negative_test.with_libvirtd_stop, virsh.domxml_to_native.negative_test.readonly_mode, virsh.domxml_from_native.unexpect_option.exist_file_guest_args, virsh.domxml_from_native.unexpect_option.no_file_guest_args, virsh.domxml_from_native.unexpect_option.invalid_guest_args, virsh.domxml_from_native.unexpect_option.with_libvirtd_stop, virsh.reboot.error_test.no_option, virsh.reboot.error_test.hex_id_option, virsh.reboot.error_test.invalid_id_option, virsh.reboot.error_test.unexpected_option, virsh.reboot.error_test.with_libvirt_stop, virsh.reboot.error_test.invalid_uuid_option, virsh.reboot.error_test.extra_option, virsh.reboot.error_test.shutoff_option, virsh.secret_set_get.negative_testing.get_secret_value.no_secret_value.public_secret, virsh.secret_set_get.negative_testing.get_secret_value.no_secret_value.private_secret, virsh.secret_set_get.negative_testing.get_secret_value.invalid_options.public_secret, virsh.secret_set_get.negative_testing.get_secret_value.invalid_options.private_secret, virsh.secret_set_get.negative_testing.set_secret_value.noexist_secret_uuid.public_secret, virsh.secret_set_get.negative_testing.set_secret_value.noexist_secret_uuid.private_secret, virsh.secret_set_get.negative_testing.set_secret_value.invalid_options.public_secret, virsh.secret_set_get.negative_testing.set_secret_value.invalid_options.private_secret, virsh.shutdown.error_test.no_option, virsh.shutdown.error_test.hex_id_option, virsh.shutdown.error_test.invalid_id_option, virsh.shutdown.error_test.unexpect_option, virsh.shutdown.error_test.invalid_uuid_option, virsh.shutdown.error_test.extra_option, virsh.shutdown.error_test.shutdown_option, virsh.shutdown.error_test.with_libvirtd_stop, virsh.shutdown.error_test.acl_test, virsh.shutdown.error_test.readonly, virsh.ttyconsole.error_test.invalid_option.none_domname, virsh.ttyconsole.error_test.invalid_option.hex_domid, virsh.ttyconsole.error_test.invalid_option.invalid_domid, virsh.ttyconsole.error_test.invalid_option.invalid_domuuid, virsh.ttyconsole.error_test.invalid_option.extra_parameter, virsh.ttyconsole.error_test.special_operation.vm_shutoff, virsh.vncdisplay.error_test.shutoff_option, virsh.vncdisplay.error_test.no_option, virsh.vncdisplay.error_test.hex_id_option, virsh.vncdisplay.error_test.invalid_id_option, virsh.vncdisplay.error_test.with_libvirtd_stop, virsh.vncdisplay.error_test.invalid__uuid_option, virsh.vncdisplay.error_test.unexpected_option4, virsh.qemu_monitor_command.error_test.invalid_options.invalid_domname, virsh.qemu_monitor_command.error_test.invalid_options.invalid_domid, virsh.qemu_monitor_command.error_test.invalid_options.hex_domid, virsh.qemu_monitor_command.error_test.invalid_options.invalid_domuuid, virsh.qemu_monitor_command.error_test.invalid_options.none_domname, virsh.qemu_monitor_command.error_test.invalid_options.invalid_options, virsh.qemu_monitor_command.error_test.invalid_options.unknown_cmd, virsh.qemu_monitor_command.error_test.invalid_options.invalid_qmp_cmd, virsh.qemu_monitor_command.error_test.vm_shutoff, import.import.default_install.aio_native, virsh.sendkey.params_test.non_acl.without_codeset, virsh.sendkey.params_test.non_acl.linux_keycode.without_holdtime, virsh.sendkey.params_test.non_acl.linux_keycode.with_holdtime, virsh.sendkey.params_test.non_acl.at_set1_keycode, virsh.sendkey.params_test.non_acl.at_set2_keycode, virsh.sendkey.params_test.non_acl.at_set3_keycode, virsh.sendkey.params_test.non_acl.xt_keycode, virsh.sendkey.params_test.non_acl.xt_kbd_keycode, virsh.sendkey.params_test.non_acl.usb_keycode, virsh.sendkey.params_test.non_acl.rfb_keycode, virsh.sendkey.params_test.non_acl.qnum_keycode, virsh.sendkey.params_test.non_acl.default_name, virsh.sendkey.params_test.acl_test.without_codeset, virsh.sendkey.params_test.acl_test.linux_keycode.without_holdtime, virsh.sendkey.params_test.acl_test.linux_keycode.with_holdtime, virsh.sendkey.params_test.acl_test.at_set1_keycode, virsh.sendkey.params_test.acl_test.at_set2_keycode, virsh.sendkey.params_test.acl_test.at_set3_keycode, virsh.sendkey.params_test.acl_test.xt_keycode, virsh.sendkey.params_test.acl_test.xt_kbd_keycode, virsh.sendkey.params_test.acl_test.usb_keycode, virsh.sendkey.params_test.acl_test.rfb_keycode, virsh.sendkey.params_test.acl_test.qnum_keycode, virsh.sendkey.params_test.acl_test.default_name, virsh.sendkey.sysrq.non_acl.help, virsh.sendkey.sysrq.non_acl.show_memory_usage, virsh.sendkey.sysrq.non_acl.show_task_status, virsh.sendkey.sysrq.non_acl.reboot_guest, virsh.sendkey.sysrq.non_acl.crash_guest, virsh.sendkey.sysrq.non_acl.usb_keycode, virsh.sendkey.sysrq.acl_test.help, virsh.sendkey.sysrq.acl_test.show_memory_usage, virsh.sendkey.sysrq.acl_test.show_task_status, virsh.sendkey.sysrq.acl_test.reboot_guest, virsh.sendkey.sysrq.acl_test.crash_guest, virsh.sendkey.sysrq.acl_test.usb_keycode, virsh.sendkey.readonly, virsh.sendkey.negative_test.acl_test, without_disk + + - guest_remove: + only remove_guest.without_disk \ No newline at end of file