mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-01-08 07:03:02 -06:00
tests: clitest: Fill in much more virt-install coverage
This commit is contained in:
parent
5077f97000
commit
8234b55fe8
@ -703,10 +703,11 @@ c.add_compare("--boot loader=/path/to/loader,loader_secure=yes", "boot-loader-se
|
||||
####################################################
|
||||
|
||||
c = vinst.add_category("cpuram", "--hvm --nographics --noautoconsole --nodisks --pxe")
|
||||
c.add_valid("--connect " + utils.URIs.xen + " --vcpus 4 --cpuset=auto") # cpuset=auto but xen doesn't support it
|
||||
c.add_valid("--ram 4000000") # Ram overcommit
|
||||
c.add_valid("--vcpus sockets=2,threads=2") # Topology only
|
||||
c.add_valid("--cpuset 1,2,3") # cpuset backcompat with no --vcpus specfied
|
||||
c.add_valid("--cpu somemodel") # Simple --cpu
|
||||
c.add_valid("--noapic --noacpi") # feature backcompat
|
||||
c.add_valid("--security label=foobar.label,relabel=yes") # --security implicit static
|
||||
c.add_valid("--security label=foobar.label,a1,z2,b3,type=static,relabel=no") # static with commas 1
|
||||
c.add_valid("--security label=foobar.label,a1,z2,b3") # --security static with commas 2
|
||||
@ -763,6 +764,7 @@ c.add_invalid("--disk %(EXISTIMG1)s,driver_name=foobar,driver_type=foobaz") # U
|
||||
c.add_invalid("--connect %(URI-TEST-FULL)s --disk source_pool=rbd-ceph,source_volume=vol1") # Collision with existing VM, via source pool/volume
|
||||
c.add_invalid("--disk source.pool=default-pool,source.volume=idontexist") # trying to lookup non-existent volume, hit specific error code
|
||||
c.add_invalid("--disk size=1 --security model=foo,type=bar") # Libvirt will error on the invalid security params, which should trigger the code path to clean up the disk images we created.
|
||||
c.add_invalid("--disk size=1 --file foobar") # --disk and --file collision
|
||||
|
||||
|
||||
|
||||
@ -778,6 +780,7 @@ c.add_invalid("--host-device 300:400") # Parseable hostdev, but unknown digits
|
||||
c.add_invalid("--graphics vnc,keymap=ZZZ") # Invalid keymap
|
||||
c.add_invalid("--graphics vnc,port=-50") # Invalid port
|
||||
c.add_invalid("--graphics spice,tlsport=5") # Invalid port
|
||||
c.add_invalid("--vnc --sdl") # Multi graphics collision
|
||||
c.add_invalid("--serial unix") # Unix with no path
|
||||
c.add_invalid("--channel pty,target_type=guestfwd") # --channel guestfwd without target_address
|
||||
c.add_invalid("--boot uefi") # URI doesn't support UEFI bits
|
||||
@ -820,14 +823,17 @@ c.add_invalid("--disk none --location kernel=/dev/null,initrd=/dev/null") # --l
|
||||
c.add_invalid("--os-variant winxp,install=location", grep="does not have a URL location") # no URL for winxp
|
||||
c.add_invalid("--os-variant fedora28,install=fribber", grep="Unknown --os-variant install value") # unknown install= value
|
||||
c.add_invalid("--arch i686 --os-variant fedora26,install=location", grep="does not have a URL location for the i686") # there's no URL for i686
|
||||
c.add_invalid("-c foo --cdrom bar", grep="Cannot specify both -c") # check for ambiguous -c and --cdrom collision
|
||||
c.add_invalid("-c qemu:///system", grep="looks like a libvirt URI") # error for the ambiguous -c vs --connect
|
||||
|
||||
c = vinst.add_category("single-disk-install", "--nographics --noautoconsole --disk %(EXISTIMG1)s")
|
||||
c.add_valid("--hvm --import") # FV Import install
|
||||
c.add_valid("--hvm --import --prompt --force") # Working scenario w/ prompt shouldn't ask anything
|
||||
c.add_valid("--paravirt --import") # PV Import install
|
||||
c.add_valid("--paravirt --print-xml") # print single XML, implied import install
|
||||
c.add_compare("--cdrom %(EXISTIMG2)s --os-variant win2k3 --wait 0 --vcpus cores=4 --controller usb,model=none", "w2k3-cdrom") # HVM windows install with disk
|
||||
c.add_valid("--paravirt --print-xml 1") # print single XML, implied import install
|
||||
c.add_compare("-c %(EXISTIMG2)s --os-variant win2k3 --wait 0 --vcpus cores=4 --controller usb,model=none", "w2k3-cdrom") # HVM windows install with disk
|
||||
c.add_invalid("--paravirt --import --print-xml 2") # PV Import install, no second XML step
|
||||
c.add_invalid("--paravirt --import --print-xml 7") # Invalid --print-xml arg
|
||||
c.add_invalid("--location kernel=foo,initrd=bar") # location kernel/initrd without any url
|
||||
c.add_invalid("--location http://example.com,kernel=foo") # location without kernel+initrd specified as pair
|
||||
|
||||
@ -836,11 +842,11 @@ c.add_compare("--connect %s" % (utils.URIs.test_suite), "noargs-fail", use_defau
|
||||
c.add_compare("--connect %s --os-variant fedora26" % (utils.URIs.test_suite), "osvariant-noargs-fail", use_default_args=False) # No arguments
|
||||
c.add_compare("--connect %s --os-variant fedora26 --pxe --print-xml" % (utils.URIs.test_suite), "osvariant-defaults-pxe", use_default_args=False) # No arguments
|
||||
c.add_valid("--panic help --disk=? --check=help", grep="path_in_use") # Make sure introspection doesn't blow up
|
||||
c.add_valid("--test-stub-command") # --test-stub-command
|
||||
c.add_valid("--connect test:///default --test-stub-command", use_default_args=False) # --test-stub-command
|
||||
c.add_valid("--nodisks --pxe", grep="VM performance may suffer") # os variant warning
|
||||
c.add_invalid("--hvm --nodisks --pxe foobar") # Positional arguments error
|
||||
c.add_invalid("--nodisks --pxe --name test") # Colliding name
|
||||
c.add_compare("--cdrom %(EXISTIMG1)s --disk size=1 --disk %(EXISTIMG2)s,device=cdrom", "cdrom-double") # ensure --disk device=cdrom is ordered after --cdrom, this is important for virtio-win installs with a driver ISO
|
||||
c.add_compare("--os-type linux --cdrom %(EXISTIMG1)s --disk size=1 --disk %(EXISTIMG2)s,device=cdrom", "cdrom-double") # ensure --disk device=cdrom is ordered after --cdrom, this is important for virtio-win installs with a driver ISO
|
||||
c.add_valid("--connect %s --pxe --disk size=1" % utils.URIs.test_defaultpool_collision) # testdriver already has a pool using the 'default' path, make sure we don't error
|
||||
|
||||
|
||||
@ -886,7 +892,7 @@ c.add_invalid("--file /foo/bar/baz --pxe") # Trying to use unmanaged storage wi
|
||||
|
||||
c = vinst.add_category("kvm-generic", "--connect %(URI-KVM)s --noautoconsole")
|
||||
c.add_compare("--os-variant fedora-unknown --file %(EXISTIMG1)s --location %(TREEDIR)s --extra-args console=ttyS0 --cpu host --channel none --console none --sound none --redirdev none --boot cmdline='foo bar baz'", "kvm-fedoralatest-url", prerun_check=has_old_osinfo) # Fedora Directory tree URL install with extra-args
|
||||
c.add_compare("--test-media-detection %(TREEDIR)s", "test-url-detection") # --test-media-detection
|
||||
c.add_compare("--test-media-detection %(TREEDIR)s --arch x86_64 --hvm", "test-url-detection") # --test-media-detection
|
||||
c.add_compare("--os-variant full_id=http://fedoraproject.org/fedora/20 --disk %(EXISTIMG1)s,device=floppy --disk %(NEWIMG1)s,size=.01,format=vmdk --location %(TREEDIR)s --extra-args console=ttyS0 --quiet", "quiet-url", prerun_check=has_old_osinfo) # Quiet URL install should make no noise
|
||||
c.add_compare("--cdrom %(EXISTIMG2)s --file %(EXISTIMG1)s --os-variant win2k3 --wait 0 --sound --controller usb", "kvm-win2k3-cdrom") # HVM windows install with disk
|
||||
c.add_compare("--os-variant ubuntusaucy --nodisks --boot cdrom --virt-type qemu --cpu Penryn --input tablet", "qemu-plain") # plain qemu
|
||||
@ -1010,7 +1016,7 @@ c = vinst.add_category("vz", "--noautoconsole --connect " + utils.URIs.vz)
|
||||
c.add_valid("--container") # validate the special define+start logic
|
||||
c.add_valid("--hvm --cdrom %(EXISTIMG1)s --disk none") # hit more install vz logic
|
||||
c.add_valid("--hvm --import --disk %(EXISTIMG1)s --noreboot") # hit more install vz logic
|
||||
c.add_invalid("--container --transient") # doesn't support --transient
|
||||
c.add_invalid("--container --transient") # vz doesn't support --transient
|
||||
c.add_compare("""
|
||||
--container
|
||||
--filesystem type=template,source=centos-7-x86_64,target="/"
|
||||
|
38
virt-install
38
virt-install
@ -38,9 +38,8 @@ def supports_pxe(guest):
|
||||
try:
|
||||
netobj = nic.conn.networkLookupByName(nic.source)
|
||||
xmlobj = virtinst.Network(nic.conn, parsexml=netobj.XMLDesc(0))
|
||||
if xmlobj.can_pxe():
|
||||
return True
|
||||
except Exception:
|
||||
return xmlobj.can_pxe()
|
||||
except Exception: # pragma: no cover
|
||||
logging.debug("Error checking if PXE supported", exc_info=True)
|
||||
return True
|
||||
|
||||
@ -53,20 +52,10 @@ def check_cdrom_option_error(options):
|
||||
|
||||
if options.cdrom_short:
|
||||
if "://" in options.cdrom_short:
|
||||
fail("-c specified with what looks like a URI. Did you mean "
|
||||
"to use --connect? If not, use --cdrom instead")
|
||||
fail("-c specified with what looks like a libvirt URI. "
|
||||
"Did you mean to use --connect? If not, use --cdrom instead")
|
||||
options.cdrom = options.cdrom_short
|
||||
|
||||
if not options.cdrom:
|
||||
return
|
||||
|
||||
# Catch a strangely common error of users passing -vcpus=2 instead of
|
||||
# --vcpus=2. The single dash happens to map to enough shortened options
|
||||
# that things can fail weirdly if --paravirt is also specified.
|
||||
for vcpu in [o for o in sys.argv if o.startswith("-vcpu")]:
|
||||
if options.cdrom == vcpu[3:]:
|
||||
fail("You specified -vcpus, you want --vcpus")
|
||||
|
||||
|
||||
#################################
|
||||
# Back compat option conversion #
|
||||
@ -173,9 +162,10 @@ def convert_old_memory(options):
|
||||
def convert_old_cpuset(options):
|
||||
if not options.cpuset:
|
||||
return
|
||||
if not options.vcpus:
|
||||
options.vcpus = [""]
|
||||
options.vcpus[-1] += ",cpuset=%s" % options.cpuset
|
||||
|
||||
newvcpus = options.vcpus or []
|
||||
newvcpus.append(",cpuset=%s" % options.cpuset)
|
||||
options.vcpus = newvcpus
|
||||
logging.debug("Generated compat cpuset: --vcpus %s", options.vcpus[-1])
|
||||
|
||||
|
||||
@ -265,15 +255,13 @@ def convert_old_features(options):
|
||||
if options.features:
|
||||
return
|
||||
|
||||
opts = ""
|
||||
opts = []
|
||||
if options.noacpi:
|
||||
opts += "acpi=off"
|
||||
opts.append("acpi=off")
|
||||
if options.noapic:
|
||||
opts.append("apic=off")
|
||||
if opts:
|
||||
opts += ","
|
||||
opts += "apic=off"
|
||||
if opts:
|
||||
options.features = [opts]
|
||||
options.features = [",".join(opts)]
|
||||
|
||||
|
||||
##################################
|
||||
@ -907,7 +895,7 @@ def _destroy_on_exit(domain):
|
||||
try:
|
||||
isactive = bool(domain and domain.isActive())
|
||||
if isactive:
|
||||
domain.destroy()
|
||||
domain.destroy() # pragma: no cover
|
||||
except libvirt.libvirtError as e: # pragma: no cover
|
||||
if e.get_error_code() != libvirt.VIR_ERR_NO_DOMAIN:
|
||||
logging.debug("Error invoking atexit destroy_on_exit",
|
||||
|
Loading…
Reference in New Issue
Block a user