File indexing completed on 2024-04-06 12:12:41
0001 import FWCore.ParameterSet.Config as cms
0002
0003 import argparse
0004 import sys
0005
0006 parser = argparse.ArgumentParser(prog=sys.argv[0], description='Test ProcessAccelerator.')
0007
0008 parser.add_argument("--enableTest2", help="Enable test2 accelerator", action="store_true")
0009 parser.add_argument("--accelerators", type=str, help="Comma-separated string for accelerators to enable")
0010
0011 args = parser.parse_args()
0012
0013 class ProcessAcceleratorTest(cms.ProcessAccelerator):
0014 def __init__(self):
0015 super(ProcessAcceleratorTest,self).__init__()
0016 self._labels = ["test1", "test2"]
0017 self._enabled = ["test1"]
0018 if args.enableTest2:
0019 self._enabled.append("test2")
0020 def labels(self):
0021 return self._labels
0022 def enabledLabels(self):
0023 return self._enabled
0024
0025 class SwitchProducerTest(cms.SwitchProducer):
0026 def __init__(self, **kargs):
0027 super(SwitchProducerTest,self).__init__(
0028 dict(
0029 cpu = cms.SwitchProducer.getCpu(),
0030 test1 = lambda accelerators: ("test1" in accelerators, 2),
0031 test2 = lambda accelerators: ("test2" in accelerators, 3),
0032 ), **kargs)
0033
0034 process = cms.Process("PROD1")
0035
0036 process.add_(ProcessAcceleratorTest())
0037
0038 process.source = cms.Source("EmptySource")
0039 process.maxEvents.input = 3
0040 if args.accelerators is not None:
0041 process.options.accelerators = args.accelerators.split(",")
0042
0043 process.intProducer1 = cms.EDProducer("ManyIntProducer", ivalue = cms.int32(1))
0044 process.intProducer2 = cms.EDProducer("ManyIntProducer", ivalue = cms.int32(2))
0045 process.failIntProducer = cms.EDProducer("ManyIntProducer", ivalue = cms.int32(-1), throw = cms.untracked.bool(True))
0046
0047 if args.enableTest2 and ("test2" in process.options.accelerators or "*" in process.options.accelerators):
0048 process.intProducer1.throw = cms.untracked.bool(True)
0049 else:
0050 process.intProducer2.throw = cms.untracked.bool(True)
0051
0052 process.intProducer = SwitchProducerTest(
0053 cpu = cms.EDProducer("AddIntsProducer", labels = cms.VInputTag("failIntProducer")),
0054 test1 = cms.EDProducer("AddIntsProducer", labels = cms.VInputTag("intProducer1")),
0055 test2 = cms.EDProducer("AddIntsProducer", labels = cms.VInputTag("intProducer2"))
0056 )
0057
0058 process.intConsumer = cms.EDProducer("AddIntsProducer", labels = cms.VInputTag("intProducer"))
0059
0060 process.t = cms.Task(
0061 process.failIntProducer,
0062 process.intProducer1,
0063 process.intProducer2,
0064 process.intProducer,
0065 )
0066 process.p = cms.Path(
0067 process.intConsumer,
0068 process.t
0069 )