This just introduces the test for bug fixed in the previous patch.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
tests/virpcitest.c | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/tests/virpcitest.c b/tests/virpcitest.c
index 8811add..5fb35ce 100644
--- a/tests/virpcitest.c
+++ b/tests/virpcitest.c
@@ -72,11 +72,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;
@@ -84,7 +85,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)
@@ -93,9 +95,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;
@@ -105,22 +114,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;
@@ -129,6 +145,12 @@ testVirPCIDeviceReattach(const void *oaque ATTRIBUTE_UNUSED)
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);
ret = 0;
--
1.8.1.5