def exec_gen(self, arg_task_file): # Msg.dbg( "ExecuteController::exec_gen( %s )" % ( arg_task_file ) ) # NOTE: Do not change force_cmd may need to reuse!! # my_task_file = self.ctrl_item.file_path() # my_cmd = self.force_cmd % ( my_testfile, arg_testname.replace( ".py", ".gen.log" )) my_log = "gen.log" # arg_testname.replace( ".py", ".gen.log" ) my_elog = "gen.err" # arg_testname.replace( ".py", ".gen.log" ) my_cmd = self.force_cmd % (arg_task_file) # , my_log ) # Msg.dbg( "Generate Command Line: %s" % ( my_cmd )) # if self.ctrl_item.mode == "mock": # Msg.info( "Mock Generate: " + my_cmd ) # else: Msg.info( "ForceCommand = " + str({ "force-command": my_cmd, "force-log": my_log, "force-elog": my_elog, "max-instr": self.ctrl_item.max_instr, "min-instr": self.ctrl_item.min_instr }), True) Msg.flush() # if self.ctrl_item.summary is not None: # # update the current test with the generate cmd and the generate log file. # self.ctrl_item.summary.set_gen_info( arg_task_name, arg_ndx, my_cmd, my_log ) my_result = SysUtils.exec_process(my_cmd, my_log, my_elog, self.ctrl_item.timeout, True) # Msg.user( str( my_result[0] ) + ", type: " + str( type( my_result[0] ))) my_ret_code = int(my_result[0]) my_std_out = str(my_result[1]) my_std_err = str(my_result[2]) my_start = str(my_result[3]) my_end = str(my_result[4]) my_time_elapsed = SysUtils.ifthen(my_result[3] is not None, float(my_result[3]), 0.0) Msg.info("ForceResult = " + str({ "force-retcode": my_ret_code, "force-stdout": my_std_out, "force-stderr": my_std_err, "force-start": my_start, "force-end": my_end })) return SysUtils.success(my_result[0])
def exec_iss(self, arg_task_name): # Msg.dbg( "ExecuteController::exec_iss( %s )" % ( arg_task_name ) ) # build rest of command for iss my_elf = "%s.Default.ELF" % (arg_task_name) # Msg.dbg( "Looking For: %s" % ( my_elf )) my_elf = SysUtils.ifthen(PathUtils.check_file(my_elf), " %s" % my_elf, "") # Msg.dbg( "Using ELF: %s" % ( my_elf )) my_elfns = "%s.Secondary.ELF" % (arg_task_name) # Msg.dbg( "Looking For: %s" % ( my_elfns )) my_elfns = SysUtils.ifthen(PathUtils.check_file(my_elfns), " %s" % my_elfns, "") my_cmd = self.sim_cmd % (my_elf, my_elfns) try: # execute the simulation Msg.info("ISSCommand = " + str({"iss-command": my_cmd})) my_log = self.sim_log my_elog = self.sim_log #my_ret_code = int( SysUtils.exec_cmd( my_cmd ) ) my_result = SysUtils.exec_process(my_cmd, my_log, my_elog, self.ctrl_item.timeout, True) my_ret_code = int(my_result[0]) my_std_out = str(my_result[1]) my_std_err = str(my_result[2]) my_start = str(my_result[3]) my_end = str(my_result[4]) Msg.info("ISSResult = " + str({ "iss-retcode": my_ret_code, "iss-log": self.sim_log, "iss-stdout": my_std_out, "iss-stderr": my_std_err, "iss-start": my_start, "iss-end": my_end })) except Exception as arg_ex: Msg.error_trace("ISS Execute Failure") Msg.err("ISS did not properly execute, Reason: %s" % (str(arg_ex))) return False return True
def run(self): # Record the starting and ending of the run for performance metrics start = DateTime.Time() my_cmd = self.process_queue.process_cmd % (self.queue_item.frun_path) # Msg.dbg( "Process Command: %s" % ( str( my_cmd ))) my_log = "%s/forrest.log" % (self.queue_item.work_dir) # my_retcode = SysUtils.exec_process( my_cmd, my_log, my_log, self.my_queue_item.ctrl_item.timeout ) # Msg.dbg( "Process Timeout: %s" % ( str( self.queue_item.ctrl_item.timeout ))) # self.queue_item.ctrl_item.timeout ))) my_retcode = SysUtils.exec_process(my_cmd, my_log, my_log, self.queue_item.ctrl_item.timeout) end = DateTime.Time() self.extract_results(my_retcode, my_cmd, my_log, self.queue_item, start, end) self.done_semaphore.release() self.thread_count.add(-1)