Signed-off-by: Tomáš Ryšavý <tom.rysavy.0(a)gmail.com>
---
src/test/test_driver.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index a55519f..cf357c4 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -74,6 +74,7 @@ VIR_LOG_INIT("test.test_driver");
struct _testCell {
unsigned long mem;
+ unsigned long freeMem;
int numCpus;
virCapsHostNUMACellCPU cpus[MAX_CPUS];
};
@@ -1273,6 +1274,7 @@ testOpenDefault(virConnectPtr conn)
for (u = 0; u < privconn->numCells; ++u) {
privconn->cells[u].numCpus = 8;
privconn->cells[u].mem = (u + 1) * 2048 * 1024;
+ privconn->cells[u].freeMem = (u + 1) * 2048 * 512;
}
for (u = 0; u < 16; u++) {
virBitmapPtr siblings = virBitmapNew(16);
@@ -2750,6 +2752,32 @@ testNodeGetCPUStats(virConnectPtr conn ATTRIBUTE_UNUSED,
return 0;
}
+static unsigned long long
+testNodeGetFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED)
+{
+ unsigned int ret = 0;
+ unsigned int freeMem = 0;
+ size_t i;
+
+ testDriverPtr privconn = conn->privateData;
+
+ testDriverLock(privconn);
+
+ if (privconn->cells) {
+ virReportError(VIR_ERR_INVALID_ARG,
+ "%s", _("Range exceeds available cells"));
+ goto cleanup;
+ }
+
+ for (i = 0; i < privconn->numCells; i++)
+ freeMem += privconn->cells[i].freeMem;
+ ret = freeMem;
+
+ cleanup:
+ testDriverUnlock(privconn);
+ return ret;
+}
+
static int testDomainCreateWithFlags(virDomainPtr domain, unsigned int flags)
{
testDriverPtr privconn = domain->conn->privateData;
@@ -6742,6 +6770,7 @@ static virHypervisorDriver testHypervisorDriver = {
.connectGetMaxVcpus = testConnectGetMaxVcpus, /* 0.3.2 */
.nodeGetInfo = testNodeGetInfo, /* 0.1.1 */
.nodeGetCPUStats = testNodeGetCPUStats, /* 2.3.0 */
+ .nodeGetFreeMemory = testNodeGetFreeMemory, /* 2.3.0 */
.connectGetCapabilities = testConnectGetCapabilities, /* 0.2.1 */
.connectGetSysinfo = testConnectGetSysinfo, /* 2.3.0 */
.connectGetType = testConnectGetType, /* 2.3.0 */
--
2.9.3