| 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 |