CMS 3D CMS Logo

Public Member Functions

Config::TestModuleCommand Class Reference

List of all members.

Public Member Functions

def setUp
def testCloneSequence
def testExamples
def testFreeze
def testGlobalReplace
def testImplicitSchedule
def testOverride
def testParameterizable
def testPath
def testPrefers
def testProcessDumpConfig
def testProcessExtend
def testProcessInsertion
def testSchedule
def testSecSource
def testSequence
def testSubProcess
def testTypedParameterizable
def testUsing

Detailed Description

Definition at line 961 of file Config.py.


Member Function Documentation

def Config::TestModuleCommand::setUp (   self)
Nothing to do 

Definition at line 962 of file Config.py.

00963                        :
00964             """Nothing to do """
            None
def Config::TestModuleCommand::testCloneSequence (   self)

Definition at line 1172 of file Config.py.

01173                                    :
01174             p = Process("test")
01175             a = EDAnalyzer("MyAnalyzer")
01176             p.a = a
01177             a.setLabel("a")
01178             b = EDAnalyzer("YOurAnalyzer")
01179             p.b = b
01180             b.setLabel("b")
01181             path = Path(a * b)
01182             p.path = Path(p.a*p.b)
01183             lookuptable = {id(a): p.a, id(b): p.b}
01184             #self.assertEqual(str(path),str(path._postProcessFixup(lookuptable)))
01185             #lookuptable = p._cloneToObjectDict
01186             #self.assertEqual(str(path),str(path._postProcessFixup(lookuptable)))
01187             self.assertEqual(str(path),str(p.path))

def Config::TestModuleCommand::testExamples (   self)

Definition at line 1283 of file Config.py.

01284                               :
01285             p = Process("Test")
01286             p.source = Source("PoolSource",fileNames = untracked(string("file:reco.root")))
01287             p.foos = EDProducer("FooProducer")
01288             p.bars = EDProducer("BarProducer", foos=InputTag("foos"))
01289             p.out = OutputModule("PoolOutputModule",fileName=untracked(string("file:foos.root")))
01290             p.bars.foos = 'Foosball'
01291             self.assertEqual(p.bars.foos, InputTag('Foosball'))
01292             p.p = Path(p.foos*p.bars)
01293             p.e = EndPath(p.out)
01294             p.add_(Service("MessageLogger"))

def Config::TestModuleCommand::testFreeze (   self)

Definition at line 1349 of file Config.py.

01350                             :
01351             process = Process("Freeze")
01352             m = EDProducer("M", p=PSet(i = int32(1)))
01353             m.p.i = 2
01354             process.m = m
01355             # should be frozen
01356             #self.assertRaises(ValueError, setattr, m.p, 'i', 3)
01357             #self.assertRaises(ValueError, setattr, m, 'p', PSet(i=int32(1)))
01358             #self.assertRaises(ValueError, setattr, m.p, 'j', 1)
01359             #self.assertRaises(ValueError, setattr, m, 'j', 1)
01360             # But OK to change through the process
01361             process.m.p.i = 4
01362             self.assertEqual(process.m.p.i.value(), 4)
01363             process.m.p = PSet(j=int32(1))
01364             # should work to clone it, though
01365             m2 = m.clone(p = PSet(i = int32(5)), j = int32(8))
01366             m2.p.i = 6
            m2.j = 8
def Config::TestModuleCommand::testGlobalReplace (   self)

Definition at line 1125 of file Config.py.

01126                                    :
01127             p = Process('test')
01128             p.a = EDAnalyzer("MyAnalyzer")
01129             p.b = EDAnalyzer("YourAnalyzer")
01130             p.c = EDAnalyzer("OurAnalyzer")
01131             p.s = Sequence(p.a*p.b)
01132             p.p = Path(p.c+p.s+p.a)
01133             new = EDAnalyzer("NewAnalyzer")
01134             p.globalReplace("a",new)

def Config::TestModuleCommand::testImplicitSchedule (   self)

Definition at line 1227 of file Config.py.

