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

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 
def __init__(self, nThrMax=4)
Definition: addOnTests.py:68

Member Function Documentation

def addOnTests.StandardTester.activeThreads (   self)

Definition at line 76 of file addOnTests.py.

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

Referenced by addOnTests.StandardTester.runTests().

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 
def addOnTests.StandardTester.dumpTest (   self)

Definition at line 124 of file addOnTests.py.

References join(), and edm.print().

124  def dumpTest(self):
125  print(",".join(self.commands.keys()))
126  return
127 
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def addOnTests.StandardTester.file2Path (   self,
  rFile 
)

Definition at line 128 of file addOnTests.py.

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

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 
def file2Path(self, rFile)
Definition: addOnTests.py:128
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 
def file2Path(self, rFile)
Definition: addOnTests.py:128
def addOnTests.StandardTester.runTests (   self,
  testList = None 
)

Definition at line 134 of file addOnTests.py.

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

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', 'w') )
198 
199  os.chdir(actDir)
200 
201  return
202 
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def runTests(self, testList=None)
Definition: addOnTests.py:134
#define str(s)
def addOnTests.StandardTester.upload (   self,
  tgtDir 
)

Definition at line 203 of file addOnTests.py.

References edm.print(), and str.

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 
def upload(self, tgtDir)
Definition: addOnTests.py:203
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
#define str(s)

Member Data Documentation

addOnTests.StandardTester.commands

Definition at line 116 of file addOnTests.py.

Referenced by addOnTests.StandardTester.runTests().

addOnTests.StandardTester.devPath

Definition at line 86 of file addOnTests.py.

Referenced by addOnTests.StandardTester.file2Path().

addOnTests.StandardTester.maxThreads

Definition at line 71 of file addOnTests.py.

Referenced by addOnTests.StandardTester.runTests().

addOnTests.StandardTester.relPath

Definition at line 87 of file addOnTests.py.

Referenced by addOnTests.StandardTester.file2Path().

addOnTests.StandardTester.threadList