Alter migrate_qmp_fail() to allow both uri and channels
independently. For channels, convert string to a Dict.
No dealing with migrate_get_socket_address() here because
we will fail before starting the migration anyway.
Signed-off-by: Het Gala <het.gala@nutanix.com>
Suggested-by: Fabiano Rosas <farosas@suse.de>
---
tests/qtest/migration-helpers.c | 15 +++++++++++++--
tests/qtest/migration-helpers.h | 5 +++--
tests/qtest/migration-test.c | 4 ++--
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c
index 9af3c7d4d5..478c1f259b 100644
--- a/tests/qtest/migration-helpers.c
+++ b/tests/qtest/migration-helpers.c
@@ -92,17 +92,28 @@ bool migrate_watch_for_events(QTestState *who, const char *name,
return false;
}
-void migrate_qmp_fail(QTestState *who, const char *uri, const char *fmt, ...)
+void migrate_qmp_fail(QTestState *who, const char *uri,
+ const char *channels, const char *fmt, ...)
{
va_list ap;
QDict *args, *err;
+ Error *error_abort = NULL;
+ QObject *channels_obj = NULL;
va_start(ap, fmt);
args = qdict_from_vjsonf_nofail(fmt, ap);
va_end(ap);
g_assert(!qdict_haskey(args, "uri"));
- qdict_put_str(args, "uri", uri);
+ if (uri) {
+ qdict_put_str(args, "uri", uri);
+ }
+
+ g_assert(!qdict_haskey(args, "channels"));
+ if (channels) {
+ channels_obj = qobject_from_json(channels, &error_abort);
+ qdict_put_obj(args, "channels", channels_obj);
+ }
err = qtest_qmp_assert_failure_ref(
who, "{ 'execute': 'migrate', 'arguments': %p}", args);
diff --git a/tests/qtest/migration-helpers.h b/tests/qtest/migration-helpers.h
index e16a34c796..4e664148a5 100644
--- a/tests/qtest/migration-helpers.h
+++ b/tests/qtest/migration-helpers.h
@@ -33,8 +33,9 @@ G_GNUC_PRINTF(3, 4)
void migrate_incoming_qmp(QTestState *who, const char *uri,
const char *fmt, ...);
-G_GNUC_PRINTF(3, 4)
-void migrate_qmp_fail(QTestState *who, const char *uri, const char *fmt, ...);
+G_GNUC_PRINTF(4, 5)
+void migrate_qmp_fail(QTestState *who, const char *uri,
+ const char *channels, const char *fmt, ...);
void migrate_set_capability(QTestState *who, const char *capability,
bool value);
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 20b1dd031a..19bb93cb7d 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -1721,7 +1721,7 @@ static void test_precopy_common(MigrateCommon *args)
}
if (args->result == MIG_TEST_QMP_ERROR) {
- migrate_qmp_fail(from, args->connect_uri, "{}");
+ migrate_qmp_fail(from, args->connect_uri, NULL, "{}");
goto finish;
}
@@ -1816,7 +1816,7 @@ static void test_file_common(MigrateCommon *args, bool stop_src)
}
if (args->result == MIG_TEST_QMP_ERROR) {
- migrate_qmp_fail(from, args->connect_uri, "{}");
+ migrate_qmp_fail(from, args->connect_uri, NULL, "{}");
goto finish;
}
--
2.22.3
Het Gala <het.gala@nutanix.com> writes: > Alter migrate_qmp_fail() to allow both uri and channels > independently. For channels, convert string to a Dict. > No dealing with migrate_get_socket_address() here because > we will fail before starting the migration anyway. > > Signed-off-by: Het Gala <het.gala@nutanix.com> > Suggested-by: Fabiano Rosas <farosas@suse.de> > --- > tests/qtest/migration-helpers.c | 15 +++++++++++++-- > tests/qtest/migration-helpers.h | 5 +++-- > tests/qtest/migration-test.c | 4 ++-- > 3 files changed, 18 insertions(+), 6 deletions(-) > > diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c > index 9af3c7d4d5..478c1f259b 100644 > --- a/tests/qtest/migration-helpers.c > +++ b/tests/qtest/migration-helpers.c > @@ -92,17 +92,28 @@ bool migrate_watch_for_events(QTestState *who, const char *name, > return false; > } > > -void migrate_qmp_fail(QTestState *who, const char *uri, const char *fmt, ...) > +void migrate_qmp_fail(QTestState *who, const char *uri, > + const char *channels, const char *fmt, ...) > { > va_list ap; > QDict *args, *err; > + Error *error_abort = NULL; The error_abort needs to be the one defined in error.c. Just remove this line. > + QObject *channels_obj = NULL; > > va_start(ap, fmt); > args = qdict_from_vjsonf_nofail(fmt, ap); > va_end(ap); > > g_assert(!qdict_haskey(args, "uri")); > - qdict_put_str(args, "uri", uri); > + if (uri) { > + qdict_put_str(args, "uri", uri); > + } > + > + g_assert(!qdict_haskey(args, "channels")); > + if (channels) { > + channels_obj = qobject_from_json(channels, &error_abort); > + qdict_put_obj(args, "channels", channels_obj); > + } > > err = qtest_qmp_assert_failure_ref( > who, "{ 'execute': 'migrate', 'arguments': %p}", args); > diff --git a/tests/qtest/migration-helpers.h b/tests/qtest/migration-helpers.h > index e16a34c796..4e664148a5 100644 > --- a/tests/qtest/migration-helpers.h > +++ b/tests/qtest/migration-helpers.h > @@ -33,8 +33,9 @@ G_GNUC_PRINTF(3, 4) > void migrate_incoming_qmp(QTestState *who, const char *uri, > const char *fmt, ...); > > -G_GNUC_PRINTF(3, 4) > -void migrate_qmp_fail(QTestState *who, const char *uri, const char *fmt, ...); > +G_GNUC_PRINTF(4, 5) > +void migrate_qmp_fail(QTestState *who, const char *uri, > + const char *channels, const char *fmt, ...); > > void migrate_set_capability(QTestState *who, const char *capability, > bool value); > diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c > index 20b1dd031a..19bb93cb7d 100644 > --- a/tests/qtest/migration-test.c > +++ b/tests/qtest/migration-test.c > @@ -1721,7 +1721,7 @@ static void test_precopy_common(MigrateCommon *args) > } > > if (args->result == MIG_TEST_QMP_ERROR) { > - migrate_qmp_fail(from, args->connect_uri, "{}"); > + migrate_qmp_fail(from, args->connect_uri, NULL, "{}"); > goto finish; > } > > @@ -1816,7 +1816,7 @@ static void test_file_common(MigrateCommon *args, bool stop_src) > } > > if (args->result == MIG_TEST_QMP_ERROR) { > - migrate_qmp_fail(from, args->connect_uri, "{}"); > + migrate_qmp_fail(from, args->connect_uri, NULL, "{}"); > goto finish; > }
On 06/03/24 8:10 pm, Fabiano Rosas wrote: > Het Gala<het.gala@nutanix.com> writes: > >> Alter migrate_qmp_fail() to allow both uri and channels >> independently. For channels, convert string to a Dict. >> No dealing with migrate_get_socket_address() here because >> we will fail before starting the migration anyway. >> >> Signed-off-by: Het Gala<het.gala@nutanix.com> >> Suggested-by: Fabiano Rosas<farosas@suse.de> >> --- >> tests/qtest/migration-helpers.c | 15 +++++++++++++-- >> tests/qtest/migration-helpers.h | 5 +++-- >> tests/qtest/migration-test.c | 4 ++-- >> 3 files changed, 18 insertions(+), 6 deletions(-) >> >> diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c >> index 9af3c7d4d5..478c1f259b 100644 >> --- a/tests/qtest/migration-helpers.c >> +++ b/tests/qtest/migration-helpers.c >> @@ -92,17 +92,28 @@ bool migrate_watch_for_events(QTestState *who, const char *name, >> return false; >> } >> >> -void migrate_qmp_fail(QTestState *who, const char *uri, const char *fmt, ...) >> +void migrate_qmp_fail(QTestState *who, const char *uri, >> + const char *channels, const char *fmt, ...) >> { >> va_list ap; >> QDict *args, *err; >> + Error *error_abort = NULL; > The error_abort needs to be the one defined in error.c. Just remove this > line. Ack. Regards Het Gala
© 2016 - 2024 Red Hat, Inc.