| #!/usr/bin/python3 |
| |
| import sys |
| |
| toolchain_list = ["ARM", "GCC", "ARMCLANG"] |
| 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) |