def __test(self, arch, distroLimit, xsLimit, pcpuLimit, guestMem, expected, tec): if distroLimit: self.__setupGuestLimit(arch == "x86-64" and "MAX_VM_VCPUS64" or "MAX_VM_VCPUS", distroLimit) if xsLimit: self.__setupXSLimit(xsLimit) if pcpuLimit: self.__setupPCPULimit(pcpuLimit, tec) if guestMem: guestMemLimit = guestMem / 64 if expected is None: expected = min(filter(lambda c: c is not None, [distroLimit, xsLimit, pcpuLimit, guestMemLimit])) guest = xenrt.lib.xenserver.guest.TampaGuest("Guest") guest.distro = "TestDistro" guest.arch = arch if guestMem: guest.memory = guestMem else: if pcpuLimit: h = tec.return_value.registry.hostGet.return_value else: tec.return_value.registry = Mock() tec.return_value.registry.hostList.return_value = [] tec.return_value.registry.hostGet.return_value.getTemplateParams.return_value.defaultMemory = None tec.return_value.lookup = self.__lookup tec.return_value.lookupHost = Mock(return_value = None) self.assertEqual(guest.getMaxSupportedVCPUCount(), expected)
def __test(self, arch, distroLimit, xsLimit, pcpuLimit, guestMem, expected, tec): if distroLimit: self.__setupGuestLimit( arch == "x86-64" and "MAX_VM_VCPUS64" or "MAX_VM_VCPUS", distroLimit) if xsLimit: self.__setupXSLimit(xsLimit) if pcpuLimit: self.__setupPCPULimit(pcpuLimit, tec) if guestMem: guestMemLimit = guestMem / 64 if expected is None: expected = min( filter(lambda c: c is not None, [distroLimit, xsLimit, pcpuLimit, guestMemLimit])) guest = xenrt.lib.xenserver.guest.TampaGuest("Guest") guest.distro = "TestDistro" guest.arch = arch if guestMem: guest.memory = guestMem else: if pcpuLimit: h = tec.return_value.registry.hostGet.return_value else: tec.return_value.registry = Mock() tec.return_value.registry.hostList.return_value = [] tec.return_value.registry.hostGet.return_value.getTemplateParams.return_value.defaultMemory = None tec.return_value.lookup = self.__lookup tec.return_value.lookupHost = Mock(return_value=None) self.assertEqual(guest.getMaxSupportedVCPUCount(), expected)
def testWarnings(self, tec): """Verify warnings are generated when expected""" w = Mock() tec.return_value.warning = w guest = xenrt.lib.xenserver.guest.TampaGuest("Guest") guest.distro = "TestDistro" guest.arch = "x86" tec.return_value.lookup = self.__lookup # First try with everything self.__setupXSLimit(16) self.__setupPCPULimit(16, tec) self.__setupGuestLimit("MAX_VM_VCPUS", 16) guest.memory = 32768 guest.getMaxSupportedVCPUCount() self.assertFalse(w.called, w.call_args) # Now without a distro w.reset_mock() del self.conf["GUEST_LIMITATIONS"]["TestDistro"] guest.getMaxSupportedVCPUCount() self.assertTrue(w.called) # Now with distro, but without a product version w.reset_mock() self.__setupGuestLimit("MAX_VM_VCPUS", 16) del self.conf["PRODUCT_VERSION"] guest.getMaxSupportedVCPUCount() self.assertTrue(w.called) # Now without memory w.reset_mock() self.conf["PRODUCT_VERSION"] = "TestPV" guest.memory = None tec.return_value.registry.hostGet.return_value.getTemplateParams.return_value.defaultMemory = None guest.getMaxSupportedVCPUCount() self.assertTrue(w.called) # Now without PCPUs guest.memory = 32768 w.reset_mock() tec.return_value.registry.return_value = [] guest.getMaxSupportedVCPUCount() self.assertFalse(w.called, w.call_args)
def test64BitArch(self, tec): """Verify architecture is taken into account properly""" guest = xenrt.lib.xenserver.guest.TampaGuest("Guest") guest.distro = "TestDistro" guest.arch = "x86" tec.return_value.lookup = self.__lookup # First verify the 32-bit version is used self.conf["GUEST_LIMITATIONS"]["TestDistro"] = {} self.conf["GUEST_LIMITATIONS"]["TestDistro"]["MAX_VM_VCPUS"] = 8 self.conf["GUEST_LIMITATIONS"]["TestDistro"]["MAX_VM_VCPUS64"] = 16 self.assertEqual(guest.getMaxSupportedVCPUCount(), 8) # Now go 64-bit guest.arch = "x86-64" self.assertEqual(guest.getMaxSupportedVCPUCount(), 16) # Verify Windows uses the 32-bit one regardless guest.windows = True self.assertEqual(guest.getMaxSupportedVCPUCount(), 8)