ATLAS Offline Software
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
python.trfExe.DQMPostProcessExecutor Class Reference

Specialist execution class for DQM post-processing of histograms. More...

Inheritance diagram for python.trfExe.DQMPostProcessExecutor:
Collaboration diagram for python.trfExe.DQMPostProcessExecutor:

Public Member Functions

def __init__ (self, name='DQMPostProcess', trf=None, conf=None, inData=set(['HIST']), outData=set(['HIST']), exe='DQM_Tier0Wrapper_tf.py', exeArgs=[], memMonitor=True)
 
def preExecute (self, input=set(), output=set())
 
def validate (self)
 
def exe (self)
 
def exe (self, value)
 
def exeArgs (self)
 
def exeArgs (self, value)
 
def execute (self)
 
def postExecute (self)
 
def inData (self)
 
def inData (self, value)
 
def outData (self)
 
def outData (self, value)
 
def myMerger (self)
 Now define properties for these data members. More...
 
def name (self)
 
def name (self, value)
 
def substep (self)
 
def trf (self)
 
def trf (self, value)
 
def inDataUpdate (self, value)
 
def outDataUpdate (self, value)
 
def input (self)
 
def output (self)
 
def extraMetadata (self)
 
def hasExecuted (self)
 
def rc (self)
 
def errMsg (self)
 
def validation (self)
 
def validation (self, value)
 
def hasValidated (self)
 
def isValidated (self)
 
def first (self)
 
def preExeStartTimes (self)
 
def exeStartTimes (self)
 
def exeStopTimes (self)
 
def valStartTimes (self)
 
def valStopTimes (self)
 
def preExeCpuTime (self)
 
def preExeWallTime (self)
 
def cpuTime (self)
 
def usrTime (self)
 
def sysTime (self)
 
def wallTime (self)
 
def memStats (self)
 
def memAnalysis (self)
 
def postExeCpuTime (self)
 
def postExeWallTime (self)
 
def validationCpuTime (self)
 
def validationWallTime (self)
 
def cpuTimeTotal (self)
 
def wallTimeTotal (self)
 
def eventCount (self)
 
def reSimEvent (self)
 
def athenaMP (self)
 
def dbMonitor (self)
 
def setPreExeStart (self)
 
def setValStart (self)
 
def doAll (self, input=set(), output=set())
 Convenience function. More...
 

Public Attributes

 conf
 Executor configuration: More...
 
 inData
 
 outData
 

Private Member Functions

def _buildStandardCommand (self)
 

Private Attributes

 _histMergeList
 
 _isValidated
 
 _valStop
 
 _exe
 
 _exeArgs
 
 _echoOutput
 
 _cmd
 
 _memMonitor
 
 _input
 
 _output
 
 _logFileName
 
 _echologger
 
 _exeLogFile
 
 _echostream
 
 _hasExecuted
 
 _exeStart
 
 _memSummaryFile
 
 _memFullFile
 
 _rc
 Check rc. More...
 
 _exeStop
 
 _memStats
 
 _valStart
 
 _hasValidated
 
 _errMsg
 
 _eventCount
 Check event counts (always do this by default) Do this here so that all script executors have this by default (covers most use cases with events) More...
 
 _name
 
 _inData
 
 _outData
 
 _extraMetadata
 
 _preExeStart
 
 _memLeakResult
 
 _athenaMP
 
 _athenaMT
 
 _athenaConcurrentEvents
 
 _dbMonitor
 
 _resimevents
 
 _alreadyInContainer
 
 _containerSetup
 
 _myMerger
 
 _trf
 
 _validation
 

Detailed Description

Specialist execution class for DQM post-processing of histograms.

Definition at line 2029 of file trfExe.py.

Constructor & Destructor Documentation

◆ __init__()

def python.trfExe.DQMPostProcessExecutor.__init__ (   self,
  name = 'DQMPostProcess',
  trf = None,
  conf = None,
  inData = set(['HIST']),
  outData = set(['HIST']),
  exe = 'DQM_Tier0Wrapper_tf.py',
  exeArgs = [],
  memMonitor = True 
)

Reimplemented from python.trfExe.scriptExecutor.

Definition at line 2030 of file trfExe.py.

2030  def __init__(self, name='DQMPostProcess', trf=None, conf=None, inData=set(['HIST']), outData=set(['HIST']),
2031  exe='DQM_Tier0Wrapper_tf.py', exeArgs = [], memMonitor = True):
2032 
2033  self._histMergeList = 'HISTMergeList.txt'
2034 
2035  super(DQMPostProcessExecutor, self).__init__(name=name, trf=trf, conf=conf, inData=inData, outData=outData, exe=exe,
2036  exeArgs=exeArgs, memMonitor=memMonitor)
2037 
2038 

