virt-manager/tests/test_capabilities.py

115 lines
3.5 KiB
Python

# Copyright (C) 2013, 2014 Red Hat, Inc.
#
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
import os
import pytest
from tests import utils
from virtinst import Capabilities
from virtinst import DomainCapabilities
DATADIR = utils.DATADIR + "/capabilities"
def _buildCaps(filename):
path = os.path.join(DATADIR, filename)
conn = utils.URIs.open_testdefault_cached()
return Capabilities(conn, open(path).read())
def testCapsCPUFeaturesNewSyntax():
filename = "test-qemu-with-kvm.xml"
host_feature_list = ['lahf_lm', 'xtpr', 'cx16', 'tm2', 'est', 'vmx',
'ds_cpl', 'pbe', 'tm', 'ht', 'ss', 'acpi', 'ds']
caps = _buildCaps(filename)
for f in host_feature_list:
assert f in [feat.name for feat in caps.host.cpu.features]
assert caps.host.cpu.model == "core2duo"
assert caps.host.cpu.vendor == "Intel"
assert caps.host.cpu.topology.threads == 3
assert caps.host.cpu.topology.cores == 5
assert caps.host.cpu.topology.sockets == 7
def testCapsUtilFuncs():
caps_with_kvm = _buildCaps("test-qemu-with-kvm.xml")
caps_no_kvm = _buildCaps("test-qemu-no-kvm.xml")
caps_empty = _buildCaps("test-empty.xml")
def test_utils(caps, has_guests, is_kvm):
assert caps.has_install_options() == has_guests
if caps.guests:
assert caps.guests[0].is_kvm_available() == is_kvm
test_utils(caps_empty, False, False)
test_utils(caps_with_kvm, True, True)
test_utils(caps_no_kvm, True, False)
# Small test for extra coverage
with pytest.raises(ValueError, match=r".*virtualization type 'xen'.*"):
caps_empty.guest_lookup(os_type="linux")
with pytest.raises(ValueError, match=r".*not support any.*"):
caps_empty.guest_lookup()
def testCapsNuma():
cells = _buildCaps("lxc.xml").host.topology.cells
assert len(cells) == 1
assert len(cells[0].cpus) == 8
assert cells[0].cpus[3].id == '3'
##############################
# domcapabilities.py testing #
##############################
def testDomainCapabilities():
xml = open(DATADIR + "/test-domcaps.xml").read()
caps = DomainCapabilities(utils.URIs.open_testdriver_cached(), xml)
assert caps.os.loader.supported is True
assert caps.os.loader.get_values() == ["/foo/bar", "/tmp/my_path"]
assert caps.os.loader.enum_names() == ["type", "readonly"]
assert caps.os.loader.get_enum("type").get_values() == [
"rom", "pflash"]
assert caps.os.loader.get_enum("idontexist").get_values() == []
def testDomainCapabilitiesx86():
xml = open(DATADIR + "/kvm-x86_64-domcaps.xml").read()
caps = DomainCapabilities(utils.URIs.open_testdriver_cached(), xml)
assert caps.machine == "pc-i440fx-2.1"
assert caps.arch == "x86_64"
assert caps.domain == "kvm"
assert caps.path == "/bin/qemu-system-x86_64"
custom_mode = caps.cpu.get_mode("custom")
assert bool(custom_mode)
cpu_model = custom_mode.get_model("Opteron_G4")
assert bool(cpu_model)
assert cpu_model.usable
models = caps.get_cpu_models()
assert len(models) > 10
assert "SandyBridge" in models
assert caps.label_for_firmware_path(None) == "BIOS"
assert "Custom:" in caps.label_for_firmware_path("/foobar")
assert "UEFI" in caps.label_for_firmware_path("OVMF")
def testDomainCapabilitiesAArch64():
xml = open(DATADIR + "/kvm-aarch64-domcaps.xml").read()
caps = DomainCapabilities(utils.URIs.open_testdriver_cached(), xml)
assert "None" in caps.label_for_firmware_path(None)