1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
#!/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)
|