tests/qtest: replace wait_command() with qtest_qmp_assert_success

Most usage of wait_command() is followed by qobject_unref(), which
is just a verbose re-implementation of qtest_qmp_assert_success().

Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20230601161347.1803440-7-berrange@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2023-06-01 17:13:43 +01:00 committed by Juan Quintela
parent cdf5ab5587
commit aca0406958
3 changed files with 74 additions and 157 deletions

View file

@ -36,54 +36,6 @@ bool migrate_watch_for_stop(QTestState *who, const char *name,
return false; return false;
} }
#ifndef _WIN32
/*
* Events can get in the way of responses we are actually waiting for.
*/
QDict *wait_command_fd(QTestState *who, int fd, const char *command, ...)
{
va_list ap;
QDict *resp, *ret;
va_start(ap, command);
qtest_qmp_vsend_fds(who, &fd, 1, command, ap);
va_end(ap);
resp = qtest_qmp_receive(who);
g_assert(!qdict_haskey(resp, "error"));
g_assert(qdict_haskey(resp, "return"));
ret = qdict_get_qdict(resp, "return");
qobject_ref(ret);
qobject_unref(resp);
return ret;
}
#endif
/*
* Events can get in the way of responses we are actually waiting for.
*/
QDict *wait_command(QTestState *who, const char *command, ...)
{
va_list ap;
QDict *resp, *ret;
va_start(ap, command);
resp = qtest_vqmp(who, command, ap);
va_end(ap);
g_assert(!qdict_haskey(resp, "error"));
g_assert(qdict_haskey(resp, "return"));
ret = qdict_get_qdict(resp, "return");
qobject_ref(ret);
qobject_unref(resp);
return ret;
}
/* /*
* Send QMP command "migrate". * Send QMP command "migrate".
* Arguments are built from @fmt... (formatted like * Arguments are built from @fmt... (formatted like
@ -111,7 +63,7 @@ void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...)
*/ */
QDict *migrate_query(QTestState *who) QDict *migrate_query(QTestState *who)
{ {
return wait_command(who, "{ 'execute': 'query-migrate' }"); return qtest_qmp_assert_success_ref(who, "{ 'execute': 'query-migrate' }");
} }
QDict *migrate_query_not_failed(QTestState *who) QDict *migrate_query_not_failed(QTestState *who)
@ -209,7 +161,8 @@ void wait_for_migration_fail(QTestState *from, bool allow_active)
} while (!failed); } while (!failed);
/* Is the machine currently running? */ /* Is the machine currently running? */
rsp_return = wait_command(from, "{ 'execute': 'query-status' }"); rsp_return = qtest_qmp_assert_success_ref(from,
"{ 'execute': 'query-status' }");
g_assert(qdict_haskey(rsp_return, "running")); g_assert(qdict_haskey(rsp_return, "running"));
g_assert(qdict_get_bool(rsp_return, "running")); g_assert(qdict_get_bool(rsp_return, "running"));
qobject_unref(rsp_return); qobject_unref(rsp_return);

View file

@ -18,14 +18,6 @@
bool migrate_watch_for_stop(QTestState *who, const char *name, bool migrate_watch_for_stop(QTestState *who, const char *name,
QDict *event, void *opaque); QDict *event, void *opaque);
#ifndef _WIN32
G_GNUC_PRINTF(3, 4)
QDict *wait_command_fd(QTestState *who, int fd, const char *command, ...);
#endif
G_GNUC_PRINTF(2, 3)
QDict *wait_command(QTestState *who, const char *command, ...);
G_GNUC_PRINTF(3, 4) G_GNUC_PRINTF(3, 4)
void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...); void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...);

View file

