Beispiel #1
0
    def start_trex(self, trex_launch_path, trex_cmd, zmq_port):
        self.set_status(TRexStatus.Starting)
        logger.info("TRex running state changed to 'Starting'.")
        self.set_verbose_status('TRex is starting (data is not available yet)')

        if not self.zmq_monitor:
            logger.info('Starting ZMQ monitor on port %s' % zmq_port)
            self.zmq_monitor = ZmqMonitorSession(self, zmq_port)
            self.zmq_monitor.start()
        else:
            if not self.zmq_monitor.is_alive(
            ) or self.zmq_monitor.zmq_port != zmq_port:
                if not self.zmq_monitor.is_alive():
                    logger.info('Old ZMQ monitor is dead, starting new')
                else:
                    logger.info(
                        'ZMQ port is changed to %s, starting new monitor' %
                        zmq_port)
                self.zmq_monitor.join()
                self.zmq_monitor = ZmqMonitorSession(self, zmq_port)
                self.zmq_monitor.start()

        self.zmq_monitor.first_dump = True
        self.errcode = None
        self.session = AsynchronousTRexSession(self, trex_launch_path,
                                               trex_cmd)
        self.session.start()
        self.expect_trex.set()
Beispiel #2
0
    def start_trex(self, trex_launch_path, trex_cmd):
        self.set_status(TRexStatus.Starting)
        logger.info("TRex running state changed to 'Starting'.")
        self.set_verbose_status('TRex is starting (data is not available yet)')

        self.errcode    = None
        self.session    = AsynchronousTRexSession(self, trex_launch_path, trex_cmd)      
        self.session.start()
        self.expect_trex.set()
Beispiel #3
0
    def start_trex(self, trex_launch_path, trex_cmd):
        self.set_status(TRexStatus.Starting)
        logger.info("TRex running state changed to 'Starting'.")
        self.set_verbose_status('TRex is starting (data is not available yet)')

        self.errcode    = None
        self.session    = AsynchronousTRexSession(self, trex_launch_path, trex_cmd)      
        self.session.start()
        self.expect_trex.set()
Beispiel #4
0
class CTRex(object):
    def __init__(self):
        self.status         = TRexStatus.Idle
        self.verbose_status = 'TRex is Idle'
        self.errcode        = None
        self.session        = None
        self.zmq_monitor    = None
        self.zmq_dump       = None
        self.seq            = None
        self.expect_trex    = threading.Event()
        self.encoder        = JSONEncoder()

    def get_status(self):
        return self.status

    def set_status(self, new_status):
        self.status = new_status

    def get_verbose_status(self):
        return self.verbose_status

    def set_verbose_status(self, new_status):
        self.verbose_status = new_status

    def gen_seq (self):
        self.seq = randrange(1,1000)

    def get_seq (self):
        return self.seq

    def get_running_info (self):
        if self.status == TRexStatus.Running:
            return self.encoder.encode(self.zmq_dump)
        else:
            logger.info("TRex isn't running. Running information isn't available.")
            if self.status == TRexStatus.Idle:
                if self.errcode is not None:    # some error occured
                    logger.info("TRex is in Idle state, with errors. returning fault")
                    return Fault(self.errcode, self.verbose_status)               # raise at client relevant exception, depending on the reason the error occured
                else:
                    logger.info("TRex is in Idle state, no errors. returning {}")
                    return u'{}'    
                
            return Fault(-12, self.verbose_status)                                # raise at client TRexWarning, indicating TRex is back to Idle state or still in Starting state

    def stop_trex(self):
        if self.status == TRexStatus.Idle:
            # t-rex isn't running, nothing to abort
            logger.info("TRex isn't running. No need to stop anything.")
            if self.errcode is not None:    # some error occurred, notify client despite TRex already stopped
                    return Fault(self.errcode, self.verbose_status)               # raise at client relevant exception, depending on the reason the error occured
            return False
        else:
            # handle stopping t-rex's run
            self.session.join()
            logger.info("TRex session has been successfully aborted.")
            return True

    def start_trex(self, trex_launch_path, trex_cmd):
        self.set_status(TRexStatus.Starting)
        logger.info("TRex running state changed to 'Starting'.")
        self.set_verbose_status('TRex is starting (data is not available yet)')

        self.errcode    = None
        self.session    = AsynchronousTRexSession(self, trex_launch_path, trex_cmd)      
        self.session.start()
        self.expect_trex.set()
