def run_tests(self): """ Run the tests """ procs = [] emulator_index = 0 for suite_name in self.test_suites: procs.append(self._trigger_test(suite_name, emulator_index)) emulator_index += 1 joint_tbpl_status = None joint_log_level = None start_time = int(time.time()) while True: for p in procs: emulator_index = p["emulator_index"] return_code = p["process"].poll() if return_code is not None: suite_name = p["suite_name"] # To make reading the log of the suite not mix with the previous line sys.stdout.write('\n') self.info("##### %s log begins" % p["suite_name"]) # Let's close the stdout p["tmp_stdout"].close() # Let's read the file that now has the output output = self.read_from_file(p["tmp_file"].name, verbose=False) # Let's parse the output (which also prints it) # and determine what the results should be parser = DesktopUnittestOutputParser( suite_category=self.test_suite_definitions[p["suite_name"]]["category"], config=self.config, log_obj=self.log_obj, error_list=self.error_list) for line in output.splitlines(): parser.parse_single_line(line) # After parsing each line we should know what the summary for this suite should be tbpl_status, log_level = parser.evaluate_parser(return_code) parser.append_tinderboxprint_line(p["suite_name"]) # After running all jobs we will report the worst status of all emulator runs joint_tbpl_status = self.worst_level(tbpl_status, joint_tbpl_status, TBPL_WORST_LEVEL_TUPLE) joint_log_level = self.worst_level(log_level, joint_log_level) self.info("##### %s log ends" % p["suite_name"]) self._dump_emulator_log(emulator_index) procs.remove(p) if procs == []: break else: # Every 5 minutes let's print something to stdout # so buildbot won't kill the process due to lack of output if int(time.time()) - start_time > 5 * 60: self.info('#') start_time = int(time.time()) time.sleep(30) self.buildbot_status(joint_tbpl_status, level=joint_log_level)
def run_tests(self): """ Run the tests """ procs = [] emulator_index = 0 for suite_name in self.test_suites: procs.append(self._trigger_test(suite_name, emulator_index)) emulator_index+=1 joint_tbpl_status = None joint_log_level = None start_time = int(time.time()) while True: for p in procs: return_code = p["process"].poll() if return_code!=None: suite_name = p["suite_name"] # To make reading the log of the suite not mix with the previous line sys.stdout.write('\n') self.info("##### %s log begins" % p["suite_name"]) # Let's close the stdout p["tmp_stdout"].close() # Let's read the file that now has the output output = self.read_from_file(p["tmp_file"].name, verbose=False) # Let's output all the log self.info(output) # Let's parse the output and determine what the results should be parser = DesktopUnittestOutputParser( suite_category=self.test_suite_definitions[p["suite_name"]]["category"], config=self.config, log_obj=self.log_obj, error_list=self.error_list) for line in output.splitlines(): parser.parse_single_line(line) # After parsing each line we should know what the summary for this suite should be tbpl_status, log_level = parser.evaluate_parser(return_code) parser.append_tinderboxprint_line(p["suite_name"]) # After running all jobs we will report the worst status of all emulator runs joint_tbpl_status = self.worst_level(tbpl_status, joint_tbpl_status, TBPL_WORST_LEVEL_TUPLE) joint_log_level = self.worst_level(log_level, joint_log_level) self.info("##### %s log ends" % p["suite_name"]) procs.remove(p) if procs == []: break else: # Every 5 minutes let's print something to stdout # so buildbot won't kill the process due to lack of output if int(time.time()) - start_time > 5 * 60: self.info('#') start_time = int(time.time()) time.sleep(30) self.buildbot_status(joint_tbpl_status, level=joint_log_level)