[libvirt] [PATCH 0/8] test driver: Added new functions.

Added few functions into test driver. Tomáš Ryšavý (8): virhostcpu: Expose virHostCPUStatsAssign test driver: Replaced num by a constant. test driver: Implement virConnectGetSysinfo. test driver: Implement virConnectGetType. test driver: Implement testNodeGetCPUStats test driver: Implement testNodeGetFreeMemory test driver: added pages sizes into XML into test driver. test driver: Implement testNodeGetFreePages. src/libvirt_private.syms | 1 + src/test/test_driver.c | 148 +++++++++++++++++++++++++++++++++++++++++++++-- src/util/virhostcpu.c | 2 +- src/util/virhostcpu.h | 4 ++ 4 files changed, 148 insertions(+), 7 deletions(-) -- 2.9.3

We will need this function in the next patch. Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/libvirt_private.syms | 1 + src/util/virhostcpu.c | 2 +- src/util/virhostcpu.h | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d62c74c..0109f4f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1093,6 +1093,7 @@ virHostCPUGetOnlineBitmap; virHostCPUGetPresentBitmap; virHostCPUGetStats; virHostCPUGetThreadsPerSubcore; +virHostCPUStatsAssign; virHostMemAllocPages; virHostMemGetCellsFree; virHostMemGetFreePages; diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c index 0f03ff8..b616664 100644 --- a/src/util/virhostcpu.c +++ b/src/util/virhostcpu.c @@ -781,7 +781,7 @@ virHostCPUGetInfoPopulateLinux(FILE *cpuinfo, return ret; } -static int +int virHostCPUStatsAssign(virNodeCPUStatsPtr param, const char *name, unsigned long long value) diff --git a/src/util/virhostcpu.h b/src/util/virhostcpu.h index bc9cf98..b048704 100644 --- a/src/util/virhostcpu.h +++ b/src/util/virhostcpu.h @@ -53,4 +53,8 @@ int virHostCPUGetInfo(virArch hostarch, int virHostCPUGetKVMMaxVCPUs(void); +int virHostCPUStatsAssign(virNodeCPUStatsPtr param, + const char *name, + unsigned long long value); + #endif /* __VIR_HOSTCPU_H__*/ -- 2.9.3

On 15.09.2016 10:27, Tomáš Ryšavý wrote:
We will need this function in the next patch.
Not really the next patch, but in this patchset :-)
Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/libvirt_private.syms | 1 + src/util/virhostcpu.c | 2 +- src/util/virhostcpu.h | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-)
Michal

Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 53cfa3c..bf2e80a 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1269,7 +1269,7 @@ testOpenDefault(virConnectPtr conn) /* Numa setup */ privconn->numCells = 2; - for (u = 0; u < 2; ++u) { + for (u = 0; u < privconn->numCells; ++u) { privconn->cells[u].numCpus = 8; privconn->cells[u].mem = (u + 1) * 2048 * 1024; } -- 2.9.3

On 15.09.2016 10:27, Tomáš Ryšavý wrote:
Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com>
The commit message is a bit sparse.
--- src/test/test_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 53cfa3c..bf2e80a 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1269,7 +1269,7 @@ testOpenDefault(virConnectPtr conn)
/* Numa setup */ privconn->numCells = 2; - for (u = 0; u < 2; ++u) { + for (u = 0; u < privconn->numCells; ++u) { privconn->cells[u].numCpus = 8; privconn->cells[u].mem = (u + 1) * 2048 * 1024; }
Michal

Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index bf2e80a..afddc06 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1506,6 +1506,25 @@ static char *testConnectGetCapabilities(virConnectPtr conn) return xml; } +static char * testConnectGetSysinfo(virConnectPtr conn ATTRIBUTE_UNUSED, + unsigned int flags) +{ + char *ret; + const char *sysinfo = "<sysinfo type='smbios'>\n" + " <bios>\n" + " <entry name='vendor'>LENOVO</entry>\n" + " <entry name='version'>G4ETA1WW (2.61 )</entry>\n" + " <entry name='date'>05/07/2014</entry>\n" + " <entry name='release'>2.61</entry>\n" + " </bios>\n" + "</sysinfo>\n"; + + virCheckFlags(0, NULL); + + ignore_value(VIR_STRDUP(ret, sysinfo)); + return ret; +} + static int testConnectNumOfDomains(virConnectPtr conn) { testDriverPtr privconn = conn->privateData; @@ -6680,6 +6699,7 @@ static virHypervisorDriver testHypervisorDriver = { .connectGetMaxVcpus = testConnectGetMaxVcpus, /* 0.3.2 */ .nodeGetInfo = testNodeGetInfo, /* 0.1.1 */ .connectGetCapabilities = testConnectGetCapabilities, /* 0.2.1 */ + .connectGetSysinfo = testConnectGetSysinfo, /* 2.3.0 */ .connectListDomains = testConnectListDomains, /* 0.1.1 */ .connectNumOfDomains = testConnectNumOfDomains, /* 0.1.1 */ .connectListAllDomains = testConnectListAllDomains, /* 0.9.13 */ -- 2.9.3

Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index afddc06..811bbeb 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1525,6 +1525,10 @@ static char * testConnectGetSysinfo(virConnectPtr conn ATTRIBUTE_UNUSED, return ret; } +static const char *testConnectGetType(virConnectPtr conn ATTRIBUTE_UNUSED) { + return "TEST"; +} + static int testConnectNumOfDomains(virConnectPtr conn) { testDriverPtr privconn = conn->privateData; @@ -6700,6 +6704,7 @@ static virHypervisorDriver testHypervisorDriver = { .nodeGetInfo = testNodeGetInfo, /* 0.1.1 */ .connectGetCapabilities = testConnectGetCapabilities, /* 0.2.1 */ .connectGetSysinfo = testConnectGetSysinfo, /* 2.3.0 */ + .connectGetType = testConnectGetType, /* 2.3.0 */ .connectListDomains = testConnectListDomains, /* 0.1.1 */ .connectNumOfDomains = testConnectNumOfDomains, /* 0.1.1 */ .connectListAllDomains = testConnectListAllDomains, /* 0.9.13 */ -- 2.9.3

On Thu, Sep 15, 2016 at 10:27:05 +0200, Tomáš Ryšavý wrote:
Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c index afddc06..811bbeb 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1525,6 +1525,10 @@ static char * testConnectGetSysinfo(virConnectPtr conn ATTRIBUTE_UNUSED, return ret; }
+static const char *testConnectGetType(virConnectPtr conn ATTRIBUTE_UNUSED) {
Opening braces should be on separate line to conform with our coding style.
+ return "TEST"; +} +
Peter

Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 811bbeb..a55519f 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -63,6 +63,7 @@ #include "virauth.h" #include "viratomic.h" #include "virdomainobjlist.h" +#include "virhostcpu.h" #define VIR_FROM_THIS VIR_FROM_TEST @@ -2710,6 +2711,44 @@ static int testNodeGetCellsFreeMemory(virConnectPtr conn, return ret; } +#define TEST_NB_CPU_STATS 4 + +static int +testNodeGetCPUStats(virConnectPtr conn ATTRIBUTE_UNUSED, + int cpuNum ATTRIBUTE_UNUSED, + virNodeCPUStatsPtr params, + int *nparams, + unsigned int flags) +{ + size_t i = 0; + + virCheckFlags(0, -1); + + if (params == NULL) { + *nparams = TEST_NB_CPU_STATS; + return 0; + } + + for (i = 0; i < *nparams && i < 4; i++) { + switch (i) { + case 0: + virHostCPUStatsAssign(¶ms[0], VIR_NODE_CPU_STATS_USER, 9797400000); + break; + case 1: + virHostCPUStatsAssign(¶ms[1], VIR_NODE_CPU_STATS_KERNEL, 34678723400000); + break; + case 2: + virHostCPUStatsAssign(¶ms[2], VIR_NODE_CPU_STATS_IDLE, 87264900000); + break; + case 3: + virHostCPUStatsAssign(¶ms[3], VIR_NODE_CPU_STATS_IOWAIT, 763600000); + break; + } + } + + *nparams = i; + return 0; +} static int testDomainCreateWithFlags(virDomainPtr domain, unsigned int flags) { @@ -6702,6 +6741,7 @@ static virHypervisorDriver testHypervisorDriver = { .connectGetHostname = testConnectGetHostname, /* 0.6.3 */ .connectGetMaxVcpus = testConnectGetMaxVcpus, /* 0.3.2 */ .nodeGetInfo = testNodeGetInfo, /* 0.1.1 */ + .nodeGetCPUStats = testNodeGetCPUStats, /* 2.3.0 */ .connectGetCapabilities = testConnectGetCapabilities, /* 0.2.1 */ .connectGetSysinfo = testConnectGetSysinfo, /* 2.3.0 */ .connectGetType = testConnectGetType, /* 2.3.0 */ -- 2.9.3

On 15.09.2016 10:27, Tomáš Ryšavý wrote:
Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 811bbeb..a55519f 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -63,6 +63,7 @@ #include "virauth.h" #include "viratomic.h" #include "virdomainobjlist.h" +#include "virhostcpu.h"
#define VIR_FROM_THIS VIR_FROM_TEST
@@ -2710,6 +2711,44 @@ static int testNodeGetCellsFreeMemory(virConnectPtr conn, return ret; }
+#define TEST_NB_CPU_STATS 4 + +static int +testNodeGetCPUStats(virConnectPtr conn ATTRIBUTE_UNUSED, + int cpuNum ATTRIBUTE_UNUSED, + virNodeCPUStatsPtr params, + int *nparams, + unsigned int flags) +{ + size_t i = 0; + + virCheckFlags(0, -1); + + if (params == NULL) { + *nparams = TEST_NB_CPU_STATS; + return 0; + } + + for (i = 0; i < *nparams && i < 4; i++) { + switch (i) { + case 0: + virHostCPUStatsAssign(¶ms[0], VIR_NODE_CPU_STATS_USER, 9797400000);
You need to check for the return value of this function ^^. For instance like this: if (virHostCPUStatsAssign(¶ms[i], VIR_NODE_CPU_STATS_USER, 9797400000) < 0) return -1;
+ break; + case 1: + virHostCPUStatsAssign(¶ms[1], VIR_NODE_CPU_STATS_KERNEL, 34678723400000); + break; + case 2: + virHostCPUStatsAssign(¶ms[2], VIR_NODE_CPU_STATS_IDLE, 87264900000); + break; + case 3: + virHostCPUStatsAssign(¶ms[3], VIR_NODE_CPU_STATS_IOWAIT, 763600000); + break; + } + } + + *nparams = i; + return 0; +}
static int testDomainCreateWithFlags(virDomainPtr domain, unsigned int flags) { @@ -6702,6 +6741,7 @@ static virHypervisorDriver testHypervisorDriver = { .connectGetHostname = testConnectGetHostname, /* 0.6.3 */ .connectGetMaxVcpus = testConnectGetMaxVcpus, /* 0.3.2 */ .nodeGetInfo = testNodeGetInfo, /* 0.1.1 */ + .nodeGetCPUStats = testNodeGetCPUStats, /* 2.3.0 */ .connectGetCapabilities = testConnectGetCapabilities, /* 0.2.1 */ .connectGetSysinfo = testConnectGetSysinfo, /* 2.3.0 */ .connectGetType = testConnectGetType, /* 2.3.0 */

Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@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

On 15.09.2016 10:27, Tomáš Ryšavý wrote:
Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@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;
Quite. "* 1024" in code means that you're shifting a number to next order, e.g. making kibibytes from bytes, mebibytes from kibibytes, and so on. Therefore I suggest to halve the number one before that (which by coincidence happens to end up 1024 too).
} 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)
@conn is clearly used in this function, therefore ATTRIBUTE_UNUSED is not correct.
+{ + 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; + }
I don't quite catch your drift here. There is no range given to this function. I suggest just dropping this check completely.
+ + 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 */
Michal

Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index cf357c4..7c64dcd 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -309,7 +309,7 @@ testBuildCapabilities(virConnectPtr conn) virCapsGuestPtr guest; int guest_types[] = { VIR_DOMAIN_OSTYPE_HVM, VIR_DOMAIN_OSTYPE_XEN }; - size_t i; + size_t i, j; if ((caps = virCapabilitiesNew(VIR_ARCH_I686, false, false)) == NULL) goto error; @@ -319,19 +319,36 @@ testBuildCapabilities(virConnectPtr conn) if (virCapabilitiesAddHostFeature(caps, "nonpae") < 0) goto error; + if (VIR_ALLOC_N(caps->host.pagesSize, 2) < 0) + goto error; + + caps->host.pagesSize[caps->host.nPagesSize++] = 4; + caps->host.pagesSize[caps->host.nPagesSize++] = 2048; + for (i = 0; i < privconn->numCells; i++) { virCapsHostNUMACellCPUPtr cpu_cells; + virCapsHostNUMACellPageInfoPtr pages; + size_t nPages; - if (VIR_ALLOC_N(cpu_cells, privconn->cells[i].numCpus) < 0) - goto error; + if (VIR_ALLOC_N(cpu_cells, privconn->cells[i].numCpus) < 0 || + VIR_ALLOC_N(pages, caps->host.nPagesSize) < 0) { + VIR_FREE(cpu_cells); + goto error; + } + + nPages = caps->host.nPagesSize; memcpy(cpu_cells, privconn->cells[i].cpus, sizeof(*cpu_cells) * privconn->cells[i].numCpus); + for (j = 0; j < nPages; j++) + pages[j].size = caps->host.pagesSize[j]; + + pages[0].avail = privconn->cells[i].mem / pages[0].size; - if (virCapabilitiesAddHostNUMACell(caps, i, 0, + if (virCapabilitiesAddHostNUMACell(caps, i, privconn->cells[i].mem, privconn->cells[i].numCpus, - cpu_cells, 0, NULL, 0, NULL) < 0) + cpu_cells, 0, NULL, nPages, pages) < 0) goto error; } -- 2.9.3

Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 7c64dcd..cbebc75 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2795,6 +2795,30 @@ testNodeGetFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED) return ret; } +static int +testNodeGetFreePages(virConnectPtr conn ATTRIBUTE_UNUSED, + unsigned int npages, + unsigned int *pages ATTRIBUTE_UNUSED, + int startCell ATTRIBUTE_UNUSED, + unsigned int cellCount, + unsigned long long *counts, + unsigned int flags) +{ + size_t i = 0, j = 0; + int x = 6; + + virCheckFlags(0, -1); + + for (i = 0; i < cellCount; i++) { + for (j = 0; j < npages; j++) { + x = x * 2 + 7; + counts[(i * npages) + j] = x; + } + } + + return 0; +} + static int testDomainCreateWithFlags(virDomainPtr domain, unsigned int flags) { testDriverPtr privconn = domain->conn->privateData; @@ -6788,6 +6812,7 @@ static virHypervisorDriver testHypervisorDriver = { .nodeGetInfo = testNodeGetInfo, /* 0.1.1 */ .nodeGetCPUStats = testNodeGetCPUStats, /* 2.3.0 */ .nodeGetFreeMemory = testNodeGetFreeMemory, /* 2.3.0 */ + .nodeGetFreePages = testNodeGetFreePages, /* 2.3.0 */ .connectGetCapabilities = testConnectGetCapabilities, /* 0.2.1 */ .connectGetSysinfo = testConnectGetSysinfo, /* 2.3.0 */ .connectGetType = testConnectGetType, /* 2.3.0 */ -- 2.9.3

On 15.09.2016 10:27, Tomáš Ryšavý wrote:
Signed-off-by: Tomáš Ryšavý <tom.rysavy.0@gmail.com> --- src/test/test_driver.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 7c64dcd..cbebc75 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2795,6 +2795,30 @@ testNodeGetFreeMemory(virConnectPtr conn ATTRIBUTE_UNUSED) return ret; }
+static int +testNodeGetFreePages(virConnectPtr conn ATTRIBUTE_UNUSED, + unsigned int npages, + unsigned int *pages ATTRIBUTE_UNUSED, + int startCell ATTRIBUTE_UNUSED, + unsigned int cellCount, + unsigned long long *counts, + unsigned int flags) +{ + size_t i = 0, j = 0; + int x = 6; + + virCheckFlags(0, -1); + + for (i = 0; i < cellCount; i++) { + for (j = 0; j < npages; j++) { + x = x * 2 + 7; + counts[(i * npages) + j] = x; + } + } +
Okay, this will work for now, but in future we should record the free pages in test driver struct and expose that correctly in capabilities XML, support alloc pages, and so on. Michal

On 15.09.2016 10:27, Tomáš Ryšavý wrote:
Added few functions into test driver.
Tomáš Ryšavý (8): virhostcpu: Expose virHostCPUStatsAssign test driver: Replaced num by a constant. test driver: Implement virConnectGetSysinfo. test driver: Implement virConnectGetType. test driver: Implement testNodeGetCPUStats test driver: Implement testNodeGetFreeMemory test driver: added pages sizes into XML into test driver. test driver: Implement testNodeGetFreePages.
src/libvirt_private.syms | 1 + src/test/test_driver.c | 148 +++++++++++++++++++++++++++++++++++++++++++++-- src/util/virhostcpu.c | 2 +- src/util/virhostcpu.h | 4 ++ 4 files changed, 148 insertions(+), 7 deletions(-)
I've fixed all the problems I've found during review, ACKed and pushed. Congratulations! Michal
participants (3)
-
Michal Privoznik
-
Peter Krempa
-
Tomáš Ryšavý