mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-10-31 08:34:04 +00:00 
			
		
		
		
	For selection of boottest candidates, use a list of url formats for downloading the appropriate touch image manifest for a given release.
This commit is contained in:
		
						commit
						9e238f7406
					
				
							
								
								
									
										41
									
								
								boottest.py
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								boottest.py
									
									
									
									
									
								
							| @ -69,32 +69,43 @@ class TouchManifest(object): | |||||||
|         self._manifest = self._load() |         self._manifest = self._load() | ||||||
| 
 | 
 | ||||||
|     def __fetch_manifest(self, project, series): |     def __fetch_manifest(self, project, series): | ||||||
|         url = "http://cdimage.ubuntu.com/{}/daily-preinstalled/" \ |         # There are two url formats that may lead to the proper manifest | ||||||
|               "pending/{}-preinstalled-touch-armhf.manifest".format( |         # file. The first form is for series that have been released, | ||||||
|                   project, series |         # 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 |         success = False | ||||||
|  |         for url in url_list: | ||||||
|             if self.verbose: |             if self.verbose: | ||||||
|             print( |                 print("I: [%s] - Fetching manifest from %s" % | ||||||
|                 "I: [%s] - Fetching manifest from %s" % ( |                       (time.asctime(), url)) | ||||||
|                     time.asctime(), url)) |                 print("I: [%s] - saving it to %s" % | ||||||
|             print("I: [%s] - saving it to %s" % (time.asctime(), self.path)) |                       (time.asctime(), self.path)) | ||||||
|             try: |             try: | ||||||
|                 response = urllib.urlopen(url) |                 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: |                 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) |                     path_dir = os.path.dirname(self.path) | ||||||
|                     if not os.path.exists(path_dir): |                     if not os.path.exists(path_dir): | ||||||
|                         os.makedirs(path_dir) |                         os.makedirs(path_dir) | ||||||
|                     with open(self.path, 'w') as fp: |                     with open(self.path, 'w') as fp: | ||||||
|                         fp.write(response.read()) |                         fp.write(response.read()) | ||||||
|                     success = True |                     success = True | ||||||
|  |                     break | ||||||
|  | 
 | ||||||
|  |             except IOError as e: | ||||||
|  |                 print("W: [%s] - error connecting to %s: %s" % ( | ||||||
|  |                         time.asctime(), self.path, e)) | ||||||
| 
 | 
 | ||||||
|         return success |         return success | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -49,7 +49,10 @@ class TestTouchManifest(unittest.TestCase): | |||||||
|         self.addCleanup(shutil.rmtree, self.path) |         self.addCleanup(shutil.rmtree, self.path) | ||||||
|         _p = mock.patch('urllib.urlopen') |         _p = mock.patch('urllib.urlopen') | ||||||
|         self.mocked_urlopen = _p.start() |         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.addCleanup(_p.stop) | ||||||
|         self.fetch_retries_orig = boottest.FETCH_RETRIES |         self.fetch_retries_orig = boottest.FETCH_RETRIES | ||||||
|         def restore_fetch_retries(): |         def restore_fetch_retries(): | ||||||
| @ -90,7 +93,10 @@ class TestTouchManifest(unittest.TestCase): | |||||||
|         self.assertIn('foo', manifest) |         self.assertIn('foo', manifest) | ||||||
| 
 | 
 | ||||||
|     def test_fetch_exception(self): |     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') |         manifest = boottest.TouchManifest('not-real', 'not-real') | ||||||
|         self.assertEqual(0, len(manifest._manifest)) |         self.assertEqual(0, len(manifest._manifest)) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user