01228                                       :
01229             p = Process("test")
01230             p.a = EDAnalyzer("MyAnalyzer")
01231             p.b = EDAnalyzer("YourAnalyzer")
01232             p.c = EDAnalyzer("OurAnalyzer")
01233             p.path1 = Path(p.a)
01234             p.path2 = Path(p.b)
01235             self.assert_(p.schedule is None)
01236             pths = p.paths
01237             keys = pths.keys()
01238             self.assertEqual(pths[keys[0]],p.path1)
01239             self.assertEqual(pths[keys[1]],p.path2)
01240 
01241             p = Process("test")
01242             p.a = EDAnalyzer("MyAnalyzer")
01243             p.b = EDAnalyzer("YourAnalyzer")
01244             p.c = EDAnalyzer("OurAnalyzer")
01245             p.path2 = Path(p.b)
01246             p.path1 = Path(p.a)
01247             self.assert_(p.schedule is None)
01248             pths = p.paths
01249             keys = pths.keys()
01250             self.assertEqual(pths[keys[1]],p.path1)
01251             self.assertEqual(pths[keys[0]],p.path2)
01252 

def Config::TestModuleCommand::testOverride (   self)

Definition at line 1260 of file Config.py.

01261                               :
01262             p = Process('test')
01263             a = EDProducer("A", a1=int32(0))
01264             self.assert_(not a.isModified())
01265             a.a1 = 1
01266             self.assert_(a.isModified())
01267             p.a = a
01268             self.assertEqual(p.a.a1.value(), 1)
01269             # try adding an unmodified module.
01270             # should accept it
01271             p.a = EDProducer("A", a1=int32(2))
01272             self.assertEqual(p.a.a1.value(), 2)
01273             # try adding a modified module.  Should throw
01274             # no longer, since the same (modified) say, geometry
01275             # could come from more than one cff
01276             b = EDProducer("A", a1=int32(3))
01277             b.a1 = 4
01278             #self.assertRaises(RuntimeError, setattr, *(p,'a',b))
01279             ps1 = PSet(a = int32(1))
01280             ps2 = PSet(a = int32(2))
01281             self.assertRaises(ValueError, EDProducer, 'C', ps1, ps2)
01282             self.assertRaises(ValueError, EDProducer, 'C', ps1, a=int32(3))

def Config::TestModuleCommand::testParameterizable (   self)

Definition at line 965 of file Config.py.

00966                                      :
00967             p = _Parameterizable()
00968             self.assertEqual(len(p.parameterNames_()),0)
00969             p.a = int32(1)
00970             self.assert_('a' in p.parameterNames_())
00971             self.assertEqual(p.a.value(), 1)
00972             p.a = 10
00973             self.assertEqual(p.a.value(), 10)
00974             p.a = untracked(int32(1))
00975             self.assertEqual(p.a.value(), 1)
00976             self.failIf(p.a.isTracked())
00977             p.a = untracked.int32(1)
00978             self.assertEqual(p.a.value(), 1)
00979             self.failIf(p.a.isTracked())
00980             p = _Parameterizable(foo=int32(10), bar = untracked(double(1.0)))
00981             self.assertEqual(p.foo.value(), 10)
00982             self.assertEqual(p.bar.value(),1.0)
00983             self.failIf(p.bar.isTracked())
00984             self.assertRaises(TypeError,setattr,(p,'c',1))
00985             p = _Parameterizable(a=PSet(foo=int32(10), bar = untracked(double(1.0))))
00986             self.assertEqual(p.a.foo.value(),10)
00987             self.assertEqual(p.a.bar.value(),1.0)
00988             p.b = untracked(PSet(fii = int32(1)))
00989             self.assertEqual(p.b.fii.value(),1)
00990             self.failIf(p.b.isTracked())
00991             #test the fact that values can be shared
00992             v = int32(10)
00993             p=_Parameterizable(a=v)
00994             v.setValue(11)
00995             self.assertEqual(p.a.value(),11)
00996             p.a = 12
00997             self.assertEqual(p.a.value(),12)
            self.assertEqual(v.value(),12)
def Config::TestModuleCommand::testPath (   self)

Definition at line 1150 of file Config.py.

