[libvirt] [PATCH 9/9] virpcitest: Test virPCIDeviceDetach failure

Jiri Denemark jdenemar at redhat.com
Fri Jan 17 10:39:25 UTC 2014


Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
---
 tests/virpcitest.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/tests/virpcitest.c b/tests/virpcitest.c
index 848014d..6a2291d 100644
--- a/tests/virpcitest.c
+++ b/tests/virpcitest.c
@@ -258,6 +258,37 @@ cleanup:
 }
 
 static int
+testVirPCIDeviceDetachFail(const void *opaque)
+{
+    const struct testPCIDevData *data = opaque;
+    int ret = -1;
+    virPCIDevicePtr dev;
+
+    dev = virPCIDeviceNew(data->domain, data->bus, data->slot, data->function);
+    if (!dev)
+        goto cleanup;
+
+    if (virPCIDeviceSetStubDriver(dev, "vfio-pci") < 0)
+        goto cleanup;
+
+    if (virPCIDeviceDetach(dev, NULL, NULL) < 0) {
+        if (virTestGetVerbose() || virTestGetDebug())
+            virDispatchError(NULL);
+        virResetLastError();
+        ret = 0;
+    } else {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       "Attaching device %s to %s should have failed",
+                       virPCIDeviceGetName(dev),
+                       virPCIDeviceGetStubDriver(dev));
+    }
+
+cleanup:
+    virPCIDeviceFree(dev);
+    return ret;
+}
+
+static int
 testVirPCIDeviceReattachSingle(const void *opaque)
 {
     const struct testPCIDevData *data = opaque;
@@ -389,6 +420,8 @@ mymain(void)
     DO_TEST_PCI(testVirPCIDeviceIsAssignable, 5, 0x90, 1, 0);
     DO_TEST_PCI(testVirPCIDeviceIsAssignable, 1, 1, 0, 0);
 
+    DO_TEST_PCI(testVirPCIDeviceDetachFail, 0, 0x0a, 1, 0);
+
     /* Reattach a device already bound to non-stub a driver */
     DO_TEST_PCI_DRIVER(0, 0x0a, 1, 0, "i915");
     DO_TEST_PCI(testVirPCIDeviceReattachSingle, 0, 0x0a, 1, 0);
-- 
1.8.5.3




More information about the libvir-list mailing list