Definition of a Trigger ART test to be configured and executed
Definition at line 18 of file Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Test.py.
◆ __init__()
def python.TrigValSteering.Test.Test.__init__ |
( |
|
self | ) |
|
◆ configuration_error()
def python.TrigValSteering.Test.Test.configuration_error |
( |
|
self, |
|
|
|
message |
|
) |
| |
◆ configure()
def python.TrigValSteering.Test.Test.configure |
( |
|
self | ) |
|
Definition at line 30 of file Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Test.py.
33 self.log.
info(
"Configuring test %s", self.name)
36 self.configure_timeout()
39 for step
in self.exec_steps:
41 for step
in self.check_steps:
42 self.log.
debug(
'Configuring check step %s', step.name)
45 duplicate_names = self.duplicate_step_names()
46 if len(duplicate_names) > 0:
47 self.configuration_error(
48 'Found test steps with duplicate names: '
49 '{}'.
format(duplicate_names)+
' Aborting because this'
50 ' configuration could lead to overwriting logs')
53 if self.dry_run
is None:
55 env = os.environ.get(
'TRIGVALSTEERING_DRY_RUN')
59 self.configured =
True
63 'Test configuration complete:\n-- %s',
64 '\n-- '.
join([
'{}: {}'.
format(k, v)
for k, v
in self.__dict__.
items()]))
◆ configure_name()
def python.TrigValSteering.Test.Test.configure_name |
( |
|
self | ) |
|
Definition at line 153 of file Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Test.py.
153 def configure_name(self):
154 filename = os.path.basename(sys.argv[0])
155 self.log.
debug(
'Parsing file name %s', filename)
158 if not filename.startswith(prefix)
or not filename.endswith(suffix):
159 self.configuration_error(
160 'Test file name {} does not match '.
format(filename) +
161 'the required pattern {}*{}'.
format(prefix, suffix))
162 for package_name, package_prefix
in package_prefix_dict.items():
163 if filename.startswith(prefix+package_prefix):
164 self.package_name = package_name
165 this_package_prefix = package_prefix
166 if self.package_name
is None:
167 self.configuration_error(
168 'Test file name {} could not be matched '.
format(filename) +
169 'to any of the required package prefixes: {}'.
format(
170 package_prefix_dict.values()))
171 if not self.art_type
or self.art_type
not in [
'build',
'grid']:
172 self.configuration_error(
173 'Incorrect test art_type = {:s}, only "build" and "grid" are supported'.
format(self.art_type))
174 if not filename.endswith(
'_' + self.art_type + suffix)
and \
175 self.package_name !=
"TrigInDetValidation":
176 self.configuration_error(
177 'Test file name does not match the art_type="{:s}". '.
format(self.art_type) +
178 'Expected name {:s}'.
format(prefix+this_package_prefix+
'*_'+self.art_type+suffix))
180 if len(filename) > max_len:
181 self.configuration_error(
182 'Test file name is too long. The limit is {} '.
format(max_len) +
183 'characters, but it has {}'.
format(len(filename)))
184 self.name = filename[len(prefix):-len(suffix)]
◆ configure_timeout()
def python.TrigValSteering.Test.Test.configure_timeout |
( |
|
self | ) |
|
Set default timeout values for steps which don't have it set
Definition at line 142 of file Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Test.py.
142 def configure_timeout(self):
143 '''Set default timeout values for steps which don't have it set'''
144 for exec_step
in self.exec_steps:
145 if exec_step.timeout
is None:
147 exec_step.timeout = 12*3600
if self.art_type ==
'grid' else 3600
148 for check_step
in self.check_steps:
149 if check_step.timeout
is None:
151 check_step.timeout = 5*60
◆ duplicate_step_names()
def python.TrigValSteering.Test.Test.duplicate_step_names |
( |
|
self | ) |
|
Definition at line 186 of file Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Test.py.
186 def duplicate_step_names(self):
188 for step
in self.exec_steps:
189 d.setdefault(step.name, 0)
191 for step
in self.check_steps:
192 d.setdefault(step.name, 0)
194 duplicates = [name
for name, count
in d.items()
if count > 1]
195 self.log.
debug(
'all steps: %s', d)
196 self.log.
debug(
'duplicates: %s', duplicates)
◆ get_step()
def python.TrigValSteering.Test.Test.get_step |
( |
|
self, |
|
|
|
step_name |
|
) |
| |
◆ get_step_by_type()
def python.TrigValSteering.Test.Test.get_step_by_type |
( |
|
self, |
|
|
|
step_type |
|
) |
| |
◆ pre_exec()
def python.TrigValSteering.Test.Test.pre_exec |
( |
|
self | ) |
|
Extra pre-exec function executed just before the steps
Definition at line 216 of file Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Test.py.
217 '''Extra pre-exec function executed just before the steps'''
220 if self.art_type ==
'grid':
221 cmd =
'which art.py >/dev/null 2>&1'
222 art_available = subprocess.call(cmd, shell=
True)
223 if art_available == 0:
224 cmd =
'art.py createpoolfile'
225 self.log.
debug(
'Executing pre-exec command %s', cmd)
226 subprocess.call(cmd, shell=
True)
◆ run()
def python.TrigValSteering.Test.Test.run |
( |
|
self | ) |
|
Definition at line 66 of file Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Test.py.
67 if not self.configured:
70 self.log.
info(
"Running test %s", self.name)
79 pre_exec_cmd = self.pre_exec()
80 if len(pre_exec_cmd) > 0:
81 commands[
'pre_exec'] = pre_exec_cmd
83 commands[
'exec_steps'] = []
84 commands[
'check_steps'] = []
87 self.run_steps(self.exec_steps, commands[
'exec_steps'])
91 if len(self.exec_steps) > 1:
92 for step
in self.exec_steps:
93 if step.result > exec_summary:
94 exec_summary = step.result
96 self.log.
info(
'At least one of the exec steps failed, using the largest code as ExecSummary')
98 self.log.
info(
'All exec steps succeeded')
100 elif len(self.exec_steps) == 1:
101 exec_summary = self.exec_steps[0].result
104 self.run_steps(self.check_steps, commands[
'check_steps'], exec_status=exec_summary)
107 with open(
'commands.json',
'w')
as outfile:
108 json.dump(commands, outfile, indent=4)
112 failed_required_steps = []
113 for step
in self.exec_steps + self.check_steps:
114 if step.required
and (step.result != 0):
115 self.log.
debug(
'Required step %s finished with result %s', step.name, step.result)
116 failed_required_steps.append(step.name)
117 if abs(step.result) > exit_code:
118 exit_code = abs(step.result)
119 exit_msg =
'Test {:s} finished with code {:d}'.
format(self.name, exit_code)
121 exit_msg +=
' because all required steps were successful'
123 exit_msg +=
' because the following required steps failed: {:s}'.
format(
str(failed_required_steps))
124 self.log.
info(exit_msg)
◆ run_steps()
def python.TrigValSteering.Test.Test.run_steps |
( |
|
self, |
|
|
|
steps, |
|
|
|
commands_list, |
|
|
|
exec_status = 0 |
|
) |
| |
Definition at line 127 of file Trigger/TrigValidation/TrigValTools/python/TrigValSteering/Test.py.
127 def run_steps(self, steps, commands_list, exec_status=0):
130 if (previous_code != 0
and step.depends_on_previous)
or \
131 (exec_status != 0
and step.depends_on_exec):
132 self.log.
error(
'Skipping step %s because previous step(s) failed', step.name)
134 code, cmd = step.result,
'# Skipped {} because of earlier failure'.
format(step.name)
135 if step.auto_report_result:
138 code, cmd = step.run(self.dry_run)
140 commands_list.append(cmd)
◆ art_type
python.TrigValSteering.Test.Test.art_type |
◆ check_steps
python.TrigValSteering.Test.Test.check_steps |
◆ configured
python.TrigValSteering.Test.Test.configured |
◆ dry_run
python.TrigValSteering.Test.Test.dry_run |
◆ exec_steps
python.TrigValSteering.Test.Test.exec_steps |
◆ log
python.TrigValSteering.Test.Test.log |
◆ name
python.TrigValSteering.Test.Test.name |
◆ package_name
python.TrigValSteering.Test.Test.package_name |
The documentation for this class was generated from the following file:
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)