mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-22 17:42:10 -06:00

- add a check-rust test to docker builds - re-factor the qtest logic to be cleaner - fix tests to not clock_step when no timers enabled - roll-up log prefix into qtest_send - cleaner error reporting when qtest_clock_set fails - revert old deadlock fix now tests are updated - only run full set of migration tests under HW acceleration - support late attachment to user-mode gdbstubs -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmeqBSsACgkQ+9DbCVqe KkQS/Af+K0hpdGc1msiuMsqmuESBvhoQniYZFLN1/pwe2KpG8i/+fq2fsCuxJhJ1 2TzPH7aj54p9MGCZf2k9JLhO22XldN+oezZMc1crhoWK0AtrWhnLs58I2oEPIsUo NmGO6Zfm98ge89o2y8GCvd0QXAtUf+jduDKnW0mfnOnw+w/mky5KzWS7/1091VGW 42LSY4KnqgdLSqLyuLBOrgADEjB1ChWS4/bSC+kEYSGrmNQB+n1KeIzzlJBGpOr0 Z9yzmhMCm7TWdkFNPmnVfYH/7ZUNcpv6PtQSpkku4f6b/gybyvJBknHpM4i+Gpb5 87wSjljrCpdNm/9KFRjiJuUWdS/jCg== =UF0n -----END PGP SIGNATURE----- Merge tag 'pull-10.0-testing-and-gdstub-updates-100225-1' of https://gitlab.com/stsquad/qemu into staging testing and gdbstub updates: - add a check-rust test to docker builds - re-factor the qtest logic to be cleaner - fix tests to not clock_step when no timers enabled - roll-up log prefix into qtest_send - cleaner error reporting when qtest_clock_set fails - revert old deadlock fix now tests are updated - only run full set of migration tests under HW acceleration - support late attachment to user-mode gdbstubs # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmeqBSsACgkQ+9DbCVqe # KkQS/Af+K0hpdGc1msiuMsqmuESBvhoQniYZFLN1/pwe2KpG8i/+fq2fsCuxJhJ1 # 2TzPH7aj54p9MGCZf2k9JLhO22XldN+oezZMc1crhoWK0AtrWhnLs58I2oEPIsUo # NmGO6Zfm98ge89o2y8GCvd0QXAtUf+jduDKnW0mfnOnw+w/mky5KzWS7/1091VGW # 42LSY4KnqgdLSqLyuLBOrgADEjB1ChWS4/bSC+kEYSGrmNQB+n1KeIzzlJBGpOr0 # Z9yzmhMCm7TWdkFNPmnVfYH/7ZUNcpv6PtQSpkku4f6b/gybyvJBknHpM4i+Gpb5 # 87wSjljrCpdNm/9KFRjiJuUWdS/jCg== # =UF0n # -----END PGP SIGNATURE----- # gpg: Signature made Mon 10 Feb 2025 08:54:51 EST # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * tag 'pull-10.0-testing-and-gdstub-updates-100225-1' of https://gitlab.com/stsquad/qemu: tests/tcg: Add late gdbstub attach test docs/user: Document the %d placeholder and suspend=n QEMU_GDB features gdbstub: Allow late attachment osdep: Introduce qemu_kill_thread() user: Introduce host_interrupt_signal user: Introduce user/signal.h gdbstub: Try unlinking the unix socket before binding gdbstub: Allow the %d placeholder in the socket path tests/qtest/migration: Pick smoke tests tests/qtest/migration: Add --full option Revert "util/timer: avoid deadlock when shutting down" tests/qtest: tighten up the checks on clock_step tests/qtest: rename qtest_send_prefix and roll-up into qtest_send tests/qtest: simplify qtest_process_inbuf tests/qtest: don't step clock at start of npcm7xx periodic IRQ test tests/qtest: don't attempt to clock_step while waiting for virtio ISR tests/docker: replicate the check-rust-tools-nightly CI job Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
118 lines
2.8 KiB
C
118 lines
2.8 KiB
C
/*
|
|
* QTest testcases for postcopy migration
|
|
*
|
|
* Copyright (c) 2016-2018 Red Hat, Inc. and/or its affiliates
|
|
* based on the vhost-user-test.c that is:
|
|
* Copyright (c) 2014 Virtual Open Systems Sarl.
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "libqtest.h"
|
|
#include "migration/framework.h"
|
|
#include "migration/migration-util.h"
|
|
#include "qobject/qlist.h"
|
|
#include "qemu/module.h"
|
|
#include "qemu/option.h"
|
|
#include "qemu/range.h"
|
|
#include "qemu/sockets.h"
|
|
|
|
static void test_postcopy(void)
|
|
{
|
|
MigrateCommon args = { };
|
|
|
|
test_postcopy_common(&args);
|
|
}
|
|
|
|
static void test_postcopy_suspend(void)
|
|
{
|
|
MigrateCommon args = {
|
|
.start.suspend_me = true,
|
|
};
|
|
|
|
test_postcopy_common(&args);
|
|
}
|
|
|
|
static void test_postcopy_preempt(void)
|
|
{
|
|
MigrateCommon args = {
|
|
.postcopy_preempt = true,
|
|
};
|
|
|
|
test_postcopy_common(&args);
|
|
}
|
|
|
|
static void test_postcopy_recovery(void)
|
|
{
|
|
MigrateCommon args = { };
|
|
|
|
test_postcopy_recovery_common(&args);
|
|
}
|
|
|
|
static void test_postcopy_recovery_fail_handshake(void)
|
|
{
|
|
MigrateCommon args = {
|
|
.postcopy_recovery_fail_stage = POSTCOPY_FAIL_RECOVERY,
|
|
};
|
|
|
|
test_postcopy_recovery_common(&args);
|
|
}
|
|
|
|
static void test_postcopy_recovery_fail_reconnect(void)
|
|
{
|
|
MigrateCommon args = {
|
|
.postcopy_recovery_fail_stage = POSTCOPY_FAIL_CHANNEL_ESTABLISH,
|
|
};
|
|
|
|
test_postcopy_recovery_common(&args);
|
|
}
|
|
|
|
static void test_postcopy_preempt_recovery(void)
|
|
{
|
|
MigrateCommon args = {
|
|
.postcopy_preempt = true,
|
|
};
|
|
|
|
test_postcopy_recovery_common(&args);
|
|
}
|
|
|
|
static void migration_test_add_postcopy_smoke(MigrationTestEnv *env)
|
|
{
|
|
if (env->has_uffd) {
|
|
migration_test_add("/migration/postcopy/plain", test_postcopy);
|
|
migration_test_add("/migration/postcopy/recovery/plain",
|
|
test_postcopy_recovery);
|
|
migration_test_add("/migration/postcopy/preempt/plain",
|
|
test_postcopy_preempt);
|
|
}
|
|
}
|
|
|
|
void migration_test_add_postcopy(MigrationTestEnv *env)
|
|
{
|
|
migration_test_add_postcopy_smoke(env);
|
|
|
|
if (!env->full_set) {
|
|
return;
|
|
}
|
|
|
|
if (env->has_uffd) {
|
|
migration_test_add("/migration/postcopy/preempt/recovery/plain",
|
|
test_postcopy_preempt_recovery);
|
|
|
|
migration_test_add(
|
|
"/migration/postcopy/recovery/double-failures/handshake",
|
|
test_postcopy_recovery_fail_handshake);
|
|
|
|
migration_test_add(
|
|
"/migration/postcopy/recovery/double-failures/reconnect",
|
|
test_postcopy_recovery_fail_reconnect);
|
|
|
|
if (env->is_x86) {
|
|
migration_test_add("/migration/postcopy/suspend",
|
|
test_postcopy_suspend);
|
|
}
|
|
}
|
|
}
|