4 from Configuration.PyReleaseValidation.MatrixReader
import MatrixReader
5 from Configuration.PyReleaseValidation.MatrixRunner
import MatrixRunner
6 from Configuration.PyReleaseValidation.MatrixInjector
import MatrixInjector,performInjectionOptionTest
13 mrd.showRaw(opt.useInput, opt.refRel, opt.fromScratch, opt.raw, opt.step1Only, selected=opt.testList)
22 mrd.prepare(opt.useInput, opt.refRel, opt.fromScratch)
26 mrd.show(opt.testList, opt.extended, opt.cafVeto)
27 if opt.testList :
print 'testListected items:', opt.testList
29 mRunnerHi =
MatrixRunner(mrd.workFlows, opt.nProcs, opt.nThreads)
30 ret = mRunnerHi.runTests(opt)
34 print 'Cannot go on with wmagent injection with failing workflows'
36 wfInjector =
MatrixInjector(opt,mode=opt.wmcontrol,options=opt.wmoptions)
37 ret= wfInjector.prepare(mrd,
46 if __name__ ==
'__main__':
61 'jetmc': [5.1, 13, 15, 25, 38, 39],
62 'metmc' : [5.1, 15, 25, 37, 38, 39],
63 'muonmc' : [5.1, 124.4, 124.5, 20, 21, 22, 23, 25, 30],
68 usage =
'usage: runTheMatrix.py --show -s '
70 parser = optparse.OptionParser(usage)
72 parser.add_option(
'-m',
'--memoryOffset',
73 help=
'memory of the wf for single core',
77 parser.add_option(
'--addMemPerCore',
78 help=
'increase of memory per each n > 1 core: memory(n_core) = memoryOffset + (n_core-1) * memPerCore',
82 parser.add_option(
'-j',
'--nproc',
83 help=
'number of processes. 0 Will use 4 processes, not execute anything but create the wfs',
87 parser.add_option(
'-t',
'--nThreads',
88 help=
'number of threads per process to use in cmsRun.',
93 parser.add_option(
'-n',
'--showMatrix',
94 help=
'Only show the worflows. Use --ext to show more',
99 parser.add_option(
'-e',
'--extended',
100 help=
'Show details of workflows, used with --show',
105 parser.add_option(
'-s',
'--selected',
106 help=
'Run a pre-defined selected matrix of wf. Deprecated, please use -l limited',
111 parser.add_option(
'-l',
'--list',
112 help=
'Coma separated list of workflow to be shown or ran. Possible keys are also '+str(predefinedSet.keys())+
'. and wild card like muon, or mc',
116 parser.add_option(
'-r',
'--raw',
117 help=
'Temporary dump the .txt needed for prodAgent interface. To be discontinued soon. Argument must be the name of the set (standard, pileup,...)',
120 parser.add_option(
'-i',
'--useInput',
121 help=
'Use recyling where available. Either all, or a coma separated list of wf number.',
125 parser.add_option(
'-w',
'--what',
126 help=
'Specify the set to be used. Argument must be the name of the set (standard, pileup,...)',
130 parser.add_option(
'--step1',
131 help=
'Used with --raw. Limit the production to step1',
135 parser.add_option(
'--fromScratch',
136 help=
'Coma separated list of wf to be run without recycling. all is not supported as default.',
140 parser.add_option(
'--refRelease',
141 help=
'Allow to modify the recycling dataset version',
145 parser.add_option(
'--wmcontrol',
146 help=
'Create the workflows for injection to WMAgent. In the WORKING. -wmcontrol init will create the the workflows, -wmcontrol test will dryRun a test, -wmcontrol submit will submit to wmagent',
147 choices=[
'init',
'test',
'submit',
'force'],
151 parser.add_option(
'--revertDqmio',
152 help=
'When submitting workflows to wmcontrol, force DQM outout to use pool and not DQMIO',
153 choices=[
'yes',
'no'],
157 parser.add_option(
'--optionswm',
158 help=
'Specify a few things for wm injection',
161 parser.add_option(
'--keep',
162 help=
'allow to specify for which coma separated steps the output is needed',
164 parser.add_option(
'--label',
165 help=
'allow to give a special label to the output dataset name',
167 parser.add_option(
'--command',
168 help=
'provide a way to add additional command to all of the cmsDriver commands in the matrix',
172 parser.add_option(
'--apply',
173 help=
'allow to use the --command only for 1 coma separeated',
176 parser.add_option(
'--workflow',
177 help=
'define a workflow to be created or altered from the matrix',
182 parser.add_option(
'--dryRun',
183 help=
'do not run the wf at all',
188 parser.add_option(
'--testbed',
189 help=
'workflow injection to cmswebtest (you need dedicated rqmgr account)',
194 parser.add_option(
'--noCafVeto',
195 help=
'Run from any source, ignoring the CAF label',
200 parser.add_option(
'--overWrite',
201 help=
'Change the content of a step for another. List of pairs.',
205 parser.add_option(
'--noRun',
206 help=
'Remove all run list selection from wfs',
211 parser.add_option(
'--das-options',
212 help=
'Options to be passed to das_client.py.',
217 parser.add_option(
'--job-reports',
218 help=
'Dump framework job reports',
223 opt,args = parser.parse_args()
225 print 'Deprecated, please use -l limited'
226 if opt.testList: opt.testList+=
',limited'
227 else: opt.testList=
'limited'
235 opt.apply=map(stepOrIndex,opt.apply.split(
','))
237 opt.keep=map(stepOrIndex,opt.keep.split(
','))
243 for entry
in opt.testList.split(
','):
244 if not entry:
continue
246 for k
in predefinedSet:
247 if k.lower().startswith(entry.lower())
or k.lower().endswith(entry.lower()):
248 testList.extend(predefinedSet[k])
253 testList.append(float(entry))
255 print entry,
'is not a possible selected entry'
257 opt.testList =
list(set(testList))
260 if opt.useInput: opt.useInput = opt.useInput.split(
',')
261 if opt.fromScratch: opt.fromScratch = opt.fromScratch.split(
',')
262 if opt.nProcs: opt.nProcs=int(opt.nProcs)
263 if opt.nThreads: opt.nThreads=int(opt.nThreads)
264 if (opt.memoryOffset): opt.memoryOffset=int(opt.memoryOffset)
265 if (opt.memPerCore): opt.memPerCore=int(opt.memPerCore)
270 opt.overWrite=eval(opt.overWrite)
272 if opt.raw
and opt.show:
def performInjectionOptionTest
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run