Member Function Documentation

◆ _buildStandardCommand()

def python.trfExe.scriptExecutor._buildStandardCommand (   self)
privateinherited

Definition at line 706 of file trfExe.py.

706  def _buildStandardCommand(self):
707  if self._exe:
708  self._cmd = [self.exe, ]
709  else:
710  raise trfExceptions.TransformExecutionException(trfExit.nameToCode('TRF_EXEC_SETUP_FAIL'),
711  'No executor set in {0}'.format(self.__class__.__name__))
712  for arg in self.exeArgs:
713  if arg in self.conf.argdict:
714  # If we have a list then add each element to our list, else just str() the argument value
715  # Note if there are arguments which need more complex transformations then
716  # consider introducing a special toExeArg() method.
717  if isinstance(self.conf.argdict[arg].value, list):
718  self._cmd.extend([ str(v) for v in self.conf.argdict[arg].value])
719  else:
720  self._cmd.append(str(self.conf.argdict[arg].value))
721 
722 

◆ athenaMP()

def python.trfExe.transformExecutor.athenaMP (   self)
inherited

Definition at line 452 of file trfExe.py.

452  def athenaMP(self):
453  return self._athenaMP
454 

◆ cpuTime()

def python.trfExe.transformExecutor.cpuTime (   self)
inherited

Definition at line 366 of file trfExe.py.

366  def cpuTime(self):
367  if self._exeStart and self._exeStop:
368  return calcCpuTime(self._exeStart, self._exeStop)
369  else:
370  return None
371 

◆ cpuTimeTotal()

def python.trfExe.transformExecutor.cpuTimeTotal (   self)
inherited

Definition at line 430 of file trfExe.py.

430  def cpuTimeTotal(self):
431  if self._preExeStart and self._valStop:
432  return calcCpuTime(self._preExeStart, self._valStop)
433  else:
434  return None
435 

◆ dbMonitor()

def python.trfExe.transformExecutor.dbMonitor (   self)
inherited

Definition at line 456 of file trfExe.py.

456  def dbMonitor(self):
457  return self._dbMonitor
458 
459 

◆ doAll()

def python.trfExe.transformExecutor.doAll (   self,
  input = set(),
  output = set() 
)
inherited

Convenience function.

Definition at line 499 of file trfExe.py.

499  def doAll(self, input=set(), output=set()):
500  self.preExecute(input, output)
501  self.execute()
502  self.postExecute()
503  self.validate()
504 

◆ errMsg()

def python.trfExe.transformExecutor.errMsg (   self)
inherited

Definition at line 304 of file trfExe.py.

304  def errMsg(self):
305  return self._errMsg
306 

◆ eventCount()

def python.trfExe.transformExecutor.eventCount (   self)
inherited

Definition at line 444 of file trfExe.py.

444  def eventCount(self):
445  return self._eventCount
446 

◆ exe() [1/2]

def python.trfExe.scriptExecutor.exe (   self)
inherited

Definition at line 641 of file trfExe.py.

641  def exe(self):
642  return self._exe
643 

◆ exe() [2/2]

def python.trfExe.scriptExecutor.exe (   self,
  value 
)
inherited

Definition at line 645 of file trfExe.py.

645  def exe(self, value):
646  self._exe = value
647  self._extraMetadata['script'] = value
648 

◆ exeArgs() [1/2]

def python.trfExe.scriptExecutor.exeArgs (   self)
inherited

Definition at line 650 of file trfExe.py.

650  def exeArgs(self):
651  return self._exeArgs
652 

◆ exeArgs() [2/2]

def python.trfExe.scriptExecutor.exeArgs (   self,
  value 
)
inherited

Definition at line 654 of file trfExe.py.

654  def exeArgs(self, value):
655  self._exeArgs = value
656 # self._extraMetadata['scriptArgs'] = value
657 

◆ execute()

def python.trfExe.scriptExecutor.execute (   self)
inherited

Reimplemented from python.trfExe.transformExecutor.

Reimplemented in python.trfExe.bsMergeExecutor, and python.trfExe.POOLMergeExecutor.

Definition at line 723 of file trfExe.py.

