6 def getResultColumn(data_dict):
7 column_string = data_dict['Columns']
8 return column_string.strip('{}').split()
11 def getResult(data_dict):
12 result_string = data_dict['Output']
13 result_array = result_string.split('} {')
15 for line in result_array:
16 result.append(line.split())
20 def restrucData(data_string):
23 p = re.compile('-Columns.*-Output')
24 data_dict['Columns'] = p.findall(data_string)[0].strip('-Columns {} -Output')
25 p = re.compile('-Output.*-State')
26 data_dict['Output'] = p.findall(data_string)[0].strip('-Output {} -State')
27 if data_dict['Columns'] is not None or data_dict['Output'] is not None:
29 return True, data_dict
31 print("[ERROR]Find the column name or the output result failed.")
34 def framelossData(column, perfdata):
41 'PercentLoss(%s)': 12,
42 'MinimumLatency(us)': 17,
43 'MaximumLatency(us)': 18,
44 'AverageLatency(us)': 19,
45 'MinimumJitter(us)': 20,
46 'MaximumJitter(us)': 21,
47 'AverageJitter(us)': 22,
49 # get the column array
51 column[column_name_dict['FrameSize']],
52 'ForwardingRate(Mpps)',
53 column[column_name_dict['TxFrameCount']],
54 column[column_name_dict['RxFrameCount']],
55 column[column_name_dict['PercentLoss(%s)']],
56 column[column_name_dict['AverageLatency(us)']],
57 column[column_name_dict['MinimumLatency(us)']],
58 column[column_name_dict['MaximumLatency(us)']],
59 column[column_name_dict['AverageJitter(us)']],
60 column[column_name_dict['MinimumJitter(us)']],
61 column[column_name_dict['MaximumJitter(us)']]
66 # line[column_name_dict['TrialNumber']],
67 # line[column_name_dict['Id']],
68 line[column_name_dict['FrameSize']],
69 str(float(line[column_name_dict['RxFrameCount']]) / 60 / 1000000),
70 line[column_name_dict['TxFrameCount']],
71 line[column_name_dict['RxFrameCount']],
72 line[column_name_dict['PercentLoss(%s)']],
73 line[column_name_dict['AverageLatency(us)']],
74 line[column_name_dict['MinimumLatency(us)']],
75 line[column_name_dict['MaximumLatency(us)']],
76 line[column_name_dict['AverageJitter(us)']],
77 line[column_name_dict['MinimumJitter(us)']],
78 line[column_name_dict['MaximumJitter(us)']]
80 data_array.append(line_options)
81 return [column_array, data_array]
84 class analysis(object):
88 def analyseResult(self, suite, column, perfdata):
92 global data_array, column_array
93 if suite == 'throughput':
94 [column_array, data_array] = self.throughputData(column, perfdata)
95 elif suite == 'frameloss':
96 [column_array, data_array] = self.framelossData(column, perfdata)
97 elif suite == 'latency':
98 self.latencyData(column, perfdata)
101 for line in data_array:
103 return [column_array, data_array]
105 def throughputData(self, column, perfdata):
114 'ForwardingRate(mpps)': 17,
115 'MinimumLatency(us)': 18,
116 'MaximumLatency(us)': 19,
117 'AverageLatency(us)': 20,
118 'MinimumJitter(us)': 21,
119 'MaximumJitter(us)': 22,
120 'AverageJitter(us)': 23
122 column_array = {column[column_name_dict['FrameSize']],
123 column[column_name_dict['Load(%)']],
124 column[column_name_dict['Result']],
125 'ForwardingRate(mpps)',
126 column[column_name_dict['TxFrameCount']],
127 column[column_name_dict['RxFrameCount']],
128 column[column_name_dict['AverageLatency(us)']],
129 column[column_name_dict['MinimumLatency(us)']],
130 column[column_name_dict['MaximumLatency(us)']],
131 column[column_name_dict['AverageJitter(us)']],
132 column[column_name_dict['MinimumJitter(us)']],
133 column[column_name_dict['MaximumJitter(us)']]}
135 for line in perfdata:
136 if line[column_name_dict['Result']] == 'Passed':
138 # line[column_name_dict['TrialNumber']],
139 # line[column_name_dict['Id']],
140 line[column_name_dict['FrameSize']],
141 line[column_name_dict['Load(%)']],
142 line[column_name_dict['Result']],
143 str(float(line[column_name_dict['ForwardingRate(mpps)']]) / 1000000),
144 line[column_name_dict['TxFrameCount']],
145 line[column_name_dict['RxFrameCount']],
146 line[column_name_dict['AverageLatency(us)']],
147 line[column_name_dict['MinimumLatency(us)']],
148 line[column_name_dict['MaximumLatency(us)']],
149 line[column_name_dict['AverageJitter(us)']],
150 line[column_name_dict['MinimumJitter(us)']],
151 line[column_name_dict['MaximumJitter(us)']]]
154 data_array.append(line_options)
155 # delete the redundant test data
158 for ele in range(len(data_array) - 1):
159 if data_array[ele][0] == data_array[ele + 1][0]:
160 delete_index.append(ele)
162 for num in len(data_array):
163 if num not in delete_index:
164 new_data_array.append(data_array[num])
166 return column_array, new_data_array
168 def latencyData(self, column, perfdata):
172 analysis_instance = analysis()