CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes
addOnTests.StandardTester Class Reference
Inheritance diagram for addOnTests.StandardTester:

Public Member Functions

def __init__ (self, nThrMax=4)
 
def activeThreads (self)
 
def dumpTest (self)
 
def file2Path (self, rFile)
 
def prepare (self)
 
def runTests (self, testList=None)
 
def upload (self, tgtDir)
 

Public Attributes

 commands
 
 devPath
 
 maxThreads
 
 relPath
 
 threadList
 

Detailed Description

Definition at line 66 of file addOnTests.py.

Constructor & Destructor Documentation

◆ __init__()

def addOnTests.StandardTester.__init__ (   self,
  nThrMax = 4 
)

Definition at line 68 of file addOnTests.py.

68  def __init__(self, nThrMax=4):
69 
70  self.threadList = []
71  self.maxThreads = nThrMax
72  self.prepare()
73 
74  return
75 

Member Function Documentation

◆ activeThreads()

def addOnTests.StandardTester.activeThreads (   self)

Definition at line 76 of file addOnTests.py.

76  def activeThreads(self):
77 
78  nActive = 0
79  for t in self.threadList:
80  if t.isAlive() : nActive += 1
81 
82  return nActive
83 

References MatrixRunner.MatrixRunner.threadList, and addOnTests.StandardTester.threadList.

Referenced by addOnTests.StandardTester.runTests().

◆ dumpTest()

def addOnTests.StandardTester.dumpTest (   self)

Definition at line 124 of file addOnTests.py.

124  def dumpTest(self):
125  print(",".join(self.commands.keys()))
126  return
127 

References addOnTests.StandardTester.commands, join(), relativeConstraints.keys, and edm.print().

◆ file2Path()

def addOnTests.StandardTester.file2Path (   self,
  rFile 
)

Definition at line 128 of file addOnTests.py.

128  def file2Path(self,rFile):
129 
130  fullPath = self.relPath + rFile
131  if os.path.exists(self.devPath + rFile): fullPath = self.devPath + rFile
132  return fullPath
133 

References addOnTests.StandardTester.devPath, and addOnTests.StandardTester.relPath.

◆ prepare()

def addOnTests.StandardTester.prepare (   self)

Definition at line 84 of file addOnTests.py.

84  def prepare(self):
85 
86  self.devPath = os.environ['LOCALRT'] + '/src/'
87  self.relPath = self.devPath
88  if 'CMSSW_RELEASE_BASE' in os.environ and (os.environ['CMSSW_RELEASE_BASE'] != ""): self.relPath = os.environ['CMSSW_RELEASE_BASE'] + '/src/'
89 
90  lines = { 'read312RV' : ['cmsRun '+self.file2Path('Utilities/ReleaseScripts/scripts/read312RV_cfg.py')],
91  'fastsim' : ["cmsDriver.py TTbar_8TeV_TuneCUETP8M1_cfi --conditions auto:run1_mc --fast -n 100 --eventcontent AODSIM,DQM --relval 100000,1000 -s GEN,SIM,RECOBEFMIX,DIGI:pdigi_valid,L1,DIGI2RAW,L1Reco,RECO,EI,VALIDATION --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --datatier GEN-SIM-DIGI-RECO,DQMIO --beamspot Realistic8TeVCollision"],
92  'fastsim1' : ["cmsDriver.py TTbar_13TeV_TuneCUETP8M1_cfi --conditions auto:run2_mc_l1stage1 --fast -n 100 --eventcontent AODSIM,DQM --relval 100000,1000 -s GEN,SIM,RECOBEFMIX,DIGI:pdigi_valid,L1,DIGI2RAW,L1Reco,RECO,EI,VALIDATION --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --datatier GEN-SIM-DIGI-RECO,DQMIO --beamspot NominalCollision2015 --era Run2_25ns"],
93  'fastsim2' : ["cmsDriver.py TTbar_13TeV_TuneCUETP8M1_cfi --conditions auto:run2_mc --fast -n 100 --eventcontent AODSIM,DQM --relval 100000,1000 -s GEN,SIM,RECOBEFMIX,DIGI:pdigi_valid,L1,DIGI2RAW,L1Reco,RECO,EI,VALIDATION --customise=HLTrigger/Configuration/CustomConfigs.L1THLT --datatier GEN-SIM-DIGI-RECO,DQMIO --beamspot NominalCollision2015 --era Run2_2016"],
94  'pat1' : ['cmsRun '+self.file2Path('PhysicsTools/PatAlgos/test/IntegrationTest_cfg.py')],
95  }
96 
97  hltTests = {}
98  hltFlag_data = ' realData=True globalTag=@ inputFiles=@ '
99  hltFlag_mc = ' realData=False globalTag=@ inputFiles=@ '
100  from Configuration.HLT.addOnTestsHLT import addOnTestsHLT
101  hltTestsToAdd = addOnTestsHLT()
102  for key in hltTestsToAdd:
103  if '_data_' in key:
104  hltTests[key] = [hltTestsToAdd[key][0],
105  'cmsRun '+self.file2Path(hltTestsToAdd[key][1])+hltFlag_data,
106  hltTestsToAdd[key][2]]
107  elif '_mc_' in key:
108  hltTests[key] = [hltTestsToAdd[key][0],
109  'cmsRun '+self.file2Path(hltTestsToAdd[key][1])+hltFlag_mc,
110  hltTestsToAdd[key][2]]
111  else:
112  hltTests[key] = [hltTestsToAdd[key][0],
113  'cmsRun '+self.file2Path(hltTestsToAdd[key][1]),
114  hltTestsToAdd[key][2]]
115 
116  self.commands={}
117  for dirName, command in lines.items():
118  self.commands[dirName] = command
119 
120  for dirName, commandList in hltTests.items():
121  self.commands[dirName] = commandList
122  return
123 

