Until now, testDomainGetTime would always return the same fixed value
everytime it was called. By using domain-private data we can make this
API return the values previously set with testDomainSetTime, or use the
same old fixed value in case testDomainSetTime hasn't been called at all.
---
src/test/test_driver.c | 45 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 43 insertions(+), 2 deletions(-)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index d9a7f815d5..6a75e63429 100755
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -392,6 +392,11 @@ struct _testDomainObjPrivate {
testDriverPtr driver;
bool frozen[2]; /* used by file system related calls */
+
+
+ /* used by get/set time APIs */
+ long long seconds;
+ unsigned int nseconds;
};
@@ -406,6 +411,9 @@ testDomainObjPrivateAlloc(void *opaque)
priv->driver = opaque;
priv->frozen[0] = priv->frozen[1] = false;
+ priv->seconds = 627319920;
+ priv->nseconds = 0;
+
return priv;
}
@@ -2082,6 +2090,7 @@ testDomainGetTime(virDomainPtr dom,
unsigned int flags)
{
virDomainObjPtr vm = NULL;
+ testDomainObjPrivatePtr priv;
int ret = -1;
virCheckFlags(0, -1);
@@ -2095,8 +2104,39 @@ testDomainGetTime(virDomainPtr dom,
goto cleanup;
}
- *seconds = 627319920;
- *nseconds = 0;
+ priv = vm->privateData;
+
+ *seconds = priv->seconds;
+ *nseconds = priv->nseconds;
+
+ ret = 0;
+ cleanup:
+ virDomainObjEndAPI(&vm);
+ return ret;
+}
+
+
+static int
+testDomainSetTime(virDomainPtr dom,
+ long long seconds,
+ unsigned int nseconds,
+ unsigned int flags)
+{
+ virDomainObjPtr vm = NULL;
+ testDomainObjPrivatePtr priv;
+ int ret = -1;
+
+ virCheckFlags(VIR_DOMAIN_TIME_SYNC, ret);
+
+ if (!(vm = testDomObjFromDomain(dom)))
+ return -1;
+
+ if (virDomainObjCheckActive(vm) < 0)
+ goto cleanup;
+
+ priv = vm->privateData;
+ priv->seconds = seconds;
+ priv->nseconds = nseconds;
ret = 0;
cleanup:
@@ -8891,6 +8931,7 @@ static virHypervisorDriver testHypervisorDriver = {
.domainGetInfo = testDomainGetInfo, /* 0.1.1 */
.domainGetState = testDomainGetState, /* 0.9.2 */
.domainGetTime = testDomainGetTime, /* 5.4.0 */
+ .domainSetTime = testDomainSetTime, /* 5.7.0 */
.domainSave = testDomainSave, /* 0.3.2 */
.domainSaveFlags = testDomainSaveFlags, /* 0.9.4 */
.domainRestore = testDomainRestore, /* 0.3.2 */
--
2.22.0