[libvirt] [PATCH v2 0/4] test_driver: implement some DomainGetParametersAPIs

Changes since v1: - undefine the macro introduced in 1/4 when done with it's usage - simplified 4/4 by using the virNetDevBandwidthRate struct Ilias Stamatis (4): test_driver: introduce TEST_SET_PARAM macro test_driver: implement virDomainGetMemoryParameters test_driver: implement virDomainGetNumaParameters test_driver: implement testDomainGetInterfaceParameters src/test/test_driver.c | 154 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) -- 2.22.0

This macro can be used by most or all of the DomainGetXXXParameters APIs. Signed-off-by: Ilias Stamatis <stamatis.iliass@gmail.com> --- src/test/test_driver.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 4b1f2724a0..c0608a4bea 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2844,6 +2844,16 @@ static char *testDomainGetXMLDesc(virDomainPtr domain, unsigned int flags) return ret; } + +#define TEST_SET_PARAM(index, name, type, value) \ + if (index < *nparams && \ + virTypedParameterAssign(¶ms[index], name, type, value) < 0) \ + goto cleanup + + +#undef TEST_SET_PARAM + + static int testConnectNumOfDefinedDomains(virConnectPtr conn) { testDriverPtr privconn = conn->privateData; -- 2.22.0

On Tue, Jul 02, 2019 at 03:49:41PM +0200, Ilias Stamatis wrote:
This macro can be used by most or all of the DomainGetXXXParameters APIs.
Technically okay, but usually we introduce such helper macros with the first function that needs it, solely because a patch such as this is effectively a NOP wit the #undef, so I'll squash this patch into 2/4. Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Ilias Stamatis <stamatis.iliass@gmail.com> --- src/test/test_driver.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 4b1f2724a0..c0608a4bea 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2844,6 +2844,16 @@ static char *testDomainGetXMLDesc(virDomainPtr domain, unsigned int flags) return ret; }
+ +#define TEST_SET_PARAM(index, name, type, value) \ + if (index < *nparams && \ + virTypedParameterAssign(¶ms[index], name, type, value) < 0) \ + goto cleanup + + +#undef TEST_SET_PARAM + + static int testConnectNumOfDefinedDomains(virConnectPtr conn) { testDriverPtr privconn = conn->privateData; -- 2.22.0
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Signed-off-by: Ilias Stamatis <stamatis.iliass@gmail.com> --- src/test/test_driver.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index c0608a4bea..44090a7d71 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2851,6 +2851,44 @@ static char *testDomainGetXMLDesc(virDomainPtr domain, unsigned int flags) goto cleanup +static int +testDomainGetMemoryParameters(virDomainPtr dom, + virTypedParameterPtr params, + int *nparams, + unsigned int flags) +{ + int ret = -1; + virDomainObjPtr vm = NULL; + virDomainDefPtr def = NULL; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG | + VIR_TYPED_PARAM_STRING_OKAY, -1); + + if ((*nparams) == 0) { + *nparams = 3; + return 0; + } + + if (!(vm = testDomObjFromDomain(dom))) + goto cleanup; + + if (!(def = virDomainObjGetOneDef(vm, flags))) + goto cleanup; + + TEST_SET_PARAM(0, VIR_DOMAIN_MEMORY_HARD_LIMIT, VIR_TYPED_PARAM_ULLONG, def->mem.hard_limit); + TEST_SET_PARAM(1, VIR_DOMAIN_MEMORY_SOFT_LIMIT, VIR_TYPED_PARAM_ULLONG, def->mem.soft_limit); + TEST_SET_PARAM(2, VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT, VIR_TYPED_PARAM_ULLONG, def->mem.swap_hard_limit); + + if (*nparams > 3) + *nparams = 3; + + ret = 0; + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + #undef TEST_SET_PARAM @@ -7286,6 +7324,7 @@ static virHypervisorDriver testHypervisorDriver = { .domainGetVcpuPinInfo = testDomainGetVcpuPinInfo, /* 1.2.18 */ .domainGetMaxVcpus = testDomainGetMaxVcpus, /* 0.7.3 */ .domainGetXMLDesc = testDomainGetXMLDesc, /* 0.1.4 */ + .domainGetMemoryParameters = testDomainGetMemoryParameters, /* 5.6.0 */ .connectListDefinedDomains = testConnectListDefinedDomains, /* 0.1.11 */ .connectNumOfDefinedDomains = testConnectNumOfDefinedDomains, /* 0.1.11 */ .domainCreate = testDomainCreate, /* 0.1.11 */ -- 2.22.0

