OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import copy | 6 import copy |
7 import datetime | 7 import datetime |
8 import hashlib | 8 import hashlib |
9 import logging | 9 import logging |
10 import os | 10 import os |
11 import posixpath | 11 import posixpath |
12 import subprocess | 12 import subprocess |
13 import sys | 13 import sys |
14 import tempfile | 14 import tempfile |
15 import unittest | 15 import unittest |
16 import urlparse | 16 import urlparse |
17 | 17 |
18 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) | 18 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
19 BUILD_TOOLS_DIR = os.path.dirname(SCRIPT_DIR) | 19 BUILD_TOOLS_DIR = os.path.dirname(SCRIPT_DIR) |
20 | 20 |
21 sys.path.append(BUILD_TOOLS_DIR) | 21 sys.path.append(BUILD_TOOLS_DIR) |
22 import manifest_util | 22 import manifest_util |
23 import update_nacl_manifest | 23 import update_nacl_manifest |
24 from update_nacl_manifest import CANARY_BUNDLE_NAME | 24 from update_nacl_manifest import CANARY_BUNDLE_NAME, BIONIC_CANARY_BUNDLE_NAME |
25 | 25 |
26 | 26 |
27 HTTPS_BASE_URL = 'https://storage.googleapis.com' \ | 27 HTTPS_BASE_URL = 'https://storage.googleapis.com' \ |
28 '/nativeclient_mirror/nacl/nacl_sdk/' | 28 '/nativeclient_mirror/nacl/nacl_sdk/' |
29 | 29 |
30 OS_CR = ('cros',) | 30 OS_CR = ('cros',) |
| 31 OS_L = ('linux',) |
31 OS_M = ('mac',) | 32 OS_M = ('mac',) |
32 OS_ML = ('mac', 'linux') | 33 OS_ML = ('mac', 'linux') |
33 OS_MW = ('mac', 'win') | 34 OS_MW = ('mac', 'win') |
34 OS_LW = ('linux', 'win') | 35 OS_LW = ('linux', 'win') |
35 OS_MLW = ('mac', 'linux', 'win') | 36 OS_MLW = ('mac', 'linux', 'win') |
36 OS_ALL = ('all',) | 37 OS_ALL = ('all',) |
37 POST_STABLE = 'post_stable' | 38 POST_STABLE = 'post_stable' |
38 STABLE = 'stable' | 39 STABLE = 'stable' |
39 BETA = 'beta' | 40 BETA = 'beta' |
40 DEV = 'dev' | 41 DEV = 'dev' |
41 CANARY = 'canary' | 42 CANARY = 'canary' |
42 | 43 |
43 | 44 |
44 def GetArchiveURL(basename, version): | 45 def GetArchiveURL(basename, version): |
45 return urlparse.urljoin(HTTPS_BASE_URL, posixpath.join(version, basename)) | 46 return urlparse.urljoin(HTTPS_BASE_URL, posixpath.join(version, basename)) |
46 | 47 |
47 | 48 |
48 def GetPlatformArchiveUrl(host_os, version): | 49 def GetPlatformArchiveUrl(host_os, version): |
49 basename = 'naclsdk_%s.tar.bz2' % (host_os,) | 50 basename = 'naclsdk_%s.tar.bz2' % (host_os,) |
50 return GetArchiveURL(basename, version) | 51 return GetArchiveURL(basename, version) |
51 | 52 |
52 | 53 |
| 54 def GetBionicArchiveUrl(version): |
| 55 basename = 'naclsdk_bionic.tar.bz2' |
| 56 return GetArchiveURL(basename, version) |
| 57 |
| 58 |
53 def MakeGsUrl(rel_path): | 59 def MakeGsUrl(rel_path): |
54 return update_nacl_manifest.GS_BUCKET_PATH + rel_path | 60 return update_nacl_manifest.GS_BUCKET_PATH + rel_path |
55 | 61 |
56 | 62 |
57 def GetPathFromGsUrl(url): | 63 def GetPathFromGsUrl(url): |
58 assert url.startswith(update_nacl_manifest.GS_BUCKET_PATH) | 64 assert url.startswith(update_nacl_manifest.GS_BUCKET_PATH) |
59 return url[len(update_nacl_manifest.GS_BUCKET_PATH):] | 65 return url[len(update_nacl_manifest.GS_BUCKET_PATH):] |
60 | 66 |
61 | 67 |
62 def GetPathFromHttpsUrl(url): | 68 def GetPathFromHttpsUrl(url): |
63 assert url.startswith(HTTPS_BASE_URL) | 69 assert url.startswith(HTTPS_BASE_URL) |
64 return url[len(HTTPS_BASE_URL):] | 70 return url[len(HTTPS_BASE_URL):] |
65 | 71 |
66 | 72 |
67 def MakeArchive(url, host_os): | 73 def MakeArchive(url, host_os): |
68 archive = manifest_util.Archive(host_os) | 74 archive = manifest_util.Archive(host_os) |
69 archive.url = url | 75 archive.url = url |
70 # dummy values that won't succeed if we ever use them, but will pass | 76 # dummy values that won't succeed if we ever use them, but will pass |
71 # validation. :) | 77 # validation. :) |
72 archive.checksum = {'sha1': 'foobar'} | 78 archive.checksum = {'sha1': 'foobar'} |
73 archive.size = 1 | 79 archive.size = 1 |
74 return archive | 80 return archive |
75 | 81 |
76 | 82 |
77 def MakePlatformArchive(host_os, version): | 83 def MakePlatformArchive(host_os, version): |
78 return MakeArchive(GetPlatformArchiveUrl(host_os, version), host_os) | 84 return MakeArchive(GetPlatformArchiveUrl(host_os, version), host_os) |
79 | 85 |
80 | 86 |
| 87 def MakeBionicArchive(host_os, version): |
| 88 return MakeArchive(GetBionicArchiveUrl(version), host_os) |
| 89 |
| 90 |
81 def MakeNonPlatformArchive(basename, version): | 91 def MakeNonPlatformArchive(basename, version): |
82 return MakeArchive(GetArchiveURL(basename, version), 'all') | 92 return MakeArchive(GetArchiveURL(basename, version), 'all') |
83 | 93 |
84 | 94 |
85 def MakeNonPepperBundle(name, with_archives=False): | 95 def MakeNonPepperBundle(name, with_archives=False): |
86 bundle = manifest_util.Bundle(name) | 96 bundle = manifest_util.Bundle(name) |
87 bundle.version = 1 | 97 bundle.version = 1 |
88 bundle.revision = 1 | 98 bundle.revision = 1 |
89 bundle.description = 'Dummy bundle' | 99 bundle.description = 'Dummy bundle' |
90 bundle.recommended = 'yes' | 100 bundle.recommended = 'yes' |
91 bundle.stability = 'stable' | 101 bundle.stability = 'stable' |
92 | 102 |
93 if with_archives: | 103 if with_archives: |
94 for host_os in OS_MLW: | 104 for host_os in OS_MLW: |
95 archive = manifest_util.Archive(host_os) | 105 archive = manifest_util.Archive(host_os) |
96 archive.url = 'http://example.com' | 106 archive.url = 'http://example.com' |
97 archive.checksum = {'sha1': 'blah'} | 107 archive.checksum = {'sha1': 'blah'} |
98 archive.size = 2 | 108 archive.size = 2 |
99 bundle.AddArchive(archive) | 109 bundle.AddArchive(archive) |
100 return bundle | 110 return bundle |
101 | 111 |
102 | 112 |
103 def MakePepperBundle(major_version, revision=0, version=None, stability='dev'): | 113 def MakePepperBundle(major_version, revision=0, version=None, stability='dev', |
| 114 bundle_name=None): |
104 assert (version is None or | 115 assert (version is None or |
105 version.split('.')[0] == 'trunk' or | 116 version.split('.')[0] == 'trunk' or |
106 version.split('.')[0] == str(major_version)) | 117 version.split('.')[0] == str(major_version)) |
107 if stability == CANARY: | 118 if not bundle_name: |
108 bundle_name = CANARY_BUNDLE_NAME | |
109 else: | |
110 bundle_name = 'pepper_' + str(major_version) | 119 bundle_name = 'pepper_' + str(major_version) |
111 | 120 |
112 bundle = manifest_util.Bundle(bundle_name) | 121 bundle = manifest_util.Bundle(bundle_name) |
113 bundle.version = major_version | 122 bundle.version = major_version |
114 bundle.revision = revision | 123 bundle.revision = revision |
115 bundle.description = 'Chrome %s bundle, revision %s' % (major_version, | 124 bundle.description = 'Chrome %s bundle, revision %s' % (major_version, |
116 revision) | 125 revision) |
117 bundle.repath = 'pepper_' + str(major_version) | 126 bundle.repath = 'pepper_' + str(major_version) |
118 bundle.recommended = 'no' | 127 bundle.recommended = 'no' |
119 bundle.stability = stability | 128 bundle.stability = stability |
120 | 129 |
121 return bundle | 130 return bundle |
122 | 131 |
123 | 132 |
124 def MakePlatformBundle(major_version, revision=0, version=None, host_oses=None, | 133 def MakePlatformBundle(major_version, revision=0, version=None, host_oses=None, |
125 stability='dev'): | 134 stability='dev'): |
126 bundle = MakePepperBundle(major_version, revision, version, stability) | 135 bundle = MakePepperBundle(major_version, revision, version, stability) |
127 | 136 |
128 if host_oses: | 137 if host_oses: |
129 for host_os in host_oses: | 138 for host_os in host_oses: |
130 bundle.AddArchive(MakePlatformArchive(host_os, version)) | 139 bundle.AddArchive(MakePlatformArchive(host_os, version)) |
131 | 140 |
132 return bundle | 141 return bundle |
133 | 142 |
134 | 143 |
| 144 def MakeBionicBundle(major_version, revision=0, version=None, host_oses=None): |
| 145 bundle = MakePepperBundle(major_version, revision, version, 'dev') |
| 146 |
| 147 if host_oses: |
| 148 for host_os in host_oses: |
| 149 bundle.AddArchive(MakeBionicArchive(host_os, version)) |
| 150 |
| 151 return bundle |
| 152 |
| 153 |
135 class MakeManifest(manifest_util.SDKManifest): | 154 class MakeManifest(manifest_util.SDKManifest): |
136 def __init__(self, *args): | 155 def __init__(self, *args): |
137 manifest_util.SDKManifest.__init__(self) | 156 manifest_util.SDKManifest.__init__(self) |
138 | 157 |
139 for bundle in args: | 158 for bundle in args: |
140 self.AddBundle(bundle) | 159 self.AddBundle(bundle) |
141 | 160 |
142 def AddBundle(self, bundle): | 161 def AddBundle(self, bundle): |
143 self.MergeBundle(bundle, allow_existing=False) | 162 self.MergeBundle(bundle, allow_existing=False) |
144 | 163 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 # Shorthand for premade bundles/versions | 252 # Shorthand for premade bundles/versions |
234 V18_0_1025_163 = '18.0.1025.163' | 253 V18_0_1025_163 = '18.0.1025.163' |
235 V18_0_1025_175 = '18.0.1025.175' | 254 V18_0_1025_175 = '18.0.1025.175' |
236 V18_0_1025_184 = '18.0.1025.184' | 255 V18_0_1025_184 = '18.0.1025.184' |
237 V19_0_1084_41 = '19.0.1084.41' | 256 V19_0_1084_41 = '19.0.1084.41' |
238 V19_0_1084_67 = '19.0.1084.67' | 257 V19_0_1084_67 = '19.0.1084.67' |
239 V21_0_1145_0 = '21.0.1145.0' | 258 V21_0_1145_0 = '21.0.1145.0' |
240 V21_0_1166_0 = '21.0.1166.0' | 259 V21_0_1166_0 = '21.0.1166.0' |
241 V26_0_1386_0 = '26.0.1386.0' | 260 V26_0_1386_0 = '26.0.1386.0' |
242 V26_0_1386_1 = '26.0.1386.1' | 261 V26_0_1386_1 = '26.0.1386.1' |
| 262 V37_0_2054_0 = '37.0.2054.0' |
243 VTRUNK_140819 = 'trunk.140819' | 263 VTRUNK_140819 = 'trunk.140819' |
| 264 VTRUNK_277776 = 'trunk.277776' |
244 B18_0_1025_163_MLW = MakePlatformBundle(18, 132135, V18_0_1025_163, OS_MLW) | 265 B18_0_1025_163_MLW = MakePlatformBundle(18, 132135, V18_0_1025_163, OS_MLW) |
245 B18_0_1025_184_MLW = MakePlatformBundle(18, 134900, V18_0_1025_184, OS_MLW) | 266 B18_0_1025_184_MLW = MakePlatformBundle(18, 134900, V18_0_1025_184, OS_MLW) |
246 B18_NONE = MakePlatformBundle(18) | 267 B18_NONE = MakePlatformBundle(18) |
247 B19_0_1084_41_MLW = MakePlatformBundle(19, 134854, V19_0_1084_41, OS_MLW) | 268 B19_0_1084_41_MLW = MakePlatformBundle(19, 134854, V19_0_1084_41, OS_MLW) |
248 B19_0_1084_67_MLW = MakePlatformBundle(19, 142000, V19_0_1084_67, OS_MLW) | 269 B19_0_1084_67_MLW = MakePlatformBundle(19, 142000, V19_0_1084_67, OS_MLW) |
249 B19_NONE = MakePlatformBundle(19) | 270 B19_NONE = MakePlatformBundle(19) |
250 BCANARY_NONE = MakePlatformBundle(0, stability=CANARY) | 271 BCANARY_NONE = MakePepperBundle(0, stability=CANARY, |
| 272 bundle_name=CANARY_BUNDLE_NAME) |
251 B21_0_1145_0_MLW = MakePlatformBundle(21, 138079, V21_0_1145_0, OS_MLW) | 273 B21_0_1145_0_MLW = MakePlatformBundle(21, 138079, V21_0_1145_0, OS_MLW) |
252 B21_0_1166_0_MW = MakePlatformBundle(21, 140819, V21_0_1166_0, OS_MW) | 274 B21_0_1166_0_MW = MakePlatformBundle(21, 140819, V21_0_1166_0, OS_MW) |
253 B26_NONE = MakePlatformBundle(26) | 275 B26_NONE = MakePlatformBundle(26) |
254 B26_0_1386_0_MLW = MakePlatformBundle(26, 177362, V26_0_1386_0, OS_MLW) | 276 B26_0_1386_0_MLW = MakePlatformBundle(26, 177362, V26_0_1386_0, OS_MLW) |
255 B26_0_1386_1_MLW = MakePlatformBundle(26, 177439, V26_0_1386_1, OS_MLW) | 277 B26_0_1386_1_MLW = MakePlatformBundle(26, 177439, V26_0_1386_1, OS_MLW) |
256 BTRUNK_140819_MLW = MakePlatformBundle(21, 140819, VTRUNK_140819, OS_MLW) | 278 BTRUNK_140819_MLW = MakePlatformBundle(21, 140819, VTRUNK_140819, OS_MLW) |
| 279 BBIONIC_NONE = MakePepperBundle(0, stability=CANARY, |
| 280 bundle_name=BIONIC_CANARY_BUNDLE_NAME) |
| 281 BBIONIC_TRUNK_277776 = MakeBionicBundle(37, 277776, VTRUNK_277776, OS_L) |
257 NON_PEPPER_BUNDLE_NOARCHIVES = MakeNonPepperBundle('foo') | 282 NON_PEPPER_BUNDLE_NOARCHIVES = MakeNonPepperBundle('foo') |
258 NON_PEPPER_BUNDLE_ARCHIVES = MakeNonPepperBundle('bar', with_archives=True) | 283 NON_PEPPER_BUNDLE_ARCHIVES = MakeNonPepperBundle('bar', with_archives=True) |
259 | 284 |
260 | 285 |
261 class TestUpdateManifest(unittest.TestCase): | 286 class TestUpdateManifest(unittest.TestCase): |
262 def setUp(self): | 287 def setUp(self): |
263 self.history = MakeHistory() | 288 self.history = MakeHistory() |
264 self.files = MakeFiles() | 289 self.files = MakeFiles() |
265 self.version_mapping = {} | 290 self.version_mapping = {} |
266 self.delegate = None | 291 self.delegate = None |
267 self.uploaded_manifest = None | 292 self.uploaded_manifest = None |
268 self.manifest = None | 293 self.manifest = None |
269 # Ignore logging warnings, etc. | 294 # Ignore logging warnings, etc. |
270 logging.getLogger('update_nacl_manifest').setLevel(logging.CRITICAL) | 295 logging.getLogger('update_nacl_manifest').setLevel(logging.INFO) |
271 | 296 |
272 def _MakeDelegate(self): | 297 def _MakeDelegate(self): |
273 self.delegate = TestDelegate(self.manifest, self.history.history, | 298 self.delegate = TestDelegate(self.manifest, self.history.history, |
274 self.files, self.version_mapping) | 299 self.files, self.version_mapping) |
275 | 300 |
276 def _Run(self, host_oses, extra_archives=None, fixed_bundle_versions=None): | 301 def _Run(self, host_oses, extra_archives=None, fixed_bundle_versions=None): |
277 update_nacl_manifest.Run(self.delegate, host_oses, extra_archives, | 302 update_nacl_manifest.Run(self.delegate, host_oses, extra_archives, |
278 fixed_bundle_versions) | 303 fixed_bundle_versions) |
279 | 304 |
280 def _HasUploadedManifest(self): | 305 def _HasUploadedManifest(self): |
281 return 'naclsdk_manifest2.json' in self.files | 306 return 'naclsdk_manifest2.json' in self.files |
282 | 307 |
283 def _ReadUploadedManifest(self): | 308 def _ReadUploadedManifest(self): |
284 self.uploaded_manifest = manifest_util.SDKManifest() | 309 self.uploaded_manifest = manifest_util.SDKManifest() |
285 self.uploaded_manifest.LoadDataFromString( | 310 self.uploaded_manifest.LoadDataFromString( |
286 self.files['naclsdk_manifest2.json']) | 311 self.files['naclsdk_manifest2.json']) |
287 | 312 |
288 def _AssertUploadedManifestHasBundle(self, bundle, stability): | 313 def _AssertUploadedManifestHasBundle(self, bundle, stability, |
289 if stability == CANARY: | 314 bundle_name=None): |
290 bundle_name = CANARY_BUNDLE_NAME | 315 if not bundle_name: |
291 else: | |
292 bundle_name = bundle.name | 316 bundle_name = bundle.name |
293 | 317 |
294 uploaded_manifest_bundle = self.uploaded_manifest.GetBundle(bundle_name) | 318 uploaded_manifest_bundle = self.uploaded_manifest.GetBundle(bundle_name) |
295 # Bundles that we create in the test (and in the manifest snippets) have | 319 # Bundles that we create in the test (and in the manifest snippets) have |
296 # their stability set to "dev". update_nacl_manifest correctly updates it. | 320 # their stability set to "dev". update_nacl_manifest correctly updates it. |
297 # So we have to force the stability of |bundle| so they compare equal. | 321 # So we have to force the stability of |bundle| so they compare equal. |
298 test_bundle = copy.copy(bundle) | 322 test_bundle = copy.copy(bundle) |
299 test_bundle.stability = stability | 323 test_bundle.stability = stability |
300 if stability == CANARY: | 324 if bundle_name: |
301 test_bundle.name = CANARY_BUNDLE_NAME | 325 test_bundle.name = bundle_name |
302 self.assertEqual(uploaded_manifest_bundle, test_bundle) | 326 self.assertEqual(uploaded_manifest_bundle, test_bundle) |
303 | 327 |
304 def _AddCsvHistory(self, history): | 328 def _AddCsvHistory(self, history): |
305 import csv | 329 import csv |
306 import cStringIO | 330 import cStringIO |
307 history_stream = cStringIO.StringIO(history) | 331 history_stream = cStringIO.StringIO(history) |
308 self.history.history = [(platform, channel, version, date) | 332 self.history.history = [(platform, channel, version, date) |
309 for platform, channel, version, date in csv.reader(history_stream)] | 333 for platform, channel, version, date in csv.reader(history_stream)] |
310 | 334 |
311 def testNoUpdateNeeded(self): | 335 def testNoUpdateNeeded(self): |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 # Note that the bundle in naclsdk_manifest2.json will be called | 482 # Note that the bundle in naclsdk_manifest2.json will be called |
459 # CANARY_BUNDLE_NAME, whereas the bundle in the manifest "snippet" will be | 483 # CANARY_BUNDLE_NAME, whereas the bundle in the manifest "snippet" will be |
460 # called "pepper_21". | 484 # called "pepper_21". |
461 canary_bundle = copy.deepcopy(BCANARY_NONE) | 485 canary_bundle = copy.deepcopy(BCANARY_NONE) |
462 self.manifest = MakeManifest(canary_bundle) | 486 self.manifest = MakeManifest(canary_bundle) |
463 self.history.Add(OS_MW, CANARY, V21_0_1145_0) | 487 self.history.Add(OS_MW, CANARY, V21_0_1145_0) |
464 self.files.Add(B21_0_1145_0_MLW) | 488 self.files.Add(B21_0_1145_0_MLW) |
465 self._MakeDelegate() | 489 self._MakeDelegate() |
466 self._Run(OS_MLW) | 490 self._Run(OS_MLW) |
467 self._ReadUploadedManifest() | 491 self._ReadUploadedManifest() |
468 self._AssertUploadedManifestHasBundle(B21_0_1145_0_MLW, CANARY) | 492 self._AssertUploadedManifestHasBundle(B21_0_1145_0_MLW, CANARY, |
| 493 bundle_name=CANARY_BUNDLE_NAME) |
469 | 494 |
470 def testUpdateCanaryUseTrunkArchives(self): | 495 def testUpdateCanaryUseTrunkArchives(self): |
471 canary_bundle = copy.deepcopy(BCANARY_NONE) | 496 canary_bundle = copy.deepcopy(BCANARY_NONE) |
472 self.manifest = MakeManifest(canary_bundle) | 497 self.manifest = MakeManifest(canary_bundle) |
473 self.history.Add(OS_MW, CANARY, V21_0_1166_0) | 498 self.history.Add(OS_MW, CANARY, V21_0_1166_0) |
474 self.files.Add(B21_0_1166_0_MW) | 499 self.files.Add(B21_0_1166_0_MW) |
475 self.files.Add(BTRUNK_140819_MLW) | 500 self.files.Add(BTRUNK_140819_MLW) |
476 self.version_mapping[V21_0_1166_0] = VTRUNK_140819 | 501 self.version_mapping[V21_0_1166_0] = VTRUNK_140819 |
477 self._MakeDelegate() | 502 self._MakeDelegate() |
478 self._Run(OS_MLW) | 503 self._Run(OS_MLW) |
479 self._ReadUploadedManifest() | 504 self._ReadUploadedManifest() |
480 | 505 |
481 test_bundle = copy.deepcopy(B21_0_1166_0_MW) | 506 test_bundle = copy.deepcopy(B21_0_1166_0_MW) |
482 test_bundle.AddArchive(BTRUNK_140819_MLW.GetArchive('linux')) | 507 test_bundle.AddArchive(BTRUNK_140819_MLW.GetArchive('linux')) |
483 self._AssertUploadedManifestHasBundle(test_bundle, CANARY) | 508 self._AssertUploadedManifestHasBundle(test_bundle, CANARY, |
| 509 bundle_name=CANARY_BUNDLE_NAME) |
484 | 510 |
485 def testCanaryUseOnlyTrunkArchives(self): | 511 def testCanaryUseOnlyTrunkArchives(self): |
486 self.manifest = MakeManifest(copy.deepcopy(BCANARY_NONE)) | 512 self.manifest = MakeManifest(copy.deepcopy(BCANARY_NONE)) |
487 history = """win,canary,21.0.1163.0,2012-06-04 12:35:44.784446 | 513 history = """win,canary,21.0.1163.0,2012-06-04 12:35:44.784446 |
488 mac,canary,21.0.1163.0,2012-06-04 11:54:09.433166""" | 514 mac,canary,21.0.1163.0,2012-06-04 11:54:09.433166""" |
489 self._AddCsvHistory(history) | 515 self._AddCsvHistory(history) |
490 self.version_mapping['21.0.1163.0'] = 'trunk.140240' | 516 self.version_mapping['21.0.1163.0'] = 'trunk.140240' |
491 my_bundle = MakePlatformBundle(21, 140240, '21.0.1163.0', OS_MLW) | 517 my_bundle = MakePlatformBundle(21, 140240, '21.0.1163.0', OS_MLW) |
492 self.files.Add(my_bundle) | 518 self.files.Add(my_bundle) |
493 self._MakeDelegate() | 519 self._MakeDelegate() |
494 self._Run(OS_MLW) | 520 self._Run(OS_MLW) |
495 self._ReadUploadedManifest() | 521 self._ReadUploadedManifest() |
496 self._AssertUploadedManifestHasBundle(my_bundle, CANARY) | 522 self._AssertUploadedManifestHasBundle(my_bundle, CANARY, |
| 523 bundle_name=CANARY_BUNDLE_NAME) |
497 | 524 |
498 def testCanaryShouldOnlyUseCanaryVersions(self): | 525 def testCanaryShouldOnlyUseCanaryVersions(self): |
499 canary_bundle = copy.deepcopy(BCANARY_NONE) | 526 canary_bundle = copy.deepcopy(BCANARY_NONE) |
500 self.manifest = MakeManifest(canary_bundle) | 527 self.manifest = MakeManifest(canary_bundle) |
501 self.history.Add(OS_MW, CANARY, V21_0_1166_0) | 528 self.history.Add(OS_MW, CANARY, V21_0_1166_0) |
502 self.history.Add(OS_MW, BETA, V19_0_1084_41) | 529 self.history.Add(OS_MW, BETA, V19_0_1084_41) |
503 self.files.Add(B19_0_1084_41_MLW) | 530 self.files.Add(B19_0_1084_41_MLW) |
504 self.version_mapping[V21_0_1166_0] = VTRUNK_140819 | 531 self.version_mapping[V21_0_1166_0] = VTRUNK_140819 |
505 self._MakeDelegate() | 532 self._MakeDelegate() |
506 self.assertRaises(Exception, self._Run, OS_MLW) | 533 self.assertRaises(Exception, self._Run, OS_MLW) |
(...skipping 24 matching lines...) Expand all Loading... |
531 '21.0.1157.0': 'unknown', | 558 '21.0.1157.0': 'unknown', |
532 '21.0.1156.1': 'trunk.139576', | 559 '21.0.1156.1': 'trunk.139576', |
533 '21.0.1156.0': 'trunk.139984'} | 560 '21.0.1156.0': 'trunk.139984'} |
534 self.files.Add(MakePlatformBundle(21, 139890, '21.0.1159.2', OS_MLW)) | 561 self.files.Add(MakePlatformBundle(21, 139890, '21.0.1159.2', OS_MLW)) |
535 self.files.Add(MakePlatformBundle(21, 0, '21.0.1157.1', ('linux', 'win'))) | 562 self.files.Add(MakePlatformBundle(21, 0, '21.0.1157.1', ('linux', 'win'))) |
536 my_bundle = MakePlatformBundle(21, 139576, '21.0.1156.1', OS_MLW) | 563 my_bundle = MakePlatformBundle(21, 139576, '21.0.1156.1', OS_MLW) |
537 self.files.Add(my_bundle) | 564 self.files.Add(my_bundle) |
538 self._MakeDelegate() | 565 self._MakeDelegate() |
539 self._Run(OS_MLW) | 566 self._Run(OS_MLW) |
540 self._ReadUploadedManifest() | 567 self._ReadUploadedManifest() |
541 self._AssertUploadedManifestHasBundle(my_bundle, CANARY) | 568 self._AssertUploadedManifestHasBundle(my_bundle, CANARY, |
| 569 bundle_name=CANARY_BUNDLE_NAME) |
542 | 570 |
543 def testExtensionWorksAsBz2(self): | 571 def testExtensionWorksAsBz2(self): |
544 # Allow old bundles with just .bz2 extension to work | 572 # Allow old bundles with just .bz2 extension to work |
545 self.manifest = MakeManifest(B18_NONE) | 573 self.manifest = MakeManifest(B18_NONE) |
546 self.history.Add(OS_MLW, BETA, V18_0_1025_163) | 574 self.history.Add(OS_MLW, BETA, V18_0_1025_163) |
547 bundle = copy.deepcopy(B18_0_1025_163_MLW) | 575 bundle = copy.deepcopy(B18_0_1025_163_MLW) |
548 archive_url = bundle.GetArchive('mac').url | 576 archive_url = bundle.GetArchive('mac').url |
549 bundle.GetArchive('mac').url = archive_url.replace('.tar', '') | 577 bundle.GetArchive('mac').url = archive_url.replace('.tar', '') |
550 self.files.Add(bundle) | 578 self.files.Add(bundle) |
551 self._MakeDelegate() | 579 self._MakeDelegate() |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
720 history = """win,canary,31.0.1608.1,2013-08-22 09:33:24.469760 | 748 history = """win,canary,31.0.1608.1,2013-08-22 09:33:24.469760 |
721 mac,canary,31.0.1608.0,2013-08-22 07:18:09.762600""" | 749 mac,canary,31.0.1608.0,2013-08-22 07:18:09.762600""" |
722 self._AddCsvHistory(history) | 750 self._AddCsvHistory(history) |
723 self.version_mapping['31.0.1608.1'] = 'trunk.218914' | 751 self.version_mapping['31.0.1608.1'] = 'trunk.218914' |
724 self.version_mapping['31.0.1608.0'] = 'trunk.218872' | 752 self.version_mapping['31.0.1608.0'] = 'trunk.218872' |
725 my_bundle = MakePlatformBundle(31, 218872, '31.0.1608.0', OS_MLW) | 753 my_bundle = MakePlatformBundle(31, 218872, '31.0.1608.0', OS_MLW) |
726 self.files.Add(my_bundle) | 754 self.files.Add(my_bundle) |
727 self._MakeDelegate() | 755 self._MakeDelegate() |
728 self._Run(OS_MLW) | 756 self._Run(OS_MLW) |
729 self._ReadUploadedManifest() | 757 self._ReadUploadedManifest() |
730 self._AssertUploadedManifestHasBundle(my_bundle, CANARY) | 758 self._AssertUploadedManifestHasBundle(my_bundle, CANARY, |
| 759 bundle_name=CANARY_BUNDLE_NAME) |
731 | 760 |
732 def testDontIgnoreLastDigitForNonCanary(self): | 761 def testDontIgnoreLastDigitForNonCanary(self): |
733 self.manifest = MakeManifest(B26_NONE) | 762 self.manifest = MakeManifest(B26_NONE) |
734 self.history.Add(OS_M, BETA, V26_0_1386_1) # Only Mac | 763 self.history.Add(OS_M, BETA, V26_0_1386_1) # Only Mac |
735 self.history.Add(OS_LW, BETA, V26_0_1386_0) # Only Linux, Windows. | 764 self.history.Add(OS_LW, BETA, V26_0_1386_0) # Only Linux, Windows. |
736 self.files.Add(B26_0_1386_0_MLW) | 765 self.files.Add(B26_0_1386_0_MLW) |
737 | 766 |
738 self._MakeDelegate() | 767 self._MakeDelegate() |
739 # This raises because pepper_26 is not found in the history, and therefore | 768 # This raises because pepper_26 is not found in the history, and therefore |
740 # "locked", but it also doesn't have an online version, therefore there is | 769 # "locked", but it also doesn't have an online version, therefore there is |
741 # no good version number to upload. | 770 # no good version number to upload. |
742 # | 771 # |
743 # Basically we're asserting that 26.0.1386.1 != 26.0.1386.0, which would be | 772 # Basically we're asserting that 26.0.1386.1 != 26.0.1386.0, which would be |
744 # true if it were canary. | 773 # true if it were canary. |
745 self.assertRaises(update_nacl_manifest.UnknownLockedBundleException, | 774 self.assertRaises(update_nacl_manifest.UnknownLockedBundleException, |
746 self._Run, OS_MLW) | 775 self._Run, OS_MLW) |
747 | 776 |
| 777 def testUpdateBionic(self): |
| 778 bionic_bundle = copy.deepcopy(BBIONIC_NONE) |
| 779 self.manifest = MakeManifest(bionic_bundle) |
| 780 self.history.Add(OS_MW, CANARY, V37_0_2054_0) |
| 781 self.files.Add(BBIONIC_TRUNK_277776) |
| 782 self.version_mapping[V37_0_2054_0] = VTRUNK_277776 |
| 783 self._MakeDelegate() |
| 784 self._Run(OS_MLW) |
| 785 self._ReadUploadedManifest() |
| 786 self._AssertUploadedManifestHasBundle(BBIONIC_TRUNK_277776, CANARY, |
| 787 bundle_name=BIONIC_CANARY_BUNDLE_NAME) |
| 788 |
748 | 789 |
749 class TestUpdateVitals(unittest.TestCase): | 790 class TestUpdateVitals(unittest.TestCase): |
750 def setUp(self): | 791 def setUp(self): |
751 f = tempfile.NamedTemporaryFile('w', prefix="test_update_nacl_manifest") | 792 f = tempfile.NamedTemporaryFile('w', prefix="test_update_nacl_manifest") |
752 self.test_file = f.name | 793 self.test_file = f.name |
753 f.close() | 794 f.close() |
754 test_data = "Some test data" | 795 test_data = "Some test data" |
755 self.sha1 = hashlib.sha1(test_data).hexdigest() | 796 self.sha1 = hashlib.sha1(test_data).hexdigest() |
756 self.data_len = len(test_data) | 797 self.data_len = len(test_data) |
757 with open(self.test_file, 'w') as f: | 798 with open(self.test_file, 'w') as f: |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
793 '21.0.1180.80': '151582', | 834 '21.0.1180.80': '151582', |
794 '23.0.1271.89': '167132', | 835 '23.0.1271.89': '167132', |
795 '24.0.1305.4': '164971', | 836 '24.0.1305.4': '164971', |
796 } | 837 } |
797 for version, revision in revision_dict.iteritems(): | 838 for version, revision in revision_dict.iteritems(): |
798 self.assertEqual('trunk.%s' % revision, | 839 self.assertEqual('trunk.%s' % revision, |
799 self.delegate.GetTrunkRevision(version)) | 840 self.delegate.GetTrunkRevision(version)) |
800 | 841 |
801 | 842 |
802 if __name__ == '__main__': | 843 if __name__ == '__main__': |
| 844 logging.basicConfig(level=logging.INFO) |
803 sys.exit(unittest.main()) | 845 sys.exit(unittest.main()) |
OLD | NEW |