Пример #1
0
    def parse_quickcmd(self, args):
        # hack allow tests to quickly submit feedback through harness

        if not args:
            return

        if 'BEAKER_TASK_ID' not in os.environ:
            raise error.HarnessError("No BEAKER_TASK_ID set")
        task_id = os.environ['BEAKER_TASK_ID']

        # Commands are from tests and should be reported as results
        cmd, q_args = args.split(':')
        if cmd == 'submit_log':
            try:
                # rhts_submit_log has as args: -S -T -l
                # we just care about -l
                f = None
                arg_list = q_args.split(' ')
                while arg_list:
                    arg = arg_list.pop(0)
                    if arg == '-l':
                        f = arg_list.pop(0)
                        break
                if not f:
                    raise
                self.bkr_proxy.task_upload_file(task_id, f)
            except Exception:
                logging.critical('ERROR: Failed to process quick cmd %s' % cmd)

        elif cmd == 'submit_result':

            def init_args(testname='Need/a/testname/here',
                          status="None",
                          logfile=None,
                          score="0"):
                return testname, status, logfile, score

            try:
                # report_result has TESTNAME STATUS LOGFILE SCORE
                arg_list = q_args.split(' ')
                testname, status, logfile, score = init_args(*arg_list)

                resultid = self.bkr_proxy.task_result(task_id, status,
                                                      testname, score, '')

                if (logfile and os.path.isfile(logfile)
                        and os.path.getsize(logfile) != 0):
                    self.bkr_proxy.result_upload_file(task_id, resultid,
                                                      logfile)

                # save the dmesg file
                dfile = '/tmp/beaker.dmesg'
                utils.system('dmesg -c > %s' % dfile)
                if os.path.getsize(dfile) != 0:
                    self.bkr_proxy.result_upload_file(task_id, resultid, dfile)
                # os.remove(dfile)

            except Exception:
                logging.critical('ERROR: Failed to process quick cmd %s' % cmd)

        elif cmd == 'reboot':
            # we are in a stub job.  Can't use self.job.reboot() :-(
            utils.system("sync; sync; reboot")
            self.run_pause()
            raise error.JobContinue("more to come")

        else:
            raise error.HarnessError("Bad sub-quickcmd: %s" % cmd)
Пример #2
0
 def quit(self):
     # XXX: should have a better name.
     self.harness.run_pause()
     raise error.JobContinue("more to come")