01151                           :
01152             p = Process("test")
01153             p.a = EDAnalyzer("MyAnalyzer")
01154             p.b = EDAnalyzer("YourAnalyzer")
01155             p.c = EDAnalyzer("OurAnalyzer")
01156             path = Path(p.a)
01157             path *= p.b
01158             path += p.c
01159             self.assertEqual(str(path),'a+b+c')
01160             path = Path(p.a*p.b+p.c)
01161             self.assertEqual(str(path),'a+b+c')
01162 #            path = Path(p.a)*p.b+p.c #This leads to problems with sequences
01163 #            self.assertEqual(str(path),'((a*b)+c)')
01164             path = Path(p.a+ p.b*p.c)
01165             self.assertEqual(str(path),'a+b+c')
01166             path = Path(p.a*(p.b+p.c))
01167             self.assertEqual(str(path),'a+b+c')
01168             path = Path(p.a*(p.b+~p.c))
01169             self.assertEqual(str(path),'a+b+~c')
01170             p.es = ESProducer("AnESProducer")
01171             self.assertRaises(TypeError,Path,p.es)

def Config::TestModuleCommand::testPrefers (   self)

Definition at line 1295 of file Config.py.

01296                              :
01297             p = Process("Test")
01298             p.add_(ESSource("ForceSource"))
01299             p.juicer = ESProducer("JuicerProducer")
01300             p.prefer("ForceSource")
01301             p.prefer("juicer")
01302             self.assertEqual(p.dumpConfig(),
01303 """process Test = {
01304     es_module juicer = JuicerProducer { 
01305     }
01306     es_source  = ForceSource { 
01307     }
01308     es_prefer  = ForceSource { 
01309     }
01310     es_prefer juicer = JuicerProducer { 
01311     }
01312 }
01313 """)
01314             p.prefer("juicer",fooRcd=vstring("Foo"))
01315             self.assertEqual(p.dumpConfig(),
01316 """process Test = {
01317     es_module juicer = JuicerProducer { 
01318     }
01319     es_source  = ForceSource { 
01320     }
01321     es_prefer  = ForceSource { 
01322     }
01323     es_prefer juicer = JuicerProducer { 
01324         vstring fooRcd = {
01325             'Foo'
01326         }
01327 
01328     }
01329 }
01330 """)
01331             self.assertEqual(p.dumpPython(),
01332 """import FWCore.ParameterSet.Config as cms
01333 
01334 process = cms.Process("Test")
01335 
01336 process.juicer = cms.ESProducer("JuicerProducer")
01337 
01338 
01339 process.ForceSource = cms.ESSource("ForceSource")
01340 
01341 
01342 process.prefer("ForceSource")
01343 
01344 process.prefer("juicer",
01345     fooRcd = cms.vstring('Foo')
01346 )
01347 
01348 """)

def Config::TestModuleCommand::testProcessDumpConfig (   self)

Definition at line 1054 of file Config.py.

01055                                        :
01056             p = Process("test")
01057             p.a = EDAnalyzer("MyAnalyzer")
01058             p.p = Path(p.a)
01059             p.s = Sequence(p.a)
01060             p.r = Sequence(p.s)
01061             p.p2 = Path(p.s)
01062             p.schedule = Schedule(p.p2,p.p)
01063             d=p.dumpPython()
01064             self.assertEqual(d,
01065 """import FWCore.ParameterSet.Config as cms
01066 
01067 process = cms.Process("test")
01068 
01069 process.a = cms.EDAnalyzer("MyAnalyzer")
01070 
01071 
01072 process.s = cms.Sequence(process.a)
01073 
01074 
01075 process.r = cms.Sequence(process.s)
01076 
01077 
01078 process.p = cms.Path(process.a)
01079 
01080 
01081 process.p2 = cms.Path(process.s)
01082 
01083 
01084 process.schedule = cms.Schedule(process.p2,process.p)
01085 """)
01086             #Reverse order of 'r' and 's'
01087             p = Process("test")
01088             p.a = EDAnalyzer("MyAnalyzer")
01089             p.p = Path(p.a)
01090             p.r = Sequence(p.a)
01091             p.s = Sequence(p.r)
01092             p.p2 = Path(p.r)
01093             p.schedule = Schedule(p.p2,p.p)
01094             p.b = EDAnalyzer("YourAnalyzer")
01095             d=p.dumpPython()
01096             self.assertEqual(d,
01097 """import FWCore.ParameterSet.Config as cms
01098 
01099 process = cms.Process("test")
01100 
01101 process.a = cms.EDAnalyzer("MyAnalyzer")
01102 
01103 
01104 process.b = cms.EDAnalyzer("YourAnalyzer")
01105 
01106 
01107 process.r = cms.Sequence(process.a)
01108 
01109 
01110 process.s = cms.Sequence(process.r)
01111 
01112 
01113 process.p = cms.Path(process.a)
01114 
01115 
01116 process.p2 = cms.Path(process.r)
01117 
01118 
01119 process.schedule = cms.Schedule(process.p2,process.p)
""")
def Config::TestModuleCommand::testProcessExtend (   self)

