From 47e86f9f7e44d6b53c96c2161d176f912903d719 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 31 Oct 2013 11:05:20 +0000 Subject: [PATCH] virpcitest: Introduce check for unbinded devices This just introduces the test for bug fixed in df4283a55bf. Signed-off-by: Michal Privoznik --- tests/virpcitest.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/tests/virpcitest.c b/tests/virpcitest.c index 45891a9577..d301a941e6 100644 --- a/tests/virpcitest.c +++ b/tests/virpcitest.c @@ -69,11 +69,12 @@ static int testVirPCIDeviceDetach(const void *oaque ATTRIBUTE_UNUSED) { int ret = -1; - virPCIDevicePtr dev; + virPCIDevicePtr dev = NULL, unbindedDev = NULL; virPCIDeviceListPtr activeDevs = NULL, inactiveDevs = NULL; int count; if (!(dev = virPCIDeviceNew(0, 0, 1, 0)) || + !(unbindedDev = virPCIDeviceNew(0, 0, 3, 0)) || !(activeDevs = virPCIDeviceListNew()) || !(inactiveDevs = virPCIDeviceListNew())) goto cleanup; @@ -81,7 +82,8 @@ testVirPCIDeviceDetach(const void *oaque ATTRIBUTE_UNUSED) CHECK_LIST_COUNT(activeDevs, 0); CHECK_LIST_COUNT(inactiveDevs, 0); - if (virPCIDeviceSetStubDriver(dev, "pci-stub") < 0) + if (virPCIDeviceSetStubDriver(dev, "pci-stub") < 0 || + virPCIDeviceSetStubDriver(unbindedDev, "pci-stub") < 0) goto cleanup; if (virPCIDeviceDetach(dev, activeDevs, inactiveDevs) < 0) @@ -90,9 +92,16 @@ testVirPCIDeviceDetach(const void *oaque ATTRIBUTE_UNUSED) CHECK_LIST_COUNT(activeDevs, 0); CHECK_LIST_COUNT(inactiveDevs, 1); + if (virPCIDeviceDetach(unbindedDev, activeDevs, inactiveDevs) < 0) + goto cleanup; + + CHECK_LIST_COUNT(activeDevs, 0); + CHECK_LIST_COUNT(inactiveDevs, 2); + ret = 0; cleanup: virPCIDeviceFree(dev); + virPCIDeviceFree(unbindedDev); virObjectUnref(activeDevs); virObjectUnref(inactiveDevs); return ret; @@ -104,22 +113,29 @@ static int testVirPCIDeviceReattach(const void *oaque ATTRIBUTE_UNUSED) { int ret = -1; - virPCIDevicePtr dev = NULL; + virPCIDevicePtr dev = NULL, unbindedDev = NULL; virPCIDeviceListPtr activeDevs = NULL, inactiveDevs = NULL; int count; if (!(dev = virPCIDeviceNew(0, 0, 1, 0)) || + !(unbindedDev = virPCIDeviceNew(0, 0, 3, 0)) || !(activeDevs = virPCIDeviceListNew()) || !(inactiveDevs = virPCIDeviceListNew())) goto cleanup; if (virPCIDeviceListAdd(inactiveDevs, dev) < 0) { virPCIDeviceFree(dev); + virPCIDeviceFree(unbindedDev); + goto cleanup; + } + + if (virPCIDeviceListAdd(inactiveDevs, unbindedDev) < 0) { + virPCIDeviceFree(unbindedDev); goto cleanup; } CHECK_LIST_COUNT(activeDevs, 0); - CHECK_LIST_COUNT(inactiveDevs, 1); + CHECK_LIST_COUNT(inactiveDevs, 2); if (virPCIDeviceSetStubDriver(dev, "pci-stub") < 0) goto cleanup; @@ -127,6 +143,12 @@ testVirPCIDeviceReattach(const void *oaque ATTRIBUTE_UNUSED) if (virPCIDeviceReattach(dev, activeDevs, inactiveDevs) < 0) goto cleanup; + CHECK_LIST_COUNT(activeDevs, 0); + CHECK_LIST_COUNT(inactiveDevs, 1); + + if (virPCIDeviceReattach(unbindedDev, activeDevs, inactiveDevs) < 0) + goto cleanup; + CHECK_LIST_COUNT(activeDevs, 0); CHECK_LIST_COUNT(inactiveDevs, 0);