For selection of boottest candidates, use a list of url formats for downloading the appropriate touch image manifest for a given release.

bzr-import-20160707
Francis Ginther 10 years ago
commit 9e238f7406

@ -69,32 +69,43 @@ class TouchManifest(object):
self._manifest = self._load()
def __fetch_manifest(self, project, series):
url = "http://cdimage.ubuntu.com/{}/daily-preinstalled/" \
"pending/{}-preinstalled-touch-armhf.manifest".format(
project, series
)
# There are two url formats that may lead to the proper manifest
# file. The first form is for series that have been released,
# the second form is for the current development series.
# Only one of these is expected to exist for any given series.
url_list = [
"http://cdimage.ubuntu.com/{}/{}/daily-preinstalled/pending/" \
"{}-preinstalled-touch-armhf.manifest".format(
project, series, series),
"http://cdimage.ubuntu.com/{}/daily-preinstalled/pending/" \
"{}-preinstalled-touch-armhf.manifest".format(
project, series),
]
success = False
if self.verbose:
print(
"I: [%s] - Fetching manifest from %s" % (
time.asctime(), url))
print("I: [%s] - saving it to %s" % (time.asctime(), self.path))
try:
response = urllib.urlopen(url)
except IOError as e:
print("W: [%s] - error connecting to %s: %s" % (
time.asctime(), self.path, e))
return success # failure
# Only [re]create the manifest file if one was successfully downloaded
# this allows for an existing image to be used if the download fails.
if response.code == 200:
path_dir = os.path.dirname(self.path)
if not os.path.exists(path_dir):
os.makedirs(path_dir)
with open(self.path, 'w') as fp:
fp.write(response.read())
success = True
for url in url_list:
if self.verbose:
print("I: [%s] - Fetching manifest from %s" %
(time.asctime(), url))
print("I: [%s] - saving it to %s" %
(time.asctime(), self.path))
try:
response = urllib.urlopen(url)
if response.code == 200:
# Only [re]create the manifest file if one was successfully
# downloaded. This allows for an existing image to be used
# if the download fails.
path_dir = os.path.dirname(self.path)
if not os.path.exists(path_dir):
os.makedirs(path_dir)
with open(self.path, 'w') as fp:
fp.write(response.read())
success = True
break
except IOError as e:
print("W: [%s] - error connecting to %s: %s" % (
time.asctime(), self.path, e))
return success

@ -49,7 +49,10 @@ class TestTouchManifest(unittest.TestCase):
self.addCleanup(shutil.rmtree, self.path)
_p = mock.patch('urllib.urlopen')
self.mocked_urlopen = _p.start()
self.mocked_urlopen.side_effect = [FakeResponse(code=404),]
self.mocked_urlopen.side_effect = [
FakeResponse(code=404),
FakeResponse(code=404),
]
self.addCleanup(_p.stop)
self.fetch_retries_orig = boottest.FETCH_RETRIES
def restore_fetch_retries():
@ -90,7 +93,10 @@ class TestTouchManifest(unittest.TestCase):
self.assertIn('foo', manifest)
def test_fetch_exception(self):
self.mocked_urlopen.side_effect = [IOError("connection refused")]
self.mocked_urlopen.side_effect = [
IOError("connection refused"),
IOError("connection refused"),
]
manifest = boottest.TouchManifest('not-real', 'not-real')
self.assertEqual(0, len(manifest._manifest))

Loading…
Cancel
Save