class BaseMonitor(KittyActorInterface): ''' Base (abstract) monitor class ''' def __init__(self, name, logger=None, victim_alive_check_delay=0.3): ''' :param name: name of the actor :param logger: logger for the actor (default: None) :param victim_alive_check_delay: delay between checks if alive (default: 0.3) ''' super(BaseMonitor, self).__init__(name, logger, victim_alive_check_delay) self.monitor_thread = None def setup(self): ''' Make sure the monitor is ready for fuzzing ''' super(BaseMonitor, self).setup() self.monitor_thread = LoopFuncThread(self._monitor_func) self.monitor_thread.start() def teardown(self): ''' cleanup the monitor data and ''' self.monitor_thread.stop() self.monitor_thread = None super(BaseMonitor, self).teardown() def pre_test(self, test_number): ''' Called when a test is started :param test_number: current test number ''' if not self._is_alive(): self.setup() super(BaseMonitor, self).pre_test(test_number) def _is_alive(self): ''' Check if the monitor is alive ''' if self.monitor_thread is not None: if self.monitor_thread.is_alive(): return True return False def _monitor_func(self): ''' Called in a loop in a separate thread (self.monitor_thread). ''' self.not_implemented('_monitor_func')
class BaseMonitor(KittyActorInterface): ''' Base (abstract) monitor class ''' def __init__(self, name, logger=None, victim_alive_check_delay=0.3): ''' :param name: name of the actor :param logger: logger for the actor (default: None) :param victim_alive_check_delay: delay between checks if alive (default: 0.3) ''' super(BaseMonitor, self).__init__(name, logger, victim_alive_check_delay) self.monitor_thread = None def setup(self): ''' Make sure the monitor is ready for fuzzing ''' super(BaseMonitor, self).setup() self.monitor_thread = LoopFuncThread(self._monitor_func) self.monitor_thread.start() def teardown(self): ''' cleanup the monitor data and ''' self.monitor_thread.stop() self.monitor_thread = None super(BaseMonitor, self).teardown() def pre_test(self, test_number): ''' Called when a test is started :param test_number: current test number ''' if not self._is_alive(): self.setup() super(BaseMonitor, self).pre_test(test_number) def _is_alive(self): ''' Check if the monitor is alive ''' if self.monitor_thread is not None: if self.monitor_thread.is_alive(): return True return False def _monitor_func(self): ''' Called in a loop in a separate thread (self.monitor_thread). ''' self.not_implemented('_monitor_func')
class BaseMonitor(KittyObject): ''' Base (abstract) monitor class ''' def __init__(self, name, logger=None): ''' :param name: name of the monitor :param logger: logger for the monitor (default: None) ''' super(BaseMonitor, self).__init__(name, logger) self.report = Report(name) self.monitor_thread = None self.test_number = None def setup(self): ''' Make sure the monitor is ready for fuzzing ''' self._cleanup() self.monitor_thread = LoopFuncThread(self._monitor_func) self.monitor_thread.start() def teardown(self): ''' cleanup the monitor data and ''' self.monitor_thread.stop() self.monitor_thread = None def pre_test(self, test_number): ''' Called when a test is started :param test_number: current test number ''' if not self._is_alive(): self.setup() self._cleanup() self.test_number = test_number self.report.add('state', 'STARTED') self.report.add('start_time', time.time()) self.report.add('name', self.name) def post_test(self): ''' Called when a test is completed, prepare the report etc. ''' self.report.add('state', 'STOPPED') self.report.add('stop_time', time.time()) def _is_alive(self): ''' Check if victim/monitor alive ''' if self.monitor_thread is not None: if self.monitor_thread.is_alive(): return True return False def _cleanup(self): ''' perform a monitor cleanup ''' self.report = Report(self.name) def get_report(self): ''' :return: the monitor's report ''' return self.report def _monitor_func(self): ''' Called in a loop in a separate thread (self.monitor_thread). ''' self.not_implemented('_monitor_func')
class BaseMonitor(KittyObject): ''' Base (abstract) monitor class ''' def __init__(self, name, logger=None): ''' :param name: name of the monitor :param logger: logger for the monitor (default: None) ''' super(BaseMonitor, self).__init__(name, logger) self.report = Report(name) self.monitor_thread = None self.test_number = None def setup(self): ''' Make sure the monitor is ready for fuzzing ''' self._cleanup() self.monitor_thread = LoopFuncThread(self._monitor_func) self.monitor_thread.start() def teardown(self): ''' cleanup the monitor data and ''' self.monitor_thread.stop() self.monitor_thread = None def pre_test(self, test_number): ''' Called when a test is started :param test_number: current test number ''' if not self._is_alive(): self.setup() self._cleanup() self.test_number = test_number self.report.add('state', 'STARTED') self.report.add('start_time', time.time()) self.report.add('name', self.name) def post_test(self): ''' Called when a test is completed, prepare the report etc. ''' self.report.add('state', 'STOPPED') self.report.add('stop_time', time.time()) def _is_alive(self): ''' Check if victim/monitor alive ''' if self.monitor_thread is not None: if self.monitor_thread.is_alive(): return True return False def _cleanup(self): ''' perform a monitor cleanup ''' self.report = Report(self.name) def get_report(self): ''' :return: the monitor's report ''' return self.report def _monitor_func(self): ''' Called in a loop in a separate thread (self.monitor_thread). ''' self.not_implemented('_monitor_func')