From 7624b47d1ef26b8d701491149a2e532999c75960 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Tue, 27 Oct 2009 18:00:02 -0400 Subject: [PATCH] test: Fixes for SetVcpus - Implement DomainGetMaxVCPUs - Use GetMaxVCPUs to validate requested CPU amount - Deny the 'hotplug' for a running domain. --- src/test/test_driver.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 31b5ad3e27..dbe26719ab 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1801,11 +1801,21 @@ cleanup: return ret; } +static int testDomainGetMaxVcpus(virDomainPtr domain) +{ + return testGetMaxVCPUs(domain->conn, "test"); +} + static int testSetVcpus(virDomainPtr domain, unsigned int nrCpus) { testConnPtr privconn = domain->conn->privateData; virDomainObjPtr privdom; - int ret = -1; + int ret = -1, maxvcpus; + + /* Do this first before locking */ + maxvcpus = testDomainGetMaxVcpus(domain); + if (maxvcpus < 0) + goto cleanup; testDriverLock(privconn); privdom = virDomainFindByName(&privconn->domains, @@ -1817,9 +1827,17 @@ static int testSetVcpus(virDomainPtr domain, goto cleanup; } + if (!virDomainObjIsActive(privdom)) { + testError(domain->conn, VIR_ERR_OPERATION_INVALID, + "%s", _("cannot hotplug vcpus for an inactive domain")); + goto cleanup; + } + /* We allow more cpus in guest than host */ - if (nrCpus > 32) { - testError(domain->conn, VIR_ERR_INVALID_ARG, __FUNCTION__); + if (nrCpus > maxvcpus) { + testError(domain->conn, VIR_ERR_INVALID_ARG, + "requested cpu amount exceeds maximum (%d > %d)", + nrCpus, maxvcpus); goto cleanup; } @@ -4686,7 +4704,7 @@ static virDriver testDriver = { testSetVcpus, /* domainSetVcpus */ NULL, /* domainPinVcpu */ NULL, /* domainGetVcpus */ - NULL, /* domainGetMaxVcpus */ + testDomainGetMaxVcpus, /* domainGetMaxVcpus */ NULL, /* domainGetSecurityLabel */ NULL, /* nodeGetSecurityModel */ testDomainDumpXML, /* domainDumpXML */ -- GitLab