blob: 25f34640a322ab73970d2089ce9b47ae436a515e [file] [log] [blame]
#!/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 len(args) != 1:
print "Invalid number of arguments"
print
parser.print_help()
sys.exit(1)
query_filter = {"job_tag__startswith": "%s-" % args[0]}
if options.machine:
query_filter["hostname"] = options.machine
if options.test:
query_filter["test_name"] = options.test
comm = rpc.tko_comm("dunsel")
test_views = comm.run("get_detailed_test_views", **query_filter)
print_views(test_views, options)
if __name__ == "__main__":
main()