Signed-off-by: Ilias Stamatis <stamatis.iliass@gmail.com> --- src/test/test_driver.c | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 44090a7d71..15894d98ad 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2889,6 +2889,52 @@ testDomainGetMemoryParameters(virDomainPtr dom, return ret; } + +static int +testDomainGetNumaParameters(virDomainPtr dom, + virTypedParameterPtr params, + int *nparams, + unsigned int flags) +{ + virDomainObjPtr vm = NULL; + virDomainDefPtr def = NULL; + virDomainNumatuneMemMode mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; + VIR_AUTOFREE(char *) nodeset = NULL; + int ret = -1; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG | + VIR_TYPED_PARAM_STRING_OKAY, -1); + + if ((*nparams) == 0) { + *nparams = 2; + return 0; + } + + if (!(vm = testDomObjFromDomain(dom))) + goto cleanup; + + if (!(def = virDomainObjGetOneDef(vm, flags))) + goto cleanup; + + ignore_value(virDomainNumatuneGetMode(def->numa, -1, &mode)); + nodeset = virDomainNumatuneFormatNodeset(def->numa, NULL, -1); + + TEST_SET_PARAM(0, VIR_DOMAIN_NUMA_MODE, VIR_TYPED_PARAM_INT, mode); + TEST_SET_PARAM(1, VIR_DOMAIN_NUMA_NODESET, VIR_TYPED_PARAM_STRING, nodeset); + + nodeset = NULL; + + if (*nparams > 2) + *nparams = 2; + + ret = 0; + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + + #undef TEST_SET_PARAM @@ -7325,6 +7371,7 @@ static virHypervisorDriver testHypervisorDriver = { .domainGetMaxVcpus = testDomainGetMaxVcpus, /* 0.7.3 */ .domainGetXMLDesc = testDomainGetXMLDesc, /* 0.1.4 */ .domainGetMemoryParameters = testDomainGetMemoryParameters, /* 5.6.0 */ + .domainGetNumaParameters = testDomainGetNumaParameters, /* 5.6.0 */ .connectListDefinedDomains = testConnectListDefinedDomains, /* 0.1.11 */ .connectNumOfDefinedDomains = testConnectNumOfDefinedDomains, /* 0.1.11 */ .domainCreate = testDomainCreate, /* 0.1.11 */ -- 2.22.0

Signed-off-by: Ilias Stamatis <stamatis.iliass@gmail.com> --- src/test/test_driver.c | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 15894d98ad..d2a7d2f840 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2935,6 +2935,63 @@ testDomainGetNumaParameters(virDomainPtr dom, } +static int +testDomainGetInterfaceParameters(virDomainPtr dom, + const char *device, + virTypedParameterPtr params, + int *nparams, + unsigned int flags) +{ + virNetDevBandwidthRate in = {0}; + virNetDevBandwidthRate out = {0}; + virDomainObjPtr vm = NULL; + virDomainDefPtr def = NULL; + virDomainNetDefPtr net = NULL; + int ret = -1; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG | + VIR_TYPED_PARAM_STRING_OKAY, -1); + + if ((*nparams) == 0) { + *nparams = 7; + return 0; + } + + if (!(vm = testDomObjFromDomain(dom))) + return -1; + + if (!(def = virDomainObjGetOneDef(vm, flags))) + goto cleanup; + + if (!(net = virDomainNetFind(def, device))) + goto cleanup; + + if (net->bandwidth) { + if (net->bandwidth->in) + in = *net->bandwidth->in; + if (net->bandwidth->out) + out = *net->bandwidth->out; + } + + TEST_SET_PARAM(0, VIR_DOMAIN_BANDWIDTH_IN_AVERAGE, VIR_TYPED_PARAM_UINT, in.average); + TEST_SET_PARAM(1, VIR_DOMAIN_BANDWIDTH_IN_PEAK, VIR_TYPED_PARAM_UINT, in.peak); + TEST_SET_PARAM(2, VIR_DOMAIN_BANDWIDTH_IN_BURST, VIR_TYPED_PARAM_UINT, in.burst); + TEST_SET_PARAM(3, VIR_DOMAIN_BANDWIDTH_IN_FLOOR, VIR_TYPED_PARAM_UINT, in.floor); + TEST_SET_PARAM(4, VIR_DOMAIN_BANDWIDTH_OUT_AVERAGE, VIR_TYPED_PARAM_UINT, out.average); + TEST_SET_PARAM(5, VIR_DOMAIN_BANDWIDTH_OUT_PEAK, VIR_TYPED_PARAM_UINT, out.peak); + TEST_SET_PARAM(6, VIR_DOMAIN_BANDWIDTH_OUT_BURST, VIR_TYPED_PARAM_UINT, out.burst); + + if (*nparams > 7) + *nparams = 7; + + ret = 0; + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + + #undef TEST_SET_PARAM @@ -7372,6 +7429,7 @@ static virHypervisorDriver testHypervisorDriver = { .domainGetXMLDesc = testDomainGetXMLDesc, /* 0.1.4 */ .domainGetMemoryParameters = testDomainGetMemoryParameters, /* 5.6.0 */ .domainGetNumaParameters = testDomainGetNumaParameters, /* 5.6.0 */ + .domainGetInterfaceParameters = testDomainGetInterfaceParameters, /* 5.6.0 */ .connectListDefinedDomains = testConnectListDefinedDomains, /* 0.1.11 */ .connectNumOfDefinedDomains = testConnectNumOfDefinedDomains, /* 0.1.11 */ .domainCreate = testDomainCreate, /* 0.1.11 */ -- 2.22.0

On Tue, Jul 02, 2019 at 03:49:44PM +0200, Ilias Stamatis wrote:
Signed-off-by: Ilias Stamatis <stamatis.iliass@gmail.com> --- src/test/test_driver.c | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+)
diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 15894d98ad..d2a7d2f840 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -2935,6 +2935,63 @@ testDomainGetNumaParameters(virDomainPtr dom, }
+static int +testDomainGetInterfaceParameters(virDomainPtr dom, + const char *device, + virTypedParameterPtr params, + int *nparams, + unsigned int flags) +{ + virNetDevBandwidthRate in = {0}; + virNetDevBandwidthRate out = {0}; + virDomainObjPtr vm = NULL; + virDomainDefPtr def = NULL; + virDomainNetDefPtr net = NULL; + int ret = -1; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG | + VIR_TYPED_PARAM_STRING_OKAY, -1); + + if ((*nparams) == 0) { + *nparams = 7; + return 0; + } + + if (!(vm = testDomObjFromDomain(dom))) + return -1; + + if (!(def = virDomainObjGetOneDef(vm, flags))) + goto cleanup; + + if (!(net = virDomainNetFind(def, device))) + goto cleanup; + + if (net->bandwidth) { + if (net->bandwidth->in) + in = *net->bandwidth->in; + if (net->bandwidth->out) + out = *net->bandwidth->out; + } + + TEST_SET_PARAM(0, VIR_DOMAIN_BANDWIDTH_IN_AVERAGE, VIR_TYPED_PARAM_UINT, in.average); + TEST_SET_PARAM(1, VIR_DOMAIN_BANDWIDTH_IN_PEAK, VIR_TYPED_PARAM_UINT, in.peak); + TEST_SET_PARAM(2, VIR_DOMAIN_BANDWIDTH_IN_BURST, VIR_TYPED_PARAM_UINT, in.burst); + TEST_SET_PARAM(3, VIR_DOMAIN_BANDWIDTH_IN_FLOOR, VIR_TYPED_PARAM_UINT, in.floor); + TEST_SET_PARAM(4, VIR_DOMAIN_BANDWIDTH_OUT_AVERAGE, VIR_TYPED_PARAM_UINT, out.average); + TEST_SET_PARAM(5, VIR_DOMAIN_BANDWIDTH_OUT_PEAK, VIR_TYPED_PARAM_UINT, out.peak); + TEST_SET_PARAM(6, VIR_DOMAIN_BANDWIDTH_OUT_BURST, VIR_TYPED_PARAM_UINT, out.burst);
Elegant.
+ + if (*nparams > 7) + *nparams = 7; + + ret = 0; + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + + #undef TEST_SET_PARAM
Reviewed-by: Erik Skultety <eskultet@redhat.com>

On Tue, Jul 02, 2019 at 03:49:40PM +0200, Ilias Stamatis wrote:
Changes since v1:
- undefine the macro introduced in 1/4 when done with it's usage - simplified 4/4 by using the virNetDevBandwidthRate struct
Ilias Stamatis (4): test_driver: introduce TEST_SET_PARAM macro test_driver: implement virDomainGetMemoryParameters test_driver: implement virDomainGetNumaParameters test_driver: implement testDomainGetInterfaceParameters
src/test/test_driver.c | 154 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+)
Reviewed-by: Erik Skultety <eskultet@redhat.com> Like I said in 1/4, I'll squash that one into 2/4.
participants (2)
-
Erik Skultety
-
Ilias Stamatis