636 def run(self, dry_run=False):
637 files = os.listdir('.')
638 r = re.compile(self.log_regex)
639 log_files = [f for f in filter(r.match, files) if f not in self.skip_logs]
640 if not log_files and not dry_run:
641 self.log.
error(
'%s found no log files matching the pattern %s', self.name, self.log_regex)
642 self.result = 1
643 if self.auto_report_result:
644 self.report_result()
645 return self.result, '# (internal) {} -> failed'.format(self.name)
646 self.args += ' ' + ' '.join(log_files)
647 auto_report = self.auto_report_result
648 self.auto_report_result = False
649 ret, cmd = super(MessageCountStep, self).
run(dry_run)
650 self.auto_report_result = auto_report
651 if ret != 0:
652 self.log.
error(
'%s failed', self.name)
653 self.result = 1
654 if self.auto_report_result:
655 self.report_result()
656 return self.result, cmd
657
658 for log_file in log_files:
659 json_file = 'MessageCount.{:s}.json'.format(log_file)
660 if self.print_on_fail:
661 all_json_file = 'Messages.{:s}.json'.format(log_file)
662 if not os.path.isfile(json_file):
663 self.log.warning('%s cannot open file %s', self.name, json_file)
664 with open(json_file) as f:
665 summary = json.load(f)
666 for level, threshold in self.thresholds.items():
667 if summary[level] > threshold:
668 self.result += 1
669 self.log.info(
670 '%s Number of %s messages %s in %s is higher than threshold %s',
671 self.name, level, summary[level], log_file, threshold)
672 if self.print_on_fail:
673 self.log.info('%s Printing all %s messages from %s', self.name, level, log_file)
674 with open(all_json_file) as af:
675 all_msg = json.load(af)
676 for msg in all_msg[level]:
678
679 if self.auto_report_result:
680 self.report_result()
681 return self.result, cmd
682
683
void print(char *figname, TCanvas *c1)
int run(int argc, char *argv[])