Exemple #1
0
    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])
Exemple #2
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)