723  def execute(self):
724  self._hasExecuted = True
725  msg.info('Starting execution of {0} ({1})'.format(self._name, self._cmd))
726 
727  self._exeStart = os.times()
728  msg.debug('exeStart time is {0}'.format(self._exeStart))
729  if ('execOnly' in self.conf.argdict and self.conf.argdict['execOnly'] is True):
730  msg.info('execOnly flag is set - execution will now switch, replacing the transform')
731  os.execvp(self._cmd[0], self._cmd)
732 
733  encargs = {'encoding' : 'utf8'}
734  try:
735  # if we are already inside a container, then
736  # must map /srv of the nested container to /srv of the parent container:
737  # https://twiki.atlas-canada.ca/bin/view/AtlasCanada/Containers#Mount_point_summary
738  if self._alreadyInContainer and self._containerSetup is not None:
739  msg.info("chdir /srv to launch a nested container for the substep")
740  os.chdir("/srv")
741  p = subprocess.Popen(self._cmd, shell = False, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, bufsize = 1, **encargs)
742  # go back to the original working directory immediately after to store prmon in it
743  if self._alreadyInContainer and self._containerSetup is not None:
744  msg.info("chdir {} after launching the nested container".format(self._workdir))
745  os.chdir(self._workdir)
746 
747  if self._memMonitor:
748  try:
749  self._memSummaryFile = 'prmon.summary.' + self._name + '.json'
750  self._memFullFile = 'prmon.full.' + self._name
751  memMonitorCommand = ['prmon', '--pid', str(p.pid), '--filename', 'prmon.full.' + self._name,
752  '--json-summary', self._memSummaryFile, '--log-filename', 'prmon.' + self._name + '.log',
753  '--interval', '30']
754  mem_proc = subprocess.Popen(memMonitorCommand, shell = False, close_fds=True, **encargs)
755  # TODO - link mem.full.current to mem.full.SUBSTEP
756  except Exception as e:
757  msg.warning('Failed to spawn memory monitor for {0}: {1}'.format(self._name, e))
758  self._memMonitor = False
759 
760  while p.poll() is None:
761  line = p.stdout.readline()
762  if line:
763  self._echologger.info(line.rstrip())
764  # Hoover up remaining buffered output lines
765  for line in p.stdout:
766  self._echologger.info(line.rstrip())
767 
768  self._rc = p.returncode
769  msg.info('%s executor returns %d', self._name, self._rc)
770  self._exeStop = os.times()
771  msg.debug('exeStop time is {0}'.format(self._exeStop))
772  except OSError as e:
773  errMsg = 'Execution of {0} failed and raised OSError: {1}'.format(self._cmd[0], e)
774  msg.error(errMsg)
775  raise trfExceptions.TransformExecutionException(trfExit.nameToCode('TRF_EXEC'), errMsg)
776  finally:
777  if self._memMonitor:
778  try:
779  mem_proc.send_signal(signal.SIGUSR1)
780  countWait = 0
781  while (not mem_proc.poll()) and countWait < 10:
782  time.sleep(0.1)
783  countWait += 1
784  except OSError:
785  pass
786 
787 

◆ exeStartTimes()

def python.trfExe.transformExecutor.exeStartTimes (   self)
inherited

Definition at line 336 of file trfExe.py.

336  def exeStartTimes(self):
337  return self._exeStart
338 

◆ exeStopTimes()

def python.trfExe.transformExecutor.exeStopTimes (   self)
inherited

Definition at line 340 of file trfExe.py.

340  def exeStopTimes(self):
341  return self._exeStop
342 

◆ extraMetadata()

def python.trfExe.transformExecutor.extraMetadata (   self)
inherited

Definition at line 292 of file trfExe.py.

292  def extraMetadata(self):
293  return self._extraMetadata
294 

◆ first()

def python.trfExe.transformExecutor.first (   self)
inherited
Note
At the moment only athenaExecutor sets this property, but that might be changed...

Definition at line 325 of file trfExe.py.

325  def first(self):
326  if hasattr(self, '_first'):
327  return self._first
328  else:
329  return None
330 

◆ hasExecuted()

def python.trfExe.transformExecutor.hasExecuted (   self)
inherited

Definition at line 296 of file trfExe.py.

296  def hasExecuted(self):
297  return self._hasExecuted
298 

◆ hasValidated()

def python.trfExe.transformExecutor.hasValidated (   self)
inherited

Definition at line 316 of file trfExe.py.

316  def hasValidated(self):
317  return self._hasValidated
318 

◆ inData() [1/2]

def python.trfExe.transformExecutor.inData (   self)
inherited

Definition at line 235 of file trfExe.py.

235  def inData(self):
236 
237  if '_inData' in dir(self):
238  return self._inData
239  return None
240 

◆ inData() [2/2]

def python.trfExe.transformExecutor.inData (   self,
  value 
)
inherited

Definition at line 242 of file trfExe.py.

