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 # pylint: disable=W0212 | 5 # pylint: disable=W0212 |
6 | 6 |
7 """Unit tests for download_from_google_storage.py.""" | 7 """Unit tests for download_from_google_storage.py.""" |
8 | 8 |
9 import optparse | 9 import optparse |
10 import os | 10 import os |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 self.assertEqual(queue_size, 3) | 165 self.assertEqual(queue_size, 3) |
166 | 166 |
167 def test_download_worker_single_file(self): | 167 def test_download_worker_single_file(self): |
168 sha1_hash = '7871c8e24da15bad8b0be2c36edc9dc77e37727f' | 168 sha1_hash = '7871c8e24da15bad8b0be2c36edc9dc77e37727f' |
169 input_filename = '%s/%s' % (self.base_url, sha1_hash) | 169 input_filename = '%s/%s' % (self.base_url, sha1_hash) |
170 output_filename = os.path.join(self.base_path, 'uploaded_lorem_ipsum.txt') | 170 output_filename = os.path.join(self.base_path, 'uploaded_lorem_ipsum.txt') |
171 self.queue.put((sha1_hash, output_filename)) | 171 self.queue.put((sha1_hash, output_filename)) |
172 self.queue.put((None, None)) | 172 self.queue.put((None, None)) |
173 stdout_queue = Queue.Queue() | 173 stdout_queue = Queue.Queue() |
174 download_from_google_storage._downloader_worker_thread( | 174 download_from_google_storage._downloader_worker_thread( |
175 0, self.queue, False, self.base_url, self.gsutil, | 175 0, self.queue, False, self.base_url, self.gsutil, False, |
176 stdout_queue, self.ret_codes) | 176 stdout_queue, self.ret_codes) |
177 expected_calls = [ | 177 expected_calls = [ |
178 ('check_call', | 178 ('check_call', |
179 ('ls', input_filename)), | 179 ('ls', input_filename)), |
180 ('check_call', | 180 ('check_call', |
181 ('cp', '-q', input_filename, output_filename))] | 181 ('cp', '-q', input_filename, output_filename))] |
182 expected_output = [ | 182 expected_output = [ |
183 '0> Downloading %s...' % output_filename] | 183 '0> Downloading %s...' % output_filename] |
184 expected_ret_codes = [] | 184 expected_ret_codes = [] |
185 self.assertEqual(list(stdout_queue.queue), expected_output) | 185 self.assertEqual(list(stdout_queue.queue), expected_output) |
186 self.assertEqual(self.gsutil.history, expected_calls) | 186 self.assertEqual(self.gsutil.history, expected_calls) |
187 self.assertEqual(list(self.ret_codes.queue), expected_ret_codes) | 187 self.assertEqual(list(self.ret_codes.queue), expected_ret_codes) |
188 | 188 |
189 def test_download_worker_skips_file(self): | 189 def test_download_worker_skips_file(self): |
190 sha1_hash = 'e6c4fbd4fe7607f3e6ebf68b2ea4ef694da7b4fe' | 190 sha1_hash = 'e6c4fbd4fe7607f3e6ebf68b2ea4ef694da7b4fe' |
191 output_filename = os.path.join(self.base_path, 'rootfolder_text.txt') | 191 output_filename = os.path.join(self.base_path, 'rootfolder_text.txt') |
192 self.queue.put((sha1_hash, output_filename)) | 192 self.queue.put((sha1_hash, output_filename)) |
193 self.queue.put((None, None)) | 193 self.queue.put((None, None)) |
194 stdout_queue = Queue.Queue() | 194 stdout_queue = Queue.Queue() |
195 download_from_google_storage._downloader_worker_thread( | 195 download_from_google_storage._downloader_worker_thread( |
196 0, self.queue, False, self.base_url, self.gsutil, | 196 0, self.queue, False, self.base_url, self.gsutil, False, |
197 stdout_queue, self.ret_codes) | 197 stdout_queue, self.ret_codes) |
198 expected_output = [ | 198 expected_output = [ |
199 '0> File %s exists and SHA1 matches. Skipping.' % output_filename | 199 '0> File %s exists and SHA1 matches. Skipping.' % output_filename |
200 ] | 200 ] |
201 self.assertEqual(list(stdout_queue.queue), expected_output) | 201 self.assertEqual(list(stdout_queue.queue), expected_output) |
202 self.assertEqual(self.gsutil.history, []) | 202 self.assertEqual(self.gsutil.history, []) |
203 | 203 |
204 def test_download_worker_skips_not_found_file(self): | 204 def test_download_worker_skips_not_found_file(self): |
205 sha1_hash = '7871c8e24da15bad8b0be2c36edc9dc77e37727f' | 205 sha1_hash = '7871c8e24da15bad8b0be2c36edc9dc77e37727f' |
206 input_filename = '%s/%s' % (self.base_url, sha1_hash) | 206 input_filename = '%s/%s' % (self.base_url, sha1_hash) |
207 output_filename = os.path.join(self.base_path, 'uploaded_lorem_ipsum.txt') | 207 output_filename = os.path.join(self.base_path, 'uploaded_lorem_ipsum.txt') |
208 self.queue.put((sha1_hash, output_filename)) | 208 self.queue.put((sha1_hash, output_filename)) |
209 self.queue.put((None, None)) | 209 self.queue.put((None, None)) |
210 stdout_queue = Queue.Queue() | 210 stdout_queue = Queue.Queue() |
211 self.gsutil.add_expected(1, '', '') # Return error when 'ls' is called. | 211 self.gsutil.add_expected(1, '', '') # Return error when 'ls' is called. |
212 download_from_google_storage._downloader_worker_thread( | 212 download_from_google_storage._downloader_worker_thread( |
213 0, self.queue, False, self.base_url, self.gsutil, | 213 0, self.queue, False, self.base_url, self.gsutil, False, |
214 stdout_queue, self.ret_codes) | 214 stdout_queue, self.ret_codes) |
215 expected_output = [ | 215 expected_output = [ |
216 '0> File %s for %s does not exist, skipping.' % ( | 216 '0> File %s for %s does not exist, skipping.' % ( |
217 input_filename, output_filename), | 217 input_filename, output_filename), |
218 ] | 218 ] |
219 expected_calls = [ | 219 expected_calls = [ |
220 ('check_call', | 220 ('check_call', |
221 ('ls', input_filename)) | 221 ('ls', input_filename)) |
222 ] | 222 ] |
223 expected_ret_codes = [ | 223 expected_ret_codes = [ |
224 (1, 'File %s for %s does not exist.' % ( | 224 (1, 'File %s for %s does not exist.' % ( |
225 input_filename, output_filename)) | 225 input_filename, output_filename)) |
226 ] | 226 ] |
227 self.assertEqual(list(stdout_queue.queue), expected_output) | 227 self.assertEqual(list(stdout_queue.queue), expected_output) |
228 self.assertEqual(self.gsutil.history, expected_calls) | 228 self.assertEqual(self.gsutil.history, expected_calls) |
229 self.assertEqual(list(self.ret_codes.queue), expected_ret_codes) | 229 self.assertEqual(list(self.ret_codes.queue), expected_ret_codes) |
230 | 230 |
231 def test_download_cp_fails(self): | 231 def test_download_cp_fails(self): |
232 sha1_hash = '7871c8e24da15bad8b0be2c36edc9dc77e37727f' | 232 sha1_hash = '7871c8e24da15bad8b0be2c36edc9dc77e37727f' |
233 input_filename = '%s/%s' % (self.base_url, sha1_hash) | 233 input_filename = '%s/%s' % (self.base_url, sha1_hash) |
234 output_filename = os.path.join(self.base_path, 'uploaded_lorem_ipsum.txt') | 234 output_filename = os.path.join(self.base_path, 'uploaded_lorem_ipsum.txt') |
235 self.gsutil.add_expected(0, '', '') | 235 self.gsutil.add_expected(0, '', '') |
236 self.gsutil.add_expected(101, '', 'Test error message.') | 236 self.gsutil.add_expected(101, '', 'Test error message.') |
237 code = download_from_google_storage.download_from_google_storage( | 237 code = download_from_google_storage.download_from_google_storage( |
238 input_filename=sha1_hash, | 238 input_filename=sha1_hash, |
239 base_url=self.base_url, | 239 base_url=self.base_url, |
240 gsutil=self.gsutil, | 240 gsutil=self.gsutil, |
| 241 make_executable=False, |
241 num_threads=1, | 242 num_threads=1, |
242 directory=False, | 243 directory=False, |
243 recursive=False, | 244 recursive=False, |
244 force=True, | 245 force=True, |
245 output=output_filename, | 246 output=output_filename, |
246 ignore_errors=False, | 247 ignore_errors=False, |
247 sha1_file=False) | 248 sha1_file=False) |
248 expected_calls = [ | 249 expected_calls = [ |
249 ('check_call', | 250 ('check_call', |
250 ('ls', input_filename)), | 251 ('ls', input_filename)), |
251 ('check_call', | 252 ('check_call', |
252 ('cp', '-q', input_filename, output_filename)) | 253 ('cp', '-q', input_filename, output_filename)) |
253 ] | 254 ] |
254 self.assertEqual(self.gsutil.history, expected_calls) | 255 self.assertEqual(self.gsutil.history, expected_calls) |
255 self.assertEqual(code, 101) | 256 self.assertEqual(code, 101) |
256 | 257 |
257 def test_download_directory_no_recursive_non_force(self): | 258 def test_download_directory_no_recursive_non_force(self): |
258 sha1_hash = '7871c8e24da15bad8b0be2c36edc9dc77e37727f' | 259 sha1_hash = '7871c8e24da15bad8b0be2c36edc9dc77e37727f' |
259 input_filename = '%s/%s' % (self.base_url, sha1_hash) | 260 input_filename = '%s/%s' % (self.base_url, sha1_hash) |
260 output_filename = os.path.join(self.base_path, 'uploaded_lorem_ipsum.txt') | 261 output_filename = os.path.join(self.base_path, 'uploaded_lorem_ipsum.txt') |
261 code = download_from_google_storage.download_from_google_storage( | 262 code = download_from_google_storage.download_from_google_storage( |
262 input_filename=self.base_path, | 263 input_filename=self.base_path, |
263 base_url=self.base_url, | 264 base_url=self.base_url, |
264 gsutil=self.gsutil, | 265 gsutil=self.gsutil, |
| 266 make_executable=False, |
265 num_threads=1, | 267 num_threads=1, |
266 directory=True, | 268 directory=True, |
267 recursive=False, | 269 recursive=False, |
268 force=False, | 270 force=False, |
269 output=None, | 271 output=None, |
270 ignore_errors=False, | 272 ignore_errors=False, |
271 sha1_file=False) | 273 sha1_file=False) |
272 expected_calls = [ | 274 expected_calls = [ |
273 ('check_call', | 275 ('check_call', |
274 ('ls', input_filename)), | 276 ('ls', input_filename)), |
275 ('check_call', | 277 ('check_call', |
276 ('cp', '-q', input_filename, output_filename))] | 278 ('cp', '-q', input_filename, output_filename))] |
277 self.assertEqual(self.gsutil.history, expected_calls) | 279 self.assertEqual(self.gsutil.history, expected_calls) |
278 self.assertEqual(code, 0) | 280 self.assertEqual(code, 0) |
279 | 281 |
280 | 282 |
281 if __name__ == '__main__': | 283 if __name__ == '__main__': |
282 unittest.main() | 284 unittest.main() |
OLD | NEW |