tests/qtest: optimize migrate_set_ports
Do not query connection parameters if all port numbers are known. This is more efficient, and also solves a problem for the cpr-transfer test. At the point where cpr-transfer calls migrate_qmp and migrate_set_ports, the monitor is not connected and queries are not allowed. Port=0 is never used for cpr-transfer. Signed-off-by: Steve Sistare <steven.sistare@oracle.com> Reviewed-by: Peter Xu <peterx@redhat.com> Link: https://lore.kernel.org/r/1736967650-129648-19-git-send-email-steven.sistare@oracle.com Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
fdbfbfc75e
commit
903a65120d
@ -135,25 +135,32 @@ migrate_get_connect_qdict(QTestState *who)
|
|||||||
|
|
||||||
void migrate_set_ports(QTestState *to, QList *channel_list)
|
void migrate_set_ports(QTestState *to, QList *channel_list)
|
||||||
{
|
{
|
||||||
QDict *addr;
|
g_autoptr(QDict) addr = NULL;
|
||||||
QListEntry *entry;
|
QListEntry *entry;
|
||||||
const char *addr_port = NULL;
|
const char *addr_port = NULL;
|
||||||
|
|
||||||
addr = migrate_get_connect_qdict(to);
|
|
||||||
|
|
||||||
QLIST_FOREACH_ENTRY(channel_list, entry) {
|
QLIST_FOREACH_ENTRY(channel_list, entry) {
|
||||||
QDict *channel = qobject_to(QDict, qlist_entry_obj(entry));
|
QDict *channel = qobject_to(QDict, qlist_entry_obj(entry));
|
||||||
QDict *addrdict = qdict_get_qdict(channel, "addr");
|
QDict *addrdict = qdict_get_qdict(channel, "addr");
|
||||||
|
|
||||||
if (qdict_haskey(addrdict, "port") &&
|
if (!qdict_haskey(addrdict, "port") ||
|
||||||
qdict_haskey(addr, "port") &&
|
strcmp(qdict_get_str(addrdict, "port"), "0")) {
|
||||||
(strcmp(qdict_get_str(addrdict, "port"), "0") == 0)) {
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fetch addr only if needed, so tests that are not yet connected to
|
||||||
|
* the monitor do not query it. Such tests cannot use port=0.
|
||||||
|
*/
|
||||||
|
if (!addr) {
|
||||||
|
addr = migrate_get_connect_qdict(to);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qdict_haskey(addr, "port")) {
|
||||||
addr_port = qdict_get_str(addr, "port");
|
addr_port = qdict_get_str(addr, "port");
|
||||||
qdict_put_str(addrdict, "port", addr_port);
|
qdict_put_str(addrdict, "port", addr_port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qobject_unref(addr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool migrate_watch_for_events(QTestState *who, const char *name,
|
bool migrate_watch_for_events(QTestState *who, const char *name,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user