| #!/usr/bin/python |
| |
| import sys, optparse |
| import common |
| from autotest_lib.cli import rpc |
| |
| |
| def parse_options(): |
| usage = "usage: %prog [options] job_id" |
| parser = optparse.OptionParser(usage=usage) |
| parser.add_option("-m", "--machine", dest="machine") |
| parser.add_option("-t", "--test", dest="test") |
| parser.add_option("-T", "--type", dest="type", type="choice", |
| choices=["all", "test", "iteration", "attr", "perf"]) |
| parser.add_option("-k", "--key", dest="key") |
| parser.set_defaults(type="all") |
| options, args = parser.parse_args() |
| options.show_test_keyvals = options.type in ("all", "test") |
| options.show_attr_keyvals = options.type in ("all", "iteration", "attr") |
| options.show_perf_keyvals = options.type in ("all", "iteration", "perf") |
| options.show_iter_keyvals = ( |
| options.show_perf_keyvals or options.show_attr_keyvals) |
| return parser, options, args |
| |
| |
| def print_keyvals(keyval, format_string, options): |
| for key, value in keyval.iteritems(): |
| if not options.key or key == options.key: |
| print format_string % (key, value) |
| |
| |
| def print_views(test_views, options): |
| for view in test_views: |
| if not options.machine: |
| print "Machine: %s" % view["hostname"] |
| if not options.test: |
| print "Test: %s" % view["test_name"] |
| if options.show_test_keyvals: |
| print "Test Attributes:" |
| print_keyvals(view["attributes"], "\t%s = %s", options) |
| if options.show_iter_keyvals: |
| print "Iteration Attributes:" |
| for i, iteration in enumerate(view["iterations"]): |
| print "\tIteration #%d:" % (i + 1) |
| if options.show_attr_keyvals: |
| print_keyvals(iteration["attr"], "\t\t%s(attr) = %s", |
| options) |
| if options.show_perf_keyvals: |
| print_keyvals(iteration["perf"], "\t\t%s(perf) = %s", |
| options) |
| print |
| |
| |
| def main(): |
| parser, options, args = parse_options() |
| if not args: |
| parser.print_help() |
| return |
| |
| query_filter = {} |
| if options.machine: |
| query_filter["hostname"] = options.machine |
| if options.test: |
| query_filter["test_name"] = options.test |
| |
| comm = rpc.tko_comm() |
| test_views = [] |
| for job_id in args: |
| query_filter["job_tag__startswith"] = "%s-" % job_id |
| test_views += comm.run("get_detailed_test_views", **query_filter) |
| print_views(test_views, options) |
| |
| |
| if __name__ == "__main__": |
| main() |