mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
tests: test_urls: Big rework
Move all the test cases to an .ini file. Various cleanups and minor improvements throughout
This commit is contained in:
parent
26046c5948
commit
c7ed34de63
8
setup.py
8
setup.py
@ -529,11 +529,6 @@ class TestUI(TestBaseCommand):
|
|||||||
class TestURLFetch(TestBaseCommand):
|
class TestURLFetch(TestBaseCommand):
|
||||||
description = "Test fetching kernels and isos from various distro trees"
|
description = "Test fetching kernels and isos from various distro trees"
|
||||||
|
|
||||||
user_options = TestBaseCommand.user_options + [
|
|
||||||
("path=", None, "Paths to local iso or directory or check"
|
|
||||||
" for installable distro. Comma separated"),
|
|
||||||
]
|
|
||||||
|
|
||||||
def initialize_options(self):
|
def initialize_options(self):
|
||||||
TestBaseCommand.initialize_options(self)
|
TestBaseCommand.initialize_options(self)
|
||||||
self.path = ""
|
self.path = ""
|
||||||
@ -548,9 +543,6 @@ class TestURLFetch(TestBaseCommand):
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self._testfiles = ["tests.test_urls"]
|
self._testfiles = ["tests.test_urls"]
|
||||||
if self.path:
|
|
||||||
import tests
|
|
||||||
tests.URLTEST_LOCAL_MEDIA += self.path
|
|
||||||
TestBaseCommand.run(self)
|
TestBaseCommand.run(self)
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,10 +32,6 @@ imp.reload(cliconfig)
|
|||||||
|
|
||||||
from tests import utils
|
from tests import utils
|
||||||
|
|
||||||
# Variable used to store a local iso or dir path to check for a distro
|
|
||||||
# Specified via 'python setup.py test_urls --path"
|
|
||||||
URLTEST_LOCAL_MEDIA = []
|
|
||||||
|
|
||||||
virtinstall = None
|
virtinstall = None
|
||||||
virtclone = None
|
virtclone = None
|
||||||
virtconvert = None
|
virtconvert = None
|
||||||
|
193
tests/test_urls.ini
Normal file
193
tests/test_urls.ini
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
# Goal here is generally to cover all tree variants for each distro,
|
||||||
|
# where feasible. Don't exhaustively test i686 trees since most people
|
||||||
|
# aren't using it and it slows down the test, only use it in a couple
|
||||||
|
# places. Follow the comments for what trees to keep around
|
||||||
|
|
||||||
|
|
||||||
|
##########
|
||||||
|
# Fedora #
|
||||||
|
##########
|
||||||
|
|
||||||
|
# One old fedora pair
|
||||||
|
[fedora-old]
|
||||||
|
url = https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/14/Fedora/x86_64/os/
|
||||||
|
distro = fedora14
|
||||||
|
[fedora-old-i686]
|
||||||
|
url = https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/14/Fedora/i386/os/
|
||||||
|
distro = fedora14
|
||||||
|
|
||||||
|
# Latest GA release
|
||||||
|
[fedora27]
|
||||||
|
url = http://dl.fedoraproject.org/pub/fedora/linux/releases/27/Server/x86_64/os/
|
||||||
|
distro = fedora26
|
||||||
|
|
||||||
|
# Fedora dev release can be enabled during alpha/beta cycle
|
||||||
|
#[fedora-dev]
|
||||||
|
#url = http://dl.fedoraproject.org/pub/fedora/linux/development/27/Server/x86_64/os/
|
||||||
|
#distro = fedora26
|
||||||
|
|
||||||
|
# Fedora development, distro will need to be updated regularly.
|
||||||
|
# Test for xen and boot iso for full fedora coverage
|
||||||
|
[fedora-rawhide]
|
||||||
|
url = http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Server/x86_64/os/
|
||||||
|
distro = fedora26
|
||||||
|
testxen = 1
|
||||||
|
testbootiso = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##########
|
||||||
|
# CentOS #
|
||||||
|
##########
|
||||||
|
|
||||||
|
# Final centos4 trees. No distro detection, doesn't work here
|
||||||
|
[centos-4.9]
|
||||||
|
url = http://vault.centos.org/4.9/os/x86_64
|
||||||
|
|
||||||
|
# Final centos5 trees
|
||||||
|
[centos-5.11]
|
||||||
|
url = http://vault.centos.org/5.11/os/x86_64
|
||||||
|
distro = rhel5.11
|
||||||
|
|
||||||
|
# Latest centos 6 w/ i686
|
||||||
|
[centos-6-latest]
|
||||||
|
url = http://mirrors.mit.edu/centos/6/os/x86_64/
|
||||||
|
distro = centos6.9
|
||||||
|
[centos-6-latest-i686]
|
||||||
|
url = http://mirrors.mit.edu/centos/6/os/i386/
|
||||||
|
distro = centos6.9
|
||||||
|
|
||||||
|
# centos7 with exotic archs (i686 is dead)
|
||||||
|
[centos-7-latest]
|
||||||
|
url = http://mirrors.mit.edu/centos/7/os/x86_64/
|
||||||
|
distro = centos7.0
|
||||||
|
testxen = 1
|
||||||
|
testbootiso = 1
|
||||||
|
[centos-7-latest-ppc64le]
|
||||||
|
url = http://mirror.centos.org/altarch/7/os/ppc64le/
|
||||||
|
distro = centos7.0
|
||||||
|
[centos-7-latest-aarch64]
|
||||||
|
url = http://mirror.centos.org/altarch/7/os/ppc64le/
|
||||||
|
distro = centos7.0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
######
|
||||||
|
# SL #
|
||||||
|
######
|
||||||
|
|
||||||
|
# Latest scientific 6
|
||||||
|
[sl-6latest]
|
||||||
|
url = http://ftp.scientificlinux.org/linux/scientific/6/x86_64/os
|
||||||
|
distro = rhel6.9
|
||||||
|
|
||||||
|
# Latest scientific 6
|
||||||
|
[sl-7latest]
|
||||||
|
url = http://ftp.scientificlinux.org/linux/scientific/7/x86_64/os
|
||||||
|
distro = rhel7.4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
############
|
||||||
|
# OpenSUSE #
|
||||||
|
############
|
||||||
|
|
||||||
|
# Final opensuse10 series
|
||||||
|
[opensuse10.3]
|
||||||
|
url = http://ftp5.gwdg.de/pub/opensuse/discontinued/distribution/10.3/repo/oss
|
||||||
|
distro = opensuse10.3
|
||||||
|
# Final opensuse11 series
|
||||||
|
[opensuse11.4]
|
||||||
|
url = http://ftp5.gwdg.de/pub/opensuse/discontinued/distribution/11.4/repo/oss
|
||||||
|
distro = opensuse11.4
|
||||||
|
# Final opensuse12 series
|
||||||
|
[opensuse12.3]
|
||||||
|
url = http://ftp5.gwdg.de/pub/opensuse/discontinued/distribution/12.3/repo/oss
|
||||||
|
distro = opensuse12.3
|
||||||
|
testshortcircuit = 1
|
||||||
|
# Final opensuse13 series
|
||||||
|
[opensuse13.2]
|
||||||
|
url = http://ftp5.gwdg.de/pub/opensuse/discontinued/distribution/13.2/repo/oss
|
||||||
|
distro = opensuse13.2
|
||||||
|
# opensuse tumbleweed (rolling distro)
|
||||||
|
# Test for xen for full coverage
|
||||||
|
[opensusetumbleweed]
|
||||||
|
url = http://download.opensuse.org/tumbleweed/repo/oss/
|
||||||
|
distro = opensusetumbleweed
|
||||||
|
testxen = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##########
|
||||||
|
# Debian #
|
||||||
|
##########
|
||||||
|
|
||||||
|
# Debian FTP test case, for ftp:// testing. No particular reason it's
|
||||||
|
# debian. There should only be one ftp case since it's slooowwww
|
||||||
|
[debian8-ftp]
|
||||||
|
url = ftp://ftp.nluug.nl/pub/os/Linux/distr/debian/dists/jessie/main/installer-amd64/
|
||||||
|
distro = debian8
|
||||||
|
|
||||||
|
# Debian latest-1
|
||||||
|
[debian8]
|
||||||
|
url = http://ftp.us.debian.org/debian/dists/jessie/main/installer-amd64/
|
||||||
|
distro = debian8
|
||||||
|
# Debian latest, plus some exotic arch coverage
|
||||||
|
[debian9]
|
||||||
|
url = http://ftp.us.debian.org/debian/dists/stretch/main/installer-amd64/
|
||||||
|
distro = debian9
|
||||||
|
[debian9-s390x]
|
||||||
|
url = http://ftp.us.debian.org/debian/dists/stretch/main/installer-s390x/
|
||||||
|
distro = debian9
|
||||||
|
[debian9-arm64]
|
||||||
|
url = http://ftp.us.debian.org/debian/dists/stretch/main/installer-arm64/
|
||||||
|
distro = debian9
|
||||||
|
# Dialy tree, but also check for xen and boot.iso for full coverage
|
||||||
|
[debiandaily]
|
||||||
|
url = http://d-i.debian.org/daily-images/amd64/
|
||||||
|
testxen = 1
|
||||||
|
testbootiso = 1
|
||||||
|
distro = debiantesting
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##########
|
||||||
|
# Ubuntu #
|
||||||
|
##########
|
||||||
|
|
||||||
|
# A couple old examples
|
||||||
|
[ubuntu8.04]
|
||||||
|
url = http://old-releases.ubuntu.com/ubuntu/dists/hardy/main/installer-amd64
|
||||||
|
distro = ubuntu8.04
|
||||||
|
testshortcircuit = 1
|
||||||
|
[ubuntu8.04-i686]
|
||||||
|
# Sneak a port parsing example in here
|
||||||
|
url = http://old-releases.ubuntu.com:80/ubuntu/dists/hardy/main/installer-i386
|
||||||
|
distro = ubuntu8.04
|
||||||
|
testshortcircuit = 1
|
||||||
|
|
||||||
|
# Latest LTS
|
||||||
|
[ubuntu16.04]
|
||||||
|
url = http://us.archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64
|
||||||
|
distro = ubuntu16.04
|
||||||
|
# Latest release.
|
||||||
|
# Check for xen and boot iso for full coverage
|
||||||
|
[ubuntu17.10]
|
||||||
|
url = http://us.archive.ubuntu.com/ubuntu/dists/artful/main/installer-amd64
|
||||||
|
testxen = 1
|
||||||
|
testbootiso = 1
|
||||||
|
# No entry in libosinfo yet
|
||||||
|
#distro = ubuntu17.10
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##########
|
||||||
|
# Mageia #
|
||||||
|
##########
|
||||||
|
|
||||||
|
# Latest release
|
||||||
|
[mageia6]
|
||||||
|
url = http://distro.ibiblio.org/mageia/distrib/6/x86_64/
|
||||||
|
# Devel tree
|
||||||
|
[mageiacauldron]
|
||||||
|
url = http://distro.ibiblio.org/mageia/distrib/cauldron/x86_64/
|
@ -18,182 +18,88 @@
|
|||||||
import unittest
|
import unittest
|
||||||
import time
|
import time
|
||||||
import logging
|
import logging
|
||||||
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from tests import URLTEST_LOCAL_MEDIA
|
|
||||||
from tests import utils
|
from tests import utils
|
||||||
|
|
||||||
from virtinst import Guest
|
from virtinst import Guest
|
||||||
from virtinst import urlfetcher
|
from virtinst import urlfetcher
|
||||||
from virtinst import util
|
from virtinst import util
|
||||||
from virtinst.urlfetcher import FedoraDistro
|
from virtinst.urlfetcher import ALTLinuxDistro
|
||||||
from virtinst.urlfetcher import SuseDistro
|
|
||||||
from virtinst.urlfetcher import DebianDistro
|
|
||||||
from virtinst.urlfetcher import CentOSDistro
|
from virtinst.urlfetcher import CentOSDistro
|
||||||
from virtinst.urlfetcher import SLDistro
|
from virtinst.urlfetcher import DebianDistro
|
||||||
from virtinst.urlfetcher import UbuntuDistro
|
from virtinst.urlfetcher import FedoraDistro
|
||||||
|
from virtinst.urlfetcher import GenericDistro
|
||||||
from virtinst.urlfetcher import MandrivaDistro
|
from virtinst.urlfetcher import MandrivaDistro
|
||||||
|
from virtinst.urlfetcher import RHELDistro
|
||||||
|
from virtinst.urlfetcher import SLDistro
|
||||||
# pylint: disable=protected-access
|
from virtinst.urlfetcher import SuseDistro
|
||||||
# Access to protected member, needed to unittest stuff
|
from virtinst.urlfetcher import UbuntuDistro
|
||||||
|
|
||||||
ARCHIVE_FEDORA_URL = "https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/%s/Fedora/%s/os/"
|
|
||||||
DEVFEDORA_URL = "http://dl.fedoraproject.org/pub/fedora/linux/development/%s/Server/%s/os/"
|
|
||||||
FEDORA_URL = "http://dl.fedoraproject.org/pub/fedora/linux/releases/%s/Server/%s/os/"
|
|
||||||
|
|
||||||
OLD_CENTOS_URL = "http://vault.centos.org/%s/os/%s"
|
|
||||||
CENTOS_URL = "http://mirrors.mit.edu/centos/%s/os/%s/"
|
|
||||||
OLD_SCIENTIFIC_URL = "http://ftp.scientificlinux.org/linux/scientific/%s/%s/"
|
|
||||||
SCIENTIFIC_URL = "http://ftp.scientificlinux.org/linux/scientific/%s/%s/os"
|
|
||||||
|
|
||||||
OPENSUSE10 = "http://ftp.hosteurope.de/mirror/ftp.opensuse.org/discontinued/10.0"
|
|
||||||
OLD_OPENSUSE_URL = "http://ftp5.gwdg.de/pub/opensuse/discontinued/distribution/%s/repo/oss"
|
|
||||||
OPENSUSE_URL = "http://download.opensuse.org/distribution/%s/repo/oss/"
|
|
||||||
OPENSUSE_TUMBLEWEED = "http://download.opensuse.org/tumbleweed/repo/oss/"
|
|
||||||
|
|
||||||
OLD_UBUNTU_URL = "http://old-releases.ubuntu.com/ubuntu/dists/%s/main/installer-%s"
|
|
||||||
UBUNTU_URL = "http://us.archive.ubuntu.com:80/ubuntu/dists/%s/main/installer-%s"
|
|
||||||
|
|
||||||
OLD_DEBIAN_URL = "http://archive.debian.org/debian/dists/%s/main/installer-%s/"
|
|
||||||
DAILY_DEBIAN_URL = "http://d-i.debian.org/daily-images/%s/"
|
|
||||||
DEBIAN_URL = "http://ftp.us.debian.org/debian/dists/%s/main/installer-%s/"
|
|
||||||
|
|
||||||
MAGEIA_URL = "http://distro.ibiblio.org/mageia/distrib/%s/%s"
|
|
||||||
|
|
||||||
|
|
||||||
urls = {}
|
|
||||||
_distro = None
|
|
||||||
|
|
||||||
|
|
||||||
class _DistroURL(object):
|
class _DistroURL(object):
|
||||||
def __init__(self, url, detectdistro=None,
|
def __init__(self, name, url, detectdistro,
|
||||||
hasxen=True, hasbootiso=True, name=None,
|
testxen, testbootiso, testshortcircuit):
|
||||||
testshortcircuit=False, arch="x86_64"):
|
self.name = name
|
||||||
self.url = url
|
self.url = url
|
||||||
self.arch = arch
|
|
||||||
self.detectdistro = detectdistro
|
self.detectdistro = detectdistro
|
||||||
self.hasxen = hasxen
|
self.arch = self._find_arch()
|
||||||
self.hasbootiso = hasbootiso
|
self.distroclass = self._distroclass_for_name(self.name)
|
||||||
if name:
|
logging.debug("Testing for media arch=%s distroclass=%s",
|
||||||
self.name = name
|
self.arch, self.distroclass)
|
||||||
else:
|
|
||||||
self.name = self.detectdistro
|
self.testxen = testxen
|
||||||
if self.arch != "x86_64":
|
self.testbootiso = testbootiso
|
||||||
self.name += "-%s" % self.arch
|
|
||||||
self.distroclass = _distro
|
|
||||||
|
|
||||||
# If True, pass in the expected distro value to getDistroStore
|
# If True, pass in the expected distro value to getDistroStore
|
||||||
# so it can short circuit the lookup checks
|
# so it can short circuit the lookup checks. Speeds up the tests
|
||||||
|
# and exercises the shortcircuit infrastructure
|
||||||
self.testshortcircuit = testshortcircuit
|
self.testshortcircuit = testshortcircuit
|
||||||
|
|
||||||
|
def _distroclass_for_name(self, name):
|
||||||
|
# Map the test case name to the expected urlfetcher distro
|
||||||
|
# class we should be detecting
|
||||||
|
if "fedora" in name:
|
||||||
|
return FedoraDistro
|
||||||
|
if "centos" in name:
|
||||||
|
return CentOSDistro
|
||||||
|
if "rhel" in name:
|
||||||
|
return RHELDistro
|
||||||
|
if "suse" in name:
|
||||||
|
return SuseDistro
|
||||||
|
if "debian" in name:
|
||||||
|
return DebianDistro
|
||||||
|
if name.startswith("sl-"):
|
||||||
|
return SLDistro
|
||||||
|
if "ubuntu" in name:
|
||||||
|
return UbuntuDistro
|
||||||
|
if "mageia" in name:
|
||||||
|
return MandrivaDistro
|
||||||
|
if "altlinux" in name:
|
||||||
|
return ALTLinuxDistro
|
||||||
|
if "generic" in name:
|
||||||
|
return GenericDistro
|
||||||
|
raise RuntimeError("name=%s didn't map to any distro class. Extend "
|
||||||
|
"_distroclass_for_name" % name)
|
||||||
|
|
||||||
def _set_distro(_d):
|
def _find_arch(self):
|
||||||
# Saves us from having to pass distro class to ever _add invocation
|
if ("i686" in self.url or
|
||||||
global _distro
|
"i386" in self.url or
|
||||||
_distro = _d
|
"i586" in self.url):
|
||||||
|
return "i686"
|
||||||
|
if ("arm64" in self.url or
|
||||||
def _add(*args, **kwargs):
|
"aarch64" in self.url):
|
||||||
_d = _DistroURL(*args, **kwargs)
|
return "aarch64"
|
||||||
if _d.name in urls:
|
if ("ppc64el" in self.url or
|
||||||
raise RuntimeError("distro=%s url=%s collides with entry in urls, "
|
"ppc64le" in self.url):
|
||||||
"set a unique name" % (_d.name, _d.url))
|
return "ppc64le"
|
||||||
urls[_d.name] = _d
|
if "s390" in self.url:
|
||||||
|
return "s390x"
|
||||||
|
if ("x86_64" in self.url or
|
||||||
# Goal here is generally to cover all tree variants for each distro,
|
"amd64" in self.url):
|
||||||
# where feasible. Don't exhaustively test i686 trees since most people
|
return "x86_64"
|
||||||
# aren't using it and it slows down the test, only use it in a couple
|
return "x86_64"
|
||||||
# places. Follow the comments for what trees to keep around
|
|
||||||
|
|
||||||
_set_distro(FedoraDistro)
|
|
||||||
# One old Fedora
|
|
||||||
_add(ARCHIVE_FEDORA_URL % ("14", "x86_64"), "fedora14")
|
|
||||||
_add(ARCHIVE_FEDORA_URL % ("14", "i386"), "fedora14", arch="i686")
|
|
||||||
# 2 Latest releases
|
|
||||||
_add(FEDORA_URL % ("26", "x86_64"), "fedora26")
|
|
||||||
_add(FEDORA_URL % ("27", "x86_64"), "fedora26", name="fedora27")
|
|
||||||
# Any Dev release
|
|
||||||
# _add(DEVFEDORA_URL % ("25", "x86_64"), "fedora23", name="fedora25")
|
|
||||||
_add(DEVFEDORA_URL % ("rawhide", "x86_64"), "fedora26", name="fedora-rawhide")
|
|
||||||
|
|
||||||
|
|
||||||
_set_distro(CentOSDistro)
|
|
||||||
# One old and new centos 4. No distro detection since there's no treeinfo
|
|
||||||
_add(OLD_CENTOS_URL % ("4.0", "x86_64"), hasxen=False, name="centos-4.0")
|
|
||||||
_add(OLD_CENTOS_URL % ("4.9", "x86_64"), name="centos-4.9")
|
|
||||||
# One old centos 5
|
|
||||||
_add(OLD_CENTOS_URL % ("5.0", "x86_64"), name="centos-5.0")
|
|
||||||
# Latest centos 5 w/ i686
|
|
||||||
_add(OLD_CENTOS_URL % ("5.11", "x86_64"), "rhel5.11", name="centos-5.11")
|
|
||||||
_add(OLD_CENTOS_URL % ("5.11", "i386"), "rhel5.11",
|
|
||||||
name="centos-5.11-i686", arch="i686")
|
|
||||||
# Latest centos 6 w/ i686
|
|
||||||
_add(CENTOS_URL % ("6", "x86_64"), "centos6.9", name="centos-6-latest")
|
|
||||||
_add(CENTOS_URL % ("6", "i386"), "centos6.9",
|
|
||||||
name="centos-6-latest-i686", arch="1686")
|
|
||||||
# Latest centos 7, but no i686 as of 2014-09-06
|
|
||||||
_add(CENTOS_URL % ("7", "x86_64"), "centos7.0", name="centos-7-latest")
|
|
||||||
# Centos 7 ppc64le
|
|
||||||
_add("http://mirror.centos.org/altarch/7/os/ppc64le/",
|
|
||||||
"centos7.0", name="centos-7-ppc64", hasbootiso=False, hasxen=False)
|
|
||||||
|
|
||||||
|
|
||||||
_set_distro(SLDistro)
|
|
||||||
# Latest scientific 6
|
|
||||||
_add(SCIENTIFIC_URL % ("6", "x86_64"), "rhel6.9", name="sl-6latest")
|
|
||||||
# Latest scientific 7
|
|
||||||
_add(SCIENTIFIC_URL % ("7", "x86_64"), "rhel7.4", name="sl-7latest")
|
|
||||||
|
|
||||||
|
|
||||||
_set_distro(SuseDistro)
|
|
||||||
# Latest 10 series
|
|
||||||
_add(OLD_OPENSUSE_URL % ("10.3"), "opensuse10.3", hasbootiso=False)
|
|
||||||
# Latest 11 series
|
|
||||||
_add(OLD_OPENSUSE_URL % ("11.4"), "opensuse11.4", hasbootiso=False)
|
|
||||||
# Latest 12 series
|
|
||||||
_add(OLD_OPENSUSE_URL % ("12.2"), "opensuse12.2",
|
|
||||||
hasbootiso=False, testshortcircuit=True)
|
|
||||||
_add(OLD_OPENSUSE_URL % ("12.2"), "opensuse12.2",
|
|
||||||
hasbootiso=False, testshortcircuit=True, arch="i686")
|
|
||||||
# Latest 13.x releases
|
|
||||||
_add(OPENSUSE_URL % ("13.1"), "opensuse13.1", hasbootiso=False)
|
|
||||||
# tumbleweed (rolling distro)
|
|
||||||
_add(OPENSUSE_TUMBLEWEED, "opensusetumbleweed", hasbootiso=False)
|
|
||||||
|
|
||||||
|
|
||||||
_set_distro(DebianDistro)
|
|
||||||
# FTP test case (only one since ftp tends to be horribly slow)
|
|
||||||
_add("ftp://ftp.nluug.nl/pub/os/Linux/distr/debian/dists/jessie/main/installer-amd64/", "debian8", name="debian8-ftp")
|
|
||||||
# Debian releases rarely enough that we can just do every release since lenny
|
|
||||||
_add(OLD_DEBIAN_URL % ("lenny", "amd64"), "debian5", hasxen=False,
|
|
||||||
testshortcircuit=True)
|
|
||||||
_add(DEBIAN_URL % ("wheezy", "amd64"), "debian7")
|
|
||||||
_add(DEBIAN_URL % ("jessie", "amd64"), "debian8")
|
|
||||||
_add(DEBIAN_URL % ("jessie", "s390x"), "debian8",
|
|
||||||
hasbootiso=False, hasxen=False, arch="s390x")
|
|
||||||
# And daily builds, since we specially handle that URL
|
|
||||||
_add(DAILY_DEBIAN_URL % ("amd64"), "debiantesting", name="debiandaily")
|
|
||||||
_add(DAILY_DEBIAN_URL % ("arm64"), "debiantesting",
|
|
||||||
name="debiandailyarm64", hasxen=False)
|
|
||||||
|
|
||||||
|
|
||||||
_set_distro(UbuntuDistro)
|
|
||||||
# One old ubuntu
|
|
||||||
_add(OLD_UBUNTU_URL % ("hardy", "amd64"), "ubuntu8.04",
|
|
||||||
hasxen=False, testshortcircuit=True)
|
|
||||||
_add(OLD_UBUNTU_URL % ("hardy", "i386"), "ubuntu8.04",
|
|
||||||
hasxen=False, testshortcircuit=True, arch="1686")
|
|
||||||
# Latest LTS
|
|
||||||
_add(UBUNTU_URL % ("precise", "amd64"), "ubuntu12.04")
|
|
||||||
# Latest release
|
|
||||||
_add(UBUNTU_URL % ("xenial", "amd64"), "ubuntu16.04")
|
|
||||||
|
|
||||||
|
|
||||||
_set_distro(MandrivaDistro)
|
|
||||||
_add(MAGEIA_URL % ("5", "x86_64"), name="mageia5", hasxen=False)
|
|
||||||
|
|
||||||
|
|
||||||
testconn = utils.open_testdefault()
|
testconn = utils.open_testdefault()
|
||||||
hvmguest = Guest(testconn)
|
hvmguest = Guest(testconn)
|
||||||
@ -221,12 +127,14 @@ def _storeForDistro(fetcher, guest):
|
|||||||
raise # pylint: disable=misplaced-bare-raise
|
raise # pylint: disable=misplaced-bare-raise
|
||||||
|
|
||||||
|
|
||||||
def _testURL(fetcher, distname, distroobj):
|
def _testURL(fetcher, distroobj):
|
||||||
"""
|
"""
|
||||||
Test that our URL detection logic works for grabbing kernel, xen
|
Test that our URL detection logic works for grabbing kernel, xen
|
||||||
kernel, and boot.iso
|
kernel, and boot.iso
|
||||||
"""
|
"""
|
||||||
import sys
|
os.environ.pop("VIRTINST_TEST_SUITE", None)
|
||||||
|
|
||||||
|
distname = distroobj.name
|
||||||
sys.stdout.write("\nTesting %-25s " % distname)
|
sys.stdout.write("\nTesting %-25s " % distname)
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
@ -236,11 +144,14 @@ def _testURL(fetcher, distname, distroobj):
|
|||||||
if distroobj.testshortcircuit:
|
if distroobj.testshortcircuit:
|
||||||
hvmguest.os_variant = distroobj.detectdistro
|
hvmguest.os_variant = distroobj.detectdistro
|
||||||
xenguest.os_variant = distroobj.detectdistro
|
xenguest.os_variant = distroobj.detectdistro
|
||||||
|
else:
|
||||||
|
hvmguest.os_variant = None
|
||||||
|
xenguest.os_variant = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hvmstore = _storeForDistro(fetcher, hvmguest)
|
hvmstore = _storeForDistro(fetcher, hvmguest)
|
||||||
xenstore = None
|
xenstore = None
|
||||||
if distroobj.hasxen:
|
if distroobj.testxen:
|
||||||
xenstore = _storeForDistro(fetcher, xenguest)
|
xenstore = _storeForDistro(fetcher, xenguest)
|
||||||
except Exception:
|
except Exception:
|
||||||
raise AssertionError("\nFailed to detect URLDistro class:\n"
|
raise AssertionError("\nFailed to detect URLDistro class:\n"
|
||||||
@ -261,7 +172,7 @@ def _testURL(fetcher, distname, distroobj):
|
|||||||
|
|
||||||
# Make sure the stores are reporting correct distro name/variant
|
# Make sure the stores are reporting correct distro name/variant
|
||||||
if (s and distroobj.detectdistro and
|
if (s and distroobj.detectdistro and
|
||||||
distroobj.detectdistro != s.os_variant):
|
distroobj.detectdistro != s.get_osdict_info()):
|
||||||
raise AssertionError(
|
raise AssertionError(
|
||||||
"Detected OS did not match expected values:\n"
|
"Detected OS did not match expected values:\n"
|
||||||
"found = %s\n"
|
"found = %s\n"
|
||||||
@ -280,10 +191,7 @@ def _testURL(fetcher, distname, distroobj):
|
|||||||
fetcher.acquireFile = fakeAcquireFile
|
fetcher.acquireFile = fakeAcquireFile
|
||||||
|
|
||||||
# Fetch boot iso
|
# Fetch boot iso
|
||||||
if not distroobj.hasbootiso:
|
if distroobj.testbootiso:
|
||||||
logging.debug("Known lack of boot.iso in %s tree. Skipping.",
|
|
||||||
distname)
|
|
||||||
else:
|
|
||||||
boot = hvmstore.acquireBootDisk(hvmguest)
|
boot = hvmstore.acquireBootDisk(hvmguest)
|
||||||
logging.debug("acquireBootDisk: %s", str(boot))
|
logging.debug("acquireBootDisk: %s", str(boot))
|
||||||
|
|
||||||
@ -300,9 +208,7 @@ def _testURL(fetcher, distname, distroobj):
|
|||||||
(distname, arch))
|
(distname, arch))
|
||||||
|
|
||||||
# Fetch xen kernel
|
# Fetch xen kernel
|
||||||
if not xenstore:
|
if xenstore:
|
||||||
logging.debug("acquireKernel (xen): Hardcoded skipping.")
|
|
||||||
else:
|
|
||||||
kern = xenstore.acquireKernel(xenguest)
|
kern = xenstore.acquireKernel(xenguest)
|
||||||
logging.debug("acquireKernel (xen): %s", str(kern))
|
logging.debug("acquireKernel (xen): %s", str(kern))
|
||||||
|
|
||||||
@ -311,47 +217,42 @@ def _testURL(fetcher, distname, distroobj):
|
|||||||
(distname, arch))
|
(distname, arch))
|
||||||
|
|
||||||
|
|
||||||
def _fetch_wrapper(url, cb, *args):
|
def _testURLWrapper(distroobj):
|
||||||
fetcher = urlfetcher.fetcherForURI(url, "/tmp", meter)
|
fetcher = urlfetcher.fetcherForURI(distroobj.url, "/tmp", meter)
|
||||||
try:
|
try:
|
||||||
fetcher.prepareLocation()
|
fetcher.prepareLocation()
|
||||||
return cb(fetcher, *args)
|
return _testURL(fetcher, distroobj)
|
||||||
finally:
|
finally:
|
||||||
fetcher.cleanupLocation()
|
fetcher.cleanupLocation()
|
||||||
|
|
||||||
|
|
||||||
def _make_test_wrapper(url, args):
|
|
||||||
def cmdtemplate():
|
|
||||||
return _fetch_wrapper(url, _testURL, *args)
|
|
||||||
return lambda _self: cmdtemplate()
|
|
||||||
|
|
||||||
|
|
||||||
# Register tests to be picked up by unittest
|
# Register tests to be picked up by unittest
|
||||||
# If local ISO tests requested, skip all other URL tests
|
|
||||||
class URLTests(unittest.TestCase):
|
class URLTests(unittest.TestCase):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def _make_tests():
|
def _make_tests():
|
||||||
global urls
|
import ConfigParser
|
||||||
|
cfg = ConfigParser.ConfigParser()
|
||||||
|
cfg.read("tests/test_urls.ini")
|
||||||
|
|
||||||
if URLTEST_LOCAL_MEDIA:
|
urls = {}
|
||||||
urls = {}
|
for name in cfg.sections():
|
||||||
newidx = 0
|
vals = dict(cfg.items(name))
|
||||||
for p in URLTEST_LOCAL_MEDIA:
|
d = _DistroURL(name, vals["url"],
|
||||||
newidx += 1
|
vals.get("distro", None),
|
||||||
|
vals.get("testxen", "0") == "1",
|
||||||
d = _DistroURL(p, None, hasxen=False, hasbootiso=False,
|
vals.get("testbootiso", "0") == "1",
|
||||||
name="path%s" % newidx)
|
vals.get("testshortcircuit", "0") == "1")
|
||||||
d.distroclass = None
|
urls[d.name] = d
|
||||||
urls[d.name] = d
|
|
||||||
|
|
||||||
keys = urls.keys()
|
keys = urls.keys()
|
||||||
keys.sort()
|
keys.sort()
|
||||||
for key in keys:
|
for key in keys:
|
||||||
distroobj = urls[key]
|
distroobj = urls[key]
|
||||||
args = (key, distroobj)
|
def _make_wrapper(d):
|
||||||
testfunc = _make_test_wrapper(distroobj.url, args)
|
return lambda _self: _testURLWrapper(d)
|
||||||
setattr(URLTests, "testURL%s" % key, testfunc)
|
setattr(URLTests, "testURL%s" % key.replace("-", "_"),
|
||||||
|
_make_wrapper(distroobj))
|
||||||
|
|
||||||
_make_tests()
|
_make_tests()
|
||||||
|
Loading…
Reference in New Issue
Block a user