migrate_get_socket_address implicitly converts SocketAddress into str.
Move migrate_get_socket_address inside migrate_get_connect_uri which
should return the uri string instead.
Signed-off-by: Het Gala <het.gala@nutanix.com>
Suggested-by: Fabiano Rosas <farosas@suse.de>
---
tests/qtest/migration-helpers.c | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c
index 9af3c7d4d5..3c3fe9d8aa 100644
--- a/tests/qtest/migration-helpers.c
+++ b/tests/qtest/migration-helpers.c
@@ -49,12 +49,12 @@ static char *SocketAddress_to_str(SocketAddress *addr)
}
}
-static char *
+static SocketAddress *
migrate_get_socket_address(QTestState *who, const char *parameter)
{
QDict *rsp;
- char *result;
SocketAddressList *addrs;
+ SocketAddress *addr;
Visitor *iv = NULL;
QObject *object;
@@ -63,14 +63,24 @@ migrate_get_socket_address(QTestState *who, const char *parameter)
iv = qobject_input_visitor_new(object);
visit_type_SocketAddressList(iv, NULL, &addrs, &error_abort);
+ addr = addrs->value;
visit_free(iv);
- /* we are only using a single address */
- result = SocketAddress_to_str(addrs->value);
-
- qapi_free_SocketAddressList(addrs);
qobject_unref(rsp);
- return result;
+ return addr;
+}
+
+static char *
+migrate_get_connect_uri(QTestState *who, const char *parameter)
+{
+ SocketAddress *addrs;
+ char *connect_uri;
+
+ addrs = migrate_get_socket_address(who, parameter);
+ connect_uri = SocketAddress_to_str(addrs);
+
+ qapi_free_SocketAddress(addrs);
+ return connect_uri;
}
bool migrate_watch_for_events(QTestState *who, const char *name,
@@ -130,7 +140,7 @@ void migrate_qmp(QTestState *who, QTestState *to, const char *uri,
g_assert(!qdict_haskey(args, "uri"));
if (!uri) {
- connect_uri = migrate_get_socket_address(to, "socket-address");
+ connect_uri = migrate_get_connect_uri(to, "socket-address");
}
qdict_put_str(args, "uri", uri ? uri : connect_uri);
--
2.22.3
Het Gala <het.gala@nutanix.com> writes:
> migrate_get_socket_address implicitly converts SocketAddress into str.
> Move migrate_get_socket_address inside migrate_get_connect_uri which
> should return the uri string instead.
>
> Signed-off-by: Het Gala <het.gala@nutanix.com>
> Suggested-by: Fabiano Rosas <farosas@suse.de>
> ---
> tests/qtest/migration-helpers.c | 26 ++++++++++++++++++--------
> 1 file changed, 18 insertions(+), 8 deletions(-)
>
> diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c
> index 9af3c7d4d5..3c3fe9d8aa 100644
> --- a/tests/qtest/migration-helpers.c
> +++ b/tests/qtest/migration-helpers.c
> @@ -49,12 +49,12 @@ static char *SocketAddress_to_str(SocketAddress *addr)
> }
> }
>
> -static char *
> +static SocketAddress *
> migrate_get_socket_address(QTestState *who, const char *parameter)
> {
> QDict *rsp;
> - char *result;
> SocketAddressList *addrs;
> + SocketAddress *addr;
> Visitor *iv = NULL;
> QObject *object;
>
> @@ -63,14 +63,24 @@ migrate_get_socket_address(QTestState *who, const char *parameter)
>
> iv = qobject_input_visitor_new(object);
> visit_type_SocketAddressList(iv, NULL, &addrs, &error_abort);
> + addr = addrs->value;
> visit_free(iv);
>
> - /* we are only using a single address */
> - result = SocketAddress_to_str(addrs->value);
> -
> - qapi_free_SocketAddressList(addrs);
> qobject_unref(rsp);
> - return result;
> + return addr;
> +}
> +
> +static char *
> +migrate_get_connect_uri(QTestState *who, const char *parameter)
> +{
> + SocketAddress *addrs;
> + char *connect_uri;
> +
> + addrs = migrate_get_socket_address(who, parameter);
> + connect_uri = SocketAddress_to_str(addrs);
> +
> + qapi_free_SocketAddress(addrs);
> + return connect_uri;
> }
>
> bool migrate_watch_for_events(QTestState *who, const char *name,
> @@ -130,7 +140,7 @@ void migrate_qmp(QTestState *who, QTestState *to, const char *uri,
>
> g_assert(!qdict_haskey(args, "uri"));
> if (!uri) {
> - connect_uri = migrate_get_socket_address(to, "socket-address");
> + connect_uri = migrate_get_connect_uri(to, "socket-address");
What's the point of the "socket-address" argument here? Seems a bit
nonsensical to me to call: migrate_get_socket_address(..., "socket-address").
What about we just suppress this throughout the stack and directly call:
object = qdict_get(rsp, "socket-address");
On 11/03/24 11:49 pm, Fabiano Rosas wrote:
> Het Gala<het.gala@nutanix.com> writes:
>
>>
>> bool migrate_watch_for_events(QTestState *who, const char *name,
>> @@ -130,7 +140,7 @@ void migrate_qmp(QTestState *who, QTestState *to, const char *uri,
>>
>> g_assert(!qdict_haskey(args, "uri"));
>> if (!uri) {
>> - connect_uri = migrate_get_socket_address(to, "socket-address");
>> + connect_uri = migrate_get_connect_uri(to, "socket-address");
> What's the point of the "socket-address" argument here? Seems a bit
> nonsensical to me to call: migrate_get_socket_address(..., "socket-address").
>
> What about we just suppress this throughout the stack and directly call:
>
> object = qdict_get(rsp, "socket-address");
Fabiano, I didn't get clearly understand your point here. From what I
understand,
you want to call just
1. migrate_get_connect_uri(to) and migrate_get_connect_qdict(to)
2. delete migrate_get_socket_address(..., "socket-address") altogether
3. Just call qdict_get(rsp, "socket-address") which will return an
object 4. Then convert this object into qdict and uri string respectively ?
Hmm, If that's the case, converting to qdict shouldn't be a problem. But
for uri string is there a simpler method or writing a parsing function
would be needed ?
Regards,
Het Gala
Het Gala <het.gala@nutanix.com> writes:
> On 11/03/24 11:49 pm, Fabiano Rosas wrote:
>> Het Gala<het.gala@nutanix.com> writes:
>>
>>>
>>> bool migrate_watch_for_events(QTestState *who, const char *name,
>>> @@ -130,7 +140,7 @@ void migrate_qmp(QTestState *who, QTestState *to, const char *uri,
>>>
>>> g_assert(!qdict_haskey(args, "uri"));
>>> if (!uri) {
>>> - connect_uri = migrate_get_socket_address(to, "socket-address");
>>> + connect_uri = migrate_get_connect_uri(to, "socket-address");
>> What's the point of the "socket-address" argument here? Seems a bit
>> nonsensical to me to call: migrate_get_socket_address(..., "socket-address").
>>
>> What about we just suppress this throughout the stack and directly call:
>>
>> object = qdict_get(rsp, "socket-address");
>
> Fabiano, I didn't get clearly understand your point here. From what I
> understand,
> you want to call just
> 1. migrate_get_connect_uri(to) and migrate_get_connect_qdict(to)
Yes.
> 2. delete migrate_get_socket_address(..., "socket-address") altogether
No, just the string argument, not the whole function:
static char *migrate_get_socket_address(QTestState *who) <----
{
QDict *rsp;
char *result;
SocketAddressList *addrs;
Visitor *iv = NULL;
QObject *object;
rsp = migrate_query(who);
object = qdict_get(rsp, "socket-address"); <-----
...
}
If the thing is called migrate_get_SOCKET_ADDRESS(), it's obvious that
the "socket-address" is the parameter we want. We even call
SocketAddress_to_str, so there's no point in having that argument
there. We will never call the function with something else in
'parameter'.
On 12/03/24 2:21 am, Fabiano Rosas wrote:
> Het Gala<het.gala@nutanix.com> writes:
>
>> On 11/03/24 11:49 pm, Fabiano Rosas wrote:
>>> Het Gala<het.gala@nutanix.com> writes:
>>>
>>>> bool migrate_watch_for_events(QTestState *who, const char *name,
>>>> @@ -130,7 +140,7 @@ void migrate_qmp(QTestState *who, QTestState *to, const char *uri,
>>>>
>>>> g_assert(!qdict_haskey(args, "uri"));
>>>> if (!uri) {
>>>> - connect_uri = migrate_get_socket_address(to, "socket-address");
>>>> + connect_uri = migrate_get_connect_uri(to, "socket-address");
>>> What's the point of the "socket-address" argument here? Seems a bit
>>> nonsensical to me to call: migrate_get_socket_address(..., "socket-address").
>>>
>>> What about we just suppress this throughout the stack and directly call:
>>>
>>> object = qdict_get(rsp, "socket-address");
>> Fabiano, I didn't get clearly understand your point here. From what I
>> understand,
>> you want to call just
>> 1. migrate_get_connect_uri(to) and migrate_get_connect_qdict(to)
> Yes.
Ack
>> 2. delete migrate_get_socket_address(..., "socket-address") altogether
> No, just the string argument, not the whole function:
>
> static char *migrate_get_socket_address(QTestState *who) <----
> {
> QDict *rsp;
> char *result;
> SocketAddressList *addrs;
> Visitor *iv = NULL;
> QObject *object;
>
> rsp = migrate_query(who);
> object = qdict_get(rsp, "socket-address"); <-----
> ...
> }
>
> If the thing is called migrate_get_SOCKET_ADDRESS(), it's obvious that
> the "socket-address" is the parameter we want. We even call
> SocketAddress_to_str, so there's no point in having that argument
> there. We will never call the function with something else in
> 'parameter'.
Ahh, okay. I got your point, and yes, it makes sense. Will just call
migrate_get_socket_address(to) and let the qdict_get() call
"socket-address" internally.
Regards,
Het Gala
© 2016 - 2026 Red Hat, Inc.