aboutsummaryrefslogtreecommitdiff
path: root/crosperf/help.py
diff options
context:
space:
mode:
Diffstat (limited to 'crosperf/help.py')
-rw-r--r--crosperf/help.py114
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])