1be630eb07ddb84310fcc580acffcaa362a2dc606mbligh#!/usr/bin/python 2be630eb07ddb84310fcc580acffcaa362a2dc606mbligh""" 3be630eb07ddb84310fcc580acffcaa362a2dc606mblighSelects all rows and columns that satisfy the condition specified 4be630eb07ddb84310fcc580acffcaa362a2dc606mblighand prints the matrix. 5be630eb07ddb84310fcc580acffcaa362a2dc606mbligh""" 6be630eb07ddb84310fcc580acffcaa362a2dc606mblighimport sys, os, re, optparse 7be630eb07ddb84310fcc580acffcaa362a2dc606mblighimport common 848d412c368405508fbfb2a4a8ce57426fa045cfemblighfrom autotest_lib.client.common_lib import kernel_versions 9be630eb07ddb84310fcc580acffcaa362a2dc606mblighfrom autotest_lib.tko import display, frontend, db, query_lib 10be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 11be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# First do all the options parsing 12be630eb07ddb84310fcc580acffcaa362a2dc606mblighparser = optparse.OptionParser() 13be630eb07ddb84310fcc580acffcaa362a2dc606mblighparser.add_option('-x', '--x_axis', action='store', dest='x_axis', 14be630eb07ddb84310fcc580acffcaa362a2dc606mbligh default='machine_group') 15be630eb07ddb84310fcc580acffcaa362a2dc606mblighparser.add_option('-y', '--y_axis', action='store', dest='y_axis', 16be630eb07ddb84310fcc580acffcaa362a2dc606mbligh default='kernel') 17be630eb07ddb84310fcc580acffcaa362a2dc606mblighparser.add_option('-c', '--condition', action='store', dest='condition') 18be630eb07ddb84310fcc580acffcaa362a2dc606mbligh(options, args) = parser.parse_args() 19be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 20be630eb07ddb84310fcc580acffcaa362a2dc606mblighif options.condition: 21be630eb07ddb84310fcc580acffcaa362a2dc606mbligh where = query_lib.parse_scrub_and_gen_condition( 22be630eb07ddb84310fcc580acffcaa362a2dc606mbligh options.condition, frontend.test_view_field_dict) 23be630eb07ddb84310fcc580acffcaa362a2dc606mbligh # print("where clause:" % where) 24be630eb07ddb84310fcc580acffcaa362a2dc606mblighelse: 25be630eb07ddb84310fcc580acffcaa362a2dc606mbligh where = None 26be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 27be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# Grab the data 28be630eb07ddb84310fcc580acffcaa362a2dc606mblighdb = db.db() 29be630eb07ddb84310fcc580acffcaa362a2dc606mblightest_data = frontend.get_matrix_data(db, options.x_axis, options.y_axis, where) 30be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 31be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# Print everything 32be630eb07ddb84310fcc580acffcaa362a2dc606mblighwidest_row_header = max([len(y) for y in test_data.y_values]) 33be630eb07ddb84310fcc580acffcaa362a2dc606mblighdata_column_width = max([max(13,len(x)) for x in test_data.x_values]) 34be630eb07ddb84310fcc580acffcaa362a2dc606mblighcolumn_widths = [widest_row_header] + [data_column_width] * len(test_data.x_values) 35be630eb07ddb84310fcc580acffcaa362a2dc606mblighformat = ' | '.join(['%%%ds' % i for i in column_widths]) 36be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# Print headers 37be630eb07ddb84310fcc580acffcaa362a2dc606mblighprint format % tuple([''] + test_data.x_values) 38be630eb07ddb84310fcc580acffcaa362a2dc606mbligh 39be630eb07ddb84310fcc580acffcaa362a2dc606mbligh# print data 40be630eb07ddb84310fcc580acffcaa362a2dc606mblighfor y in test_data.y_values: 41be630eb07ddb84310fcc580acffcaa362a2dc606mbligh line = [y] 42be630eb07ddb84310fcc580acffcaa362a2dc606mbligh for x in test_data.x_values: 43be630eb07ddb84310fcc580acffcaa362a2dc606mbligh try: 44be630eb07ddb84310fcc580acffcaa362a2dc606mbligh data_point = test_data.data[x][y] 45be630eb07ddb84310fcc580acffcaa362a2dc606mbligh good_status = db.status_idx['GOOD'] 46be630eb07ddb84310fcc580acffcaa362a2dc606mbligh good = data_point.status_count.get(good_status, 0) 47be630eb07ddb84310fcc580acffcaa362a2dc606mbligh total = sum(data_point.status_count.values()) 48be630eb07ddb84310fcc580acffcaa362a2dc606mbligh line.append('%5d / %-5d' % (good, total)) 49be630eb07ddb84310fcc580acffcaa362a2dc606mbligh except: 50be630eb07ddb84310fcc580acffcaa362a2dc606mbligh line.append('') 51be630eb07ddb84310fcc580acffcaa362a2dc606mbligh print format % tuple(line) 52