From: Laine Stump <laine@redhat.com>
Does this do what's needed for testing? (I haven't added any cases to
qemumonitorjsontest before, so it was a bit of an adventure to (I
hope) figure it out).
If this is correct, I'll squash it into Patch 1.
Signed-off-by: Laine Stump <laine@redhat.com>
---
tests/qemumonitorjsontest.c | 79 +++++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)
diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
index e34dbad7cd..f59b97c1c3 100644
--- a/tests/qemumonitorjsontest.c
+++ b/tests/qemumonitorjsontest.c
@@ -2776,6 +2776,84 @@ testQemuMonitorJSONGetSEVInfo(const void *opaque)
}
+static int
+testQemuMonitorJSONAnnounceInterface(const void *opaque)
+{
+ const testGenericData *data = opaque;
+ g_autoptr(qemuMonitorTest) test = NULL;
+
+ if (!(test = qemuMonitorTestNewSchema(data->xmlopt, data->schema)))
+ return -1;
+
+ /* Test 1 - all parameters are default */
+ if (qemuMonitorTestAddItemVerbatim(test,
+ "{"
+ " \"execute\": \"announce-self\","
+ " \"arguments\": {"
+ " \"initial\": 50,"
+ " \"max\": 550,"
+ " \"rounds\": 5,"
+ " \"step\": 50"
+ " },"
+ " \"id\":\"libvirt-1\""
+ "}",
+ NULL,
+ "{\"return\":{}}") < 0) {
+ return -1;
+ }
+
+
+ if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), NULL, 0, 0, 0, 0) < 0)
+ return -1;
+
+ /* Test 2 - interface device set, everything else default */
+ if (qemuMonitorTestAddItemVerbatim(test,
+ "{"
+ " \"execute\": \"announce-self\","
+ " \"arguments\": {"
+ " \"interfaces\":[\"net0\"],"
+ " \"initial\": 50,"
+ " \"max\": 550,"
+ " \"rounds\": 5,"
+ " \"step\": 50"
+ " },"
+ " \"id\":\"libvirt-2\""
+ "}",
+ NULL,
+ "{\"return\":{}}") < 0) {
+ return -1;
+ }
+
+
+ if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), "net0", 0, 0, 0, 0) < 0)
+ return -1;
+
+ /* Test 3 - all parameters explicitly set */
+ if (qemuMonitorTestAddItemVerbatim(test,
+ "{"
+ " \"execute\": \"announce-self\","
+ " \"arguments\": {"
+ " \"interfaces\":[\"skid00\"],"
+ " \"initial\": 23,"
+ " \"max\": 54,"
+ " \"rounds\": 867,"
+ " \"step\": 5309"
+ " },"
+ " \"id\":\"libvirt-3\""
+ "}",
+ NULL,
+ "{\"return\":{}}") < 0) {
+ return -1;
+ }
+
+
+ if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), "skid00", 23, 54, 867, 5309) < 0)
+ return -1;
+
+ return 0;
+}
+
+
struct testQemuMonitorJSONGetGuestCPUData {
const char *name;
bool qomListGet;
@@ -2940,6 +3018,7 @@ mymain(void)
DO_TEST(Transaction);
DO_TEST(BlockExportAdd);
DO_TEST(BlockdevReopen);
+ DO_TEST(AnnounceInterface);
DO_TEST_SIMPLE("qmp_capabilities", qemuMonitorJSONSetCapabilities);
DO_TEST_SIMPLE("system_powerdown", qemuMonitorJSONSystemPowerdown);
DO_TEST_SIMPLE("system_reset", qemuMonitorJSONSystemReset);
--
2.54.0
On Thu, Jun 04, 2026 at 17:17:01 -0400, Laine Stump wrote:
> From: Laine Stump <laine@redhat.com>
>
> Does this do what's needed for testing? (I haven't added any cases to
> qemumonitorjsontest before, so it was a bit of an adventure to (I
> hope) figure it out).
Well, you did much more than I actually wanted and it's on me for not
being specific :).
It would be completely enough to just do the auto-generated tests
(GEN_TEST_FUNC, DO_TEST_GEN). Those, if you pass arguments which
excercise all parameters, are usually sufficient as they still do schema
validation.
Specifically 'qemuMonitorTestAddItemVerbatim' that you used is a bit
harder to maintain if you want to add new stuff later.
>
> If this is correct, I'll squash it into Patch 1.
Anyways, it is correct; go ahead,
>
> Signed-off-by: Laine Stump <laine@redhat.com>
> ---
> tests/qemumonitorjsontest.c | 79 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 79 insertions(+)
>
> diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
> index e34dbad7cd..f59b97c1c3 100644
> --- a/tests/qemumonitorjsontest.c
> +++ b/tests/qemumonitorjsontest.c
> @@ -2776,6 +2776,84 @@ testQemuMonitorJSONGetSEVInfo(const void *opaque)
> }
>
>
> +static int
> +testQemuMonitorJSONAnnounceInterface(const void *opaque)
> +{
> + const testGenericData *data = opaque;
> + g_autoptr(qemuMonitorTest) test = NULL;
> +
> + if (!(test = qemuMonitorTestNewSchema(data->xmlopt, data->schema)))
> + return -1;
> +
> + /* Test 1 - all parameters are default */
> + if (qemuMonitorTestAddItemVerbatim(test,
> + "{"
> + " \"execute\": \"announce-self\","
> + " \"arguments\": {"
> + " \"initial\": 50,"
> + " \"max\": 550,"
> + " \"rounds\": 5,"
> + " \"step\": 50"
> + " },"
> + " \"id\":\"libvirt-1\""
> + "}",
> + NULL,
> + "{\"return\":{}}") < 0) {
> + return -1;
> + }
> +
> +
> + if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), NULL, 0, 0, 0, 0) < 0)
> + return -1;
> +
> + /* Test 2 - interface device set, everything else default */
> + if (qemuMonitorTestAddItemVerbatim(test,
> + "{"
> + " \"execute\": \"announce-self\","
> + " \"arguments\": {"
> + " \"interfaces\":[\"net0\"],"
> + " \"initial\": 50,"
> + " \"max\": 550,"
> + " \"rounds\": 5,"
> + " \"step\": 50"
> + " },"
> + " \"id\":\"libvirt-2\""
> + "}",
> + NULL,
> + "{\"return\":{}}") < 0) {
> + return -1;
> + }
> +
> +
> + if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), "net0", 0, 0, 0, 0) < 0)
> + return -1;
> +
> + /* Test 3 - all parameters explicitly set */
> + if (qemuMonitorTestAddItemVerbatim(test,
> + "{"
> + " \"execute\": \"announce-self\","
> + " \"arguments\": {"
> + " \"interfaces\":[\"skid00\"],"
> + " \"initial\": 23,"
> + " \"max\": 54,"
> + " \"rounds\": 867,"
> + " \"step\": 5309"
> + " },"
> + " \"id\":\"libvirt-3\""
> + "}",
> + NULL,
> + "{\"return\":{}}") < 0) {
> + return -1;
> + }
> +
> +
> + if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), "skid00", 23, 54, 867, 5309) < 0)
> + return -1;
> +
> + return 0;
> +}
> +
> +
> struct testQemuMonitorJSONGetGuestCPUData {
> const char *name;
> bool qomListGet;
> @@ -2940,6 +3018,7 @@ mymain(void)
> DO_TEST(Transaction);
> DO_TEST(BlockExportAdd);
> DO_TEST(BlockdevReopen);
> + DO_TEST(AnnounceInterface);
> DO_TEST_SIMPLE("qmp_capabilities", qemuMonitorJSONSetCapabilities);
> DO_TEST_SIMPLE("system_powerdown", qemuMonitorJSONSystemPowerdown);
> DO_TEST_SIMPLE("system_reset", qemuMonitorJSONSystemReset);
> --
> 2.54.0
>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
On 6/5/26 12:44 AM, Peter Krempa via Devel wrote:
> On Thu, Jun 04, 2026 at 17:17:01 -0400, Laine Stump wrote:
>> From: Laine Stump <laine@redhat.com>
>>
>> Does this do what's needed for testing? (I haven't added any cases to
>> qemumonitorjsontest before, so it was a bit of an adventure to (I
>> hope) figure it out).
>
> Well, you did much more than I actually wanted and it's on me for not
> being specific :).
>
> It would be completely enough to just do the auto-generated tests
> (GEN_TEST_FUNC, DO_TEST_GEN). Those, if you pass arguments which
> excercise all parameters, are usually sufficient as they still do schema
> validation.
>
> Specifically 'qemuMonitorTestAddItemVerbatim' that you used is a bit
> harder to maintain if you want to add new stuff later.
I guess the one thing this more verbose test does is make sure that
parameters left to the default do get the intended default value, and
when a parameter *isn't* default that it is set properly. Otherwise
definitely it looks like those other macros would be huge time savers.
>
>>
>> If this is correct, I'll squash it into Patch 1.
>
> Anyways, it is correct; go ahead,
Okay, thanks!
>
>>
>> Signed-off-by: Laine Stump <laine@redhat.com>
>> ---
>> tests/qemumonitorjsontest.c | 79 +++++++++++++++++++++++++++++++++++++
>> 1 file changed, 79 insertions(+)
>>
>> diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
>> index e34dbad7cd..f59b97c1c3 100644
>> --- a/tests/qemumonitorjsontest.c
>> +++ b/tests/qemumonitorjsontest.c
>> @@ -2776,6 +2776,84 @@ testQemuMonitorJSONGetSEVInfo(const void *opaque)
>> }
>>
>>
>> +static int
>> +testQemuMonitorJSONAnnounceInterface(const void *opaque)
>> +{
>> + const testGenericData *data = opaque;
>> + g_autoptr(qemuMonitorTest) test = NULL;
>> +
>> + if (!(test = qemuMonitorTestNewSchema(data->xmlopt, data->schema)))
>> + return -1;
>> +
>> + /* Test 1 - all parameters are default */
>> + if (qemuMonitorTestAddItemVerbatim(test,
>> + "{"
>> + " \"execute\": \"announce-self\","
>> + " \"arguments\": {"
>> + " \"initial\": 50,"
>> + " \"max\": 550,"
>> + " \"rounds\": 5,"
>> + " \"step\": 50"
>> + " },"
>> + " \"id\":\"libvirt-1\""
>> + "}",
>> + NULL,
>> + "{\"return\":{}}") < 0) {
>> + return -1;
>> + }
>> +
>> +
>> + if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), NULL, 0, 0, 0, 0) < 0)
>> + return -1;
>> +
>> + /* Test 2 - interface device set, everything else default */
>> + if (qemuMonitorTestAddItemVerbatim(test,
>> + "{"
>> + " \"execute\": \"announce-self\","
>> + " \"arguments\": {"
>> + " \"interfaces\":[\"net0\"],"
>> + " \"initial\": 50,"
>> + " \"max\": 550,"
>> + " \"rounds\": 5,"
>> + " \"step\": 50"
>> + " },"
>> + " \"id\":\"libvirt-2\""
>> + "}",
>> + NULL,
>> + "{\"return\":{}}") < 0) {
>> + return -1;
>> + }
>> +
>> +
>> + if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), "net0", 0, 0, 0, 0) < 0)
>> + return -1;
>> +
>> + /* Test 3 - all parameters explicitly set */
>> + if (qemuMonitorTestAddItemVerbatim(test,
>> + "{"
>> + " \"execute\": \"announce-self\","
>> + " \"arguments\": {"
>> + " \"interfaces\":[\"skid00\"],"
>> + " \"initial\": 23,"
>> + " \"max\": 54,"
>> + " \"rounds\": 867,"
>> + " \"step\": 5309"
>> + " },"
>> + " \"id\":\"libvirt-3\""
>> + "}",
>> + NULL,
>> + "{\"return\":{}}") < 0) {
>> + return -1;
>> + }
>> +
>> +
>> + if (qemuMonitorJSONAnnounceSelf(qemuMonitorTestGetMonitor(test), "skid00", 23, 54, 867, 5309) < 0)
>> + return -1;
>> +
>> + return 0;
>> +}
>> +
>> +
>> struct testQemuMonitorJSONGetGuestCPUData {
>> const char *name;
>> bool qomListGet;
>> @@ -2940,6 +3018,7 @@ mymain(void)
>> DO_TEST(Transaction);
>> DO_TEST(BlockExportAdd);
>> DO_TEST(BlockdevReopen);
>> + DO_TEST(AnnounceInterface);
>> DO_TEST_SIMPLE("qmp_capabilities", qemuMonitorJSONSetCapabilities);
>> DO_TEST_SIMPLE("system_powerdown", qemuMonitorJSONSystemPowerdown);
>> DO_TEST_SIMPLE("system_reset", qemuMonitorJSONSystemReset);
>> --
>> 2.54.0
>>
>
> Reviewed-by: Peter Krempa <pkrempa@redhat.com>
>
© 2016 - 2026 Red Hat, Inc.