Roll src/third_party/WebKit a3b4a2e:7441784 (svn 202551:202552)
[chromium-blink-merge.git] / tools / telemetry / catapult_base / dependency_manager / dependency_info_unittest.py
blob5bc820cd916c141d206e4c194d84a565ab877c06
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 import unittest
7 from catapult_base.dependency_manager import dependency_info
9 class DependencyInfoTest(unittest.TestCase):
10 def testInitRequiredInfo(self):
11 # Must have a dependency, platform and file_path.
12 self.assertRaises(ValueError, dependency_info.DependencyInfo,
13 None, None, None)
14 self.assertRaises(ValueError, dependency_info.DependencyInfo,
15 'dep', None, None)
16 self.assertRaises(ValueError, dependency_info.DependencyInfo,
17 None, 'plat', None)
18 self.assertRaises(ValueError, dependency_info.DependencyInfo,
19 None, None, 'config_file')
20 # Empty DependencyInfo.
21 empty_di = dependency_info.DependencyInfo('dep', 'plat', 'config_file')
22 self.assertFalse(empty_di.cs_bucket)
23 self.assertFalse(empty_di.cs_hash)
24 self.assertFalse(empty_di.download_path)
25 self.assertFalse(empty_di.cs_remote_path)
26 self.assertFalse(empty_di.local_paths)
27 self.assertEqual('dep', empty_di.dependency)
28 self.assertEqual('plat', empty_di.platform)
29 self.assertEqual(['config_file'], empty_di.config_files)
31 def testInitLocalPaths(self):
32 dep_info = dependency_info.DependencyInfo(
33 'dep', 'platform', 'config_file', local_paths=['path0', 'path1'])
34 self.assertEqual('dep', dep_info.dependency)
35 self.assertEqual('platform', dep_info.platform)
36 self.assertEqual(['config_file'], dep_info.config_files)
37 self.assertEqual(['path0', 'path1'], dep_info.local_paths)
38 self.assertFalse(dep_info.version_in_cs)
39 self.assertFalse(dep_info.cs_hash)
40 self.assertFalse(dep_info.cs_bucket)
41 self.assertFalse(dep_info.cs_remote_path)
42 self.assertFalse(dep_info.download_path)
44 def testInitMinimumCloudStorageInfo(self):
45 # Must specify cloud storage information atomically.
46 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
47 'config_file', cs_bucket='cs_b')
48 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
49 'config_file', cs_hash='cs_hash')
50 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
51 'config_file', cs_remote_path='cs_remote_path')
52 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
53 'config_file', download_path='download_path')
54 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
55 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
56 cs_remote_path='cs_remote_path')
57 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
58 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
59 cs_remote_path='cs_remote_path', local_paths=['path'])
60 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
61 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
62 download_path='download_path')
63 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
64 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
65 download_path='download_path', local_paths=['path'])
66 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
67 'config_file', cs_bucket='cs_bucket',
68 cs_remote_path='cs_remote_path',
69 download_path='download_path')
70 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
71 'config_file', cs_hash='cs_hash',
72 cs_remote_path='cs_remote_path',
73 download_path='download_path')
74 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
75 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
76 download_path='download_path', local_paths=['path'])
77 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
78 'config_file', cs_bucket='cs_bucket',
79 cs_remote_path='cs_remote_path',
80 download_path='download_path', local_paths=['path'])
81 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
82 'config_file', cs_hash='cs_hash',
83 cs_remote_path='cs_remote_path',
84 download_path='download_path', local_paths=['path'])
86 def testInitWithVersion(self):
87 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
88 'config_file', version_in_cs='version_in_cs')
89 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
90 'config_file', version_in_cs='version_in_cs',
91 local_paths=['path2'])
92 self.assertRaises(ValueError, dependency_info.DependencyInfo, 'dep', 'plat',
93 'config_file', cs_bucket='cs_bucket', cs_hash='cs_hash',
94 cs_remote_path='cs_remote_path',
95 version_in_cs='version_in_cs', local_paths=['path2'])
97 dep_info = dependency_info.DependencyInfo(
98 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
99 cs_hash='cs_hash', download_path='download_path',
100 cs_remote_path='cs_remote_path', version_in_cs='version_in_cs')
101 self.assertEqual('dep', dep_info.dependency)
102 self.assertEqual('platform', dep_info.platform)
103 self.assertEqual(['config_file'], dep_info.config_files)
104 self.assertEqual('cs_hash', dep_info.cs_hash)
105 self.assertEqual('cs_bucket', dep_info.cs_bucket)
106 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
107 self.assertEqual('download_path', dep_info.download_path)
108 self.assertEqual('version_in_cs', dep_info.version_in_cs)
109 self.assertFalse(dep_info.local_paths)
111 dep_info = dependency_info.DependencyInfo(
112 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
113 cs_hash='cs_hash', download_path='download_path',
114 cs_remote_path='cs_remote_path', version_in_cs='version_in_cs',
115 local_paths=['path'])
116 self.assertEqual('dep', dep_info.dependency)
117 self.assertEqual('platform', dep_info.platform)
118 self.assertEqual(['config_file'], dep_info.config_files)
119 self.assertEqual('cs_hash', dep_info.cs_hash)
120 self.assertEqual('cs_bucket', dep_info.cs_bucket)
121 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
122 self.assertEqual('download_path', dep_info.download_path)
123 self.assertEqual('version_in_cs', dep_info.version_in_cs)
124 self.assertEqual(['path'], dep_info.local_paths)
126 def testInitCloudStorageInfo(self):
127 dep_info = dependency_info.DependencyInfo(
128 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
129 cs_hash='cs_hash', download_path='download_path',
130 cs_remote_path='cs_remote_path')
131 self.assertEqual('dep', dep_info.dependency)
132 self.assertEqual('platform', dep_info.platform)
133 self.assertEqual(['config_file'], dep_info.config_files)
134 self.assertEqual('cs_hash', dep_info.cs_hash)
135 self.assertEqual('cs_bucket', dep_info.cs_bucket)
136 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
137 self.assertEqual('download_path', dep_info.download_path)
138 self.assertFalse(dep_info.version_in_cs)
139 self.assertFalse(dep_info.local_paths)
141 dep_info = dependency_info.DependencyInfo(
142 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
143 cs_hash='cs_hash', download_path='download_path',
144 cs_remote_path='cs_remote_path', local_paths=['path'])
145 self.assertEqual('dep', dep_info.dependency)
146 self.assertEqual('platform', dep_info.platform)
147 self.assertEqual(['config_file'], dep_info.config_files)
148 self.assertEqual('cs_hash', dep_info.cs_hash)
149 self.assertEqual('cs_bucket', dep_info.cs_bucket)
150 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
151 self.assertEqual('download_path', dep_info.download_path)
152 self.assertFalse(dep_info.version_in_cs)
153 self.assertEqual(['path'], dep_info.local_paths)
155 def testInitAllInfo(self):
156 dep_info = dependency_info.DependencyInfo(
157 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
158 cs_hash='cs_hash', download_path='download_path',
159 cs_remote_path='cs_remote_path', local_paths=['path0', 'path1'])
160 self.assertEqual('dep', dep_info.dependency)
161 self.assertEqual('platform', dep_info.platform)
162 self.assertEqual(['config_file'], dep_info.config_files)
163 self.assertEqual('cs_hash', dep_info.cs_hash)
164 self.assertEqual('cs_bucket', dep_info.cs_bucket)
165 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
166 self.assertEqual('download_path', dep_info.download_path)
167 self.assertEqual(['path0', 'path1'], dep_info.local_paths)
168 self.assertFalse(dep_info.version_in_cs)
170 dep_info = dependency_info.DependencyInfo(
171 'dep', 'platform', 'config_file', cs_bucket='cs_bucket',
172 cs_hash='cs_hash', download_path='download_path',
173 cs_remote_path='cs_remote_path', version_in_cs='version_in_cs',
174 local_paths=['path0', 'path1'])
175 self.assertEqual('dep', dep_info.dependency)
176 self.assertEqual('platform', dep_info.platform)
177 self.assertEqual(['config_file'], dep_info.config_files)
178 self.assertEqual('cs_hash', dep_info.cs_hash)
179 self.assertEqual('cs_bucket', dep_info.cs_bucket)
180 self.assertEqual('cs_remote_path', dep_info.cs_remote_path)
181 self.assertEqual('download_path', dep_info.download_path)
182 self.assertEqual('version_in_cs', dep_info.version_in_cs)
183 self.assertEqual(['path0', 'path1'], dep_info.local_paths)
186 def testUpdateRequiredArgsConflicts(self):
187 dep_info1 = dependency_info.DependencyInfo(
188 'dep1', 'platform1', 'config_file1', local_paths=['path0', 'path1'])
189 dep_info2 = dependency_info.DependencyInfo(
190 'dep1', 'platform2', 'config_file2', local_paths=['path0', 'path2'])
191 dep_info3 = dependency_info.DependencyInfo(
192 'dep2', 'platform1', 'config_file3', local_paths=['path0', 'path3'])
193 self.assertRaises(ValueError, dep_info1.Update, dep_info2, False)
194 self.assertRaises(ValueError, dep_info1.Update, dep_info3, False)
195 self.assertRaises(ValueError, dep_info3.Update, dep_info2, False)
196 self.assertRaises(ValueError, dep_info1.Update, dep_info2, True)
197 self.assertRaises(ValueError, dep_info1.Update, dep_info3, True)
198 self.assertRaises(ValueError, dep_info3.Update, dep_info2, True)
200 def testUpdateCloudStorageInfoNoVersions(self):
201 dep_info1 = dependency_info.DependencyInfo(
202 'dep1', 'platform1', 'config_file1')
203 dep_info2 = dependency_info.DependencyInfo(
204 'dep1', 'platform1', 'config_file2', cs_bucket='cs_bucket',
205 cs_hash='cs_hash', download_path='download_path',
206 cs_remote_path='cs_remote_path')
207 dep_info3 = dependency_info.DependencyInfo(
208 'dep1', 'platform1', 'config_file3')
209 dep_info4 = dependency_info.DependencyInfo(
210 'dep1', 'platform1', 'config_file4', cs_bucket='cs_bucket',
211 cs_hash='cs_hash', download_path='download_path',
212 cs_remote_path='cs_remote_path')
214 dep_info1.Update(dep_info2, False)
215 self.assertEqual('cs_bucket', dep_info1.cs_bucket)
216 self.assertEqual('cs_hash', dep_info1.cs_hash)
217 self.assertEqual('download_path', dep_info1.download_path)
218 self.assertEqual('cs_remote_path', dep_info1.cs_remote_path)
219 self.assertFalse(dep_info1.local_paths)
221 dep_info1.Update(dep_info3, False)
222 self.assertEqual('cs_bucket', dep_info1.cs_bucket)
223 self.assertEqual('cs_hash', dep_info1.cs_hash)
224 self.assertEqual('download_path', dep_info1.download_path)
225 self.assertEqual('cs_remote_path', dep_info1.cs_remote_path)
226 self.assertFalse(dep_info1.local_paths)
228 self.assertRaises(ValueError, dep_info1.Update, dep_info4, False)
230 def testUpdateCloudStorageInfoWithVersions(self):
231 dep_info1 = dependency_info.DependencyInfo(
232 'dep1', 'platform1', 'config_file1')
233 dep_info2 = dependency_info.DependencyInfo(
234 'dep1', 'platform1', 'config_file2', cs_bucket='cs_bucket2',
235 cs_hash='cs_hash2', download_path='download_path2',
236 cs_remote_path='cs_remote_path2', version_in_cs='2.1.1')
237 dep_info3 = dependency_info.DependencyInfo(
238 'dep1', 'platform1', 'config_file3')
239 dep_info4 = dependency_info.DependencyInfo(
240 'dep1', 'platform1', 'config_file4', cs_bucket='cs_bucket4',
241 cs_hash='cs_hash4', download_path='download_path4',
242 cs_remote_path='cs_remote_path4')
243 dep_info5 = dependency_info.DependencyInfo(
244 'dep1', 'platform1', 'config_file5', cs_bucket='cs_bucket5',
245 cs_hash='cs_hash5', download_path='download_path5',
246 cs_remote_path='cs_remote_path5')
248 dep_info1.Update(dep_info2, False)
249 self.assertEqual('cs_bucket2', dep_info1.cs_bucket)
250 self.assertEqual('cs_hash2', dep_info1.cs_hash)
251 self.assertEqual('download_path2', dep_info1.download_path)
252 self.assertEqual('cs_remote_path2', dep_info1.cs_remote_path)
253 self.assertEqual('2.1.1', dep_info1.version_in_cs)
254 self.assertFalse(dep_info1.local_paths)
256 dep_info1.Update(dep_info3, False)
257 self.assertEqual('cs_bucket2', dep_info1.cs_bucket)
258 self.assertEqual('cs_hash2', dep_info1.cs_hash)
259 self.assertEqual('download_path2', dep_info1.download_path)
260 self.assertEqual('cs_remote_path2', dep_info1.cs_remote_path)
261 self.assertEqual('2.1.1', dep_info1.version_in_cs)
262 self.assertFalse(dep_info1.local_paths)
264 self.assertRaises(ValueError, dep_info1.Update, dep_info4, False)
265 self.assertEqual('cs_bucket2', dep_info1.cs_bucket)
266 self.assertEqual('cs_hash2', dep_info1.cs_hash)
267 self.assertEqual('download_path2', dep_info1.download_path)
268 self.assertEqual('cs_remote_path2', dep_info1.cs_remote_path)
269 self.assertEqual('2.1.1', dep_info1.version_in_cs)
270 self.assertFalse(dep_info1.local_paths)
272 self.assertRaises(ValueError, dep_info1.Update, dep_info5, False)
274 def testUpdateAllInfo(self):
275 dep_info1 = dependency_info.DependencyInfo(
276 'dep1', 'platform1', 'config_file1', local_paths=['path1'])
277 dep_info2 = dependency_info.DependencyInfo(
278 'dep1', 'platform1', 'config_file2', cs_bucket='cs_bucket',
279 cs_hash='cs_hash', download_path='download_path',
280 cs_remote_path='cs_remote_path', local_paths=['path2'])
281 dep_info3 = dependency_info.DependencyInfo(
282 'dep1', 'platform1', 'config_file3', local_paths=['path3'])
283 dep_info4 = dependency_info.DependencyInfo(
284 'dep1', 'platform1', 'config_file4', cs_bucket='cs_bucket',
285 cs_hash='cs_hash', download_path='download_path',
286 cs_remote_path='cs_remote_path', local_paths=['path4'])
288 dep_info1.Update(dep_info2, False)
289 self.assertEqual('cs_bucket', dep_info1.cs_bucket)
290 self.assertEqual('cs_hash', dep_info1.cs_hash)
291 self.assertEqual('download_path', dep_info1.download_path)
292 self.assertEqual('cs_remote_path', dep_info1.cs_remote_path)
293 self.assertEqual(['path1', 'path2'], dep_info1.local_paths)
295 dep_info1.Update(dep_info3, False)
296 self.assertEqual('cs_bucket', dep_info1.cs_bucket)
297 self.assertEqual('cs_hash', dep_info1.cs_hash)
298 self.assertEqual('download_path', dep_info1.download_path)
299 self.assertEqual('cs_remote_path', dep_info1.cs_remote_path)
300 self.assertEqual(['path1', 'path2', 'path3'], dep_info1.local_paths)
302 self.assertRaises(ValueError, dep_info1.Update, dep_info4, False)
304 def testAppendConflictingLocalFiles(self):
305 dep_info1 = dependency_info.DependencyInfo(
306 'dep1', 'platform1', 'config_file1',
307 local_paths=['path0', 'path1', 'path3', 'path5', 'path6'])
308 dep_info2 = dependency_info.DependencyInfo(
309 'dep1', 'platform1', 'config_file2',
310 local_paths=['path0', 'path2', 'path4', 'path5'])
312 expected_local_paths = ['path0', 'path1', 'path3', 'path5', 'path6',
313 'path2', 'path4']
314 dep_info1.Update(dep_info2, False)
315 self.assertEquals(expected_local_paths, dep_info1.local_paths)