mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-04 21:35:45 +00:00
test: Refactor test driver event sending
Make testObjectEventQueue tolerant to NULL @event and move it so that it does not require a prototype. Additionally we are now able to remove locking when accessing driver->eventState, since it's using self-locking APIs and the pointer is immutable.
This commit is contained in:
parent
c1a34c87ea
commit
678059c064
@ -163,8 +163,6 @@ testDriverFree(testDriverPtr driver)
|
|||||||
VIR_FREE(driver);
|
VIR_FREE(driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void testObjectEventQueue(testDriverPtr driver,
|
|
||||||
virObjectEventPtr event);
|
|
||||||
|
|
||||||
static void testDriverLock(testDriverPtr driver)
|
static void testDriverLock(testDriverPtr driver)
|
||||||
{
|
{
|
||||||
@ -176,6 +174,15 @@ static void testDriverUnlock(testDriverPtr driver)
|
|||||||
virMutexUnlock(&driver->lock);
|
virMutexUnlock(&driver->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void testObjectEventQueue(testDriverPtr driver,
|
||||||
|
virObjectEventPtr event)
|
||||||
|
{
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
|
|
||||||
|
virObjectEventStateQueue(driver->eventState, event);
|
||||||
|
}
|
||||||
|
|
||||||
static void *testDomainObjPrivateAlloc(void)
|
static void *testDomainObjPrivateAlloc(void)
|
||||||
{
|
{
|
||||||
testDomainObjPrivatePtr priv;
|
testDomainObjPrivatePtr priv;
|
||||||
@ -1769,8 +1776,7 @@ testDomainCreateXML(virConnectPtr conn, const char *xml,
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (dom)
|
if (dom)
|
||||||
virObjectUnlock(dom);
|
virObjectUnlock(dom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
virDomainDefFree(def);
|
virDomainDefFree(def);
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
@ -1895,8 +1901,7 @@ static int testDomainDestroy(virDomainPtr domain)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1933,11 +1938,7 @@ static int testDomainResume(virDomainPtr domain)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
if (event) {
|
testObjectEventQueue(privconn, event);
|
||||||
testDriverLock(privconn);
|
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1974,12 +1975,7 @@ static int testDomainSuspend(virDomainPtr domain)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
|
testObjectEventQueue(privconn, event);
|
||||||
if (event) {
|
|
||||||
testDriverLock(privconn);
|
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2019,8 +2015,7 @@ static int testDomainShutdownFlags(virDomainPtr domain,
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -2091,8 +2086,7 @@ static int testDomainReboot(virDomainPtr domain,
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -2257,8 +2251,7 @@ testDomainSaveFlags(virDomainPtr domain, const char *path,
|
|||||||
unlink(path);
|
unlink(path);
|
||||||
}
|
}
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -2362,8 +2355,7 @@ testDomainRestoreFlags(virConnectPtr conn,
|
|||||||
VIR_FORCE_CLOSE(fd);
|
VIR_FORCE_CLOSE(fd);
|
||||||
if (dom)
|
if (dom)
|
||||||
virObjectUnlock(dom);
|
virObjectUnlock(dom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -2436,8 +2428,7 @@ static int testDomainCoreDumpWithFormat(virDomainPtr domain,
|
|||||||
cleanup:
|
cleanup:
|
||||||
VIR_FORCE_CLOSE(fd);
|
VIR_FORCE_CLOSE(fd);
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -2932,8 +2923,7 @@ static virDomainPtr testDomainDefineXMLFlags(virConnectPtr conn,
|
|||||||
virDomainDefFree(oldDef);
|
virDomainDefFree(oldDef);
|
||||||
if (dom)
|
if (dom)
|
||||||
virObjectUnlock(dom);
|
virObjectUnlock(dom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -3073,8 +3063,7 @@ static int testDomainCreateWithFlags(virDomainPtr domain, unsigned int flags)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -3145,8 +3134,7 @@ static int testDomainUndefineFlags(virDomainPtr domain,
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&privdom);
|
virDomainObjEndAPI(&privdom);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
testDriverUnlock(privconn);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -3579,8 +3567,7 @@ static virNetworkPtr testNetworkCreateXML(virConnectPtr conn, const char *xml)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virNetworkDefFree(def);
|
virNetworkDefFree(def);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
virNetworkObjEndAPI(&net);
|
virNetworkObjEndAPI(&net);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -3609,8 +3596,7 @@ virNetworkPtr testNetworkDefineXML(virConnectPtr conn, const char *xml)
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virNetworkDefFree(def);
|
virNetworkDefFree(def);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
virNetworkObjEndAPI(&net);
|
virNetworkObjEndAPI(&net);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -3643,8 +3629,7 @@ static int testNetworkUndefine(virNetworkPtr network)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
virNetworkObjEndAPI(&privnet);
|
virNetworkObjEndAPI(&privnet);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -3721,8 +3706,7 @@ static int testNetworkCreate(virNetworkPtr network)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
virNetworkObjEndAPI(&privnet);
|
virNetworkObjEndAPI(&privnet);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -3750,8 +3734,7 @@ static int testNetworkDestroy(virNetworkPtr network)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
virNetworkObjEndAPI(&privnet);
|
virNetworkObjEndAPI(&privnet);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -6034,15 +6017,6 @@ testConnectNetworkEventDeregisterAny(virConnectPtr conn,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* driver must be locked before calling */
|
|
||||||
static void testObjectEventQueue(testDriverPtr driver,
|
|
||||||
virObjectEventPtr event)
|
|
||||||
{
|
|
||||||
virObjectEventStateQueue(driver->eventState, event);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int testConnectListAllDomains(virConnectPtr conn,
|
static int testConnectListAllDomains(virConnectPtr conn,
|
||||||
virDomainPtr **domains,
|
virDomainPtr **domains,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
@ -6159,11 +6133,7 @@ testDomainManagedSave(virDomainPtr dom, unsigned int flags)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
if (event) {
|
testObjectEventQueue(privconn, event);
|
||||||
testDriverLock(privconn);
|
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -6692,11 +6662,7 @@ testDomainSnapshotCreateXML(virDomainPtr domain,
|
|||||||
}
|
}
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
}
|
}
|
||||||
if (event) {
|
testObjectEventQueue(privconn, event);
|
||||||
testDriverLock(privconn);
|
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
testDriverUnlock(privconn);
|
|
||||||
}
|
|
||||||
virDomainSnapshotDefFree(def);
|
virDomainSnapshotDefFree(def);
|
||||||
return snapshot;
|
return snapshot;
|
||||||
}
|
}
|
||||||
@ -6936,8 +6902,7 @@ testDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
|
|||||||
event = virDomainEventLifecycleNewFromObj(vm,
|
event = virDomainEventLifecycleNewFromObj(vm,
|
||||||
VIR_DOMAIN_EVENT_STOPPED,
|
VIR_DOMAIN_EVENT_STOPPED,
|
||||||
VIR_DOMAIN_EVENT_STOPPED_FROM_SNAPSHOT);
|
VIR_DOMAIN_EVENT_STOPPED_FROM_SNAPSHOT);
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
goto load;
|
goto load;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7016,8 +6981,7 @@ testDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
|
|||||||
/* Flush first event, now do transition 2 or 3 */
|
/* Flush first event, now do transition 2 or 3 */
|
||||||
bool paused = (flags & VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED) != 0;
|
bool paused = (flags & VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED) != 0;
|
||||||
|
|
||||||
if (event)
|
testObjectEventQueue(privconn, event);
|
||||||
testObjectEventQueue(privconn, event);
|
|
||||||
event = virDomainEventLifecycleNewFromObj(vm,
|
event = virDomainEventLifecycleNewFromObj(vm,
|
||||||
VIR_DOMAIN_EVENT_STARTED,
|
VIR_DOMAIN_EVENT_STARTED,
|
||||||
VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT);
|
VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT);
|
||||||
@ -7034,8 +6998,7 @@ testDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (event) {
|
if (event) {
|
||||||
testObjectEventQueue(privconn, event);
|
testObjectEventQueue(privconn, event);
|
||||||
if (event2)
|
testObjectEventQueue(privconn, event2);
|
||||||
testObjectEventQueue(privconn, event2);
|
|
||||||
} else {
|
} else {
|
||||||
virObjectUnref(event2);
|
virObjectUnref(event2);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user