qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Juan Quintela <quintela@redhat.com>
Subject: [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters
Date: Mon, 16 Dec 2019 17:27:55 +0100	[thread overview]
Message-ID: <1576513726-53700-12-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1576513726-53700-1-git-send-email-pbonzini@redhat.com>

From: Juan Quintela <quintela@redhat.com>

It has two bools and two strings, it is very difficult to remember
which does what.  And it makes very difficult to add new parameters as
we need to modify all the callers.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Tested-by: Cornelia Huck <cohuck@redhat.com> #s390x
Tested-by: Laurent Vivier <lvivier@redhat.com>
---
 tests/migration-test.c | 118 ++++++++++++++++++++++++++++++++-----------------
 1 file changed, 78 insertions(+), 40 deletions(-)

diff --git a/tests/migration-test.c b/tests/migration-test.c
index 6c7c416..4a19211 100644
--- a/tests/migration-test.c
+++ b/tests/migration-test.c
@@ -544,10 +544,31 @@ static void migrate_postcopy_start(QTestState *from, QTestState *to)
     qtest_qmp_eventwait(to, "RESUME");
 }
 
+typedef struct {
+    bool hide_stderr;
+    bool use_shmem;
+    char *opts_source;
+    char *opts_target;
+} MigrateStart;
+
+static MigrateStart *migrate_start_new(void)
+{
+    MigrateStart *args = g_new0(MigrateStart, 1);
+
+    args->opts_source = g_strdup("");
+    args->opts_target = g_strdup("");
+    return args;
+}
+
+static void migrate_start_destroy(MigrateStart *args)
+{
+    g_free(args->opts_source);
+    g_free(args->opts_target);
+    g_free(args);
+}
+
 static int test_migrate_start(QTestState **from, QTestState **to,
-                               const char *uri, bool hide_stderr,
-                               bool use_shmem, const char *opts_src,
-                               const char *opts_dst)
+                              const char *uri, MigrateStart *args)
 {
     gchar *arch_source, *arch_target;
     gchar *cmd_source, *cmd_target;
@@ -560,10 +581,7 @@ static int test_migrate_start(QTestState **from, QTestState **to,
     const char *machine_args;
     const char *memory_size;
 
-    opts_src = opts_src ? opts_src : "";
-    opts_dst = opts_dst ? opts_dst : "";
-
-    if (use_shmem) {
+    if (args->use_shmem) {
         if (!g_file_test("/dev/shm", G_FILE_TEST_IS_DIR)) {
             g_test_skip("/dev/shm is not supported");
             return -1;
@@ -623,13 +641,13 @@ static int test_migrate_start(QTestState **from, QTestState **to,
 
     g_free(bootpath);
 
-    if (hide_stderr) {
+    if (args->hide_stderr) {
         ignore_stderr = "2>/dev/null";
     } else {
         ignore_stderr = "";
     }
 
-    if (use_shmem) {
+    if (args->use_shmem) {
         shmem_path = g_strdup_printf("/dev/shm/qemu-%d", getpid());
         shmem_opts = g_strdup_printf(
             "-object memory-backend-file,id=mem0,size=%s"
@@ -647,7 +665,7 @@ static int test_migrate_start(QTestState **from, QTestState **to,
                                  "%s %s %s %s",
                                  machine_type, machine_args,
                                  memory_size, tmpfs,
-                                 arch_source, shmem_opts, opts_src,
+                                 arch_source, shmem_opts, args->opts_source,
                                  ignore_stderr);
     g_free(arch_source);
     *from = qtest_init(cmd_source);
@@ -661,18 +679,19 @@ static int test_migrate_start(QTestState **from, QTestState **to,
                                  "%s %s %s %s",
                                  machine_type, machine_args,
                                  memory_size, tmpfs, uri,
-                                 arch_target, shmem_opts, opts_dst,
-                                 ignore_stderr);
+                                 arch_target, shmem_opts,
+                                 args->opts_target, ignore_stderr);
     g_free(arch_target);
     *to = qtest_init(cmd_target);
     g_free(cmd_target);
 
+    migrate_start_destroy(args);
     g_free(shmem_opts);
     /*
      * Remove shmem file immediately to avoid memory leak in test failed case.
      * It's valid becase QEMU has already opened this file
      */
-    if (use_shmem) {
+    if (args->use_shmem) {
         unlink(shmem_path);
         g_free(shmem_path);
     }
@@ -762,13 +781,13 @@ static void test_deprecated(void)
 }
 
 static int migrate_postcopy_prepare(QTestState **from_ptr,
-                                     QTestState **to_ptr,
-                                     bool hide_error)
+                                    QTestState **to_ptr,
+                                    MigrateStart *args)
 {
     char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
     QTestState *from, *to;
 
-    if (test_migrate_start(&from, &to, uri, hide_error, false, NULL, NULL)) {
+    if (test_migrate_start(&from, &to, uri, args)) {
         return -1;
     }
 
@@ -813,9 +832,10 @@ static void migrate_postcopy_complete(QTestState *from, QTestState *to)
 
 static void test_postcopy(void)
 {
+    MigrateStart *args = migrate_start_new();
     QTestState *from, *to;
 
-    if (migrate_postcopy_prepare(&from, &to, false)) {
+    if (migrate_postcopy_prepare(&from, &to, args)) {
         return;
     }
     migrate_postcopy_start(from, to);
@@ -824,10 +844,13 @@ static void test_postcopy(void)
 
 static void test_postcopy_recovery(void)
 {
+    MigrateStart *args = migrate_start_new();
     QTestState *from, *to;
     char *uri;
 
-    if (migrate_postcopy_prepare(&from, &to, true)) {
+    args->hide_stderr = true;
+
+    if (migrate_postcopy_prepare(&from, &to, args)) {
         return;
     }
 
@@ -910,9 +933,12 @@ static void wait_for_migration_fail(QTestState *from, bool allow_active)
 
 static void test_baddest(void)
 {
+    MigrateStart *args = migrate_start_new();
     QTestState *from, *to;
 
-    if (test_migrate_start(&from, &to, "tcp:0:0", true, false, NULL, NULL)) {
+    args->hide_stderr = true;
+
+    if (test_migrate_start(&from, &to, "tcp:0:0", args)) {
         return;
     }
     migrate(from, "tcp:0:0", "{}");
@@ -923,9 +949,10 @@ static void test_baddest(void)
 static void test_precopy_unix(void)
 {
     char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
+    MigrateStart *args = migrate_start_new();
     QTestState *from, *to;
 
-    if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+    if (test_migrate_start(&from, &to, uri, args)) {
         return;
     }
 
@@ -1001,9 +1028,10 @@ static void test_ignore_shared(void)
 
 static void test_xbzrle(const char *uri)
 {
+    MigrateStart *args = migrate_start_new();
     QTestState *from, *to;
 
-    if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+    if (test_migrate_start(&from, &to, uri, args)) {
         return;
     }
 
@@ -1052,11 +1080,11 @@ static void test_xbzrle_unix(void)
 
 static void test_precopy_tcp(void)
 {
+    MigrateStart *args = migrate_start_new();
     char *uri;
     QTestState *from, *to;
 
-    if (test_migrate_start(&from, &to, "tcp:127.0.0.1:0", false, false,
-                           NULL, NULL)) {
+    if (test_migrate_start(&from, &to, "tcp:127.0.0.1:0", args)) {
         return;
     }
 
@@ -1096,13 +1124,14 @@ static void test_precopy_tcp(void)
 
 static void test_migrate_fd_proto(void)
 {
+    MigrateStart *args = migrate_start_new();
     QTestState *from, *to;
     int ret;
     int pair[2];
     QDict *rsp;
     const char *error_desc;
 
-    if (test_migrate_start(&from, &to, "defer", false, false, NULL, NULL)) {
+    if (test_migrate_start(&from, &to, "defer", args)) {
         return;
     }
 
@@ -1178,15 +1207,12 @@ static void test_migrate_fd_proto(void)
     test_migrate_end(from, to, true);
 }
 
-static void do_test_validate_uuid(const char *uuid_arg_src,
-                                  const char *uuid_arg_dst,
-                                  bool should_fail, bool hide_stderr)
+static void do_test_validate_uuid(MigrateStart *args, bool should_fail)
 {
     char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
     QTestState *from, *to;
 
-    if (test_migrate_start(&from, &to, uri, hide_stderr, false,
-                           uuid_arg_src, uuid_arg_dst)) {
+    if (test_migrate_start(&from, &to, uri, args)) {
         return;
     }
 
@@ -1216,33 +1242,45 @@ static void do_test_validate_uuid(const char *uuid_arg_src,
 
 static void test_validate_uuid(void)
 {
-    do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111",
-                          "-uuid 11111111-1111-1111-1111-111111111111",
-                          false, false);
+    MigrateStart *args = migrate_start_new();
+
+    args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+    args->opts_target = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+    do_test_validate_uuid(args, false);
 }
 
 static void test_validate_uuid_error(void)
 {
-    do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111",
-                          "-uuid 22222222-2222-2222-2222-222222222222",
-                          true, true);
+    MigrateStart *args = migrate_start_new();
+
+    args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+    args->opts_target = g_strdup("-uuid 22222222-2222-2222-2222-222222222222");
+    args->hide_stderr = true;
+    do_test_validate_uuid(args, true);
 }
 
 static void test_validate_uuid_src_not_set(void)
 {
-    do_test_validate_uuid(NULL, "-uuid 11111111-1111-1111-1111-111111111111",
-                          false, true);
+    MigrateStart *args = migrate_start_new();
+
+    args->opts_target = g_strdup("-uuid 22222222-2222-2222-2222-222222222222");
+    args->hide_stderr = true;
+    do_test_validate_uuid(args, false);
 }
 
 static void test_validate_uuid_dst_not_set(void)
 {
-    do_test_validate_uuid("-uuid 11111111-1111-1111-1111-111111111111", NULL,
-                          false, true);
+    MigrateStart *args = migrate_start_new();
+
+    args->opts_source = g_strdup("-uuid 11111111-1111-1111-1111-111111111111");
+    args->hide_stderr = true;
+    do_test_validate_uuid(args, false);
 }
 
 static void test_migrate_auto_converge(void)
 {
     char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
+    MigrateStart *args = migrate_start_new();
     QTestState *from, *to;
     int64_t remaining, percentage;
 
@@ -1261,7 +1299,7 @@ static void test_migrate_auto_converge(void)
      */
     const int64_t expected_threshold = max_bandwidth * downtime_limit / 1000;
 
-    if (test_migrate_start(&from, &to, uri, false, false, NULL, NULL)) {
+    if (test_migrate_start(&from, &to, uri, args)) {
         return;
     }
 
-- 
1.8.3.1




  parent reply	other threads:[~2019-12-16 16:38 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-16 16:27 [PULL 00/62] Misc patches for 2019-12-16 Paolo Bonzini
2019-12-16 16:27 ` [PULL 01/62] kvm: Reallocate dirty_bmap when we change a slot Paolo Bonzini
2019-12-16 16:27 ` [PULL 02/62] migration-test: Create cmd_soure and cmd_target Paolo Bonzini
2019-12-16 16:27 ` [PULL 03/62] migration-test: Move hide_stderr to common commandline Paolo Bonzini
2019-12-16 16:27 ` [PULL 04/62] migration-test: Move -machine " Paolo Bonzini
2019-12-16 16:27 ` [PULL 05/62] migration-test: Move memory size " Paolo Bonzini
2019-12-16 16:27 ` [PULL 06/62] migration-test: Move shmem handling " Paolo Bonzini
2019-12-16 16:27 ` [PULL 07/62] migration-test: Move -name " Paolo Bonzini
2019-12-16 16:27 ` [PULL 08/62] migration-test: Move -serial " Paolo Bonzini
2019-12-16 16:27 ` [PULL 09/62] migration-test: Move -incomming " Paolo Bonzini
2019-12-16 16:27 ` [PULL 10/62] migration-test: Rename cmd_src/dst to arch_source/arch_target Paolo Bonzini
2019-12-16 16:27 ` Paolo Bonzini [this message]
2019-12-16 16:27 ` [PULL 12/62] memory: do not look at current_machine->accel Paolo Bonzini
2019-12-16 16:27 ` [PULL 13/62] vl: move icount configuration earlier Paolo Bonzini
2019-12-16 16:27 ` [PULL 14/62] tcg: move qemu_tcg_configure to accel/tcg/tcg-all.c Paolo Bonzini
2019-12-16 16:27 ` [PULL 15/62] vl: extract accelerator option processing to a separate function Paolo Bonzini
2019-12-16 16:28 ` [PULL 16/62] vl: merge -accel processing into configure_accelerators Paolo Bonzini
2019-12-16 16:28 ` [PULL 17/62] accel: compile accel/accel.c just once Paolo Bonzini
2019-12-16 16:28 ` [PULL 18/62] vl: introduce object_parse_property_opt Paolo Bonzini
2019-12-16 16:28 ` [PULL 19/62] vl: configure accelerators from -accel options Paolo Bonzini
2019-12-16 16:28 ` [PULL 20/62] vl: warn for unavailable accelerators, clarify messages Paolo Bonzini
2019-12-16 16:28 ` [PULL 21/62] qom: introduce object_register_sugar_prop Paolo Bonzini
2019-12-16 16:28 ` [PULL 22/62] qom: add object_new_with_class Paolo Bonzini
2019-12-16 16:28 ` [PULL 23/62] accel: pass object to accel_init_machine Paolo Bonzini
2019-12-16 16:28 ` [PULL 24/62] tcg: convert "-accel threads" to a QOM property Paolo Bonzini
2019-12-16 16:28 ` [PULL 25/62] tcg: add "-accel tcg,tb-size" and deprecate "-tb-size" Paolo Bonzini
2019-12-16 16:28 ` [PULL 26/62] xen: convert "-machine igd-passthru" to an accelerator property Paolo Bonzini
2019-12-16 16:28 ` [PULL 27/62] kvm: convert "-machine kvm_shadow_mem" " Paolo Bonzini
2019-12-16 16:28 ` [PULL 28/62] kvm: introduce kvm_kernel_irqchip_* functions Paolo Bonzini
2019-12-16 16:28 ` [PULL 29/62] kvm: convert "-machine kernel_irqchip" to an accelerator property Paolo Bonzini
2019-12-16 16:28 ` [PULL 30/62] Makefile: remove unused variables Paolo Bonzini
2019-12-16 16:28 ` [PULL 31/62] object: Improve documentation of interfaces Paolo Bonzini
2019-12-16 16:28 ` [PULL 32/62] build-sys: build vhost-user-gpu only if CONFIG_TOOLS Paolo Bonzini
2019-12-16 16:28 ` [PULL 33/62] build-sys: do not include Windows SLIRP dependencies in $LIBS Paolo Bonzini
2019-12-16 16:28 ` [PULL 34/62] migration: fix maybe-uninitialized warning Paolo Bonzini
2019-12-16 16:28 ` [PULL 35/62] monitor: fix maybe-uninitialized Paolo Bonzini
2019-12-16 16:28 ` [PULL 36/62] vhost-user-scsi: fix printf format warning Paolo Bonzini
2019-12-16 16:28 ` [PULL 37/62] os-posix: simplify os_find_datadir Paolo Bonzini
2019-12-16 16:28 ` [PULL 38/62] tests: skip block layer tests if !CONFIG_TOOLS Paolo Bonzini
2019-12-16 16:28 ` [PULL 39/62] libvixl: remove per-target compiler flags Paolo Bonzini
2019-12-16 16:28 ` [PULL 40/62] crypto: move common bits for all emulators to libqemuutil Paolo Bonzini
2019-12-16 16:28 ` [PULL 41/62] stubs: replace stubs with lnot if applicable Paolo Bonzini
2019-12-16 16:28 ` [PULL 42/62] configure: set $PYTHON to a full path Paolo Bonzini
2019-12-16 16:28 ` [PULL 43/62] configure: simplify vhost condition with Kconfig Paolo Bonzini
2019-12-16 16:28 ` [PULL 44/62] i386: conditionally compile more files Paolo Bonzini
2019-12-16 16:28 ` [PULL 45/62] fw_cfg: allow building without other devices Paolo Bonzini
2019-12-16 16:28 ` [PULL 46/62] hw: replace hw/i386/pc.h with a header just for the i8259 Paolo Bonzini
2019-12-16 16:28 ` [PULL 47/62] pci-stub: add more MSI functions Paolo Bonzini
2019-12-16 16:28 ` [PULL 48/62] x86: move SMM property to X86MachineState Paolo Bonzini
2019-12-16 16:28 ` [PULL 49/62] hw/i386/pc: Convert DPRINTF() to trace events Paolo Bonzini
2019-12-16 16:28 ` [PULL 50/62] x86: move more x86-generic functions out of PC files Paolo Bonzini
2019-12-16 16:28 ` [PULL 51/62] acpi: move PC stubs out of stubs/ Paolo Bonzini
2019-12-16 16:28 ` [PULL 52/62] pc: stubify x86 iommu Paolo Bonzini
2019-12-16 16:28 ` [PULL 53/62] hw/i386: De-duplicate gsi_handler() to remove kvm_pc_gsi_handler() Paolo Bonzini
2019-12-16 16:28 ` [PULL 54/62] hw/i386: Simplify ioapic_init_gsi() Paolo Bonzini
2019-12-16 16:28 ` [PULL 55/62] hw/isa/isa-bus: cleanup irq functions Paolo Bonzini
2019-12-16 16:28 ` [PULL 56/62] hw/i386/pc: Use TYPE_PORT92 instead of hardcoded string Paolo Bonzini
2019-12-16 16:28 ` [PULL 57/62] hw/i386/pc: Inline port92_init() Paolo Bonzini
2019-12-16 16:28 ` [PULL 58/62] hw/i386/pc: Extract the port92 device Paolo Bonzini
2019-12-16 16:28 ` [PULL 59/62] hyperv: Use auto rcu_read macros Paolo Bonzini
2019-12-16 16:28 ` [PULL 60/62] qsp: Use WITH_RCU_READ_LOCK_GUARD Paolo Bonzini
2019-12-16 16:28 ` [PULL 61/62] memory: use RCU_READ_LOCK_GUARD Paolo Bonzini
2019-12-16 16:28 ` [PULL 62/62] colo: fix return without releasing RCU Paolo Bonzini
2019-12-17 10:56 ` [PULL 00/62] Misc patches for 2019-12-16 Peter Maydell
2019-12-17 11:22   ` Dr. David Alan Gilbert
2019-12-18  8:54     ` Juan Quintela
2019-12-18 11:53       ` Paolo Bonzini
2019-12-19  9:52         ` Juan Quintela
2019-12-17 17:57 [PULL v2 " Paolo Bonzini
2019-12-17 17:57 ` [PULL 11/62] migration-test: Use a struct for test_migrate_start parameters Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1576513726-53700-12-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).