| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import os | 5 import os |
| 6 import sys | 6 import sys |
| 7 import unittest | 7 import unittest |
| 8 import StringIO | 8 import StringIO |
| 9 | 9 |
| 10 import mock # pylint: disable=import-error | 10 import mock # pylint: disable=import-error |
| 11 | 11 |
| 12 from core import path_util | 12 from core import path_util |
| 13 import fetch_benchmark_deps | 13 import fetch_benchmark_deps |
| 14 | 14 |
| 15 | 15 |
| 16 def NormPaths(paths): | 16 def NormPaths(paths): |
| 17 return sorted([os.path.normcase(p) for p in paths.splitlines()]) | 17 return sorted([os.path.normcase(p) for p in paths.splitlines()]) |
| 18 | 18 |
| 19 | 19 |
| 20 class FetchBenchmarkDepsUnittest(unittest.TestCase): | 20 class FetchBenchmarkDepsUnittest(unittest.TestCase): |
| 21 """The test guards fetch_benchmark_deps. | 21 """The test guards fetch_benchmark_deps. |
| 22 | 22 |
| 23 It assumes the following telemetry APIs always success: | 23 It assumes the following telemetry APIs always success: |
| 24 telemetry.wpr.archive_info.WprArchiveInfo.DownloadArchivesIfNeeded | 24 telemetry.wpr.archive_info.WprArchiveInfo.DownloadArchivesIfNeeded |
| 25 catapult_base.cloud_storage.GetFilesInDirectoryIfChanged | 25 py_utils.cloud_storage.GetFilesInDirectoryIfChanged |
| 26 """ | 26 """ |
| 27 | 27 |
| 28 def setUp(self): | 28 def setUp(self): |
| 29 """Override sys.argv as if it is called from command line.""" | 29 """Override sys.argv as if it is called from command line.""" |
| 30 self._argv = sys.argv | 30 self._argv = sys.argv |
| 31 sys.argv = ['./fetch_benchmark_deps', ''] | 31 sys.argv = ['./fetch_benchmark_deps', ''] |
| 32 | 32 |
| 33 def _RunFetchBenchmarkDepsTest(self, benchmark_name, | 33 def _RunFetchBenchmarkDepsTest(self, benchmark_name, |
| 34 expected_fetched_file_paths=None): | 34 expected_fetched_file_paths=None): |
| 35 """Simulates './fetch_benchmark_deps [benchmark_name]' | 35 """Simulates './fetch_benchmark_deps [benchmark_name]' |
| 36 | 36 |
| 37 It checks if the paths returned are expected and have corresponding sha1 | 37 It checks if the paths returned are expected and have corresponding sha1 |
| 38 checksums. The expected result can be omitted if the dependencies of | 38 checksums. The expected result can be omitted if the dependencies of |
| 39 specified benchmarks are subject to changes. | 39 specified benchmarks are subject to changes. |
| 40 | 40 |
| 41 Args: | 41 Args: |
| 42 benchmark_name: benchmark name | 42 benchmark_name: benchmark name |
| 43 expected_fetched_file_paths: the expected result. | 43 expected_fetched_file_paths: the expected result. |
| 44 """ | 44 """ |
| 45 sys.argv[1] = benchmark_name | 45 sys.argv[1] = benchmark_name |
| 46 output = StringIO.StringIO() | 46 output = StringIO.StringIO() |
| 47 with mock.patch('telemetry.wpr.archive_info.WprArchiveInfo' | 47 with mock.patch('telemetry.wpr.archive_info.WprArchiveInfo' |
| 48 '.DownloadArchivesIfNeeded') as mock_download: | 48 '.DownloadArchivesIfNeeded') as mock_download: |
| 49 with mock.patch('catapult_base.cloud_storage' | 49 with mock.patch('py_utils.cloud_storage' |
| 50 '.GetFilesInDirectoryIfChanged') as mock_get: | 50 '.GetFilesInDirectoryIfChanged') as mock_get: |
| 51 mock_download.return_value = True | 51 mock_download.return_value = True |
| 52 mock_get.GetFilesInDirectoryIfChanged.return_value = True | 52 mock_get.GetFilesInDirectoryIfChanged.return_value = True |
| 53 fetch_benchmark_deps.main(output) | 53 fetch_benchmark_deps.main(output) |
| 54 for f in output.getvalue().splitlines(): | 54 for f in output.getvalue().splitlines(): |
| 55 fullpath = os.path.join(path_util.GetChromiumSrcDir(), f) | 55 fullpath = os.path.join(path_util.GetChromiumSrcDir(), f) |
| 56 sha1path = fullpath + '.sha1' | 56 sha1path = fullpath + '.sha1' |
| 57 self.assertTrue(os.path.isfile(sha1path)) | 57 self.assertTrue(os.path.isfile(sha1path)) |
| 58 if expected_fetched_file_paths: | 58 if expected_fetched_file_paths: |
| 59 self.assertEquals(expected_fetched_file_paths, | 59 self.assertEquals(expected_fetched_file_paths, |
| 60 NormPaths(output.getvalue())) | 60 NormPaths(output.getvalue())) |
| 61 | 61 |
| 62 def testFetchWPRs(self): | 62 def testFetchWPRs(self): |
| 63 self._RunFetchBenchmarkDepsTest('smoothness.top_25_smooth') | 63 self._RunFetchBenchmarkDepsTest('smoothness.top_25_smooth') |
| 64 | 64 |
| 65 def testFetchServingDirs(self): | 65 def testFetchServingDirs(self): |
| 66 self._RunFetchBenchmarkDepsTest('media.tough_video_cases') | 66 self._RunFetchBenchmarkDepsTest('media.tough_video_cases') |
| 67 | 67 |
| 68 def testFetchOctane(self): | 68 def testFetchOctane(self): |
| 69 octane_wpr_path = os.path.join( | 69 octane_wpr_path = os.path.join( |
| 70 os.path.dirname(__file__), 'page_sets', 'data', 'octane_002.wpr') | 70 os.path.dirname(__file__), 'page_sets', 'data', 'octane_002.wpr') |
| 71 expected = os.path.relpath(octane_wpr_path, | 71 expected = os.path.relpath(octane_wpr_path, |
| 72 path_util.GetChromiumSrcDir()) | 72 path_util.GetChromiumSrcDir()) |
| 73 self._RunFetchBenchmarkDepsTest('octane', NormPaths(expected)) | 73 self._RunFetchBenchmarkDepsTest('octane', NormPaths(expected)) |
| OLD | NEW |