def main(argv):
# print("argv="),
# print(argv)
#print(type(argv))
VersionNum = "V6.0"
if type(argv) == type("str"):
argv = argv.split(' ')
argv_str = ""
for ar in argv:
argv_str += str(ar) + " "
# print(argv_str)
logging.basicConfig(level=logging.INFO, format='%(asctime)s.%(msecs)03d %(levelname)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
begin = datetime.datetime.now()
usage = "Usage: analysismain.py systracefile [options]"
parser = optparse.OptionParser(usage)
parser.add_option("-d", "--device", type="int", dest="devicetype", help="8250:msm8250, 8350:msm8350, 8450:msm8450, 8650:msm8650, 6115:msm6115, 8635:msm8635"
"6225:msm6225, 62252:msm6225pro, 6375:msm6375, 7325:msm7325, 7435:msm7435, 6450:msm6450,"
"7475:msm7475, 8475:msm8475, 84752:msm8475_lowfreq, 8550:msm8550, 7675:msm7675, 7635:msm7635,"
"6895:MT6895, 6877:MT6877, 6878:MT6878, 6853:MT6853, 6835:MT6835,68352:MT6835_24E,"
"6833:MT6833, 6769:MT6769, 6789:MT6789, 6886:MT6886"
"6781:MT6781, 6785:MT6785, 6893:MT6893,"
"6891:MT6891,")
parser.add_option("-t", "--threadpid", type="int", dest="watchingTid", help="watching thread tid")
parser.add_option("-s", "--starttime", type="float", dest="starttime", help="start time(ms)")
parser.add_option("-e", "--endtime", type="float", dest="endtime", help="end time(ms)")
parser.add_option("-l", "--timeDuration", type="float", dest="time", help="duration(ms)")
parser.add_option("-a", "--launching", type="int", dest="launching", help="1:launching time as starttime and endtime, "
"2:launching time as starttime and endtime and launching app as watching thread")
parser.add_option("-v", "--view", type="int", dest="view", help="1:uithread as watching thread,"
"2:renderthread as watchingtid,"
"3:surfaceflinger as watchingtid")
parser.add_option("-g", "--tag", type="string", dest="tag", help="support tag")
parser.add_option("-m", "--maxminfreq", type="int", dest="maxminfreq", help="systrace init freq, 1:maxfreq,2:minfreq")
parser.add_option("-f", "--freqbounds", action="store_true", dest="freqbounds", help="the time when all cpu has cpufreq info as starttime")
parser.add_option("-w", "--wakingEnable", action="store_true", dest="wakingEnable", help="use sched_waking to compute thread dependency")
parser.add_option("-r", "--replaceTitle", action="store_true", dest="replaceTitle", help="replace systrace html title")
parser.add_option("-k", "--threadload", type="string", dest="loadserialtid", help="thread load serial")
parser.add_option("-i", "--runnableSerial", action="store_true", dest="runnableSerial", help="runnable Serial")
parser.add_option("-q", "--irqload", action="store_true", dest="irqload", help="irq load")
parser.add_option("-z", "--allThreadSlice", type="int", dest="allThreadSlice", help="all thread slice")
parser.add_option("-p", "--frameTest", action="store_true", dest="frameTest", help="frame test")
parser.add_option("-c", "--croppedVersion", action="store_true", dest="croppedVersion", help="Cropped version")
parser.add_option("-n", "--runqEnable", action="store_true", dest="runqEnable", help="runqEnable")
parser.add_option("-b", "--blockEnable", type="int", dest="blockEnable", help="blockEnable")
parser.add_option("-u", "--mem", type="int", dest="memEnable", help="memEnable")
parser.add_option("-j", "--inode_file", type="string", dest="inode_file", help="inode_file")
parser.add_option("-x", "--power_info_get", type="int", dest="power_info_get", help="power_info_get")
parser.add_option("-y", "--schedEnable", action="store_true", dest="schedEnable", help="schedEnable")
parser.add_option("-o", "--onlycompate", action="store_true", dest="onlycompate", help="onlycompate")
logging.info(VersionNum)
options, args = parser.parse_args(argv[1:])
if options.starttime != None and options.time != None:
options.endtime = options.starttime + options.time
if options.endtime != None and options.time != None and options.starttime == None:
options.starttime = options.endtime - options.time
logging.info(options)
if args.__len__() != 1:
logging.info("param error!")
sys.exit()
device = 0
if options.devicetype == 8450:
device = "msm8450"
elif options.devicetype == 8250:
device = "msm8250"
elif options.devicetype == 8350:
device = "msm8350"
elif options.devicetype == 8550:
device = "msm8550"
elif options.devicetype == 8650:
device = "msm8650"
elif options.devicetype == 8635:
device = "msm8635"
elif options.devicetype == 7635:
device = "msm7635"
elif options.devicetype == 7675:
device = "msm7675"
elif options.devicetype == 7325:
device = "msm7325"
elif options.devicetype == 7435:
device = "msm7435"
elif options.devicetype == 6450:
device = "msm6450"
elif options.devicetype == 6115:
device = "msm6115"
elif options.devicetype == 6225:
device = "msm6225"
elif options.devicetype == 62252:
device = "msm6225pro"
elif options.devicetype == 6375:
device = "msm6375"
elif options.devicetype == 7475:
device = "msm7475"
elif options.devicetype == 8475:
device = "msm8475"
elif options.devicetype == 84752:
device = "msm8475_lowfreq"
elif options.devicetype == 6891:
device = "MT6891"
elif options.devicetype == 6893:
device = "MT6893"
elif options.devicetype == 6895:
device = "MT6895"
elif options.devicetype == 6769:
device = "MT6769"
elif options.devicetype == 6781:
device = "MT6781"
elif options.devicetype == 6785:
device = "MT6785"
elif options.devicetype == 6789:
device = "MT6789"
elif options.devicetype == 6833:
device = "MT6833"
elif options.devicetype == 6835:
device = "MT6835"
elif options.devicetype == 68352:
device = "MT68352"
elif options.devicetype == 6853:
device = "MT6853"
elif options.devicetype == 6877:
device = "MT6877"
elif options.devicetype == 6878:
device = "MT6878"
elif options.devicetype == 6886:
device = "MT6886"
elif options.devicetype == 9863:
device = "SC9863"
elif options.devicetype == 612:
device = "SC612"
else:
if options.power_info_get == None:
raise Exception("Device type is None!")
if options.endtime != None and options.starttime != None and options.starttime >= options.endtime:
raise Exception("Input param error, endtime need be bigger than starttime!")
logging.info("is dir"),
logging.info(os.path.isdir(args[0]))
path = args[0]
if os.path.isdir(path) == False:
controller = Controller(args[0], device, options, argv_str)
if controller.get_power_into_ret == True:
return None
ret = controller.run()
end = datetime.datetime.now()
logging.info("Elapsed Time=" + str(end - begin))
if ret == "perfetto_replace" and options.replaceTitle != True:
if options.endtime != None and options.starttime != None and options.starttime >= options.endtime:
raise Exception("Input param error, endtime need be bigger than starttime!")
logging.info("new_test:"),
logging.info(controller.updatetsfile)
controller = Controller(controller.updatetsfile, device, options, argv_str)
ret = controller.run()
end = datetime.datetime.now()
logging.info("Elapsed Time=" +str(end - begin))
if ret != None:
logging.info("Test result in " +str(ret))
elif ret != None:
logging.info("Test result in " + str(ret))
else:
logging.info("ret = " + str(ret))
return ret
else:
if options.onlycompate != True:
for dirpath, dirnames, filenames in os.walk(path):
for filepath in filenames:
ret = None
#print (os.path.join(dirpath, filepath))
filepath_full = os.path.join(dirpath, filepath)
if filepath_full.endswith(".html") or filepath_full.endswith(".perfetto-trace") or filepath_full.endswith(".perfetto"):
logging.info(filepath_full)
controller = Controller(filepath_full, device, options, argv_str)
ret = controller.run()
end = datetime.datetime.now()
logging.info("Elapsed Time=" + str(end - begin))
if ret == "perfetto_replace" and options.replaceTitle != True:
if options.endtime != None and options.starttime != None and options.starttime >= options.endtime:
raise Exception("Input param error, endtime need be bigger than starttime!")
logging.info("new_test:"),
logging.info(controller.updatetsfile)
controller = Controller(controller.updatetsfile, device, options, argv_str)
ret = controller.run()
end = datetime.datetime.now()
logging.info("Elapsed Time=" +str(end - begin))
if ret != None:
if options.croppedVersion != True:
logging.info("Test result in " + str(ret))
elif ret != None:
if options.croppedVersion != True:
logging.info("Test result in " + str(ret))
else:
logging.info("ret =" + str(ret))
#if os.path.isdir(path_out) == False:
# os.mkdir(path_out)
#if ret != None:
# des = ret.replace(path, path + "_rtrace_out", 1)
# logging.info("move from %s, to %s" %(ret, des))
# shutil.copy(ret, des)
if path != None:
compare(path)
逐行解析
最新发布