@ -342,7 +342,8 @@ static long long migrate_get_parameter_int(QTestState *who,
QDict *rsp; QDict *rsp;
long long result; long long result;
rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }"); rsp = qtest_qmp_assert_success_ref(
who, "{ 'execute': 'query-migrate-parameters' }");
result = qdict_get_int(rsp, parameter); result = qdict_get_int(rsp, parameter);
qobject_unref(rsp); qobject_unref(rsp);
return result; return result;
@ -373,7 +374,8 @@ static char *migrate_get_parameter_str(QTestState *who,
QDict *rsp; QDict *rsp;
char *result; char *result;
rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }"); rsp = qtest_qmp_assert_success_ref(
who, "{ 'execute': 'query-migrate-parameters' }");
result = g_strdup(qdict_get_str(rsp, parameter)); result = g_strdup(qdict_get_str(rsp, parameter));
qobject_unref(rsp); qobject_unref(rsp);
return result; return result;
@ -402,7 +404,8 @@ static long long migrate_get_parameter_bool(QTestState *who,
QDict *rsp; QDict *rsp;
int result; int result;
rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }"); rsp = qtest_qmp_assert_success_ref(
who, "{ 'execute': 'query-migrate-parameters' }");
result = qdict_get_bool(rsp, parameter); result = qdict_get_bool(rsp, parameter);
qobject_unref(rsp); qobject_unref(rsp);
return !!result; return !!result;
@ -443,41 +446,29 @@ static void migrate_ensure_converge(QTestState *who)
static void migrate_pause(QTestState *who) static void migrate_pause(QTestState *who)
{ {
QDict *rsp; qtest_qmp_assert_success(who, "{ 'execute': 'migrate-pause' }");
rsp = wait_command(who, "{ 'execute': 'migrate-pause' }");
qobject_unref(rsp);
} }
static void migrate_continue(QTestState *who, const char *state) static void migrate_continue(QTestState *who, const char *state)
{ {
QDict *rsp; qtest_qmp_assert_success(who,
rsp = wait_command(who,
"{ 'execute': 'migrate-continue'," "{ 'execute': 'migrate-continue',"
" 'arguments': { 'state': %s } }", " 'arguments': { 'state': %s } }",
state); state);
qobject_unref(rsp);
} }
static void migrate_recover(QTestState *who, const char *uri) static void migrate_recover(QTestState *who, const char *uri)
{ {
QDict *rsp; qtest_qmp_assert_success(who,
rsp = wait_command(who,
"{ 'execute': 'migrate-recover', " "{ 'execute': 'migrate-recover', "
" 'id': 'recover-cmd', " " 'id': 'recover-cmd', "
" 'arguments': { 'uri': %s } }", " 'arguments': { 'uri': %s } }",
uri); uri);
qobject_unref(rsp);
} }
static void migrate_cancel(QTestState *who) static void migrate_cancel(QTestState *who)
{ {
QDict *rsp; qtest_qmp_assert_success(who, "{ 'execute': 'migrate_cancel' }");
rsp = wait_command(who, "{ 'execute': 'migrate_cancel' }");
qobject_unref(rsp);
} }
static void migrate_set_capability(QTestState *who, const char *capability, static void migrate_set_capability(QTestState *who, const char *capability,
@ -493,10 +484,7 @@ static void migrate_set_capability(QTestState *who, const char *capability,
static void migrate_postcopy_start(QTestState *from, QTestState *to) static void migrate_postcopy_start(QTestState *from, QTestState *to)
{ {
QDict *rsp; qtest_qmp_assert_success(from, "{ 'execute': 'migrate-start-postcopy' }");
rsp = wait_command(from, "{ 'execute': 'migrate-start-postcopy' }");
qobject_unref(rsp);
if (!got_stop) { if (!got_stop) {
qtest_qmp_eventwait(from, "STOP"); qtest_qmp_eventwait(from, "STOP");
@ -785,7 +773,6 @@ test_migrate_tls_psk_start_common(QTestState *from,
{ {
struct TestMigrateTLSPSKData *data = struct TestMigrateTLSPSKData *data =
g_new0(struct TestMigrateTLSPSKData, 1); g_new0(struct TestMigrateTLSPSKData, 1);
QDict *rsp;
data->workdir = g_strdup_printf("%s/tlscredspsk0", tmpfs); data->workdir = g_strdup_printf("%s/tlscredspsk0", tmpfs);
data->pskfile = g_strdup_printf("%s/%s", data->workdir, data->pskfile = g_strdup_printf("%s/%s", data->workdir,
@ -801,7 +788,7 @@ test_migrate_tls_psk_start_common(QTestState *from,
test_tls_psk_init_alt(data->pskfilealt); test_tls_psk_init_alt(data->pskfilealt);
} }
rsp = wait_command(from, qtest_qmp_assert_success(from,
"{ 'execute': 'object-add'," "{ 'execute': 'object-add',"
" 'arguments': { 'qom-type': 'tls-creds-psk'," " 'arguments': { 'qom-type': 'tls-creds-psk',"
" 'id': 'tlscredspsk0'," " 'id': 'tlscredspsk0',"
@ -809,16 +796,14 @@ test_migrate_tls_psk_start_common(QTestState *from,
" 'dir': %s," " 'dir': %s,"
" 'username': 'qemu'} }", " 'username': 'qemu'} }",
data->workdir); data->workdir);
qobject_unref(rsp);
rsp = wait_command(to, qtest_qmp_assert_success(to,
"{ 'execute': 'object-add'," "{ 'execute': 'object-add',"
" 'arguments': { 'qom-type': 'tls-creds-psk'," " 'arguments': { 'qom-type': 'tls-creds-psk',"
" 'id': 'tlscredspsk0'," " 'id': 'tlscredspsk0',"
" 'endpoint': 'server'," " 'endpoint': 'server',"
" 'dir': %s } }", " 'dir': %s } }",
mismatch ? data->workdiralt : data->workdir); mismatch ? data->workdiralt : data->workdir);
qobject_unref(rsp);
migrate_set_parameter_str(from, "tls-creds", "tlscredspsk0"); migrate_set_parameter_str(from, "tls-creds", "tlscredspsk0");
migrate_set_parameter_str(to, "tls-creds", "tlscredspsk0"); migrate_set_parameter_str(to, "tls-creds", "tlscredspsk0");
@ -889,7 +874,6 @@ test_migrate_tls_x509_start_common(QTestState *from,
TestMigrateTLSX509 *args) TestMigrateTLSX509 *args)
{ {
TestMigrateTLSX509Data *data = g_new0(TestMigrateTLSX509Data, 1); TestMigrateTLSX509Data *data = g_new0(TestMigrateTLSX509Data, 1);
QDict *rsp;
data->workdir = g_strdup_printf("%s/tlscredsx5090", tmpfs); data->workdir = g_strdup_printf("%s/tlscredsx5090", tmpfs);
data->keyfile = g_strdup_printf("%s/key.pem", data->workdir); data->keyfile = g_strdup_printf("%s/key.pem", data->workdir);
@ -932,7 +916,7 @@ test_migrate_tls_x509_start_common(QTestState *from,
args->certhostname, args->certhostname,
args->certipaddr); args->certipaddr);
rsp = wait_command(from, qtest_qmp_assert_success(from,
"{ 'execute': 'object-add'," "{ 'execute': 'object-add',"
" 'arguments': { 'qom-type': 'tls-creds-x509'," " 'arguments': { 'qom-type': 'tls-creds-x509',"
" 'id': 'tlscredsx509client0'," " 'id': 'tlscredsx509client0',"
@ -941,13 +925,12 @@ test_migrate_tls_x509_start_common(QTestState *from,
" 'sanity-check': true," " 'sanity-check': true,"
" 'verify-peer': true} }", " 'verify-peer': true} }",
data->workdir); data->workdir);
qobject_unref(rsp);
migrate_set_parameter_str(from, "tls-creds", "tlscredsx509client0"); migrate_set_parameter_str(from, "tls-creds", "tlscredsx509client0");
if (args->certhostname) { if (args->certhostname) {
migrate_set_parameter_str(from, "tls-hostname", args->certhostname); migrate_set_parameter_str(from, "tls-hostname", args->certhostname);
} }
rsp = wait_command(to, qtest_qmp_assert_success(to,
"{ 'execute': 'object-add'," "{ 'execute': 'object-add',"
" 'arguments': { 'qom-type': 'tls-creds-x509'," " 'arguments': { 'qom-type': 'tls-creds-x509',"
" 'id': 'tlscredsx509server0'," " 'id': 'tlscredsx509server0',"
@ -956,11 +939,10 @@ test_migrate_tls_x509_start_common(QTestState *from,
" 'sanity-check': true," " 'sanity-check': true,"
" 'verify-peer': %i} }", " 'verify-peer': %i} }",
data->workdir, args->verifyclient); data->workdir, args->verifyclient);
qobject_unref(rsp);
migrate_set_parameter_str(to, "tls-creds", "tlscredsx509server0"); migrate_set_parameter_str(to, "tls-creds", "tlscredsx509server0");
if (args->authzclient) { if (args->authzclient) {
rsp = wait_command(to, qtest_qmp_assert_success(to,
"{ 'execute': 'object-add'," "{ 'execute': 'object-add',"
" 'arguments': { 'qom-type': 'authz-simple'," " 'arguments': { 'qom-type': 'authz-simple',"
" 'id': 'tlsauthz0'," " 'id': 'tlsauthz0',"
@ -1759,7 +1741,6 @@ static void test_precopy_tcp_tls_x509_reject_anon_client(void)
static void *test_migrate_fd_start_hook(QTestState *from, static void *test_migrate_fd_start_hook(QTestState *from,
QTestState *to) QTestState *to)
{ {
QDict *rsp;
int ret; int ret;
int pair[2]; int pair[2];
@ -1768,22 +1749,19 @@ static void *test_migrate_fd_start_hook(QTestState *from,
g_assert_cmpint(ret, ==, 0); g_assert_cmpint(ret, ==, 0);
/* Send the 1st socket to the target */ /* Send the 1st socket to the target */
rsp = wait_command_fd(to, pair[0], qtest_qmp_fds_assert_success(to, &pair[0], 1,
"{ 'execute': 'getfd'," "{ 'execute': 'getfd',"
" 'arguments': { 'fdname': 'fd-mig' }}"); " 'arguments': { 'fdname': 'fd-mig' }}");
qobject_unref(rsp);
close(pair[0]); close(pair[0]);
/* Start incoming migration from the 1st socket */ /* Start incoming migration from the 1st socket */
rsp = wait_command(to, "{ 'execute': 'migrate-incoming'," qtest_qmp_assert_success(to, "{ 'execute': 'migrate-incoming',"
" 'arguments': { 'uri': 'fd:fd-mig' }}"); " 'arguments': { 'uri': 'fd:fd-mig' }}");
qobject_unref(rsp);
/* Send the 2nd socket to the target */ /* Send the 2nd socket to the target */
rsp = wait_command_fd(from, pair[1], qtest_qmp_fds_assert_success(from, &pair[1], 1,
"{ 'execute': 'getfd'," "{ 'execute': 'getfd',"
" 'arguments': { 'fdname': 'fd-mig' }}"); " 'arguments': { 'fdname': 'fd-mig' }}");
qobject_unref(rsp);
close(pair[1]); close(pair[1]);
return NULL; return NULL;
@ -1990,8 +1968,6 @@ test_migrate_precopy_tcp_multifd_start_common(QTestState *from,
QTestState *to, QTestState *to,
const char *method) const char *method)
{ {
QDict *rsp;
migrate_set_parameter_int(from, "multifd-channels", 16); migrate_set_parameter_int(from, "multifd-channels", 16);
migrate_set_parameter_int(to, "multifd-channels", 16); migrate_set_parameter_int(to, "multifd-channels", 16);
@ -2002,9 +1978,8 @@ test_migrate_precopy_tcp_multifd_start_common(QTestState *from,
migrate_set_capability(to, "multifd", true); migrate_set_capability(to, "multifd", true);
/* Start incoming migration from the 1st socket */ /* Start incoming migration from the 1st socket */
rsp = wait_command(to, "{ 'execute': 'migrate-incoming'," qtest_qmp_assert_success(to, "{ 'execute': 'migrate-incoming',"
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}"); " 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
qobject_unref(rsp);
return NULL; return NULL;
} }
@ -2235,7 +2210,6 @@ static void test_multifd_tcp_cancel(void)
.hide_stderr = true, .hide_stderr = true,
}; };
QTestState *from, *to, *to2; QTestState *from, *to, *to2;
QDict *rsp;
g_autofree char *uri = NULL; g_autofree char *uri = NULL;
if (test_migrate_start(&from, &to, "defer", &args)) { if (test_migrate_start(&from, &to, "defer", &args)) {
@ -2251,9 +2225,8 @@ static void test_multifd_tcp_cancel(void)
migrate_set_capability(to, "multifd", true); migrate_set_capability(to, "multifd", true);
/* Start incoming migration from the 1st socket */ /* Start incoming migration from the 1st socket */
rsp = wait_command(to, "{ 'execute': 'migrate-incoming'," qtest_qmp_assert_success(to, "{ 'execute': 'migrate-incoming',"
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}"); " 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
qobject_unref(rsp);
/* Wait for the first serial output from the source */ /* Wait for the first serial output from the source */
wait_for_serial("src_serial"); wait_for_serial("src_serial");
@ -2283,9 +2256,8 @@ static void test_multifd_tcp_cancel(void)
migrate_set_capability(to2, "multifd", true); migrate_set_capability(to2, "multifd", true);
/* Start incoming migration from the 1st socket */ /* Start incoming migration from the 1st socket */
rsp = wait_command(to2, "{ 'execute': 'migrate-incoming'," qtest_qmp_assert_success(to2, "{ 'execute': 'migrate-incoming',"
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}"); " 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
qobject_unref(rsp);
g_free(uri); g_free(uri);
uri = migrate_get_socket_address(to2, "socket-address"); uri = migrate_get_socket_address(to2, "socket-address");