tests: Rename test_xmlconfig.py to test_misc.py
That's what it is now, just a collection of misc virtinst tests Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
4c4753d910
commit
b79ee9565f
|
@ -365,6 +365,11 @@
|
|||
<address type="ccw" cssid="0xfe" ssid="0" devno="01"/>
|
||||
<boot order="15" loadparm="SYSTEM1"/>
|
||||
</interface>
|
||||
<interface type="bridge">
|
||||
<source bridge="testsuitebr0"/>
|
||||
<mac address="00:11:22:33:44:55"/>
|
||||
<model type="vmxnet3"/>
|
||||
</interface>
|
||||
<smartcard mode="passthrough" type="spicevmc"/>
|
||||
<smartcard mode="host" type="tcp"/>
|
||||
<smartcard mode="passthrough" type="spicevmc"/>
|
||||
|
|
|
@ -629,6 +629,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser
|
|||
--network user,model=virtio,address.type=spapr-vio,address.reg=0x500,link.state=no
|
||||
--network vhostuser,source_type=unix,source_path=/tmp/vhost1.sock,source_mode=server,model=virtio,source.type=unix,source.path=/tmp/vhost1.sock,address.type=pci,address.bus=0x00,address.slot=0x10,address.function=0x0,address.domain=0x0000
|
||||
--network user,address.type=ccw,address.cssid=0xfe,address.ssid=0,address.devno=01,boot.order=15,boot.loadparm=SYSTEM1
|
||||
--network model=vmxnet3
|
||||
|
||||
--graphics sdl
|
||||
--graphics spice,keymap=none
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
# 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 virtinst
|
||||
|
||||
from tests import utils
|
||||
|
||||
|
||||
# Misc tests for various virtinst special behavior. These should only aim for
|
||||
# testing any particularly tricky bits, general XML generation should
|
||||
# be through virt-install examples in test_cli
|
||||
|
||||
|
||||
def test_misc_cpu_topology():
|
||||
"""
|
||||
Various topology calculation corner cases
|
||||
"""
|
||||
conn = utils.URIs.open_testdefault_cached()
|
||||
cpu = virtinst.DomainCpu(conn)
|
||||
cpu.set_topology_defaults(6)
|
||||
assert cpu.topology.sockets is None
|
||||
|
||||
cpu.topology.sockets = "2"
|
||||
cpu.set_topology_defaults(6)
|
||||
def get_top(_c):
|
||||
return [_c.topology.sockets, _c.topology.cores, _c.topology.threads]
|
||||
assert get_top(cpu) == [2, 3, 1]
|
||||
|
||||
cpu = virtinst.DomainCpu(conn)
|
||||
cpu.topology.cores = "4"
|
||||
cpu.set_topology_defaults(9)
|
||||
assert get_top(cpu) == [2, 4, 1]
|
||||
|
||||
cpu = virtinst.DomainCpu(conn)
|
||||
cpu.topology.threads = "3"
|
||||
cpu.set_topology_defaults(14)
|
||||
assert get_top(cpu) == [4, 1, 3]
|
||||
|
||||
cpu = virtinst.DomainCpu(conn)
|
||||
cpu.topology.sockets = 5
|
||||
cpu.topology.cores = 2
|
||||
assert cpu.vcpus_from_topology() == 10
|
||||
|
||||
cpu = virtinst.DomainCpu(conn)
|
||||
assert cpu.vcpus_from_topology() == 1
|
||||
|
||||
|
||||
def test_misc_guest_osinfo_metadata():
|
||||
"""
|
||||
Test that reading an unknown OS ID from guest XML will not blow up
|
||||
"""
|
||||
# pylint: disable=protected-access
|
||||
g = virtinst.Guest(utils.URIs.open_testdefault_cached())
|
||||
g._metadata.libosinfo.os_id = "http://fedoraproject.org/fedora/20"
|
||||
assert g.osinfo.name == "fedora20"
|
||||
|
||||
g = virtinst.Guest(utils.URIs.open_testdefault_cached())
|
||||
g._metadata.libosinfo.os_id = "http://example.com/idontexit"
|
||||
assert g.osinfo.name == "generic"
|
||||
|
||||
|
||||
def test_misc_nonpredicatble_generate():
|
||||
"""
|
||||
Bypass our testsuite 'predicatable' handling to test actual random output
|
||||
"""
|
||||
from virtinst import cli
|
||||
predconn = utils.URIs.open_testdefault_cached()
|
||||
kvm_uri = utils.URIs.kvm.replace(",predictable", "")
|
||||
kvmconn = cli.getConnection(kvm_uri)
|
||||
testconn = cli.getConnection("test:///default")
|
||||
|
||||
testuuid = virtinst.Guest.generate_uuid(predconn)
|
||||
randomuuid = virtinst.Guest.generate_uuid(testconn)
|
||||
assert randomuuid != testuuid
|
||||
assert len(randomuuid) == len(testuuid)
|
||||
|
||||
testmac = virtinst.DeviceInterface.generate_mac(predconn)
|
||||
randommac = virtinst.DeviceInterface.generate_mac(testconn)
|
||||
qemumac = virtinst.DeviceInterface.generate_mac(kvmconn)
|
||||
assert randommac != testmac
|
||||
assert qemumac != testmac
|
||||
assert len(randommac) == len(testmac)
|
||||
|
||||
# Ensure check_mac_in_use doesn't error on None
|
||||
virtinst.DeviceInterface.check_mac_in_use(predconn, None)
|
||||
|
||||
|
||||
def test_misc_support_cornercases():
|
||||
"""
|
||||
Test support.py corner cases
|
||||
"""
|
||||
conn = utils.URIs.open_testdefault_cached()
|
||||
try:
|
||||
conn.lookupByName("foobar-idontexist")
|
||||
except Exception as e:
|
||||
if not conn.support.is_libvirt_error_no_domain(e):
|
||||
raise
|
||||
|
||||
|
||||
def test_misc_osxml_cornercases():
|
||||
"""
|
||||
Test OSXML corner cases
|
||||
"""
|
||||
conn = utils.URIs.open_testdefault_cached()
|
||||
guest = virtinst.Guest(conn)
|
||||
guest.os.set_initargs_string("foo bar")
|
||||
guest.os.set_initargs_string("baz wibble")
|
||||
assert [i.val for i in guest.os.initargs] == ["baz", "wibble"]
|
||||
|
||||
|
||||
def test_misc_cpu_cornercases():
|
||||
"""
|
||||
Hit the validation paths for default HOST_MODEL_ONLY
|
||||
"""
|
||||
kvmconn = utils.URIs.open_kvm()
|
||||
guest = virtinst.Guest(kvmconn)
|
||||
guest.x86_cpu_default = guest.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
|
||||
guest.set_defaults(guest)
|
||||
assert guest.cpu.model == "Opteron_G4"
|
||||
|
||||
# pylint: disable=protected-access
|
||||
guest.cpu.model = "idontexist"
|
||||
guest.cpu._validate_default_host_model_only(guest)
|
||||
assert guest.cpu.model is None
|
|
@ -1,141 +0,0 @@
|
|||
# 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 unittest
|
||||
|
||||
import virtinst
|
||||
|
||||
from tests import utils
|
||||
|
||||
|
||||
def _make_guest(conn=None, os_variant=None):
|
||||
if not conn:
|
||||
conn = utils.URIs.open_testdriver_cached()
|
||||
|
||||
g = virtinst.Guest(conn)
|
||||
g.name = "TestGuest"
|
||||
g.currentMemory = int(200 * 1024)
|
||||
g.memory = int(400 * 1024)
|
||||
|
||||
if os_variant:
|
||||
g.set_os_name(os_variant)
|
||||
|
||||
# File disk
|
||||
d = virtinst.DeviceDisk(conn)
|
||||
d.path = "/dev/default-pool/new-test-suite.img"
|
||||
if d.wants_storage_creation():
|
||||
parent_pool = d.get_parent_pool()
|
||||
vol_install = virtinst.DeviceDisk.build_vol_install(conn,
|
||||
os.path.basename(d.path), parent_pool, .0000001, True)
|
||||
d.set_vol_install(vol_install)
|
||||
d.validate()
|
||||
g.add_device(d)
|
||||
|
||||
# Block disk
|
||||
d = virtinst.DeviceDisk(conn)
|
||||
d.path = "/dev/disk-pool/diskvol1"
|
||||
d.validate()
|
||||
g.add_device(d)
|
||||
|
||||
# Network device
|
||||
dev = virtinst.DeviceInterface(conn)
|
||||
g.add_device(dev)
|
||||
|
||||
return g
|
||||
|
||||
|
||||
class TestXMLMisc(unittest.TestCase):
|
||||
"""
|
||||
Misc tests for various XML special behavior. These should only aim for
|
||||
testing any particularly tricky bits, general XML generation should
|
||||
be through virt-install examples in test_cli
|
||||
"""
|
||||
@property
|
||||
def conn(self):
|
||||
return utils.URIs.open_testdefault_cached()
|
||||
|
||||
def testCPUTopology(self):
|
||||
# Test CPU topology determining
|
||||
cpu = virtinst.DomainCpu(self.conn)
|
||||
cpu.set_topology_defaults(6)
|
||||
assert cpu.topology.sockets is None
|
||||
|
||||
cpu.topology.sockets = "2"
|
||||
cpu.set_topology_defaults(6)
|
||||
def get_top(_c):
|
||||
return [_c.topology.sockets, _c.topology.cores, _c.topology.threads]
|
||||
assert get_top(cpu) == [2, 3, 1]
|
||||
|
||||
cpu = virtinst.DomainCpu(self.conn)
|
||||
cpu.topology.cores = "4"
|
||||
cpu.set_topology_defaults(9)
|
||||
assert get_top(cpu) == [2, 4, 1]
|
||||
|
||||
cpu = virtinst.DomainCpu(self.conn)
|
||||
cpu.topology.threads = "3"
|
||||
cpu.set_topology_defaults(14)
|
||||
assert get_top(cpu) == [4, 1, 3]
|
||||
|
||||
cpu = virtinst.DomainCpu(self.conn)
|
||||
cpu.topology.sockets = 5
|
||||
cpu.topology.cores = 2
|
||||
assert cpu.vcpus_from_topology() == 10
|
||||
|
||||
cpu = virtinst.DomainCpu(self.conn)
|
||||
assert cpu.vcpus_from_topology() == 1
|
||||
|
||||
def test_set_defaults_double(self):
|
||||
"""
|
||||
Check that a common config has idempotent set_defaults
|
||||
"""
|
||||
g = _make_guest(conn=utils.URIs.open_kvm(), os_variant="fedora-unknown")
|
||||
|
||||
g.set_defaults(None)
|
||||
xml1 = g.get_xml()
|
||||
g.set_defaults(None)
|
||||
xml2 = g.get_xml()
|
||||
assert xml1 == xml2
|
||||
|
||||
def test_guest_osinfo_metadata(self):
|
||||
"""
|
||||
Test that reading an unknown OS ID from guest XML will not blow up
|
||||
"""
|
||||
# pylint: disable=protected-access
|
||||
g = virtinst.Guest(utils.URIs.open_testdefault_cached())
|
||||
g._metadata.libosinfo.os_id = "http://fedoraproject.org/fedora/20"
|
||||
assert g.osinfo.name == "fedora20"
|
||||
|
||||
g = virtinst.Guest(utils.URIs.open_testdefault_cached())
|
||||
g._metadata.libosinfo.os_id = "http://example.com/idontexit"
|
||||
assert g.osinfo.name == "generic"
|
||||
|
||||
def test_nonpredicatble_generate(self):
|
||||
from virtinst import cli
|
||||
kvm_uri = utils.URIs.kvm.replace(",predictable", "")
|
||||
kvmconn = cli.getConnection(kvm_uri)
|
||||
testconn = cli.getConnection("test:///default")
|
||||
|
||||
testuuid = virtinst.Guest.generate_uuid(self.conn)
|
||||
randomuuid = virtinst.Guest.generate_uuid(testconn)
|
||||
assert randomuuid != testuuid
|
||||
assert len(randomuuid) == len(testuuid)
|
||||
|
||||
testmac = virtinst.DeviceInterface.generate_mac(self.conn)
|
||||
randommac = virtinst.DeviceInterface.generate_mac(testconn)
|
||||
qemumac = virtinst.DeviceInterface.generate_mac(kvmconn)
|
||||
assert randommac != testmac
|
||||
assert qemumac != testmac
|
||||
assert len(randommac) == len(testmac)
|
||||
|
||||
# Ensure check_mac_in_use doesn't error on None
|
||||
virtinst.DeviceInterface.check_mac_in_use(self.conn, None)
|
||||
|
||||
def test_support_misc(self):
|
||||
try:
|
||||
self.conn.lookupByName("foobar-idontexist")
|
||||
except Exception as e:
|
||||
if not self.conn.support.is_libvirt_error_no_domain(e):
|
||||
raise
|
|
@ -287,7 +287,8 @@ class XMLParseTest(unittest.TestCase):
|
|||
self._alter_compare(guest.get_xml(), outfile)
|
||||
|
||||
# Hits a codepath when domcaps don't provide the needed info
|
||||
guest = virtinst.Guest(self.conn, xml)
|
||||
emptyconn = utils.URIs.open_testdefault_cached()
|
||||
guest = virtinst.Guest(emptyconn, xml)
|
||||
guest.cpu.check_security_features(guest)
|
||||
assert guest.cpu.secure is False
|
||||
|
||||
|
@ -1138,23 +1139,3 @@ class XMLParseTest(unittest.TestCase):
|
|||
|
||||
# Little test for DeviceAddress.pretty_desc
|
||||
assert devs[-1].address.pretty_desc() == "0:0:0:3"
|
||||
|
||||
def testCPUHostModelOnly(self):
|
||||
"""
|
||||
Hit the validation paths for default HOST_MODEL_ONLY
|
||||
"""
|
||||
guest = virtinst.Guest(self.kvmconn)
|
||||
guest.x86_cpu_default = guest.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
|
||||
guest.set_defaults(guest)
|
||||
assert guest.cpu.model == "Opteron_G4"
|
||||
|
||||
# pylint: disable=protected-access
|
||||
guest.cpu.model = "idontexist"
|
||||
guest.cpu._validate_default_host_model_only(guest)
|
||||
assert guest.cpu.model is None
|
||||
|
||||
def testOSXMLInitargsRemove(self):
|
||||
guest = virtinst.Guest(self.conn)
|
||||
guest.os.set_initargs_string("foo bar")
|
||||
guest.os.set_initargs_string("baz wibble")
|
||||
assert [i.val for i in guest.os.initargs] == ["baz", "wibble"]
|
||||
|
|
Loading…
Reference in New Issue