def RunCrosperf(argv):
    parser = argparse.ArgumentParser()

    parser.add_argument('--noschedv2',
                        dest='noschedv2',
                        default=False,
                        action='store_true',
                        help=('Do not use new scheduler. '
                              'Use original scheduler instead.'))
    parser.add_argument(
        '-l',
        '--log_dir',
        dest='log_dir',
        default='',
        help='The log_dir, default is under <crosperf_logs>/logs')

    SetupParserOptions(parser)
    options, args = parser.parse_known_args(argv)

    # Convert the relevant options that are passed in into a settings
    # object which will override settings in the experiment file.
    option_settings = ConvertOptionsToSettings(options)
    log_dir = os.path.abspath(os.path.expanduser(options.log_dir))
    logger.GetLogger(log_dir)

    if len(args) == 2:
        experiment_filename = args[1]
    else:
        parser.error('Invalid number arguments.')

    working_directory = os.getcwd()
    if options.dry_run:
        test_flag.SetTestMode(True)

    experiment_file = ExperimentFile(open(experiment_filename, 'rb'),
                                     option_settings)
    if not experiment_file.GetGlobalSettings().GetField('name'):
        experiment_name = os.path.basename(experiment_filename)
        experiment_file.GetGlobalSettings().SetField('name', experiment_name)
    experiment = ExperimentFactory().GetExperiment(experiment_file,
                                                   working_directory, log_dir)

    json_report = experiment_file.GetGlobalSettings().GetField('json_report')

    signal.signal(signal.SIGTERM, CallExitHandler)
    atexit.register(Cleanup, experiment)

    if options.dry_run:
        runner = MockExperimentRunner(experiment, json_report)
    else:
        runner = ExperimentRunner(experiment,
                                  json_report,
                                  using_schedv2=(not options.noschedv2))

    runner.Run()
Пример #2
0
    def testOverrideSetting(self):
        input_file = StringIO.StringIO(EXPERIMENT_FILE_2)
        experiment_file = ExperimentFile(input_file)
        global_settings = experiment_file.GetGlobalSettings()
        self.assertEqual(global_settings.GetField('remote'),
                         ['chromeos-alex3'])

        benchmark_settings = experiment_file.GetSettings('benchmark')
        self.assertEqual(len(benchmark_settings), 2)
        self.assertEqual(benchmark_settings[0].name, 'PageCycler')
        self.assertEqual(benchmark_settings[0].GetField('iterations'), 3)
        self.assertEqual(benchmark_settings[1].name, 'AndroidBench')
        self.assertEqual(benchmark_settings[1].GetField('iterations'), 2)
Пример #3
0
    def testLoadExperimentFile1(self):
        input_file = StringIO.StringIO(EXPERIMENT_FILE_1)
        experiment_file = ExperimentFile(input_file)
        global_settings = experiment_file.GetGlobalSettings()
        self.assertEqual(global_settings.GetField('remote'),
                         ['chromeos-alex3'])
        self.assertEqual(global_settings.GetField('perf_args'),
                         'record -a -e cycles')
        benchmark_settings = experiment_file.GetSettings('benchmark')
        self.assertEqual(len(benchmark_settings), 1)
        self.assertEqual(benchmark_settings[0].name, 'PageCycler')
        self.assertEqual(benchmark_settings[0].GetField('iterations'), 3)

        label_settings = experiment_file.GetSettings('label')
        self.assertEqual(len(label_settings), 2)
        self.assertEqual(label_settings[0].name, 'image1')
        self.assertEqual(label_settings[0].GetField('chromeos_image'),
                         '/usr/local/google/cros_image1.bin')
        self.assertEqual(label_settings[1].GetField('remote'),
                         ['chromeos-lumpy1'])
        self.assertEqual(label_settings[0].GetField('remote'),
                         ['chromeos-alex3'])