242  def inData(self, value):
243  self._inData = set(value)
244 

◆ inDataUpdate()

def python.trfExe.transformExecutor.inDataUpdate (   self,
  value 
)
inherited

Definition at line 245 of file trfExe.py.

245  def inDataUpdate(self, value):
246 
247  if '_inData' in dir(self):
248  self._inData.update(value)
249  else:
250 
251  self.inData = value
252 
253 

◆ input()

def python.trfExe.transformExecutor.input (   self)
inherited
Note
This returns the actual input data with which this executor ran (c.f. inData which returns all the possible data types this executor could run with)

Definition at line 276 of file trfExe.py.

276  def input(self):
277 
278  if '_input' in dir(self):
279  return self._input
280  return None
281 

◆ isValidated()

def python.trfExe.transformExecutor.isValidated (   self)
inherited

Definition at line 320 of file trfExe.py.

320  def isValidated(self):
321  return self._isValidated
322 

◆ memAnalysis()

def python.trfExe.transformExecutor.memAnalysis (   self)
inherited

Definition at line 398 of file trfExe.py.

398  def memAnalysis(self):
399  return self._memLeakResult
400 

◆ memStats()

def python.trfExe.transformExecutor.memStats (   self)
inherited

Definition at line 394 of file trfExe.py.

394  def memStats(self):
395  return self._memStats
396 

◆ myMerger()

def python.trfExe.transformExecutor.myMerger (   self)
inherited

Now define properties for these data members.

Definition at line 207 of file trfExe.py.

207  def myMerger(self):
208  return self._myMerger
209 

◆ name() [1/2]

def python.trfExe.transformExecutor.name (   self)
inherited

Definition at line 211 of file trfExe.py.

211  def name(self):
212  return self._name
213 

◆ name() [2/2]

def python.trfExe.transformExecutor.name (   self,
  value 
)
inherited

Definition at line 215 of file trfExe.py.

215  def name(self, value):
216  self._name = value
217 

◆ outData() [1/2]

def python.trfExe.transformExecutor.outData (   self)
inherited

Definition at line 255 of file trfExe.py.

255  def outData(self):
256 
257  if '_outData' in dir(self):
258  return self._outData
259  return None
260 

◆ outData() [2/2]

def python.trfExe.transformExecutor.outData (   self,
  value 
)
inherited

Definition at line 262 of file trfExe.py.

262  def outData(self, value):
263  self._outData = set(value)
264 

◆ outDataUpdate()

def python.trfExe.transformExecutor.outDataUpdate (   self,
  value 
)
inherited

Definition at line 265 of file trfExe.py.

265  def outDataUpdate(self, value):
266 
267  if '_outData' in dir(self):
268  self._outData.update(value)
269  else:
270 
271  self.outData = value
272 

◆ output()

def python.trfExe.transformExecutor.output (   self)
inherited
Note
This returns the actual output data with which this executor ran (c.f. outData which returns all the possible data types this executor could run with)

Definition at line 285 of file trfExe.py.

285  def output(self):
286 
287  if '_output' in dir(self):
288  return self._output
289  return None
290 

◆ postExeCpuTime()

def python.trfExe.transformExecutor.postExeCpuTime (   self)
inherited

Definition at line 402 of file trfExe.py.

402  def postExeCpuTime(self):
403  if self._exeStop and self._valStart:
404  return calcCpuTime(self._exeStop, self._valStart)
405  else:
406  return None
407 

◆ postExecute()

def python.trfExe.scriptExecutor.postExecute (   self)
inherited

Reimplemented from python.trfExe.transformExecutor.

Reimplemented in python.trfExe.bsMergeExecutor, and python.trfExe.athenaExecutor.

Definition at line 788 of file trfExe.py.

788  def postExecute(self):
789  if hasattr(self._exeLogFile, 'close'):
790  self._exeLogFile.close()
791  if self._memMonitor:
792  try:
793  memFile = open(self._memSummaryFile)
794  self._memStats = json.load(memFile)
795  except Exception as e:
796  msg.warning('Failed to load JSON memory summmary file {0}: {1}'.format(self._memSummaryFile, e))
797  self._memMonitor = False
798  self._memStats = {}
799 
800 

◆ postExeWallTime()

def python.trfExe.transformExecutor.postExeWallTime (   self)
inherited

Definition at line 409 of file trfExe.py.

409  def postExeWallTime(self):
410  if self._exeStop and self._valStart:
411  return calcWallTime(self._exeStop, self._valStart)
412  else:
413  return None
414 

◆ preExeCpuTime()

def python.trfExe.transformExecutor.preExeCpuTime (   self)
inherited

