| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- import sys
- toolchain_list = ["ARM", "GCC"]
- core_list = ["cortexM0l", "cortexM3l", "cortexM4l", "cortexM4lf", "cortexM7l", "cortexM7lfsp", "cortexM7lfdp",
- "ARMv8MBLl", "ARMv8MMLl", "ARMv8MMLlfsp", "ARMv8MMLlfdp", "ARMv8MMLld", "ARMv8MMLldfsp", "ARMv8MMLldfdp" ]
- test_list = ["MPS2", "FVP", "Simulator"]
- error = 1
- def parseLog(toolchain, core, test):
- if toolchain not in toolchain_list:
- print "Error: Unkown toolchain '{0}'".format(toolchain)
- return error
- if core not in core_list:
- print "Error: Unkown core '{0}'".format(core)
- return error
- if test not in test_list:
- print "Error: Unkown test '{0}'".format(test)
- return error
- inFileName = ".\DspLibTest_{2}\{0}\Logs\DspLibTest_{2}_{1}.log".format(toolchain, core, test)
- outFileName = ".\DspLibTest_{2}\{0}\Logs\DspLibTest_{2}_{1}_parsed.log".format(toolchain, core, test)
- infile = open(inFileName).read()
- infile = infile.split('\n')
- outfile = open(outFileName, 'w')
- count = 0
- strName = ""
- strNr = -1
- strFUT = ""
- coverageInfo = 0
- for line in infile:
- if line.find("==================================================") != -1:
- continue
- if line.find("--------------------------------------------------") != -1:
- continue
- if line.find("Start: Group") != -1:
- outfile.write("\n")
- continue
- if line.find("End: Group") != -1:
- outfile.write("\n")
- continue
- if line.find("Start: Test") != -1:
- outfile.write("\n")
- continue
- if line.find("End: Test") != -1:
- outfile.write("\n")
- continue
- if line.find("Start Dump: String") != -1:
- continue
- if line.find("End Dump: String") != -1:
- strName = strName.rstrip("\n")
- outfile.write(strName)
- if strNr == 3:
- strFUT = strName
- # else:
- # strFUT == ""
- if strName == "Group Name:":
- strNr = 1
- outfile.write(" ")
- elif strName == "Test Name:":
- strNr = 2
- outfile.write(" ")
- elif strName == "Function Under Test:":
- strNr = 3
- outfile.write(" ")
- else:
- strNr = 4
- if len(strName) < 128:
- outfile.write("\n")
- strName = ""
- continue
- if line.find("Start: Coverage Information") != -1:
- coverageInfo = 1
- outfile.write(line)
- outfile.write("\n")
- if line.find("End: Coverage Information") != -1:
- strFUT == ""
- coverageInfo = 0
- if coverageInfo == 1:
- # if line.find(strFUT) == -1: #this line contains no relevant coverage info
- # continue
- if line.find("- 0%") == -1 and line.find("src") == -1 and line.find("Functions") != -1:
- outfile.write(line + "\n")
- continue
- if line.find("0x") == 0: #this is a line to translate
- line = line[12:35] + line[37:61]
- nums = line.split(' ')
- for num in nums:
- intNum = int(num, base=16)
- # if intNum == 10:
- # continue
- if intNum == 0:
- continue
- strName += str(chr(intNum))
- continue
- outfile.write(line)
- outfile.write("\n")
- def print_usage(sys_argv):
- script_name = sys_argv[0]
- usage_str = "Syntax: {0} toolchain core test\n".format(sys.argv[0])
- argument_desc = "\n toolchain: {0}".format(" ".join(toolchain_list))
- argument_desc += "\n core: {0}".format(" ".join(core_list))
- argument_desc += "\n test: {0}".format(" ".join(test_list))
- argument_desc += "\n\ne.g.: parseLog ARM cortexM3l FVP"
- print usage_str + argument_desc
- def exit_on_error(sys_argv):
- print_usage(sys_argv)
- exit(1)
- if __name__ == '__main__':
- arg_len = len(sys.argv)
- if arg_len != 4:
- exit_on_error(sys.argv)
- if error == parseLog(sys.argv[1], sys.argv[2], sys.argv[3]):
- exit_on_error(sys.argv)
|