def create_basic_fake_processor(): fake_processor = DotDict() fake_processor.c_signature_tool = c_signature_tool fake_processor.config = DotDict() # need help figuring out failures? switch to FakeLogger and read stdout fake_processor.config.logger = SilentFakeLogger() #fake_processor.config.logger = FakeLogger() return fake_processor
def create_basic_fake_processor(): """Creates fake processor configuration""" fake_processor = DotDict() fake_processor.c_signature_tool = c_signature_tool fake_processor.config = DotDict() fake_processor.config.logger = logging.getLogger(__name__) fake_processor.processor_notes = [] return fake_processor
def create_basic_fake_processor(): """Creates fake processor configuration""" fake_processor = DotDict() fake_processor.c_signature_tool = c_signature_tool fake_processor.config = DotDict() # need help figuring out failures? switch to FakeLogger and read stdout fake_processor.config.logger = mock.MagicMock() #fake_processor.config.logger = sutil.FakeLogger() fake_processor.processor_notes = [] return fake_processor
def process_crash(self, raw_crash, raw_dumps, processed_crash): """Take a raw_crash and its associated raw_dumps and return a processed_crash. """ # processor_meta_data will be used to ferry "inside information" to # transformation rules. Sometimes rules need a bit more extra # information about the transformation process itself. processor_meta_data = DotDict() processor_meta_data.processor_notes = [self.config.processor_name, self.__class__.__name__] processor_meta_data.quit_check = self.quit_check processor_meta_data.processor = self processor_meta_data.config = self.config if "processor_notes" in processed_crash: original_processor_notes = [x.strip() for x in processed_crash.processor_notes.split(";")] processor_meta_data.processor_notes.append( "earlier processing: %s" % processed_crash.get("started_datetime", "Unknown Date") ) else: original_processor_notes = [] processed_crash.success = False processed_crash.started_datetime = utc_now() # for backwards compatibility: processed_crash.startedDateTime = processed_crash.started_datetime processed_crash.signature = "EMPTY: crash failed to process" crash_id = raw_crash.get("uuid", "unknown") try: # quit_check calls ought to be scattered around the code to allow # the processor to be responsive to requests to shut down. self.quit_check() processor_meta_data.started_timestamp = self._log_job_start(crash_id) # apply transformations # step through each of the rule sets to apply the rules. for a_rule_set_name, a_rule_set in self.rule_system.iteritems(): # for each rule set, invoke the 'act' method - this method # will be the method specified in fourth element of the # rule set configuration list. a_rule_set.act(raw_crash, raw_dumps, processed_crash, processor_meta_data) self.quit_check() # the crash made it through the processor rules with no exceptions # raised, call it a success. processed_crash.success = True except Exception, x: self.config.logger.warning("Error while processing %s: %s", crash_id, str(x), exc_info=True) processor_meta_data.processor_notes.append("unrecoverable processor error: %s" % x)
def process_crash(self, raw_crash, raw_dumps, processed_crash): """Take a raw_crash and its associated raw_dumps and return a processed_crash. """ # processor_meta_data will be used to ferry "inside information" to # transformation rules. Sometimes rules need a bit more extra # information about the transformation process itself. processor_meta_data = DotDict() processor_meta_data.processor_notes = [ self.config.processor_name, self.__class__.__name__ ] processor_meta_data.quit_check = self.quit_check processor_meta_data.processor = self processor_meta_data.config = self.config if "processor_notes" in processed_crash: original_processor_notes = [ x.strip() for x in processed_crash.processor_notes.split(";") ] processor_meta_data.processor_notes.append( "earlier processing: %s" % processed_crash.get("started_datetime", 'Unknown Date')) else: original_processor_notes = [] processed_crash.success = False processed_crash.started_datetime = utc_now() # for backwards compatibility: processed_crash.startedDateTime = processed_crash.started_datetime processed_crash.signature = 'EMPTY: crash failed to process' crash_id = raw_crash['uuid'] try: # quit_check calls ought to be scattered around the code to allow # the processor to be responsive to requests to shut down. self.quit_check() start_time = self.config.logger.info( "starting transform for crash: %s", crash_id) processor_meta_data.started_timestamp = start_time # apply_all_rules for rule in self.rules: rule.act(raw_crash, raw_dumps, processed_crash, processor_meta_data) self.quit_check() # the crash made it through the processor rules with no exceptions # raised, call it a success. processed_crash.success = True except Exception as exception: self.config.logger.warning('Error while processing %s: %s', crash_id, str(exception), exc_info=True) processor_meta_data.processor_notes.append( 'unrecoverable processor error: %s' % exception) # the processor notes are in the form of a list. Join them all # together to make a single string processor_meta_data.processor_notes.extend(original_processor_notes) processed_crash.processor_notes = '; '.join( processor_meta_data.processor_notes) completed_datetime = utc_now() processed_crash.completed_datetime = completed_datetime # for backwards compatibility: processed_crash.completeddatetime = completed_datetime self.config.logger.info( "finishing %s transform for crash: %s", 'successful' if processed_crash.success else 'failed', crash_id) return processed_crash
def convert_raw_crash_to_processed_crash(self, raw_crash, raw_dumps): """Take a raw_crash and its associated raw_dumps and return a processed_crash. """ # processor_meta_data will be used to ferry "inside information" to # transformation rules. Sometimes rules need a bit more extra # information about the transformation process itself. processor_meta_data = DotDict() processor_meta_data.processor_notes = [ self.config.processor_name, self.__class__.__name__ ] processor_meta_data.quit_check = self.quit_check processor_meta_data.processor = self processor_meta_data.config = self.config # create the empty processed crash processed_crash = DotDict() processed_crash.success = False processed_crash.started_datetime = utc_now() # for backwards compatibility: processed_crash.startedDateTime = processed_crash.started_datetime processed_crash.signature = 'EMPTY: crash failed to process' crash_id = raw_crash.get('uuid', 'unknown') try: # quit_check calls ought to be scattered around the code to allow # the processor to be responsive to requests to shut down. self.quit_check() processor_meta_data.started_timestamp = self._log_job_start( crash_id ) # apply transformations # step through each of the rule sets to apply the rules. for a_rule_set_name, a_rule_set in self.rule_system.iteritems(): # for each rule set, invoke the 'act' method - this method # will be the method specified in fourth element of the # rule set configuration list. a_rule_set.act( raw_crash, raw_dumps, processed_crash, processor_meta_data ) self.quit_check() # the crash made it through the processor rules with no exceptions # raised, call it a success. processed_crash.success = True except Exception, x: self.config.logger.warning( 'Error while processing %s: %s', crash_id, str(x), exc_info=True ) processor_meta_data.processor_notes.append( 'unrecoverable processor error: %s' % x )
def process_crash(self, raw_crash, raw_dumps, processed_crash): """Take a raw_crash and its associated raw_dumps and return a processed_crash. """ # processor_meta_data will be used to ferry "inside information" to # transformation rules. Sometimes rules need a bit more extra # information about the transformation process itself. processor_meta_data = DotDict() processor_meta_data.processor_notes = [ self.config.processor_name, self.__class__.__name__ ] processor_meta_data.quit_check = self.quit_check processor_meta_data.processor = self processor_meta_data.config = self.config if "processor_notes" in processed_crash: original_processor_notes = [ x.strip() for x in processed_crash.processor_notes.split(";") ] processor_meta_data.processor_notes.append( "earlier processing: %s" % processed_crash.get( "started_datetime", 'Unknown Date' ) ) else: original_processor_notes = [] processed_crash.success = False processed_crash.started_datetime = utc_now() # for backwards compatibility: processed_crash.startedDateTime = processed_crash.started_datetime processed_crash.signature = 'EMPTY: crash failed to process' crash_id = raw_crash['uuid'] try: # quit_check calls ought to be scattered around the code to allow # the processor to be responsive to requests to shut down. self.quit_check() start_time = self.config.logger.info( "starting transform for crash: %s", crash_id ) processor_meta_data.started_timestamp = start_time # apply_all_rules for rule in self.rules: rule.act( raw_crash, raw_dumps, processed_crash, processor_meta_data ) self.quit_check() # the crash made it through the processor rules with no exceptions # raised, call it a success. processed_crash.success = True except Exception as exception: self.config.logger.warning( 'Error while processing %s: %s', crash_id, str(exception), exc_info=True ) processor_meta_data.processor_notes.append( 'unrecoverable processor error: %s' % exception ) # the processor notes are in the form of a list. Join them all # together to make a single string processor_meta_data.processor_notes.extend(original_processor_notes) processed_crash.processor_notes = '; '.join( processor_meta_data.processor_notes ) completed_datetime = utc_now() processed_crash.completed_datetime = completed_datetime # for backwards compatibility: processed_crash.completeddatetime = completed_datetime self.config.logger.info( "finishing %s transform for crash: %s", 'successful' if processed_crash.success else 'failed', crash_id ) return processed_crash
def process_crash(self, raw_crash, raw_dumps, processed_crash): """Take a raw_crash and its associated raw_dumps and return a processed_crash. """ # processor_meta_data will be used to ferry "inside information" to # transformation rules. Sometimes rules need a bit more extra # information about the transformation process itself. processor_meta_data = DotDict() processor_meta_data.processor_notes = [ self.config.processor_name, self.__class__.__name__ ] processor_meta_data.quit_check = self.quit_check processor_meta_data.processor = self processor_meta_data.config = self.config if "processor_notes" in processed_crash: original_processor_notes = [ x.strip() for x in processed_crash.processor_notes.split(";") ] processor_meta_data.processor_notes.append( "earlier processing: %s" % processed_crash.get("started_datetime", 'Unknown Date')) else: original_processor_notes = [] processed_crash.success = False processed_crash.started_datetime = utc_now() # for backwards compatibility: processed_crash.startedDateTime = processed_crash.started_datetime processed_crash.signature = 'EMPTY: crash failed to process' crash_id = raw_crash.get('uuid', 'unknown') try: # quit_check calls ought to be scattered around the code to allow # the processor to be responsive to requests to shut down. self.quit_check() processor_meta_data.started_timestamp = self._log_job_start( crash_id) # apply transformations # step through each of the rule sets to apply the rules. for a_rule_set_name, a_rule_set in self.rule_system.iteritems(): # for each rule set, invoke the 'act' method - this method # will be the method specified in fourth element of the # rule set configuration list. a_rule_set.act( raw_crash, raw_dumps, processed_crash, processor_meta_data, ) self.quit_check() # the crash made it through the processor rules with no exceptions # raised, call it a success. processed_crash.success = True except Exception as exception: self.config.logger.warning('Error while processing %s: %s', crash_id, str(exception), exc_info=True) processor_meta_data.processor_notes.append( 'unrecoverable processor error: %s' % exception) # the processor notes are in the form of a list. Join them all # together to make a single string processor_meta_data.processor_notes.extend(original_processor_notes) processed_crash.processor_notes = '; '.join( processor_meta_data.processor_notes) completed_datetime = utc_now() processed_crash.completed_datetime = completed_datetime # for backwards compatibility: processed_crash.completeddatetime = completed_datetime self._log_job_end(processed_crash.success, crash_id) return processed_crash