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 <[email protected]>

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 <[email protected]>
---
  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 <[email protected]>


Reply via email to