Definition at line 352 of file trfExe.py.

352  def preExeCpuTime(self):
353  if self._preExeStart and self._exeStart:
354  return calcCpuTime(self._preExeStart, self._exeStart)
355  else:
356  return None
357 

◆ preExecute()

def python.trfExe.DQMPostProcessExecutor.preExecute (   self,
  input = set(),
  output = set() 
)

Reimplemented from python.trfExe.scriptExecutor.

Definition at line 2039 of file trfExe.py.

2039  def preExecute(self, input = set(), output = set()):
2040  self.setPreExeStart()
2041  msg.debug('Preparing for execution of {0} with inputs {1} and outputs {2}'.format(self.name, input, output))
2042 
2043  super(DQMPostProcessExecutor, self).preExecute(input=input, output=output)
2044 
2045  #build input file list (typically only one):
2046  dsName=self.conf.argdict["inputHISTFile"].dataset
2047  inputList=[]
2048  for dataType in input:
2049  for fname in self.conf.dataDictionary[dataType].value:
2050  #if no dataset name is give, guess it from file name
2051  if not dsName: dsName=".".join(fname.split('.')[0:4])
2052  inputList.append("#".join([dsName,fname]))
2053 
2054 
2055  if len(output) != 1:
2056  raise trfExceptions.TransformExecutionException(trfExit.nameToCode('TRF_EXEC_SETUP_FAIL'),
2057  'One (and only one) output file must be given to {0} (got {1})'.format(self.name, len(output)))
2058  outDataType = list(output)[0]
2059  #build argument json:
2060  #T0 uses keys: 'allowCOOLUpload', 'doWebDisplay', 'incrementalMode', 'inputHistFiles', 'mergeParams', 'outputHistFile', 'postProcessing', 'reverseFileOrder', 'servers'
2061  #more keys: runNumber, streamName,projectTag,filepaths,productionMode,skipMerge
2062  wrapperParams={"inputHistFiles" : inputList,
2063  "outputHistFile" : dsName+"#"+self.conf.dataDictionary[outDataType].value[0],
2064  "incrementalMode": "True" if self.conf._argdict.get("is_incremental_merge",False) else "False",
2065  "postProcessing" : "True" if self.conf._argdict.get("run_post_processing",False) else "False",
2066  "doWebDisplay" : "True" if self.conf._argdict.get("doWebDisplay",False) else "False",
2067  "allowCOOLUpload": "True" if self.conf._argdict.get("allowCOOLUpload",False) else "False",
2068  "mergeParams" : "",
2069 
2070  }
2071  if "servers" in self.conf._argdict:
2072  wrapperParams["server"]=self.conf._argdict["servers"]
2073 
2074  for k in ("excludeHist","excludeDir"):
2075  if k in self.conf._argdict:
2076  wrapperParams["mergeParams"]+=(" --{0}={1}".format(k,self.conf._argdict[k]))
2077 
2078 
2079  with open("args.json", "w") as f:
2080  json.dump(wrapperParams, f)
2081 
2082  self._cmd.append("--argJSON=args.json")
2083 
2084 
2085 

◆ preExeStartTimes()

def python.trfExe.transformExecutor.preExeStartTimes (   self)
inherited

Definition at line 332 of file trfExe.py.

332  def preExeStartTimes(self):
333  return self._preExeStart
334 

◆ preExeWallTime()

def python.trfExe.transformExecutor.preExeWallTime (   self)
inherited

Definition at line 359 of file trfExe.py.

359  def preExeWallTime(self):
360  if self._preExeStart and self._exeStart:
361  return calcWallTime(self._preExeStart, self._exeStart)
362  else:
363  return None
364 

◆ rc()

def python.trfExe.transformExecutor.rc (   self)
inherited

Definition at line 300 of file trfExe.py.

300  def rc(self):
301  return self._rc
302 

◆ reSimEvent()

def python.trfExe.transformExecutor.reSimEvent (   self)
inherited

Definition at line 448 of file trfExe.py.

448  def reSimEvent(self):
449  return self._resimevents
450 

◆ setPreExeStart()

def python.trfExe.transformExecutor.setPreExeStart (   self)
inherited

Definition at line 461 of file trfExe.py.

461  def setPreExeStart(self):
462  if self._preExeStart is None:
463  self._preExeStart = os.times()
464  msg.debug('preExeStart time is {0}'.format(self._preExeStart))
465 

◆ setValStart()

def python.trfExe.transformExecutor.setValStart (   self)
inherited

Definition at line 466 of file trfExe.py.

