parseLog.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import sys
  2. toolchain_list = ["ARM", "GCC"]
  3. core_list = ["cortexM0l", "cortexM3l", "cortexM4l", "cortexM4lf", "cortexM7l", "cortexM7lfsp", "cortexM7lfdp",
  4. "ARMv8MBLl", "ARMv8MMLl", "ARMv8MMLlfsp", "ARMv8MMLlfdp", "ARMv8MMLld", "ARMv8MMLldfsp", "ARMv8MMLldfdp" ]
  5. test_list = ["MPS2", "FVP", "Simulator"]
  6. error = 1
  7. def parseLog(toolchain, core, test):
  8. if toolchain not in toolchain_list:
  9. print "Error: Unkown toolchain '{0}'".format(toolchain)
  10. return error
  11. if core not in core_list:
  12. print "Error: Unkown core '{0}'".format(core)
  13. return error
  14. if test not in test_list:
  15. print "Error: Unkown test '{0}'".format(test)
  16. return error
  17. inFileName = ".\DspLibTest_{2}\{0}\Logs\DspLibTest_{2}_{1}.log".format(toolchain, core, test)
  18. outFileName = ".\DspLibTest_{2}\{0}\Logs\DspLibTest_{2}_{1}_parsed.log".format(toolchain, core, test)
  19. infile = open(inFileName).read()
  20. infile = infile.split('\n')
  21. outfile = open(outFileName, 'w')
  22. count = 0
  23. strName = ""
  24. strNr = -1
  25. strFUT = ""
  26. coverageInfo = 0
  27. for line in infile:
  28. if line.find("==================================================") != -1:
  29. continue
  30. if line.find("--------------------------------------------------") != -1:
  31. continue
  32. if line.find("Start: Group") != -1:
  33. outfile.write("\n")
  34. continue
  35. if line.find("End: Group") != -1:
  36. outfile.write("\n")
  37. continue
  38. if line.find("Start: Test") != -1:
  39. outfile.write("\n")
  40. continue
  41. if line.find("End: Test") != -1:
  42. outfile.write("\n")
  43. continue
  44. if line.find("Start Dump: String") != -1:
  45. continue
  46. if line.find("End Dump: String") != -1:
  47. strName = strName.rstrip("\n")
  48. outfile.write(strName)
  49. if strNr == 3:
  50. strFUT = strName
  51. # else:
  52. # strFUT == ""
  53. if strName == "Group Name:":
  54. strNr = 1
  55. outfile.write(" ")
  56. elif strName == "Test Name:":
  57. strNr = 2
  58. outfile.write(" ")
  59. elif strName == "Function Under Test:":
  60. strNr = 3
  61. outfile.write(" ")
  62. else:
  63. strNr = 4
  64. if len(strName) < 128:
  65. outfile.write("\n")
  66. strName = ""
  67. continue
  68. if line.find("Start: Coverage Information") != -1:
  69. coverageInfo = 1
  70. outfile.write(line)
  71. outfile.write("\n")
  72. if line.find("End: Coverage Information") != -1:
  73. strFUT == ""
  74. coverageInfo = 0
  75. if coverageInfo == 1:
  76. # if line.find(strFUT) == -1: #this line contains no relevant coverage info
  77. # continue
  78. if line.find("- 0%") == -1 and line.find("src") == -1 and line.find("Functions") != -1:
  79. outfile.write(line + "\n")
  80. continue
  81. if line.find("0x") == 0: #this is a line to translate
  82. line = line[12:35] + line[37:61]
  83. nums = line.split(' ')
  84. for num in nums:
  85. intNum = int(num, base=16)
  86. # if intNum == 10:
  87. # continue
  88. if intNum == 0:
  89. continue
  90. strName += str(chr(intNum))
  91. continue
  92. outfile.write(line)
  93. outfile.write("\n")
  94. def print_usage(sys_argv):
  95. script_name = sys_argv[0]
  96. usage_str = "Syntax: {0} toolchain core test\n".format(sys.argv[0])
  97. argument_desc = "\n toolchain: {0}".format(" ".join(toolchain_list))
  98. argument_desc += "\n core: {0}".format(" ".join(core_list))
  99. argument_desc += "\n test: {0}".format(" ".join(test_list))
  100. argument_desc += "\n\ne.g.: parseLog ARM cortexM3l FVP"
  101. print usage_str + argument_desc
  102. def exit_on_error(sys_argv):
  103. print_usage(sys_argv)
  104. exit(1)
  105. if __name__ == '__main__':
  106. arg_len = len(sys.argv)
  107. if arg_len != 4:
  108. exit_on_error(sys.argv)
  109. if error == parseLog(sys.argv[1], sys.argv[2], sys.argv[3]):
  110. exit_on_error(sys.argv)