def main():
  args, unknown_args = _CreateArgparser().parse_known_args()
  # TODO(bsheedy): Remove this once all uses of --chartjson are removed.
  if args.chartjson:
    args.output_format = 'chartjson'

  chartjson = _BASE_CHART.copy() if args.output_format else None

  with build_utils.TempDir() as base_dir, build_utils.TempDir() as diff_dir:
    # Run resource_sizes.py on the two APKs
    resource_sizes_path = os.path.join(_ANDROID_DIR, 'resource_sizes.py')
    shared_args = (['python', resource_sizes_path, '--output-format=chartjson']
                   + unknown_args)

    base_args = shared_args + ['--output-dir', base_dir, args.base_apk]
    if args.out_dir_base:
      base_args += ['--chromium-output-directory', args.out_dir_base]
    try:
      subprocess.check_output(base_args, stderr=subprocess.STDOUT)
    except subprocess.CalledProcessError as e:
      print e.output
      raise

    diff_args = shared_args + ['--output-dir', diff_dir, args.diff_apk]
    if args.out_dir_diff:
      diff_args += ['--chromium-output-directory', args.out_dir_diff]
    try:
      subprocess.check_output(diff_args, stderr=subprocess.STDOUT)
    except subprocess.CalledProcessError as e:
      print e.output
      raise

    # Combine the separate results
    base_file = os.path.join(base_dir, _CHARTJSON_FILENAME)
    diff_file = os.path.join(diff_dir, _CHARTJSON_FILENAME)
    base_results = shared_preference_utils.ExtractSettingsFromJson(base_file)
    diff_results = shared_preference_utils.ExtractSettingsFromJson(diff_file)
    DiffResults(chartjson, base_results, diff_results)
    if args.include_intermediate_results:
      AddIntermediateResults(chartjson, base_results, diff_results)

    if args.output_format:
      chartjson_path = os.path.join(os.path.abspath(args.output_dir),
                                    _CHARTJSON_FILENAME)
      logging.critical('Dumping diff chartjson to %s', chartjson_path)
      with open(chartjson_path, 'w') as outfile:
        json.dump(chartjson, outfile)

      if args.output_format == 'histograms':
        histogram_result = convert_chart_json.ConvertChartJson(chartjson_path)
        if histogram_result.returncode != 0:
          logging.error('chartjson conversion failed with error: %s',
              histogram_result.stdout)
          return 1

        histogram_path = os.path.join(os.path.abspath(args.output_dir),
            'perf_results.json')
        logging.critical('Dumping diff histograms to %s', histogram_path)
        with open(histogram_path, 'w') as json_file:
          json_file.write(histogram_result.stdout)
Пример #2
0
 def test_FilterAndroidResourceStringsXml(self):
     with build_utils.TempDir() as tmp_path:
         test_file = self._CreateTestResourceFile(tmp_path, 'foo',
                                                  _TEST_RESOURCES_MAP_1,
                                                  _TEST_NAMESPACES_1)
         resource_utils.FilterAndroidResourceStringsXml(
             test_file, lambda x: x in _TEST_RESOURCES_WHITELIST_1)
         self._CheckTestResourceFile(test_file, _TEST_XML_OUTPUT_2)
Пример #3
0
    def test_GetRTxtStringResourceNames(self):
        with build_utils.TempDir() as tmp_dir:
            tmp_file = os.path.join(tmp_dir, "test_R.txt")
            with open(tmp_file, 'wt') as f:
                f.write(_TEST_R_TXT)

            self.assertListEqual(
                resource_utils.GetRTxtStringResourceNames(tmp_file),
                _TEST_R_TXT_STRING_RESOURCE_NAMES)
