Daniel P. Berrangé <berra...@redhat.com> wrote: > When running migration tests we monitor for a STOP event so we can skip > redundant waits. This will be needed for the RESUME event too shortly. > > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com>
Reviewed-by: Juan Quintela <quint...@redhat.com> i.e. it is better that what we have now. But > diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c > index f6f3c6680f..61396335cc 100644 > --- a/tests/qtest/migration-helpers.c > +++ b/tests/qtest/migration-helpers.c > @@ -24,14 +24,20 @@ > #define MIGRATION_STATUS_WAIT_TIMEOUT 120 > > bool got_stop; > +bool got_resume; > > -static void check_stop_event(QTestState *who) > +static void check_events(QTestState *who) > { > QDict *event = qtest_qmp_event_ref(who, "STOP"); > if (event) { > got_stop = true; > qobject_unref(event); > } > + event = qtest_qmp_event_ref(who, "RESUME"); > + if (event) { > + got_resume = true; > + qobject_unref(event); > + } > } What happens if we receive the events in the order RESUME/STOP (I mean in the big scheme of things, not that it makes sense in this particular case). QDict *qtest_qmp_event_ref(QTestState *s, const char *event) { while (s->pending_events) { GList *first = s->pending_events; QDict *response = (QDict *)first->data; s->pending_events = g_list_delete_link(s->pending_events, first); if (!strcmp(qdict_get_str(response, "event"), event)) { return response; } qobject_unref(response); } return NULL; } if we don't found the event that we are searching for, we just drop it. Does this makes sense if we are searching only for more than one event? Later, Juan.