466  def setValStart(self):
467  if self._valStart is None:
468  self._valStart = os.times()
469  msg.debug('valStart time is {0}'.format(self._valStart))
470 

◆ substep()

def python.trfExe.transformExecutor.substep (   self)
inherited

Reimplemented in python.trfExe.athenaExecutor.

Definition at line 219 of file trfExe.py.

219  def substep(self):
220  if '_substep' in dir(self):
221  return self._substep
222  return None
223 

◆ sysTime()

def python.trfExe.transformExecutor.sysTime (   self)
inherited

Definition at line 380 of file trfExe.py.

380  def sysTime(self):
381  if self._exeStart and self._exeStop:
382  return self._exeStop[3] - self._exeStart[3]
383  else:
384  return None
385 

◆ trf() [1/2]

def python.trfExe.transformExecutor.trf (   self)
inherited

Definition at line 225 of file trfExe.py.

225  def trf(self):
226  if '_trf' in dir(self):
227  return self._trf
228  return None
229 

◆ trf() [2/2]

def python.trfExe.transformExecutor.trf (   self,
  value 
)
inherited

Definition at line 231 of file trfExe.py.

231  def trf(self, value):
232  self._trf = value
233 

◆ usrTime()

def python.trfExe.transformExecutor.usrTime (   self)
inherited

Definition at line 373 of file trfExe.py.

373  def usrTime(self):
374  if self._exeStart and self._exeStop:
375  return self._exeStop[2] - self._exeStart[2]
376  else:
377  return None
378 

◆ validate()

def python.trfExe.DQMPostProcessExecutor.validate (   self)

Reimplemented from python.trfExe.scriptExecutor.

Definition at line 2086 of file trfExe.py.

2086  def validate(self):
2087  self.setValStart()
2088  super(DQMPostProcessExecutor, self).validate()
2089 
2090  exitErrorMessage = ''
2091  # Base class validation successful, Now scan the logfile for missed errors.
2092  try:
2093  logScan = trfValidation.scriptLogFileReport(self._logFileName)
2094  worstError = logScan.worstError()
2095 
2096  # In general we add the error message to the exit message, but if it's too long then don't do
2097  # that and just say look in the jobReport
2098  if worstError['firstError']:
2099  if len(worstError['firstError']['message']) > logScan._msgLimit:
2100  exitErrorMessage = "Long {0} message at line {1}" \
2101  " (see jobReport for further details)".format(worstError['level'],
2102  worstError['firstError']['firstLine'])
2103  else:
2104  exitErrorMessage = "Logfile error in {0}: \"{1}\"".format(self._logFileName,
2105  worstError['firstError']['message'])
2106  except OSError as e:
2107  exitCode = trfExit.nameToCode('TRF_EXEC_LOGERROR')
2108  raise trfExceptions.TransformValidationException(exitCode,
2109  'Exception raised while attempting to scan logfile {0}: {1}'.format(self._logFileName, e))
2110 
2111  if worstError['nLevel'] == stdLogLevels['ERROR'] and (
2112  'ignoreErrors' in self.conf.argdict and self.conf.argdict['ignoreErrors'].value is True):
2113  msg.warning('Found ERRORs in the logfile, but ignoring this as ignoreErrors=True (see jobReport for details)')
2114 
2115  elif worstError['nLevel'] >= stdLogLevels['ERROR']:
2116  self._isValidated = False
2117  msg.error('Fatal error in script logfile (level {0})'.format(worstError['level']))
2118  exitCode = trfExit.nameToCode('TRF_EXEC_LOGERROR')
2119  raise trfExceptions.TransformLogfileErrorException(exitCode, 'Fatal error in script logfile: "{0}"'.format(exitErrorMessage))
2120 
2121  # Must be ok if we got here!
2122  msg.info('Executor {0} has validated successfully'.format(self.name))
2123  self._isValidated = True
2124 
2125  self._valStop = os.times()
2126  msg.debug('valStop time is {0}'.format(self._valStop))

◆ validation() [1/2]

def python.trfExe.transformExecutor.validation (   self)
inherited

Definition at line 308 of file trfExe.py.

308  def validation(self):
309  return self._validation
310 

◆ validation() [2/2]

def python.trfExe.transformExecutor.validation (   self,
  value 
)
inherited

Definition at line 312 of file trfExe.py.

312  def validation(self, value):
313  self._validation = value
314 

◆ validationCpuTime()

def python.trfExe.transformExecutor.validationCpuTime (   self)
inherited

Definition at line 416 of file trfExe.py.

416  def validationCpuTime(self):
417  if self._valStart and self._valStop:
418  return calcCpuTime(self._valStart, self._valStop)
419  else:
420  return None
421 