Пример #4
0
def main():
    args, unknown_args = _CreateArgparser().parse_known_args()
    chartjson = _BASE_CHART.copy() if args.chartjson else None

    with build_utils.TempDir() as base_dir, build_utils.TempDir() as diff_dir:
        # Run resource_sizes.py on the two APKs
        resource_sizes_path = os.path.join(_ANDROID_DIR, 'resource_sizes.py')
        shared_args = (['python', resource_sizes_path, '--chartjson'] +
                       unknown_args)

        base_args = shared_args + ['--output-dir', base_dir, args.base_apk]
        if args.out_dir_base:
            base_args += ['--chromium-output-directory', args.out_dir_base]
        try:
            subprocess.check_output(base_args, stderr=subprocess.STDOUT)
        except subprocess.CalledProcessError as e:
            print e.output
            raise

        diff_args = shared_args + ['--output-dir', diff_dir, args.diff_apk]
        if args.out_dir_diff:
            diff_args += ['--chromium-output-directory', args.out_dir_diff]
        try:
            subprocess.check_output(diff_args, stderr=subprocess.STDOUT)
        except subprocess.CalledProcessError as e:
            print e.output
            raise

        # Combine the separate results
        base_file = os.path.join(base_dir, _RESULTS_FILENAME)
        diff_file = os.path.join(diff_dir, _RESULTS_FILENAME)
        base_results = shared_preference_utils.ExtractSettingsFromJson(
            base_file)
        diff_results = shared_preference_utils.ExtractSettingsFromJson(
            diff_file)
        DiffResults(chartjson, base_results, diff_results)
        if args.include_intermediate_results:
            AddIntermediateResults(chartjson, base_results, diff_results)

        if args.chartjson:
            with open(
                    os.path.join(os.path.abspath(args.output_dir),
                                 _RESULTS_FILENAME), 'w') as outfile:
                json.dump(chartjson, outfile)
Пример #5
0
 def test_GenerateStringResourcesWhitelist(self):
     with build_utils.TempDir() as tmp_dir:
         tmp_module_rtxt_file = _CreateTestFile(tmp_dir, "test_R.txt",
                                                _TEST_R_TXT)
         tmp_whitelist_rtxt_file = _CreateTestFile(tmp_dir,
                                                   "test_whitelist_R.txt",
                                                   _TEST_WHITELIST_R_TXT)
         self.assertDictEqual(
             resource_utils.GenerateStringResourcesWhitelist(
                 tmp_module_rtxt_file, tmp_whitelist_rtxt_file),
             _TEST_R_TEXT_RESOURCES_IDS)
Пример #6
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--classpath',
                        required=True,
                        action='append',
                        help='What to use as javadoc\'s classpath. Can be '
                        'specified multiple times.')
    parser.add_argument('--input-srcjar',
                        help='Source JAR containing more files to process.')
    parser.add_argument('--java-files',
                        required=True,
                        help='Java files to process.')
    parser.add_argument('--output-dir',
                        required=True,
                        help='Directory to store the documentation.')
    parser.add_argument('--srcjar-files',
                        help='When specified, only process the given files '
                        'inside the srcjar set via --input-srcjar.')
    parser.add_argument('--stamp',
                        required=True,
                        help='File to touch on success.')

    options = parser.parse_args(build_utils.ExpandFileArgs(sys.argv[1:]))
    options.java_files = build_utils.ParseGypList(options.java_files)

    if options.srcjar_files and options.input_srcjar is None:
        print '--srcjar-files specified without --input-srcjar. Ignoring files.'

    with build_utils.TempDir() as temp_dir:
        java_files = options.java_files
        if options.input_srcjar:
            if options.srcjar_files:
                pattern = lambda f: f in options.srcjar_files
                java_files += [
                    os.path.join(temp_dir, f)
                    for f in build_utils.ParseGypList(options.srcjar_files)
                ]
            else:
                pattern = None
                java_files += [os.path.join(temp_dir, '*.java')]
            build_utils.ExtractAll(options.input_srcjar, path=temp_dir)

        classpath = ':'.join(options.classpath)
        javadoc_cmd = [
            'javadoc', '-d', options.output_dir, '-classpath', classpath
        ]
        javadoc_cmd.extend(java_files)

        build_utils.CheckOutput(javadoc_cmd, print_stderr=True)

    build_utils.Touch(options.stamp)
Пример #7
0
 def test_GetRTxtStringResourceNames(self):
     with build_utils.TempDir() as tmp_dir:
         tmp_file = _CreateTestFile(tmp_dir, "test_R.txt", _TEST_R_TXT)
         self.assertListEqual(
             resource_utils.GetRTxtStringResourceNames(tmp_file),
             _TEST_R_TXT_STRING_RESOURCE_NAMES)