[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 21/42] migration-test: Move common guest code to guest_create()
From: |
Juan Quintela |
Subject: |
[PATCH 21/42] migration-test: Move common guest code to guest_create() |
Date: |
Fri, 9 Jun 2023 00:49:22 +0200 |
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
tests/qtest/migration-test.c | 104 ++++++++++++++++++-----------------
1 file changed, 55 insertions(+), 49 deletions(-)
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index a18b3ce1e2..9671c4c6e5 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -40,8 +40,6 @@
#include "linux/kvm.h"
#endif
-unsigned start_address;
-unsigned end_address;
static bool uffd_feature_thread_id;
static bool got_src_stop;
static bool got_dst_resume;
@@ -154,12 +152,50 @@ static void bootfile_delete(void)
typedef struct {
QTestState *qs;
+ /* options for source and target */
+ gchar *arch_opts;
+ gchar *arch_source;
+ gchar *arch_target;
+ const gchar *memory_size;
const gchar *name;
+ unsigned start_address;
+ unsigned end_address;
} GuestState;
static GuestState *guest_create(const char *name)
{
GuestState *vm = g_new0(GuestState, 1);
+ const char *arch = qtest_get_arch();
+
+ if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
+ vm->memory_size = "150M";
+ vm->arch_opts = g_strdup_printf("-drive file=%s,format=raw", bootpath);
+ vm->start_address = X86_TEST_MEM_START;
+ vm->end_address = X86_TEST_MEM_END;
+ } else if (g_str_equal(arch, "s390x")) {
+ vm->memory_size = "128M";
+ vm->arch_opts = g_strdup_printf("-bios %s", bootpath);
+ vm->start_address = S390_TEST_MEM_START;
+ vm->end_address = S390_TEST_MEM_END;
+ } else if (strcmp(arch, "ppc64") == 0) {
+ vm->memory_size = "256M";
+ vm->start_address = PPC_TEST_MEM_START;
+ vm->end_address = PPC_TEST_MEM_END;
+ vm->arch_source = g_strdup_printf(
+ "-prom-env 'use-nvramrc?=true' -prom-env "
+ "'nvramrc=hex .\" _\" begin %x %x "
+ "do i c@ 1 + i c! 1000 +loop .\" B\" 0 "
+ "until'", vm->end_address, vm->start_address);
+ vm->arch_opts = g_strdup("-nodefaults -machine vsmt=8");
+ } else if (strcmp(arch, "aarch64") == 0) {
+ vm->memory_size = "150M";
+ vm->arch_opts = g_strdup_printf(
+ "-machine virt,gic-version=max -cpu max -kernel %s", bootpath);
+ vm->start_address = ARM_TEST_MEM_START;
+ vm->end_address = ARM_TEST_MEM_END;
+ } else {
+ g_assert_not_reached();
+ }
vm->name = name;
@@ -169,6 +205,9 @@ static GuestState *guest_create(const char *name)
static void guest_destroy(GuestState *vm)
{
qtest_quit(vm->qs);
+ g_free(vm->arch_opts);
+ g_free(vm->arch_source);
+ g_free(vm->arch_target);
g_free(vm);
}
@@ -307,10 +346,11 @@ static void check_guests_ram(GuestState *who)
bool hit_edge = false;
int bad = 0;
- qtest_memread(who->qs, start_address, &first_byte, 1);
+ qtest_memread(who->qs, who->start_address, &first_byte, 1);
last_byte = first_byte;
- for (address = start_address + TEST_MEM_PAGE_SIZE; address < end_address;
+ for (address = who->start_address + TEST_MEM_PAGE_SIZE;
+ address < who->end_address;
address += TEST_MEM_PAGE_SIZE)
{
uint8_t b;
@@ -663,49 +703,15 @@ typedef struct {
static void test_migrate_start(GuestState *from, GuestState *to,
const char *uri, MigrateStart *args)
{
- g_autofree gchar *arch_source = NULL;
- g_autofree gchar *arch_target = NULL;
- /* options for source and target */
- g_autofree gchar *arch_opts = NULL;
g_autofree gchar *cmd_source = NULL;
g_autofree gchar *cmd_target = NULL;
const gchar *ignore_stderr = NULL;
g_autofree char *shmem_opts = NULL;
g_autofree char *shmem_path = NULL;
const char *kvm_opts = NULL;
- const char *arch = qtest_get_arch();
- const char *memory_size;
got_src_stop = false;
got_dst_resume = false;
- if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
- memory_size = "150M";
- arch_opts = g_strdup_printf("-drive file=%s,format=raw", bootpath);
- start_address = X86_TEST_MEM_START;
- end_address = X86_TEST_MEM_END;
- } else if (g_str_equal(arch, "s390x")) {
- memory_size = "128M";
- arch_opts = g_strdup_printf("-bios %s", bootpath);
- start_address = S390_TEST_MEM_START;
- end_address = S390_TEST_MEM_END;
- } else if (strcmp(arch, "ppc64") == 0) {
- memory_size = "256M";
- start_address = PPC_TEST_MEM_START;
- end_address = PPC_TEST_MEM_END;
- arch_source = g_strdup_printf("-prom-env 'use-nvramrc?=true' -prom-env
"
- "'nvramrc=hex .\" _\" begin %x %x "
- "do i c@ 1 + i c! 1000 +loop .\" B\" 0 "
- "until'", end_address, start_address);
- arch_opts = g_strdup("-nodefaults -machine vsmt=8");
- } else if (strcmp(arch, "aarch64") == 0) {
- memory_size = "150M";
- arch_opts = g_strdup_printf("-machine virt,gic-version=max -cpu max "
- "-kernel %s", bootpath);
- start_address = ARM_TEST_MEM_START;
- end_address = ARM_TEST_MEM_END;
- } else {
- g_assert_not_reached();
- }
if (!getenv("QTEST_LOG") && args->hide_stderr) {
#ifndef _WIN32
@@ -724,7 +730,7 @@ static void test_migrate_start(GuestState *from, GuestState
*to,
shmem_opts = g_strdup_printf(
"-object memory-backend-file,id=mem0,size=%s"
",mem-path=%s,share=on -numa node,memdev=mem0",
- memory_size, shmem_path);
+ from->memory_size, shmem_path);
}
if (args->use_dirty_ring) {
@@ -738,9 +744,9 @@ static void test_migrate_start(GuestState *from, GuestState
*to,
"%s %s %s %s %s",
kvm_opts ? kvm_opts : "",
from->name,
- memory_size, tmpfs,
- arch_opts ? arch_opts : "",
- arch_source ? arch_source : "",
+ from->memory_size, tmpfs,
+ from->arch_opts ? from->arch_opts : "",
+ from->arch_source ? from->arch_source : "",
shmem_opts ? shmem_opts : "",
args->opts_source ? args->opts_source : "",
ignore_stderr ? ignore_stderr : "");
@@ -760,9 +766,9 @@ static void test_migrate_start(GuestState *from, GuestState
*to,
"%s %s %s %s %s",
kvm_opts ? kvm_opts : "",
to->name,
- memory_size, tmpfs, uri,
- arch_opts ? arch_opts : "",
- arch_target ? arch_target : "",
+ to->memory_size, tmpfs, uri,
+ to->arch_opts ? to->arch_opts : "",
+ to->arch_target ? to->arch_target : "",
shmem_opts ? shmem_opts : "",
args->opts_target ? args->opts_target : "",
ignore_stderr ? ignore_stderr : "");
@@ -787,20 +793,20 @@ static void test_migrate_end(GuestState *from, GuestState
*to, bool test_dest)
guest_destroy(from);
if (test_dest) {
- qtest_memread(to->qs, start_address, &dest_byte_a, 1);
+ qtest_memread(to->qs, to->start_address, &dest_byte_a, 1);
/* Destination still running, wait for a byte to change */
do {
- qtest_memread(to->qs, start_address, &dest_byte_b, 1);
+ qtest_memread(to->qs, to->start_address, &dest_byte_b, 1);
usleep(1000 * 10);
} while (dest_byte_a == dest_byte_b);
qtest_qmp_assert_success(to->qs, "{ 'execute' : 'stop'}");
/* With it stopped, check nothing changes */
- qtest_memread(to->qs, start_address, &dest_byte_c, 1);
+ qtest_memread(to->qs, to->start_address, &dest_byte_c, 1);
usleep(1000 * 200);
- qtest_memread(to->qs, start_address, &dest_byte_d, 1);
+ qtest_memread(to->qs, to->start_address, &dest_byte_d, 1);
g_assert_cmpint(dest_byte_c, ==, dest_byte_d);
check_guests_ram(to);
--
2.40.1
- [PATCH 11/42] migration-test: Update test_ignore_shared to use args, (continued)
- [PATCH 11/42] migration-test: Update test_ignore_shared to use args, Juan Quintela, 2023/06/08
- [PATCH 12/42] migration-test: Enable back ignore-shared test, Juan Quintela, 2023/06/08
- [PATCH 13/42] migration-test: Check for shared memory like for everything else, Juan Quintela, 2023/06/08
- [PATCH 15/42] migration-test: migrate_postcopy_prepare() always return 0, Juan Quintela, 2023/06/08
- [PATCH 14/42] migration-test: test_migrate_start() always return 0, Juan Quintela, 2023/06/08
- [PATCH 16/42] migration-test: Create do_migrate(), Juan Quintela, 2023/06/08
- [PATCH 17/42] migration-test: Introduce GuestState, Juan Quintela, 2023/06/08
- [PATCH 18/42] migration-test: Create guest before calling do_test_validate_uuid(), Juan Quintela, 2023/06/08
- [PATCH 19/42] migration-test: Create guest before calling test_precopy_common(), Juan Quintela, 2023/06/08
- [PATCH 20/42] migration-test: Create guest before calling test_postcopy_common(), Juan Quintela, 2023/06/08
- [PATCH 21/42] migration-test: Move common guest code to guest_create(),
Juan Quintela <=
- [PATCH 22/42] migration-test: Create guest_use_dirty_log(), Juan Quintela, 2023/06/08
- [PATCH 23/42] migration-test: Move serial to GuestState, Juan Quintela, 2023/06/08
- [PATCH 24/42] migration-test: Re-enable multifd_cancel test, Juan Quintela, 2023/06/08
- [PATCH 26/42] migration-test: create guest_use_shmem(), Juan Quintela, 2023/06/08
- [PATCH 29/42] migration-test: Create the migration unix socket by guest, Juan Quintela, 2023/06/08
- [PATCH 25/42] migration-test: We were not waiting for "target" to finish, Juan Quintela, 2023/06/08
- [PATCH 27/42] migration-test: Create guest_extra_opts(), Juan Quintela, 2023/06/08