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()
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()
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()
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()
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()