◆ runTests()

def addOnTests.StandardTester.runTests (   self,
  testList = None 
)

Definition at line 134 of file addOnTests.py.

134  def runTests(self, testList = None):
135 
136  actDir = os.getcwd()
137 
138  if not os.path.exists('addOnTests'):
139  os.makedirs('addOnTests')
140  os.chdir('addOnTests')
141 
142  nfail=0
143  npass=0
144  report=''
145 
146  print('Running in %s thread(s)' % self.maxThreads)
147 
148  for dirName, command in self.commands.items():
149 
150  if testList and not dirName in testList:
151  del self.commands[dirName]
152  continue
153 
154  # make sure we don't run more than the allowed number of threads:
155  while self.activeThreads() >= self.maxThreads:
156  time.sleep(10)
157  continue
158 
159  print('Preparing to run %s' % str(command))
160  current = testit(dirName, command)
161  self.threadList.append(current)
162  current.start()
163  time.sleep(random.randint(1,5)) # try to avoid race cond by sleeping random amount of time [1,5] sec
164 
165  # wait until all threads are finished
166  while self.activeThreads() > 0:
167  time.sleep(5)
168 
169  # all threads are done now, check status ...
170  for pingle in self.threadList:
171  pingle.join()
172  for f in pingle.nfail: nfail += f
173  for p in pingle.npass: npass += p
174  report += pingle.report
175  print(pingle.report)
176  sys.stdout.flush()
177 
178  reportSumm = '\n %s tests passed, %s failed \n' %(npass,nfail)
179  print(reportSumm)
180 
181  runall_report_name='runall-report.log'
182  runall_report=open(runall_report_name,'w')
183  runall_report.write(report+reportSumm)
184  runall_report.close()
185 
186  # get the logs to the logs dir:
187  print('==> in :', os.getcwd())
188  print(' going to copy log files to logs dir ...')
189  if not os.path.exists('logs'):
190  os.makedirs('logs')
191  for dirName in self.commands:
192  cmd = "for L in `ls "+dirName+"/*.log`; do cp $L logs/cmsDriver-`dirname $L`_`basename $L` ; done"
193  print("going to ",cmd)
194  os.system(cmd)
195 
196  import pickle
197  pickle.dump(self.commands, open('logs/addOnTests.pkl', 'wb'), protocol=2)
198 
199  os.chdir(actDir)
200 
201  return
202 

References MatrixRunner.MatrixRunner.activeThreads(), addOnTests.StandardTester.activeThreads(), mps_setup.append, addOnTests.StandardTester.commands, mps_monitormerge.items, MatrixRunner.MatrixRunner.maxThreads, addOnTests.StandardTester.maxThreads, edm.print(), str, MatrixRunner.MatrixRunner.threadList, and addOnTests.StandardTester.threadList.

◆ upload()

def addOnTests.StandardTester.upload (   self,
  tgtDir 
)

Definition at line 203 of file addOnTests.py.

203  def upload(self, tgtDir):
204 
205  print("in ", os.getcwd())
206 
207  if not os.path.exists(tgtDir):
208  os.makedirs(tgtDir)
209 
210  cmd = 'tar cf - addOnTests.log addOnTests/logs | (cd '+tgtDir+' ; tar xf - ) '
211  try:
212  print('executing: ',cmd)
213  ret = os.system(cmd)
214  if ret != 0:
215  print("ERROR uploading logs:", ret, cmd)
216  except Exception as e:
217  print("EXCEPTION while uploading addOnTest-logs : ", str(e))
218 
219  return
220 
221 

References edm.print(), and str.

Member Data Documentation

◆ commands

addOnTests.StandardTester.commands

◆ devPath

addOnTests.StandardTester.devPath

Definition at line 86 of file addOnTests.py.

Referenced by addOnTests.StandardTester.file2Path().

◆ maxThreads

addOnTests.StandardTester.maxThreads

Definition at line 71 of file addOnTests.py.

Referenced by addOnTests.StandardTester.runTests().

◆ relPath

addOnTests.StandardTester.relPath

Definition at line 87 of file addOnTests.py.

Referenced by addOnTests.StandardTester.file2Path().

◆ threadList

addOnTests.StandardTester.threadList
join
static std::string join(char **cmd)
Definition: RemoteFile.cc:17
relativeConstraints.keys
keys
Definition: relativeConstraints.py:89
mps_monitormerge.items
list items
Definition: mps_monitormerge.py:29
str
#define str(s)
Definition: TestProcessor.cc:48
mps_setup.append
append
Definition: mps_setup.py:85
edm::print
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
alcaDQMUpload.upload
def upload(url, args, files)
Definition: alcaDQMUpload.py:65
addOnTestsHLT
Definition: addOnTestsHLT.py:1