Add a new command line option to allow selecting between running the
full set of tests or a smaller set of tests. The default will be to
run the small set (i.e. no comand line option provided) so we can
reduce the amount of tests run by default. Only hosts which support
KVM for the target architecture being tested will run the complete set
of tests.
Adjust the meson.build file to pass in the --full option when
appropriate.
(for now, set the option unconditionally until the next patch actually
creates the small set)
Use cases:
configure --target-list=aarch64-softmmu,ppc64-softmmu,s390x-softmmu,x86_64-softmmu
| before - 615s/244 tests | after - 244s/100 tests
------------------------+--------------------------+-----------------------------
make check | full set for all archs | full set for the KVM arch,
make check-qtest | | small set for the rest
| |
qemu-system-$ARCH | full set for $ARCH | small set for $ARCH, KVM or
./migration-test | | TCG automatically chosen
| |
qemu-system-$ARCH | N/A | full set for $ARCH, KVM or
./migration-test --full | | TCG automatically chosen
| |
migration-compat-x86_64 | full set for x86_64 | small set for x86_64
CI job | |
------------------------+--------------------------+-----------------------------
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Peter Xu <peterx@redhat.com>
Message-Id: <
20250130184012.5711-2-farosas@suse.de>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <
20250207153112.
3939799-9-alex.bennee@linaro.org>
target_base = dir.split('-')[0]
qtest_emulator = emulators['qemu-system-' + target_base]
target_qtests = get_variable('qtests_' + target_base, []) + qtests_generic
+ has_kvm = ('CONFIG_KVM' in config_all_accel and host_os == 'linux'
+ and cpu == target_base and fs.exists('/dev/kvm'))
test_deps = roms
qtest_env = environment()
test: executable(test, src, dependencies: deps)
}
endif
+
+ test_args = ['--tap', '-k']
+
+ if test == 'migration-test' and has_kvm
+ test_args += ['--full']
+ endif
+
test('qtest-@0@/@1@'.format(target_base, test),
qtest_executables[test],
depends: [test_deps, qtest_emulator, emulator_modules],
env: qtest_env,
- args: ['--tap', '-k'],
+ args: test_args,
protocol: 'tap',
timeout: slow_qtests.get(test, 60),
priority: slow_qtests.get(test, 60),
#include "migration/framework.h"
#include "qemu/module.h"
+static void parse_args(int *argc_p, char ***argv_p, bool *full_set)
+{
+ int argc = *argc_p;
+ char **argv = *argv_p;
+ int i, j;
+
+ j = 1;
+ for (i = 1; i < argc; i++) {
+ if (g_str_equal(argv[i], "--full")) {
+ *full_set = true;
+ continue;
+ }
+ argv[j++] = argv[i];
+ if (i >= j) {
+ argv[i] = NULL;
+ }
+ }
+ *argc_p = j;
+}
+
int main(int argc, char **argv)
{
MigrationTestEnv *env;
int ret;
+ bool full_set = false;
+
+ /* strip the --full option if it's present */
+ parse_args(&argc, &argv, &full_set);
g_test_init(&argc, &argv, NULL);
env = migration_get_env();
+ env->full_set = full_set;
+ env->full_set = true; /* temporary */
module_call_init(MODULE_INIT_QOM);
migration_test_add_tls(env);
{
tmpfs = env->tmpfs;
+ if (!env->full_set) {
+ return;
+ }
+
#ifdef CONFIG_ZSTD
migration_test_add("/migration/multifd/tcp/plain/zstd",
test_multifd_tcp_zstd);
{
tmpfs = env->tmpfs;
+ if (!env->full_set) {
+ return;
+ }
+
/*
* Our CI system has problems with shared memory.
* Don't run this test until we find a workaround.
{
tmpfs = env->tmpfs;
+ if (!env->full_set) {
+ return;
+ }
+
migration_test_add("/migration/precopy/file",
test_precopy_file);
bool uffd_feature_thread_id;
bool has_dirty_ring;
bool is_x86;
+ bool full_set;
const char *arch;
const char *qemu_src;
const char *qemu_dst;
{
tmpfs = env->tmpfs;
+ if (!env->full_set) {
+ return;
+ }
+
migration_test_add("/migration/bad_dest", test_baddest);
#ifndef _WIN32
migration_test_add("/migration/analyze-script", test_analyze_script);
void migration_test_add_postcopy(MigrationTestEnv *env)
{
+ if (!env->full_set) {
+ return;
+ }
+
if (env->has_uffd) {
migration_test_add("/migration/postcopy/plain", test_postcopy);
migration_test_add("/migration/postcopy/recovery/plain",
{
tmpfs = env->tmpfs;
+ if (!env->full_set) {
+ return;
+ }
+
if (env->is_x86) {
migration_test_add("/migration/precopy/unix/suspend/live",
test_precopy_unix_suspend_live);
{
tmpfs = env->tmpfs;
+ if (!env->full_set) {
+ return;
+ }
+
migration_test_add("/migration/precopy/unix/tls/psk",
test_precopy_unix_tls_psk);