[libvirt] [PATCH 6/8] test driver: Implement testNodeGetFreeMemory

Michal Privoznik mprivozn at redhat.com
Thu Sep 15 13:37:52 UTC 2016


On 15.09.2016 10:27, Tomáš Ryšavý wrote:
> Signed-off-by: Tomáš Ryšavý <tom.rysavy.0 at 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




More information about the libvir-list mailing list