Beispiel #5
0
class CTRex(object):
    def __init__(self):
        self.status = TRexStatus.Idle
        self.verbose_status = 'TRex is Idle'
        self.errcode = None
        self.session = None
        self.zmq_monitor = None
        self.zmq_dump = None
        self.seq = None
        self.expect_trex = threading.Event()
        self.encoder = JSONEncoder()

    def get_status(self):
        return self.status

    def set_status(self, new_status):
        self.status = new_status

    def get_verbose_status(self):
        return self.verbose_status

    def set_verbose_status(self, new_status):
        self.verbose_status = new_status

    def gen_seq(self):
        self.seq = randrange(1, 1000)

    def get_seq(self):
        return self.seq

    def get_running_info(self):
        if self.status == TRexStatus.Running:
            return self.encoder.encode(self.zmq_dump)
        else:
            logger.info(
                "TRex isn't running. Running information isn't available.")
            if self.status == TRexStatus.Idle:
                if self.errcode is not None:  # some error occured
                    logger.info(
                        "TRex is in Idle state, with errors. returning fault")
                    return Fault(
                        self.errcode, self.verbose_status
                    )  # raise at client relevant exception, depending on the reason the error occured
                else:
                    logger.info(
                        "TRex is in Idle state, no errors. returning {}")
                    return u'{}'

            return Fault(
                -12, self.verbose_status
            )  # raise at client TRexWarning, indicating TRex is back to Idle state or still in Starting state

    def stop_trex(self):
        if self.status == TRexStatus.Idle:
            # t-rex isn't running, nothing to abort
            logger.info("TRex isn't running. No need to stop anything.")
            if self.errcode is not None:  # some error occurred, notify client despite TRex already stopped
                return Fault(
                    self.errcode, self.verbose_status
                )  # raise at client relevant exception, depending on the reason the error occured
            return False
        else:
            # handle stopping t-rex's run
            self.session.join()
            logger.info("TRex session has been successfully aborted.")
            return True

    def start_trex(self, trex_launch_path, trex_cmd):
        self.set_status(TRexStatus.Starting)
        logger.info("TRex running state changed to 'Starting'.")
        self.set_verbose_status('TRex is starting (data is not available yet)')

        self.errcode = None
        self.session = AsynchronousTRexSession(self, trex_launch_path,
                                               trex_cmd)
        self.session.start()
        self.expect_trex.set()
Beispiel #6
0
class CTRex(object):
    def __init__(self):
        self.status = TRexStatus.Idle
        self.verbose_status = 'TRex is Idle'
        self.errcode = None
        self.session = None
        self.zmq_monitor = None
        self.__zmq_dump = {}
        self.zmq_dump_lock = threading.Lock()
        self.zmq_error = None
        self.seq = None
        self.expect_trex = threading.Event()

    def __del__(self):
        if self.zmq_monitor:
            self.zmq_monitor.join()
        if self.session:
            self.session.join()

    def get_status(self):
        return self.status

    def set_status(self, new_status):
        self.status = new_status

    def get_verbose_status(self):
        return self.verbose_status

    def set_verbose_status(self, new_status):
        self.verbose_status = new_status

    def gen_seq(self):
        self.seq = randrange(1, 1000)

    def get_seq(self):
        return self.seq

    def get_latest_dump(self):
        with self.zmq_dump_lock:
            return json.dumps(self.__zmq_dump)

    def update_zmq_dump_key(self, key, val):
        with self.zmq_dump_lock:
            self.__zmq_dump[key] = val

    def clear_zmq_dump(self):
        with self.zmq_dump_lock:
            self.__zmq_dump = {}

    def get_running_info(self):
        if self.status == TRexStatus.Running:
            return self.get_latest_dump()
        else:
            logger.info(
                "TRex isn't running. Running information isn't available.")
            if self.status == TRexStatus.Idle:
                if self.errcode is not None:  # some error occured
                    logger.info(
                        "TRex is in Idle state, with errors. returning fault")
                    return Fault(
                        self.errcode, self.verbose_status
                    )  # raise at client relevant exception, depending on the reason the error occured
                else:
                    logger.info(
                        "TRex is in Idle state, no errors. returning {}")
                    return u'{}'

            return Fault(
                -12, self.verbose_status
            )  # raise at client TRexWarning, indicating TRex is back to Idle state or still in Starting state

    def stop_trex(self):
        if self.status == TRexStatus.Idle:
            # TRex isn't running, nothing to abort
            logger.info("TRex isn't running. No need to stop anything.")
            if self.errcode is not None:  # some error occurred, notify client despite TRex already stopped
                return Fault(
                    self.errcode, self.verbose_status
                )  # raise at client relevant exception, depending on the reason the error occured
            return False
        else:
            # handle stopping TRex's run
            self.session.join()
            logger.info("TRex session has been successfully aborted.")
            return True

    def start_trex(self, trex_launch_path, trex_cmd, zmq_port):
        self.set_status(TRexStatus.Starting)
        logger.info("TRex running state changed to 'Starting'.")
        self.set_verbose_status('TRex is starting (data is not available yet)')

        if not self.zmq_monitor:
            logger.info('Starting ZMQ monitor on port %s' % zmq_port)
            self.zmq_monitor = ZmqMonitorSession(self, zmq_port)
            self.zmq_monitor.start()
        else:
            if not self.zmq_monitor.is_alive(
            ) or self.zmq_monitor.zmq_port != zmq_port:
                if not self.zmq_monitor.is_alive():
                    logger.info('Old ZMQ monitor is dead, starting new')
                else:
                    logger.info(
                        'ZMQ port is changed to %s, starting new monitor' %
                        zmq_port)
                self.zmq_monitor.join()
                self.zmq_monitor = ZmqMonitorSession(self, zmq_port)
                self.zmq_monitor.start()

        self.zmq_monitor.first_dump = True
        self.errcode = None
        self.session = AsynchronousTRexSession(self, trex_launch_path,
                                               trex_cmd)
        self.session.start()
        self.expect_trex.set()