◆ validationWallTime()

def python.trfExe.transformExecutor.validationWallTime (   self)
inherited

Definition at line 423 of file trfExe.py.

423  def validationWallTime(self):
424  if self._valStart and self._valStop:
425  return calcWallTime(self._valStart, self._valStop)
426  else:
427  return None
428 

◆ valStartTimes()

def python.trfExe.transformExecutor.valStartTimes (   self)
inherited

Definition at line 344 of file trfExe.py.

344  def valStartTimes(self):
345  return self._valStart
346 

◆ valStopTimes()

def python.trfExe.transformExecutor.valStopTimes (   self)
inherited

Definition at line 348 of file trfExe.py.

348  def valStopTimes(self):
349  return self._valStop
350 

◆ wallTime()

def python.trfExe.transformExecutor.wallTime (   self)
inherited

Definition at line 387 of file trfExe.py.

387  def wallTime(self):
388  if self._exeStart and self._exeStop:
389  return calcWallTime(self._exeStart, self._exeStop)
390  else:
391  return None
392 

◆ wallTimeTotal()

def python.trfExe.transformExecutor.wallTimeTotal (   self)
inherited

Definition at line 437 of file trfExe.py.

437  def wallTimeTotal(self):
438  if self._preExeStart and self._valStop:
439  return calcWallTime(self._preExeStart, self._valStop)
440  else:
441  return None
442 

Member Data Documentation

◆ _alreadyInContainer

python.trfExe.transformExecutor._alreadyInContainer
privateinherited

Definition at line 198 of file trfExe.py.

◆ _athenaConcurrentEvents

python.trfExe.transformExecutor._athenaConcurrentEvents
privateinherited

Definition at line 195 of file trfExe.py.

◆ _athenaMP

python.trfExe.transformExecutor._athenaMP
privateinherited

Definition at line 193 of file trfExe.py.

◆ _athenaMT

python.trfExe.transformExecutor._athenaMT
privateinherited

Definition at line 194 of file trfExe.py.

◆ _cmd

python.trfExe.scriptExecutor._cmd
privateinherited

Definition at line 635 of file trfExe.py.

◆ _containerSetup

python.trfExe.transformExecutor._containerSetup
privateinherited

Definition at line 199 of file trfExe.py.

◆ _dbMonitor

python.trfExe.transformExecutor._dbMonitor
privateinherited

Definition at line 196 of file trfExe.py.

◆ _echologger

python.trfExe.scriptExecutor._echologger
privateinherited

Definition at line 692 of file trfExe.py.

◆ _echoOutput

python.trfExe.scriptExecutor._echoOutput
privateinherited
Note
Query the environment for echo configuration Let the manual envars always win over auto-detected settings

Definition at line 632 of file trfExe.py.

◆ _echostream

python.trfExe.scriptExecutor._echostream
privateinherited

Definition at line 702 of file trfExe.py.

◆ _errMsg

python.trfExe.scriptExecutor._errMsg
privateinherited

Definition at line 811 of file trfExe.py.

◆ _eventCount

python.trfExe.scriptExecutor._eventCount
privateinherited

Check event counts (always do this by default) Do this here so that all script executors have this by default (covers most use cases with events)

Definition at line 836 of file trfExe.py.

◆ _exe

python.trfExe.scriptExecutor._exe
privateinherited

Definition at line 622 of file trfExe.py.

◆ _exeArgs

python.trfExe.scriptExecutor._exeArgs
privateinherited

Definition at line 625 of file trfExe.py.

◆ _exeLogFile

python.trfExe.scriptExecutor._exeLogFile
privateinherited

Definition at line 697 of file trfExe.py.

◆ _exeStart

python.trfExe.scriptExecutor._exeStart
privateinherited

Definition at line 727 of file trfExe.py.

◆ _exeStop

python.trfExe.scriptExecutor._exeStop
privateinherited

Definition at line 770 of file trfExe.py.

◆ _extraMetadata

python.trfExe.transformExecutor._extraMetadata
privateinherited

Definition at line 181 of file trfExe.py.

◆ _hasExecuted

python.trfExe.scriptExecutor._hasExecuted
privateinherited

Definition at line 724 of file trfExe.py.

◆ _hasValidated

python.trfExe.scriptExecutor._hasValidated
privateinherited

Definition at line 805 of file trfExe.py.

◆ _histMergeList

python.trfExe.DQMPostProcessExecutor._histMergeList
private

Definition at line 2032 of file trfExe.py.

◆ _inData

python.trfExe.transformExecutor._inData
privateinherited

Definition at line 144 of file trfExe.py.

