Lines Matching refs:self

51     self.html_tamplate = """
117 def __init__(self, performance_cmd, output_path, report_titles, ptyflags=False):
118 self.performance_cmd = script_path + performance_cmd
119 self.output_path = script_path + output_path
120 self.report_title = report_titles
121 self.ptyflag = ptyflags
122 self.out_queue = queue.Queue()
123 self.system_info = list()
124 self.ninjia_trace_list = list()
125 self.gn_exec_li = list()
126 self.gn_script_li = list()
127 self.gn_end_li = list()
128 self.ccache_li = list()
129 self.c_targets_li = list()
130 self.root_dir = None
131 self.gn_dir = None
132 self.gn_script_res = None
133 self.gn_exec_res = None
134 self.cost_time_res = list()
135 self.gn_exec_flag = re.compile(r"File execute times")
136 self.gn_script_flag = re.compile(r"Script execute times")
137 self.gn_end_flag = re.compile(r"Done\. Made \d+ targets from \d+ files in (\d+)ms")
138 self.root_dir_flag = re.compile(r"""loader args.*source_root_dir="([a-zA-Z\d/\\_]+)""""")
139 self.gn_dir_flag = re.compile(r"""loader args.*gn_root_out_dir="([a-zA-Z\d/\\_]+)""""")
140 self.ccache_start_flag = re.compile(r"ccache_dir =")
141 self.ccache_end_flag = re.compile(r"c targets overlap rate statistics")
142 self.c_targets_flag = re.compile(r"c overall build overlap rate")
143 self.build_error = re.compile(r"=====build\s\serror=====")
144 self.ohos_error = re.compile(r"OHOS ERROR")
145 self.total_flag = re.compile(r"Cost time:.*(\d+:\d+:\d+)")
146 self.total_cost_time = None
147 self.error_message = list()
148 self.during_time_dic = {
164 self.table_html = ""
165 self.base_html = self.html_tamplate.format(self.report_title)
166 self.remove_out()
183 def remove_out(self):
192 if tmp_dir in self.exclude:
201 def write_html(self, content):
206 if not os.path.exists(os.path.dirname(self.output_path)):
207 os.makedirs(os.path.dirname(self.output_path), exist_ok=True)
208 with os.fdopen(os.open(self.output_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, os.stat.S_IWUSR), "w", encoding="utf-8") as html_file:
211 def generate_content(self, table_name, data_rows, switch=False):
232 self.table_html += tb_html
235 self.table_html += "<th>{}</th>".format(header.capitalize())
236 self.table_html += "</tr></thead>"
238 self.table_html += "<tbody>"
241 if float(row[-1]) > float(self.overflow):
242 self.table_html += "<tr style='background-color: #ff7f50;'>"
243 elif float(row[-1]) <= float(self.overflow) and index % 2 == 0:
244 self.table_html += "<tr style='background-color: #f5f5f5;'>"
246 self.table_html += "<tr>"
248 self.table_html += "<td>{}</td>".format(data)
249 self.table_html += "</tr>"
253 self.table_html += "<tr style='background-color: #f5f5f5;'>"
255 self.table_html += "<tr>"
257 self.table_html += "<td>{}</td>".format(data)
258 self.table_html += "</tr>"
259 self.table_html += "</tbody>"
261 self.table_html += "</table></div></body></html>"
264 def read_ninjia_trace_file(self):
269 ninja_trace_path = os.path.join(self.root_dir, self.gn_dir, "sorted_action_duration.txt")
276 def process_ninja_trace(self):
283 for line in self.read_ninjia_trace_file():
298 self.ninjia_trace_list = sort_result[:self.top_count]
300 self.ninjia_trace_list.insert(0, ["Ninjia Trace File", "Call Count", "Ninjia Trace Cost Time(s)"])
302 def process_gn_trace(self):
306 self.gn_exec_res = [[item[2], item[1], round(float(item[0]) / 1000, 4)] for item in self.gn_exec_li if
308 :self.top_count]
309 self.gn_script_res = [[item[2], item[1], round(float(item[0]) / 1000, 4)] for item in self.gn_script_li if
310 item and re.match(r"[\d.]+", item[0])][:self.top_count]
312 self.gn_exec_res.insert(0, ["Gn Trace Exec File", "Call Count", "GN Trace Exec Cost Time(s)"])
314 self.gn_script_res.insert(0, ["Gn Trace Script File", "Call Count", "GN Trace Script Cost Time(s)"])
316 def process_ccache_ctargets(self):
322 for tmp in self.ccache_li:
327 for item_ in self.c_targets_li:
333 def process_system(self):
344 self.system_info.extend(start_li)
349 self.system_info.append(["Disk Size", "{} GB".format(total_disk)])
355 self.system_info.append(["Total Memory", "{} GB".format(total_memory)])
359 def process_cost_time(self):
363 for i in self.during_time_dic.keys():
364 cost_time = (self.during_time_dic.get(i).get("end_time") - self.during_time_dic.get(i).get(
367 self.cost_time_res.append([i, new_cost_time])
368 gn_res = re.search(self.gn_end_flag, self.gn_end_li[0])
371 self.cost_time_res.append(['GN', gn_time])
372 self.cost_time_res.append(["Total", self.total_cost_time])
373 self.cost_time_res.insert(0, ["Compile Process Phase", "Cost Time(s)"])
375 def producer(self, execute_cmd, out_queue, timeout=TIMEOUT):
384 log_info("ptyflag is :{}".format(self.ptyflag))
386 if self.ptyflag:
462 def consumer(self, out_queue, timeout=TIMEOUT):
485 if re.search(self.root_dir_flag, output):
486 self.root_dir = re.search(self.root_dir_flag, output).group(1)
488 if re.search(self.gn_dir_flag, output):
489 self.gn_dir = re.search(self.gn_dir_flag, output).group(1)
491 for key, value in self.during_time_dic.items():
493 self.during_time_dic.get(key)["start_time"] = int(time_stamp)
495 self.during_time_dic.get(key)["end_time"] = int(time_stamp)
497 if re.search(self.gn_exec_flag, output):
499 elif re.search(self.gn_script_flag, output):
501 elif re.search(self.gn_end_flag, output):
503 self.gn_end_li.append(line_mes)
504 elif re.search(self.ccache_start_flag, output):
506 elif re.search(self.ccache_end_flag, output):
508 elif re.search(self.c_targets_flag, output):
512 self.gn_exec_li.append(line_mes.split())
514 self.gn_script_li.append(line_mes.split())
516 self.ccache_li.append(line_mes)
518 self.c_targets_li.append(line_mes)
520 if re.search(self.ohos_error, output) or re.search(self.build_error, output):
521 self.error_message.append(
524 if re.search(self.total_flag, output):
525 total_time_str = re.search(self.total_flag, output).group(1)
528 self.total_cost_time = milliseconds
536 def exec_command_pipe(self, execute_cmd):
542 producer_thread = threading.Thread(target=self.producer, args=(execute_cmd, self.out_queue))
543 consumer_thread = threading.Thread(target=self.consumer, args=(self.out_queue,))
555 def process(self):
560 cmds = self.performance_cmd.split(" ")
561 self.exec_command_pipe(cmds)
562 if self.error_message:
563 err_html = self.generate_error_content("Ohos Error", self.error_message)
564 self.write_html(err_html)
567 self.process_system()
568 self.process_cost_time()
569 self.process_gn_trace()
570 self.process_ninja_trace()
571 ccache_res, c_targets_res = self.process_ccache_ctargets()
573 log_info(self.cost_time_res)
574 log_info(self.gn_exec_res)
575 log_info(self.gn_script_res)
576 log_info(self.ninjia_trace_list)
579 self.generate_content("System Information", self.system_info)
580 self.generate_content("Compile Process Summary", self.cost_time_res)
581 self.generate_content("Gn Trace Exec File", self.gn_exec_res, switch=True)
582 self.generate_content("Gn Trace Script File ", self.gn_script_res, switch=True)
583 self.generate_content("Ninjia Trace File", self.ninjia_trace_list, switch=True)
584 self.generate_content("Ccache Data Statistics", ccache_res)
585 self.generate_content("C Targets Overlap Rate Statistics", c_targets_res)
586 res_html = self.base_html + self.table_html
587 self.write_html(res_html)
591 err_html = self.generate_error_content("Performance system Error", err_str.split("\n"))
592 self.write_html(err_html)