Definition at line 1027 of file Config.py.

01028                                    :
01029             class FromArg(object):
01030                 def __init__(self,*arg,**args):
01031                     for name in args.iterkeys():
01032                         self.__dict__[name]=args[name]
01033 
01034             a=EDAnalyzer("MyAnalyzer")
01035             s1 = Sequence(a)
01036             s2 = Sequence(s1)
01037             s3 = Sequence(s2)
01038             d = FromArg(
01039                     a=a,
01040                     b=Service("Full"),
01041                     c=Path(a),
01042                     d=s2,
01043                     e=s1,
01044                     f=s3,
01045                     g=Sequence(s1+s2+s3)
01046                 )
01047             p = Process("Test")
01048             p.extend(d)
01049             self.assertEqual(p.a.type_(),"MyAnalyzer")
01050             self.assertRaises(AttributeError,getattr,p,'b')
01051             self.assertEqual(p.Full.type_(),"Full")
01052             self.assertEqual(str(p.c),'a')
01053             self.assertEqual(str(p.d),'a')

def Config::TestModuleCommand::testProcessInsertion (   self)

Definition at line 1005 of file Config.py.

01006                                       :
01007             p = Process("test")
01008             p.a = EDAnalyzer("MyAnalyzer")
01009             self.assert_( 'a' in p.analyzers_() )
01010             self.assert_( 'a' in p.analyzers)
01011             p.add_(Service("MessageLogger"))
01012             self.assert_('MessageLogger' in p.services_())
01013             self.assertEqual(p.MessageLogger.type_(), "MessageLogger")
01014             p.Tracer = Service("Tracer")
01015             self.assert_('Tracer' in p.services_())
01016             self.assertRaises(TypeError, setattr, *(p,'b',"this should fail"))
01017             self.assertRaises(TypeError, setattr, *(p,'bad',Service("MessageLogger")))
01018             self.assertRaises(ValueError, setattr, *(p,'bad',Source("PoolSource")))
01019             p.out = OutputModule("Outer")
01020             self.assertEqual(p.out.type_(), 'Outer')
01021             self.assert_( 'out' in p.outputModules_() )
01022 
01023             p.geom = ESSource("GeomProd")
01024             self.assert_('geom' in p.es_sources_())
01025             p.add_(ESSource("ConfigDB"))
01026             self.assert_('ConfigDB' in p.es_sources_())

def Config::TestModuleCommand::testSchedule (   self)

Definition at line 1188 of file Config.py.

01189                               :
01190             p = Process("test")
01191             p.a = EDAnalyzer("MyAnalyzer")
01192             p.b = EDAnalyzer("YourAnalyzer")
01193             p.c = EDAnalyzer("OurAnalyzer")
01194             p.path1 = Path(p.a)
01195             p.path2 = Path(p.b)
01196 
01197             s = Schedule(p.path1,p.path2)
01198             self.assertEqual(s[0],p.path1)
01199             self.assertEqual(s[1],p.path2)
01200             p.schedule = s
01201             self.assert_('b' in p.schedule.moduleNames())
01202             self.assert_(hasattr(p, 'b'))
01203             self.assert_(hasattr(p, 'c'))
01204             p.prune()
01205             self.assert_('b' in p.schedule.moduleNames())
01206             self.assert_(hasattr(p, 'b'))
01207             self.assert_(not hasattr(p, 'c'))
01208 
01209             #adding a path not attached to the Process should cause an exception
01210             p = Process("test")
01211             p.a = EDAnalyzer("MyAnalyzer")
01212             path1 = Path(p.a)
01213             s = Schedule(path1)
01214             self.assertRaises(RuntimeError, lambda : p.setSchedule_(s) )
01215 
01216             #make sure anonymous sequences work
01217             p = Process("test")
01218             p.a = EDAnalyzer("MyAnalyzer")
01219             p.b = EDAnalyzer("MyOtherAnalyzer")
01220             p.c = EDProducer("MyProd")
01221             path1 = Path(p.c*Sequence(p.a+p.b))
01222             s = Schedule(path1)
01223             self.assert_('a' in s.moduleNames())
01224             self.assert_('b' in s.moduleNames())
01225             self.assert_('c' in s.moduleNames())
01226             

