From: Peter Xu <peterx@redhat.com>
To: Fabiano Rosas <farosas@suse.de>
Cc: qemu-devel@nongnu.org, berrange@redhat.com, armbru@redhat.com,
Laurent Vivier <lvivier@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v2 24/24] tests/qtest/migration: Pass the migration config to file tests
Date: Thu, 14 Aug 2025 10:24:56 -0400 [thread overview]
Message-ID: <aJ3xuGRnd0mHSlxp@x1.local> (raw)
In-Reply-To: <20250630195913.28033-25-farosas@suse.de>
On Mon, Jun 30, 2025 at 04:59:13PM -0300, Fabiano Rosas wrote:
> Use the existing file tests to test the new way of passing parameters
> to the migration via the config argument to qmp_migrate*.
>
> Signed-off-by: Fabiano Rosas <farosas@suse.de>
> ---
> tests/qtest/migration/file-tests.c | 68 +++++++++++----------------
> tests/qtest/migration/framework.c | 9 ++--
> tests/qtest/migration/precopy-tests.c | 1 +
> 3 files changed, 34 insertions(+), 44 deletions(-)
>
> diff --git a/tests/qtest/migration/file-tests.c b/tests/qtest/migration/file-tests.c
> index 4d78ce0855..656d6527e8 100644
> --- a/tests/qtest/migration/file-tests.c
> +++ b/tests/qtest/migration/file-tests.c
> @@ -27,6 +27,7 @@ static void test_precopy_file(void)
> MigrateCommon args = {
> .connect_uri = uri,
> .listen_uri = "defer",
> + .start.config = qdict_new(),
> };
>
> test_file_common(&args, true);
> @@ -74,6 +75,7 @@ static void test_precopy_file_offset_fdset(void)
> .connect_uri = uri,
> .listen_uri = "defer",
> .start_hook = migrate_hook_start_file_offset_fdset,
> + .start.config = qdict_new(),
> };
>
> test_file_common(&args, false);
> @@ -88,6 +90,7 @@ static void test_precopy_file_offset(void)
> MigrateCommon args = {
> .connect_uri = uri,
> .listen_uri = "defer",
> + .start.config = qdict_new(),
> };
>
> test_file_common(&args, false);
> @@ -102,6 +105,7 @@ static void test_precopy_file_offset_bad(void)
> .connect_uri = uri,
> .listen_uri = "defer",
> .result = MIG_TEST_QMP_ERROR,
> + .start.config = qdict_new(),
> };
>
> test_file_common(&args, false);
> @@ -114,11 +118,10 @@ static void test_precopy_file_mapped_ram_live(void)
> MigrateCommon args = {
> .connect_uri = uri,
> .listen_uri = "defer",
> - .start = {
> - .caps[MIGRATION_CAPABILITY_MAPPED_RAM] = true,
> - },
> + .start.config = qdict_new(),
> };
>
> + qdict_put_bool(args.start.config, "mapped-ram", true);
> test_file_common(&args, false);
> }
>
> @@ -129,11 +132,9 @@ static void test_precopy_file_mapped_ram(void)
> MigrateCommon args = {
> .connect_uri = uri,
> .listen_uri = "defer",
> - .start = {
> - .caps[MIGRATION_CAPABILITY_MAPPED_RAM] = true,
> - },
> + .start.config = qdict_new(),
> };
> -
> + qdict_put_bool(args.start.config, "mapped-ram", true);
> test_file_common(&args, true);
> }
>
> @@ -144,12 +145,11 @@ static void test_multifd_file_mapped_ram_live(void)
> MigrateCommon args = {
> .connect_uri = uri,
> .listen_uri = "defer",
> - .start = {
> - .caps[MIGRATION_CAPABILITY_MULTIFD] = true,
> - .caps[MIGRATION_CAPABILITY_MAPPED_RAM] = true,
> - },
> + .start.config = qdict_new(),
> };
>
> + qdict_put_bool(args.start.config, "mapped-ram", true);
> + qdict_put_bool(args.start.config, "multifd", true);
> test_file_common(&args, false);
> }
>
> @@ -160,24 +160,13 @@ static void test_multifd_file_mapped_ram(void)
> MigrateCommon args = {
> .connect_uri = uri,
> .listen_uri = "defer",
> - .start = {
> - .caps[MIGRATION_CAPABILITY_MULTIFD] = true,
> - .caps[MIGRATION_CAPABILITY_MAPPED_RAM] = true,
> - },
> + .start.config = qdict_new(),
> };
> -
> + qdict_put_bool(args.start.config, "mapped-ram", true);
> + qdict_put_bool(args.start.config, "multifd", true);
> test_file_common(&args, true);
> }
>
> -static void *migrate_hook_start_multifd_mapped_ram_dio(QTestState *from,
> - QTestState *to)
> -{
> - migrate_set_parameter_bool(from, "direct-io", true);
> - migrate_set_parameter_bool(to, "direct-io", true);
> -
> - return NULL;
> -}
> -
> static void test_multifd_file_mapped_ram_dio(void)
> {
> g_autofree char *uri = g_strdup_printf("file:%s/%s", tmpfs,
> @@ -185,13 +174,13 @@ static void test_multifd_file_mapped_ram_dio(void)
> MigrateCommon args = {
> .connect_uri = uri,
> .listen_uri = "defer",
> - .start_hook = migrate_hook_start_multifd_mapped_ram_dio,
> - .start = {
> - .caps[MIGRATION_CAPABILITY_MAPPED_RAM] = true,
> - .caps[MIGRATION_CAPABILITY_MULTIFD] = true,
> - },
> + .start.config = qdict_new(),
> };
>
> + qdict_put_bool(args.start.config, "direct-io", true);
So the start_hook doesn't take args so we need to duplicate all these
direct-io setups in each test.. I assume not a big deal so it's fine, but
this is slightly going backward for sure..
What's your plan in mind on the tests? Looks like you want to keep both
ways in tests/, only use it in some tests to cover both paths (and you
chose file-tests to start testing config)? Or is this only an example and
you plan to convert more?
> + qdict_put_bool(args.start.config, "mapped-ram", true);
> + qdict_put_bool(args.start.config, "multifd", true);
> +
> if (!probe_o_direct_support(tmpfs)) {
> g_test_skip("Filesystem does not support O_DIRECT");
> return;
> @@ -235,9 +224,6 @@ static void *migrate_hook_start_multifd_mapped_ram_fdset_dio(QTestState *from,
> fdset_add_fds(from, file, O_WRONLY, 2, true);
> fdset_add_fds(to, file, O_RDONLY, 2, true);
>
> - migrate_set_parameter_bool(from, "direct-io", true);
> - migrate_set_parameter_bool(to, "direct-io", true);
> -
> return NULL;
> }
>
> @@ -261,12 +247,11 @@ static void test_multifd_file_mapped_ram_fdset(void)
> .listen_uri = "defer",
> .start_hook = migrate_hook_start_multifd_mapped_ram_fdset,
> .end_hook = migrate_hook_end_multifd_mapped_ram_fdset,
> - .start = {
> - .caps[MIGRATION_CAPABILITY_MAPPED_RAM] = true,
> - .caps[MIGRATION_CAPABILITY_MULTIFD] = true,
> - },
> + .start.config = qdict_new(),
> };
>
> + qdict_put_bool(args.start.config, "mapped-ram", true);
> + qdict_put_bool(args.start.config, "multifd", true);
> test_file_common(&args, true);
> }
>
> @@ -279,12 +264,13 @@ static void test_multifd_file_mapped_ram_fdset_dio(void)
> .listen_uri = "defer",
> .start_hook = migrate_hook_start_multifd_mapped_ram_fdset_dio,
> .end_hook = migrate_hook_end_multifd_mapped_ram_fdset,
> - .start = {
> - .caps[MIGRATION_CAPABILITY_MAPPED_RAM] = true,
> - .caps[MIGRATION_CAPABILITY_MULTIFD] = true,
> - },
> + .start.config = qdict_new(),
> };
>
> + qdict_put_bool(args.start.config, "direct-io", true);
> + qdict_put_bool(args.start.config, "mapped-ram", true);
> + qdict_put_bool(args.start.config, "multifd", true);
> +
> if (!probe_o_direct_support(tmpfs)) {
> g_test_skip("Filesystem does not support O_DIRECT");
> return;
> diff --git a/tests/qtest/migration/framework.c b/tests/qtest/migration/framework.c
> index 5025299d6a..37c5c884af 100644
> --- a/tests/qtest/migration/framework.c
> +++ b/tests/qtest/migration/framework.c
> @@ -974,18 +974,21 @@ void test_file_common(MigrateCommon *args, bool stop_src)
> }
>
> if (args->result == MIG_TEST_QMP_ERROR) {
> - migrate_qmp_fail(from, args->connect_uri, NULL, "{}");
> + migrate_qmp_fail(from, args->connect_uri, NULL, "{ 'config': %p }",
> + args->start.config);
> goto finish;
> }
>
> - migrate_qmp(from, to, args->connect_uri, NULL, "{}");
> + migrate_qmp(from, to, args->connect_uri, NULL, "{ 'config': %p }",
> + args->start.config);
> wait_for_migration_complete(from);
>
> /*
> * We need to wait for the source to finish before starting the
> * destination.
> */
> - migrate_incoming_qmp(to, args->connect_uri, NULL, "{}");
> + migrate_incoming_qmp(to, args->connect_uri, NULL, "{ 'config': %p }",
> + args->start.config);
> wait_for_migration_complete(to);
>
> if (stop_src) {
> diff --git a/tests/qtest/migration/precopy-tests.c b/tests/qtest/migration/precopy-tests.c
> index 35d4274c69..9606dc1d02 100644
> --- a/tests/qtest/migration/precopy-tests.c
> +++ b/tests/qtest/migration/precopy-tests.c
> @@ -338,6 +338,7 @@ static void test_precopy_fd_file(void)
> .connect_uri = "fd:fd-mig",
> .start_hook = migrate_hook_start_precopy_fd_file,
> .end_hook = migrate_hook_end_fd,
> + .start.config = qdict_new(),
> };
> test_file_common(&args, true);
> }
> --
> 2.35.3
>
--
Peter Xu
next prev parent reply other threads:[~2025-08-14 14:25 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-30 19:58 [PATCH v2 00/24] migration: Unify capabilities and parameters Fabiano Rosas
2025-06-30 19:58 ` [PATCH v2 01/24] migration: Fix leak of block_bitmap_mapping Fabiano Rosas
2025-07-01 6:12 ` Markus Armbruster
2025-07-03 21:31 ` Peter Xu
2025-07-04 5:09 ` Markus Armbruster
2025-06-30 19:58 ` [PATCH v2 02/24] migration: Add a qdev property for StrOrNull Fabiano Rosas
2025-07-01 6:38 ` Markus Armbruster
2025-07-03 22:32 ` Peter Xu
2025-07-04 12:58 ` Fabiano Rosas
2025-06-30 19:58 ` [PATCH v2 03/24] migration: Normalize tls arguments Fabiano Rosas
2025-07-01 7:46 ` Markus Armbruster
2025-07-01 14:20 ` Fabiano Rosas
2025-07-04 13:12 ` Fabiano Rosas
2025-07-04 15:37 ` Peter Xu
2025-08-20 15:45 ` Fabiano Rosas
2025-06-30 19:58 ` [PATCH v2 04/24] migration: Remove MigrateSetParameters Fabiano Rosas
2025-07-01 8:00 ` Markus Armbruster
2025-07-03 19:34 ` Fabiano Rosas
2025-07-04 4:25 ` Markus Armbruster
2025-07-04 15:39 ` Peter Xu
2025-06-30 19:58 ` [PATCH v2 05/24] qapi/migration: Don't document MigrationParameter Fabiano Rosas
2025-07-01 8:04 ` Markus Armbruster
2025-07-04 15:40 ` Peter Xu
2025-06-30 19:58 ` [PATCH v2 06/24] migration: Run a post update routine after setting parameters Fabiano Rosas
2025-06-30 19:58 ` [PATCH v2 07/24] migration: Add a flag to track block-bitmap-mapping input Fabiano Rosas
2025-07-04 15:42 ` Peter Xu
2025-06-30 19:58 ` [PATCH v2 08/24] migration: Remove checks for s->parameters has_* fields Fabiano Rosas
2025-06-30 19:58 ` [PATCH v2 09/24] migration: Do away with usage of QERR_INVALID_PARAMETER_VALUE Fabiano Rosas
2025-07-04 16:04 ` Peter Xu
2025-06-30 19:58 ` [PATCH v2 10/24] migration: Extract code to mark all parameters as present Fabiano Rosas
2025-06-30 19:59 ` [PATCH v2 11/24] migration: Use QAPI_CLONE_MEMBERS in query_migrate_parameters Fabiano Rosas
2025-07-04 16:11 ` Peter Xu
2025-06-30 19:59 ` [PATCH v2 12/24] migration: Use QAPI_CLONE_MEMBERS in migrate_params_test_apply Fabiano Rosas
2025-06-30 19:59 ` [PATCH v2 13/24] migration: Use QAPI_CLONE_MEMBERS in migrate_params_apply Fabiano Rosas
2025-08-13 19:05 ` Peter Xu
2025-08-14 15:04 ` Fabiano Rosas
2025-06-30 19:59 ` [PATCH v2 14/24] migration: Use visitors in migrate_params_test_apply Fabiano Rosas
2025-08-13 20:05 ` Peter Xu
2025-08-14 15:10 ` Fabiano Rosas
2025-08-14 19:40 ` Peter Xu
2025-06-30 19:59 ` [PATCH v2 15/24] migration: Cleanup hmp_info_migrate_parameters Fabiano Rosas
2025-08-13 20:40 ` Peter Xu
2025-06-30 19:59 ` [PATCH v2 16/24] migration: Add capabilities into MigrationParameters Fabiano Rosas
2025-07-01 8:25 ` Markus Armbruster
2025-07-04 13:15 ` Fabiano Rosas
2025-07-04 14:04 ` Markus Armbruster
2025-07-04 14:48 ` Fabiano Rosas
2025-07-04 15:04 ` Markus Armbruster
2025-07-04 16:33 ` Peter Xu
2025-06-30 19:59 ` [PATCH v2 17/24] migration: Remove s->capabilities Fabiano Rosas
2025-08-13 20:48 ` Peter Xu
2025-06-30 19:59 ` [PATCH v2 18/24] qapi/migration: Deprecate capabilities commands Fabiano Rosas
2025-07-01 8:30 ` Markus Armbruster
2025-07-01 8:38 ` Jiri Denemark
2025-07-01 9:00 ` Peter Krempa
2025-07-01 9:10 ` Daniel P. Berrangé
2025-08-13 20:50 ` Peter Xu
2025-06-30 19:59 ` [PATCH v2 19/24] migration: Store the initial values used for s->parameters Fabiano Rosas
2025-08-13 21:09 ` Peter Xu
2025-06-30 19:59 ` [PATCH v2 20/24] migration: Allow migrate commands to provide the migration config Fabiano Rosas
2025-07-01 8:35 ` Markus Armbruster
2025-08-13 21:27 ` Peter Xu
2025-08-14 15:13 ` Fabiano Rosas
2025-06-30 19:59 ` [PATCH v2 21/24] tests/qtest/migration: Take reference when passing %p to qtest_qmp Fabiano Rosas
2025-08-13 22:22 ` Peter Xu
2025-08-21 17:20 ` Fabiano Rosas
2025-06-30 19:59 ` [PATCH v2 22/24] tests/qtest/migration: Adapt the capabilities helper to take a config Fabiano Rosas
2025-08-14 14:02 ` Peter Xu
2025-06-30 19:59 ` [PATCH v2 23/24] tests/qtest/migration: Adapt convergence routines to config Fabiano Rosas
2025-06-30 19:59 ` [PATCH v2 24/24] tests/qtest/migration: Pass the migration config to file tests Fabiano Rosas
2025-08-14 14:24 ` Peter Xu [this message]
2025-08-14 15:30 ` Fabiano Rosas
2025-08-14 19:45 ` Peter Xu
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=aJ3xuGRnd0mHSlxp@x1.local \
--to=peterx@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=farosas@suse.de \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).