From e22f2f5c9cb198cac7dd828c61ae438c00de82c0 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Fri, 2 Oct 2009 10:05:17 -0400 Subject: [PATCH] test: Support loading node device info from file/XML Also add some XML examples. Signed-off-by: Cole Robinson --- examples/xml/test/testdev.xml | 16 +++++++++++ examples/xml/test/testnode.xml | 1 + examples/xml/test/testnodeinline.xml | 19 +++++++++++++ src/test/test_driver.c | 40 +++++++++++++++++++++++++++- 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 examples/xml/test/testdev.xml diff --git a/examples/xml/test/testdev.xml b/examples/xml/test/testdev.xml new file mode 100644 index 0000000000..c49caa7233 --- /dev/null +++ b/examples/xml/test/testdev.xml @@ -0,0 +1,16 @@ + + File_test_device + + + Libvirt + Test driver + 123456 + 11111111-2222-3333-4444-555555555555 + + + Libvirt + Test Driver + 01/22/2007 + + + diff --git a/examples/xml/test/testnode.xml b/examples/xml/test/testnode.xml index 1ad7a1083a..adc5440ab6 100644 --- a/examples/xml/test/testnode.xml +++ b/examples/xml/test/testnode.xml @@ -14,6 +14,7 @@ + 6000 diff --git a/examples/xml/test/testnodeinline.xml b/examples/xml/test/testnodeinline.xml index 1810d4d6fe..b353f390a7 100644 --- a/examples/xml/test/testnodeinline.xml +++ b/examples/xml/test/testnodeinline.xml @@ -97,6 +97,25 @@ + + + File_test_device + + + Libvirt + Test driver + 123456 + 11111111-2222-3333-4444-555555555555 + + + Libvirt + Test Driver + 01/22/2007 + + + + + 6000 i986 diff --git a/src/test/test_driver.c b/src/test/test_driver.c index add86c55e3..0b866d2144 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -547,7 +547,8 @@ static int testOpenFromFile(virConnectPtr conn, char *str; xmlDocPtr xml = NULL; xmlNodePtr root = NULL; - xmlNodePtr *domains = NULL, *networks = NULL, *ifaces = NULL, *pools = NULL; + xmlNodePtr *domains = NULL, *networks = NULL, *ifaces = NULL, + *pools = NULL, *devs = NULL; xmlXPathContextPtr ctxt = NULL; virNodeInfoPtr nodeInfo; virNetworkObjPtr net; @@ -841,6 +842,43 @@ static int testOpenFromFile(virConnectPtr conn, } VIR_FREE(pools); + ret = virXPathNodeSet(conn, "/node/device", ctxt, &devs); + if (ret < 0) { + testError(NULL, VIR_ERR_XML_ERROR, "%s", _("node device list")); + goto error; + } + for (i = 0 ; i < ret ; i++) { + virNodeDeviceDefPtr def; + virNodeDeviceObjPtr dev; + char *relFile = virXMLPropString(devs[i], "file"); + + if (relFile != NULL) { + char *absFile = testBuildFilename(file, relFile); + VIR_FREE(relFile); + + if (!absFile) { + testError(NULL, VIR_ERR_INTERNAL_ERROR, "%s", + _("resolving device filename")); + goto error; + } + + def = virNodeDeviceDefParseFile(conn, absFile, 0); + VIR_FREE(absFile); + if (!def) + goto error; + } else { + if ((def = virNodeDeviceDefParseNode(conn, xml, devs[i], 0)) == NULL) + goto error; + } + if (!(dev = virNodeDeviceAssignDef(conn, &privconn->devs, def))) { + virNodeDeviceDefFree(def); + goto error; + } + virNodeDeviceObjUnlock(dev); + } + VIR_FREE(devs); + + xmlXPathFreeContext(ctxt); xmlFreeDoc(xml); testDriverUnlock(privconn);