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 |