657 def run(self, dry_run=False):
658 files = os.listdir('.')
659 r = re.compile(self.log_regex)
660 log_files = [f for f in filter(r.match, files) if f not in self.skip_logs]
661 if not log_files and not dry_run:
662 self.log.
error(
'%s found no log files matching the pattern %s', self.name, self.log_regex)
663 self.result = 1
664 if self.auto_report_result:
665 self.report_result()
666 return self.result, '# (internal) {} -> failed'.format(self.name)
667 self.args += ' ' + ' '.join(log_files)
668 auto_report = self.auto_report_result
669 self.auto_report_result = False
670 ret, cmd = super(MessageCountStep, self).
run(dry_run)
671 self.auto_report_result = auto_report
672 if ret != 0:
673 self.log.
error(
'%s failed', self.name)
674 self.result = 1
675 if self.auto_report_result:
676 self.report_result()
677 return self.result, cmd
678
679 for log_file in log_files:
680 json_file = 'MessageCount.{:s}.json'.format(log_file)
681 if self.print_on_fail:
682 all_json_file = 'Messages.{:s}.json'.format(log_file)
683 if not os.path.isfile(json_file):
684 self.log.warning('%s cannot open file %s', self.name, json_file)
685 with open(json_file) as f:
686 summary = json.load(f)
687 for level, threshold in self.thresholds.items():
688 if summary[level] > threshold:
689 self.result += 1
690 self.log.info(
691 '%s Number of %s messages %s in %s is higher than threshold %s',
692 self.name, level, summary[level], log_file, threshold)
693 if self.print_on_fail:
694 self.log.info('%s Printing all %s messages from %s', self.name, level, log_file)
695 with open(all_json_file) as af:
696 all_msg = json.load(af)
697 for msg in all_msg[level]:
699
700 if self.auto_report_result:
701 self.report_result()
702 return self.result, cmd
703
704
void print(char *figname, TCanvas *c1)