ATLAS Offline Software
Loading...
Searching...
No Matches
python.TrigValSteering.CheckSteps.MessageCountStep Class Reference
Inheritance diagram for python.TrigValSteering.CheckSteps.MessageCountStep:
Collaboration diagram for python.TrigValSteering.CheckSteps.MessageCountStep:

Public Member Functions

 __init__ (self, name='MessageCount')
 configure (self, test)
 run (self, dry_run=False)

Public Attributes

str executable = 'messageCounter.py'
str log_regex = r'(athena\.(?!.*tail).*log$|athenaHLT:.*\.out$|^log\.(.*to.*|Derivation))'
list skip_logs = []
str start_pattern = r'(HltEventLoopMgr|AthenaHiveEventLoopMgr).*INFO Starting loop on events'
str end_pattern = r'(HltEventLoopMgr.*INFO All events processed|AthenaHiveEventLoopMgr.*INFO.*Loop Finished)'
 print_on_fail = None
dict thresholds = {}
bool auto_report_result = True
bool depends_on_exec = True
 name
int result = 1

Detailed Description

Count messages printed inside event loop

Definition at line 621 of file CheckSteps.py.

Constructor & Destructor Documentation

◆ __init__()

python.TrigValSteering.CheckSteps.MessageCountStep.__init__ ( self,
name = 'MessageCount' )

Definition at line 624 of file CheckSteps.py.

624 def __init__(self, name='MessageCount'):
625 super(MessageCountStep, self).__init__(name)
626 self.executable = 'messageCounter.py'
627 self.log_regex = r'(athena\.(?!.*tail).*log$|athenaHLT:.*\.out$|^log\.(.*to.*|Derivation))'
628 self.skip_logs = []
629 self.start_pattern = r'(HltEventLoopMgr|AthenaHiveEventLoopMgr).*INFO Starting loop on events'
630 self.end_pattern = r'(HltEventLoopMgr.*INFO All events processed|AthenaHiveEventLoopMgr.*INFO.*Loop Finished)'
631 self.print_on_fail = None
632 self.thresholds = {}
633 self.auto_report_result = True
634 self.depends_on_exec = True # skip if ExecSteps failed
635

Member Function Documentation

◆ configure()

python.TrigValSteering.CheckSteps.MessageCountStep.configure ( self,
test )

Definition at line 636 of file CheckSteps.py.

636 def configure(self, test):
637 self.args += ' -s "{:s}"'.format(self.start_pattern)
638 self.args += ' -e "{:s}"'.format(self.end_pattern)
639 if self.print_on_fail is None:
640 self.print_on_fail = self.required
641 if self.print_on_fail:
642 self.args += ' --saveAll'
643
644 max_events = test.exec_steps[0].max_events if isinstance(test.exec_steps[0], ExecStep) else 0
645 if 'WARNING' not in self.thresholds:
646 self.thresholds['WARNING'] = 0
647 if 'INFO' not in self.thresholds:
648 self.thresholds['INFO'] = max_events
649 if 'DEBUG' not in self.thresholds:
650 self.thresholds['DEBUG'] = 0
651 if 'VERBOSE' not in self.thresholds:
652 self.thresholds['VERBOSE'] = 0
653 if 'other' not in self.thresholds:
654 self.thresholds['other'] = max_events
655 super(MessageCountStep, self).configure(test)
656
bool configure(asg::AnaToolHandle< ITrigGlobalEfficiencyCorrectionTool > &tool, ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > &electronEffToolsHandles, ToolHandleArray< IAsgElectronEfficiencyCorrectionTool > &electronSFToolsHandles, ToolHandleArray< CP::IMuonTriggerScaleFactors > &muonToolsHandles, ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > &photonEffToolsHandles, ToolHandleArray< IAsgPhotonEfficiencyCorrectionTool > &photonSFToolsHandles, const std::string &triggers, const std::map< std::string, std::string > &legsPerTool, unsigned long nToys, bool debug)

◆ run()

python.TrigValSteering.CheckSteps.MessageCountStep.run ( self,
dry_run = False )

Definition at line 657 of file CheckSteps.py.

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]:
698 print(msg.strip()) # noqa: ATL901
699
700 if self.auto_report_result:
701 self.report_result()
702 return self.result, cmd
703
704
void print(char *figname, TCanvas *c1)
Definition run.py:1

Member Data Documentation

◆ auto_report_result

bool python.TrigValSteering.CheckSteps.MessageCountStep.auto_report_result = True

Definition at line 633 of file CheckSteps.py.

◆ depends_on_exec

bool python.TrigValSteering.CheckSteps.MessageCountStep.depends_on_exec = True

Definition at line 634 of file CheckSteps.py.

◆ end_pattern

str python.TrigValSteering.CheckSteps.MessageCountStep.end_pattern = r'(HltEventLoopMgr.*INFO All events processed|AthenaHiveEventLoopMgr.*INFO.*Loop Finished)'

Definition at line 630 of file CheckSteps.py.

◆ executable

str python.TrigValSteering.CheckSteps.MessageCountStep.executable = 'messageCounter.py'

Definition at line 626 of file CheckSteps.py.

◆ log_regex

python.TrigValSteering.CheckSteps.MessageCountStep.log_regex = r'(athena\.(?!.*tail).*log$|athenaHLT:.*\.out$|^log\.(.*to.*|Derivation))'

Definition at line 627 of file CheckSteps.py.

◆ name

python.TrigValSteering.CheckSteps.MessageCountStep.name

Definition at line 662 of file CheckSteps.py.

◆ print_on_fail

python.TrigValSteering.CheckSteps.MessageCountStep.print_on_fail = None

Definition at line 631 of file CheckSteps.py.

◆ result

python.TrigValSteering.CheckSteps.MessageCountStep.result = 1

Definition at line 663 of file CheckSteps.py.

◆ skip_logs

list python.TrigValSteering.CheckSteps.MessageCountStep.skip_logs = []

Definition at line 628 of file CheckSteps.py.

◆ start_pattern

str python.TrigValSteering.CheckSteps.MessageCountStep.start_pattern = r'(HltEventLoopMgr|AthenaHiveEventLoopMgr).*INFO Starting loop on events'

Definition at line 629 of file CheckSteps.py.

◆ thresholds

dict python.TrigValSteering.CheckSteps.MessageCountStep.thresholds = {}

Definition at line 632 of file CheckSteps.py.


The documentation for this class was generated from the following file: