[PATCH v2 1/3] test_driver: Implement virDomainGetMessages

Martin Kletzander mkletzan at redhat.com
Thu Jun 24 15:19:09 UTC 2021


On Thu, Jun 24, 2021 at 06:59:59PM +0800, Luke Yue wrote:
>Signed-off-by: Luke Yue <lukedyue at gmail.com>
>---
> src/test/test_driver.c | 53 ++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 53 insertions(+)
>
>diff --git a/src/test/test_driver.c b/src/test/test_driver.c
>index 65710b78ef..dff96bceb6 100644
>--- a/src/test/test_driver.c
>+++ b/src/test/test_driver.c
>@@ -9331,6 +9331,58 @@ testDomainCheckpointDelete(virDomainCheckpointPtr checkpoint,
>     return ret;
> }
>
>+static int
>+testDomainGetMessages(virDomainPtr dom,
>+                      char ***msgs,
>+                      unsigned int flags)
>+{
>+    virDomainObj *vm = NULL;
>+    int rv = -1;
>+    size_t i, n;
>+    int nmsgs;
>+
>+    virCheckFlags(VIR_DOMAIN_MESSAGE_DEPRECATION |
>+                  VIR_DOMAIN_MESSAGE_TAINTING, -1);
>+
>+    if (!(vm = testDomObjFromDomain(dom)))
>+        return -1;
>+
>+    *msgs = NULL;
>+    nmsgs = 0;
>+    n = 0;
>+
>+    if (!flags || (flags & VIR_DOMAIN_MESSAGE_TAINTING)) {
>+        nmsgs += __builtin_popcount(vm->taint);
>+        *msgs = g_renew(char *, *msgs, nmsgs+1);
>+
>+        for (i = 0; i < VIR_DOMAIN_TAINT_LAST; i++) {
>+            if (vm->taint & (1 << i)) {
>+                (*msgs)[n++] = g_strdup_printf(
>+                    _("tainted: %s"),
>+                    _(virDomainTaintMessageTypeToString(i)));
>+            }
>+        }
>+    }
>+
>+    if (!flags || (flags & VIR_DOMAIN_MESSAGE_DEPRECATION)) {
>+        nmsgs += vm->ndeprecations;
>+        *msgs = g_renew(char *, *msgs, nmsgs+1);
>+
>+        for (i = 0; i < vm->ndeprecations; i++) {
>+            (*msgs)[n++] = g_strdup_printf(
>+                _("deprecated configuration: %s"),
>+                vm->deprecations[i]);
>+        }
>+    }
>+
>+    (*msgs)[nmsgs] = NULL;
>+
>+    rv = nmsgs;
>+
>+    virDomainObjEndAPI(&vm);
>+    return rv;
>+}
>+

As I mentioned in the review for v1, it is nice that someone can check how this
API behaves without spinning up a VM, just using the test driver.  However most
of this code is copy-paste from the qemu driver and can hence be extracted to a
separate function which would be called from both drivers (and maybe more than
the ones mentioned here are using the same logic).  That would make the codebase
smaller, the library smaller, it would keep the test driver updated and it would
actually test the codepath used in the qemu driver.

> /*
>  * Test driver
>  */
>@@ -9489,6 +9541,7 @@ static virHypervisorDriver testHypervisorDriver = {
>     .domainCheckpointLookupByName = testDomainCheckpointLookupByName, /* 5.6.0 */
>     .domainCheckpointGetParent = testDomainCheckpointGetParent, /* 5.6.0 */
>     .domainCheckpointDelete = testDomainCheckpointDelete, /* 5.6.0 */
>+    .domainGetMessages = testDomainGetMessages, /* 7.5.0 */
> };
>
> static virNetworkDriver testNetworkDriver = {
>-- 
>2.32.0
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20210624/e3ca04f5/attachment-0001.sig>


More information about the libvir-list mailing list