◆ _input

python.trfExe.scriptExecutor._input
privateinherited

Definition at line 662 of file trfExe.py.

◆ _isValidated

python.trfExe.DQMPostProcessExecutor._isValidated
private

Definition at line 2116 of file trfExe.py.

◆ _logFileName

python.trfExe.scriptExecutor._logFileName
privateinherited
Note
If an inherited class has set self._cmd leave it alone

Definition at line 671 of file trfExe.py.

◆ _memFullFile

python.trfExe.scriptExecutor._memFullFile
privateinherited

Definition at line 750 of file trfExe.py.

◆ _memLeakResult

python.trfExe.transformExecutor._memLeakResult
privateinherited

Definition at line 190 of file trfExe.py.

◆ _memMonitor

python.trfExe.scriptExecutor._memMonitor
privateinherited

Definition at line 637 of file trfExe.py.

◆ _memStats

python.trfExe.scriptExecutor._memStats
privateinherited

Definition at line 794 of file trfExe.py.

◆ _memSummaryFile

python.trfExe.scriptExecutor._memSummaryFile
privateinherited

Definition at line 749 of file trfExe.py.

◆ _myMerger

python.trfExe.transformExecutor._myMerger
privateinherited

Definition at line 202 of file trfExe.py.

◆ _name

python.trfExe.transformExecutor._name
privateinherited

Definition at line 141 of file trfExe.py.

◆ _outData

python.trfExe.transformExecutor._outData
privateinherited

Definition at line 145 of file trfExe.py.

◆ _output

python.trfExe.scriptExecutor._output
privateinherited

Definition at line 663 of file trfExe.py.

◆ _preExeStart

python.trfExe.transformExecutor._preExeStart
privateinherited
Note
Place holders for resource consumption. CPU and walltime are available for all executors but currently only athena is instrumented to fill in memory stats (and then only if PerfMonSD is enabled).

Definition at line 186 of file trfExe.py.

◆ _rc

python.trfExe.scriptExecutor._rc
privateinherited

Check rc.

Definition at line 768 of file trfExe.py.

◆ _resimevents

python.trfExe.transformExecutor._resimevents
privateinherited

Definition at line 197 of file trfExe.py.

◆ _trf

python.trfExe.transformExecutor._trf
privateinherited

Definition at line 232 of file trfExe.py.

◆ _validation

python.trfExe.transformExecutor._validation
privateinherited

Definition at line 313 of file trfExe.py.

◆ _valStart

python.trfExe.scriptExecutor._valStart
privateinherited

Definition at line 803 of file trfExe.py.

◆ _valStop

python.trfExe.DQMPostProcessExecutor._valStop
private

Definition at line 2125 of file trfExe.py.

◆ conf

python.trfExe.transformExecutor.conf
inherited

Executor configuration:

Note
that if conf and trf are None then we'll probably set the conf up later (this is allowed and expected to be done once the master transform has figured out what it's doing for this job)

Definition at line 163 of file trfExe.py.

◆ inData

python.trfExe.transformExecutor.inData
inherited
Note
Protect against _inData not yet being defined
Use normal setter

Definition at line 251 of file trfExe.py.

◆ outData

python.trfExe.transformExecutor.outData
inherited
Note
Protect against _outData not yet being defined
Use normal setter

Definition at line 271 of file trfExe.py.


The documentation for this class was generated from the following file:
validation
Definition: validation.py:1
validation.validate
def validate(testSampleDir, thisSampleName, testSamplePath, weight_database, outputSamples)
Definition: validation.py:26
vtune_athena.format
format
Definition: vtune_athena.py:14
python.trfUtils.calcCpuTime
def calcCpuTime(start, stop)
Definition: trfUtils.py:1684
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
LArG4FSStartPointFilterLegacy.execute
execute
Definition: LArG4FSStartPointFilterLegacy.py:20
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
beamspotman.dir
string dir
Definition: beamspotman.py:621
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
python.trfUtils.calcWallTime
def calcWallTime(start, stop)
Definition: trfUtils.py:1692
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
Trk::open
@ open
Definition: BinningType.h:40
ActsTrk::detail::MakeDerivedVariant::extend
constexpr std::variant< Args..., T > extend(const std::variant< Args... > &, const T &)
Definition: MakeDerivedVariant.h:17
DeMoScan.first
bool first
Definition: DeMoScan.py:534
str
Definition: BTagTrackIpAccessor.cxx:11
CaloLCW_tf.trf
trf
Definition: CaloLCW_tf.py:20
python.ParticleTypeUtil.info
def info
Definition: ParticleTypeUtil.py:87