diff options
Diffstat (limited to 'crosperf/help.py')
-rw-r--r-- | crosperf/help.py | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/crosperf/help.py b/crosperf/help.py new file mode 100644 index 00000000..61ed8ea2 --- /dev/null +++ b/crosperf/help.py @@ -0,0 +1,114 @@ +# Copyright 2011 Google Inc. All Rights Reserved. +"""Module to print help message.""" + +from __future__ import print_function + +import sys +import textwrap +from settings_factory import BenchmarkSettings +from settings_factory import GlobalSettings +from settings_factory import LabelSettings + + +class Help(object): + """The help class.""" + + def GetUsage(self): + return """%s [OPTIONS] EXPERIMENT_FILE""" % (sys.argv[0]) + + def _WrapLine(self, line): + return '\n'.join(textwrap.wrap(line, 80)) + + def _GetFieldDescriptions(self, fields): + res = '' + for field_name in fields: + field = fields[field_name] + res += 'Field:\t\t%s\n' % field.name + res += self._WrapLine('Description:\t%s' % field.description) + '\n' + res += 'Type:\t\t%s\n' % type(field).__name__.replace('Field', '') + res += 'Required:\t%s\n' % field.required + if field.default: + res += 'Default:\t%s\n' % field.default + res += '\n' + return res + + def GetHelp(self): + global_fields = self._GetFieldDescriptions(GlobalSettings('').fields) + benchmark_fields = self._GetFieldDescriptions(BenchmarkSettings('').fields) + label_fields = self._GetFieldDescriptions(LabelSettings('').fields) + + return """%s is a script for running performance experiments on +ChromeOS. It allows one to run ChromeOS Autotest benchmarks over +several images and compare the results to determine whether there +is a performance difference. + +Comparing several images using %s is referred to as running an +"experiment". An "experiment file" is a configuration file which holds +all the information that describes the experiment and how it should be +run. An example of a simple experiment file is below: + +--------------------------------- test.exp --------------------------------- +name: my_experiment +board: x86-alex +remote: chromeos2-row1-rack4-host7.cros 172.18.122.132 + +benchmark: page_cycler_v2.morejs { + suite: telemetry_Crosperf + iterations: 3 +} + +my_first_image { + chromeos_image: /usr/local/chromeos-1/chromiumos_image.bin +} + +my_second_image { + chromeos_image: /usr/local/chromeos-2/chromiumos_image.bin +} +---------------------------------------------------------------------------- + +This experiment file names the experiment "my_experiment". It will be +run on the board x86-alex. Benchmarks will be run using two remote +devices, one is a device specified by a hostname and the other is a +device specified by it's IP address. Benchmarks will be run in +parallel across these devices. There is currently no way to specify +which benchmark will run on each device. + +We define one "benchmark" that will be run, page_cycler_v2.morejs. This +benchmark has two "fields", one which specifies that this benchmark is +part of the telemetry_Crosperf suite (this is the common way to run +most Telemetry benchmarks), and the other which specifies how many +iterations it will run for. + +We specify one or more "labels" or images which will be compared. The +page_cycler_v2.morejs benchmark will be run on each of these images 3 +times and a result table will be output which compares them for all +the images specified. + +The full list of fields that can be specified in the experiment file +are as follows: +================= +Global Fields +================= +%s +================= +Benchmark Fields +================= +%s +================= +Label Fields +================= +%s + +Note that global fields are overidden by label or benchmark fields, if +they can be specified in both places. Fields that are specified as +arguments override fields specified in experiment files. + +%s is invoked by passing it a path to an experiment file, +as well as any options (in addition to those specified in the +experiment file). Crosperf runs the experiment and caches the results +(or reads the previously cached experiment results out of the cache), +generates and displays a report based on the run, and emails the +report to the user. If the results were all read out of the cache, +then by default no email is generated. +""" % (sys.argv[0], sys.argv[0], global_fields, benchmark_fields, label_fields, + sys.argv[0]) |