diff options
author | Dylan Baker <baker.dylan.c@gmail.com> | 2015-03-23 15:13:03 -0700 |
---|---|---|
committer | Dylan Baker <baker.dylan.c@gmail.com> | 2015-03-23 15:28:20 -0700 |
commit | f02cd7c1fc7280aaf17f4df61c2abb745adc13f0 (patch) | |
tree | 57a03abfe987940c09fa2a2cb5b11b0b59041b98 | |
parent | 57426de16862a16578cd4975a406ea60114ff69b (diff) |
summary: Add an aggregate function
This summarizer can be used to aggregate a set of individual tests
together into a single results file.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
-rw-r--r-- | framework/programs/summary.py | 41 | ||||
-rwxr-xr-x | piglit | 4 |
2 files changed, 42 insertions, 3 deletions
diff --git a/framework/programs/summary.py b/framework/programs/summary.py index a27391845..8aaf70981 100644 --- a/framework/programs/summary.py +++ b/framework/programs/summary.py @@ -19,19 +19,25 @@ # OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. +from __future__ import print_function, absolute_import import argparse import shutil +import os import os.path as path import sys +import errno import framework.summary as summary import framework.status as status import framework.core as core import framework.results -__all__ = ['html', - 'console', - 'csv'] +__all__ = [ + 'aggregate', + 'console', + 'csv', + 'html', +] def html(input_): @@ -163,3 +169,32 @@ def csv(input_): write_results(output) else: write_results(sys.stdout) + + +def aggregate(input_): + """Combine files in a tests/ directory into a single results file.""" + parser = argparse.ArgumentParser() + parser.add_argument('results_folder', + type=path.realpath, + metavar="<results path>", + help="Path to a results folder") + parser.add_argument('-o', '--output', + default="results.json", + help="name of output file. Default: results.json") + args = parser.parse_args(input_) + + assert os.path.isdir(args.results_folder) + + outfile = os.path.join(args.results_folder, args.output) + results = framework.results.load_results(args.results_folder) + + try: + results.write(outfile) + except IOError as e: + if e.errno == errno.EPERM: + print("Error: Unable to write aggregated file, permission denied.", + file=sys.stderr) + sys.exit(1) + raise + + print("Aggregated file written to: {}".format(outfile)) @@ -135,6 +135,10 @@ def main(): add_help=False, help='generate csv from results') csv.set_defaults(func=summary.csv) + aggregate = summary_parser.add_parser('aggregate', + add_help=False, + help="Aggregate incomplete piglit run.") + aggregate.set_defaults(func=summary.aggregate) # Parse the known arguments (piglit run or piglit summary html for # example), and then pass the arguments that this parser doesn't know about |