summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <baker.dylan.c@gmail.com>2015-03-23 15:13:03 -0700
committerDylan Baker <baker.dylan.c@gmail.com>2015-03-23 15:28:20 -0700
commitf02cd7c1fc7280aaf17f4df61c2abb745adc13f0 (patch)
tree57a03abfe987940c09fa2a2cb5b11b0b59041b98
parent57426de16862a16578cd4975a406ea60114ff69b (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.py41
-rwxr-xr-xpiglit4
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))
diff --git a/piglit b/piglit
index 53a4bb496..5ae43e90a 100755
--- a/piglit
+++ b/piglit
@@ -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