def Config::TestModuleCommand::testSecSource (   self)

Definition at line 1120 of file Config.py.

01121                                :
01122             p = Process('test')
01123             p.a = SecSource("MySecSource")
01124             self.assertEqual(p.dumpPython().replace('\n',''),'import FWCore.ParameterSet.Config as cmsprocess = cms.Process("test")process.a = cms.SecSource("MySecSource")')

def Config::TestModuleCommand::testSequence (   self)

Definition at line 1135 of file Config.py.

01136                               :
01137             p = Process('test')
01138             p.a = EDAnalyzer("MyAnalyzer")
01139             p.b = EDAnalyzer("YourAnalyzer")
01140             p.c = EDAnalyzer("OurAnalyzer")
01141             p.s = Sequence(p.a*p.b)
01142             self.assertEqual(str(p.s),'a+b')
01143             self.assertEqual(p.s.label_(),'s')
01144             path = Path(p.c+p.s)
01145             self.assertEqual(str(path),'c+a+b')
01146             p._validateSequence(path, 'p1')
01147             notInProcess = EDAnalyzer('NotInProcess')
01148             p2 = Path(p.c+p.s*notInProcess)
01149             self.assertRaises(RuntimeError, p._validateSequence, p2, 'p2')

def Config::TestModuleCommand::testSubProcess (   self)

Definition at line 1367 of file Config.py.

01368                                 :
01369             process = Process("Parent")
01370             subProcess = Process("Child")
01371             subProcess.a = EDProducer("A")
01372             subProcess.p = Path(subProcess.a)
01373             subProcess.add_(Service("Foo"))
01374             process.add_( SubProcess(subProcess) )
01375             d = process.dumpPython()
01376             equalD ="""import FWCore.ParameterSet.Config as cms
01377 
01378 process = cms.Process("Parent")
01379 
01380 parentProcess = process
01381 import FWCore.ParameterSet.Config as cms
01382 
01383 process = cms.Process("Child")
01384 
01385 process.a = cms.EDProducer("A")
01386 
01387 
01388 process.p = cms.Path(process.a)
01389 
01390 
01391 process.Foo = cms.Service("Foo")
01392 
01393 
01394 childProcess = process
01395 process = parentProcess
01396 process.subProcess = cms.SubProcess( process = childProcess, SelectEvents = cms.untracked.PSet(
01397 
01398 ), outputCommands = cms.untracked.vstring())
01399 """
01400             equalD = equalD.replace("parentProcess","parentProcess"+str(hash(process.subProcess)))
01401             self.assertEqual(d,equalD)
01402             p = TestMakePSet()
01403             process.subProcess.insertInto(p,"dummy")
01404             self.assertEqual((True,['a']),p.values["@sub_process"][1].values["process"][1].values['@all_modules'])
01405             self.assertEqual((True,['p']),p.values["@sub_process"][1].values["process"][1].values['@paths'])
01406             self.assertEqual({'@service_type':(True,'Foo')}, p.values["@sub_process"][1].values["process"][1].values["services"][1][0].values)
01407 
    unittest.main()
def Config::TestModuleCommand::testTypedParameterizable (   self)

Definition at line 998 of file Config.py.

00999                                           :
01000             p = _TypedParameterizable("blah", b=int32(1))
01001             #see if copy works deeply
01002             other = p.copy()
01003             other.b = 2
01004             self.assertNotEqual(p.b,other.b)

def Config::TestModuleCommand::testUsing (   self)

Definition at line 1253 of file Config.py.

01254                            :
01255             p = Process('test')
01256             p.block = PSet(a = int32(1))
01257             p.modu = EDAnalyzer('Analyzer', p.block, b = int32(2))
01258             self.assertEqual(p.modu.a.value(),1)
01259             self.assertEqual(p.modu.b.value(),2)