def _RunFetchBenchmarkDepsTest(self, benchmark_name,
                                 expected_fetched_file_paths=None):
    """Simulates './fetch_benchmark_deps [benchmark_name]'

    It checks if the paths returned are expected and have corresponding sha1
    checksums. The expected result can be omitted if the dependencies of
    specified benchmarks are subject to changes.

    Args:
      benchmark_name: benchmark name
      expected_fetched_file_paths: the expected result.
    """
    sys.argv[1] = benchmark_name
    output = StringIO.StringIO()
    with mock.patch('telemetry.wpr.archive_info.WprArchiveInfo'
                    '.DownloadArchivesIfNeeded') as mock_download:
      with mock.patch('catapult_base.cloud_storage'
                      '.GetFilesInDirectoryIfChanged') as mock_get:
        mock_download.return_value = True
        mock_get.GetFilesInDirectoryIfChanged.return_value = True
        fetch_benchmark_deps.main(output)
    for f in output.getvalue().splitlines():
      fullpath = os.path.join(fetch_benchmark_deps.GetChromiumDir(), f)
      sha1path = fullpath + '.sha1'
      self.assertTrue(os.path.isfile(sha1path))
    if expected_fetched_file_paths:
      self.assertEquals(expected_fetched_file_paths,
                        NormPaths(output.getvalue()))
    def testFetchWPRs(self):
        test_name = 'system_health.common_desktop'
        deps_fd, deps_path = tempfile.mkstemp()
        args = [test_name, '--output-deps=%s' % deps_path]
        with mock.patch.object(archive_info.WprArchiveInfo,
                               'DownloadArchivesIfNeeded',
                               autospec=True) as mock_download:
            with mock.patch('py_utils.cloud_storage'
                            '.GetFilesInDirectoryIfChanged') as mock_get:
                mock_download.return_value = True
                mock_get.GetFilesInDirectoryIfChanged.return_value = True
                fetch_benchmark_deps.main(args)
                self.assertEqual(
                    # pylint: disable=protected-access
                    os.path.normpath(mock_download.call_args[0][0]._file_path),
                    os.path.join(path_util.GetPerfStorySetsDir(), 'data',
                                 'system_health_desktop.json'))
                # This benchmark doesn't use any static local files.
                self.assertFalse(mock_get.called)

        # Gets json content and remove the temp json file.
        with open(deps_path) as deps_file:
            deps = json.loads(deps_file.read())
        os.close(deps_fd)
        os.remove(deps_path)

        # Checks fetch_benchmark_deps.py output.
        output_count = 0
        for dep in deps[test_name]:
            fullpath = os.path.join(path_util.GetChromiumSrcDir(), dep)
            sha1path = fullpath + '.sha1'
            self.assertTrue(os.path.isfile(sha1path))
            output_count += 1
        self.assertTrue(output_count > 0)
예제 #3
0
 def testFetchServingDirs(self):
   args = ['media.desktop']
   with mock.patch.object(archive_info.WprArchiveInfo,
       'DownloadArchivesIfNeeded', autospec=True) as mock_download:
     with mock.patch('py_utils.cloud_storage'
                     '.GetFilesInDirectoryIfChanged') as mock_get:
       mock_download.return_value = True
       mock_get.GetFilesInDirectoryIfChanged.return_value = True
       fetch_benchmark_deps.main(args)
       # This benchmark doesn't use any archive files.
       self.assertFalse(mock_download.called)
       mock_get.assert_called_once_with(
           os.path.join(path_util.GetPerfStorySetsDir(), 'media_cases'),
           cloud_storage.PARTNER_BUCKET)
예제 #4
0
 def testFetchWPRs(self):
   args = ['smoothness.top_25_smooth']
   with mock.patch.object(archive_info.WprArchiveInfo,
       'DownloadArchivesIfNeeded', autospec=True) as mock_download:
     with mock.patch('py_utils.cloud_storage'
                     '.GetFilesInDirectoryIfChanged') as mock_get:
       mock_download.return_value = True
       mock_get.GetFilesInDirectoryIfChanged.return_value = True
       fetch_benchmark_deps.main(args)
       self.assertEqual(
           # pylint: disable=protected-access
           os.path.normpath(mock_download.call_args[0][0]._file_path),
           os.path.join(path_util.GetPerfStorySetsDir(), 'data',
           'top_25_smooth.json'))
       # This benchmark doesn't use any static local files.
       self.assertFalse(mock_get.called)