tests: hostdev: Group test cases

Instead of considering each single step its own test case, create
high level test cases that reproduce a certain scenario.
This commit is contained in:
Andrea Bolognani 2016-03-03 16:13:04 +01:00
parent f8388cdce4
commit 3632185617
1 changed files with 97 additions and 22 deletions

View File

@ -160,7 +160,7 @@ virHostdevHostSupportsPassthroughKVM(void)
# endif
static int
testVirHostdevPreparePCIHostdevs_unmanaged(const void *opaque ATTRIBUTE_UNUSED)
testVirHostdevPreparePCIHostdevs_unmanaged(void)
{
int ret = -1;
size_t active_count, inactive_count, i;
@ -219,7 +219,7 @@ testVirHostdevPreparePCIHostdevs_unmanaged(const void *opaque ATTRIBUTE_UNUSED)
}
static int
testVirHostdevReAttachPCIHostdevs_unmanaged(const void *opaque ATTRIBUTE_UNUSED)
testVirHostdevReAttachPCIHostdevs_unmanaged(void)
{
int ret = -1;
size_t active_count, inactive_count, i;
@ -253,7 +253,7 @@ testVirHostdevReAttachPCIHostdevs_unmanaged(const void *opaque ATTRIBUTE_UNUSED)
}
static int
testVirHostdevPreparePCIHostdevs_managed(const void *opaque ATTRIBUTE_UNUSED)
testVirHostdevPreparePCIHostdevs_managed(void)
{
int ret = -1;
size_t active_count, inactive_count, i;
@ -304,7 +304,7 @@ testVirHostdevPreparePCIHostdevs_managed(const void *opaque ATTRIBUTE_UNUSED)
}
static int
testVirHostdevReAttachPCIHostdevs_managed(const void *opaque ATTRIBUTE_UNUSED)
testVirHostdevReAttachPCIHostdevs_managed(void)
{
int ret = -1;
size_t active_count, inactive_count, i;
@ -338,7 +338,7 @@ testVirHostdevReAttachPCIHostdevs_managed(const void *opaque ATTRIBUTE_UNUSED)
}
static int
testVirHostdevDetachPCINodeDevice(const void *opaque ATTRIBUTE_UNUSED)
testVirHostdevDetachPCINodeDevice(void)
{
int ret = -1;
size_t active_count, inactive_count, i;
@ -357,8 +357,9 @@ testVirHostdevDetachPCINodeDevice(const void *opaque ATTRIBUTE_UNUSED)
cleanup:
return ret;
}
static int
testVirHostdevResetPCINodeDevice(const void *opaque ATTRIBUTE_UNUSED)
testVirHostdevResetPCINodeDevice(void)
{
int ret = -1;
size_t active_count, inactive_count, i;
@ -380,7 +381,7 @@ testVirHostdevResetPCINodeDevice(const void *opaque ATTRIBUTE_UNUSED)
}
static int
testVirHostdevReAttachPCINodeDevice(const void *opaque ATTRIBUTE_UNUSED)
testVirHostdevReAttachPCINodeDevice(void)
{
int ret = -1;
size_t active_count, inactive_count, i;
@ -402,7 +403,7 @@ testVirHostdevReAttachPCINodeDevice(const void *opaque ATTRIBUTE_UNUSED)
}
static int
testVirHostdevUpdateActivePCIHostdevs(const void *opaque ATTRIBUTE_UNUSED)
testVirHostdevUpdateActivePCIHostdevs(void)
{
int ret = -1;
size_t active_count, inactive_count;
@ -430,6 +431,91 @@ testVirHostdevUpdateActivePCIHostdevs(const void *opaque ATTRIBUTE_UNUSED)
return ret;
}
/**
* testVirHostdevRoundtripUnmanaged:
* @opaque: unused
*
* Perform a roundtrip with unmanaged devices.
*
* 1. Detach devices from the host
* 2. Attach devices to the guest as unmanaged
* 3. Detach devices from the guest as unmanaged
* 4. Reattach devices to the host
*/
static int
testVirHostdevRoundtripUnmanaged(const void *opaque ATTRIBUTE_UNUSED)
{
int ret = -1;
if (testVirHostdevDetachPCINodeDevice() < 0)
goto out;
if (virHostdevHostSupportsPassthroughKVM()) {
if (testVirHostdevPreparePCIHostdevs_unmanaged() < 0)
goto out;
if (testVirHostdevReAttachPCIHostdevs_unmanaged() < 0)
goto out;
}
if (testVirHostdevReAttachPCINodeDevice() < 0)
goto out;
ret = 0;
out:
return ret;
}
/**
* testVirHostdevRoundtripManaged:
* @opaque: unused
*
* Perform a roundtrip with managed devices.
*
* 1. Attach devices to the guest as managed
* 2. Detach devices from the guest as managed
*/
static int
testVirHostdevRoundtripManaged(const void *opaque ATTRIBUTE_UNUSED)
{
int ret = -1;
if (virHostdevHostSupportsPassthroughKVM()) {
if (testVirHostdevPreparePCIHostdevs_managed() < 0)
goto out;
if (testVirHostdevReAttachPCIHostdevs_managed() < 0)
goto out;
}
ret = 0;
out:
return ret;
}
/**
* testVirHostdevOther:
* @opaque: unused
*
* Perform other operations on devices.
*
* 1. Reset devices
* 2. Update list of active devices
*/
static int
testVirHostdevOther(const void *opaque ATTRIBUTE_UNUSED)
{
int ret = -1;
if (testVirHostdevResetPCINodeDevice() < 0)
goto out;
if (testVirHostdevUpdateActivePCIHostdevs() < 0)
goto out;
ret = 0;
out:
return ret;
}
# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
static int
@ -460,20 +546,9 @@ mymain(void)
if (myInit() < 0)
fprintf(stderr, "Init data structures failed.");
DO_TEST(testVirHostdevDetachPCINodeDevice);
if (virHostdevHostSupportsPassthroughKVM()) {
/* following tests would check KVM support */
DO_TEST(testVirHostdevPreparePCIHostdevs_unmanaged);
DO_TEST(testVirHostdevReAttachPCIHostdevs_unmanaged);
}
DO_TEST(testVirHostdevResetPCINodeDevice);
DO_TEST(testVirHostdevReAttachPCINodeDevice);
if (virHostdevHostSupportsPassthroughKVM()) {
/* following tests would check KVM support */
DO_TEST(testVirHostdevPreparePCIHostdevs_managed);
DO_TEST(testVirHostdevReAttachPCIHostdevs_managed);
}
DO_TEST(testVirHostdevUpdateActivePCIHostdevs);
DO_TEST(testVirHostdevRoundtripUnmanaged);
DO_TEST(testVirHostdevRoundtripManaged);
DO_TEST(testVirHostdevOther);
myCleanup();