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 testTypedParameterizable
def testUsing

Detailed Description

Definition at line 832 of file Config.py.


Member Function Documentation

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

Definition at line 833 of file Config.py.

00834                        :
00835             """Nothing to do """
            None
def Config::TestModuleCommand::testCloneSequence (   self)

Definition at line 1043 of file Config.py.

01044                                    :
01045             p = Process("test")
01046             a = EDAnalyzer("MyAnalyzer")
01047             p.a = a
01048             a.setLabel("a")
01049             b = EDAnalyzer("YOurAnalyzer")
01050             p.b = b
01051             b.setLabel("b")
01052             path = Path(a * b)
01053             p.path = Path(p.a*p.b)
01054             lookuptable = {id(a): p.a, id(b): p.b}
01055             #self.assertEqual(str(path),str(path._postProcessFixup(lookuptable)))
01056             #lookuptable = p._cloneToObjectDict
01057             #self.assertEqual(str(path),str(path._postProcessFixup(lookuptable)))
01058             self.assertEqual(str(path),str(p.path))

def Config::TestModuleCommand::testExamples (   self)

Definition at line 1154 of file Config.py.

01155                               :
01156             p = Process("Test")
01157             p.source = Source("PoolSource",fileNames = untracked(string("file:reco.root")))
01158             p.foos = EDProducer("FooProducer")
01159             p.bars = EDProducer("BarProducer", foos=InputTag("foos"))
01160             p.out = OutputModule("PoolOutputModule",fileName=untracked(string("file:foos.root")))
01161             p.bars.foos = 'Foosball'
01162             self.assertEqual(p.bars.foos, InputTag('Foosball'))
01163             p.p = Path(p.foos*p.bars)
01164             p.e = EndPath(p.out)
01165             p.add_(Service("MessageLogger"))

def Config::TestModuleCommand::testFreeze (   self)

Definition at line 1220 of file Config.py.

01221                             :
01222             process = Process("Freeze")
01223             m = EDProducer("M", p=PSet(i = int32(1)))
01224             m.p.i = 2
01225             process.m = m
01226             # should be frozen
01227             #self.assertRaises(ValueError, setattr, m.p, 'i', 3)
01228             #self.assertRaises(ValueError, setattr, m, 'p', PSet(i=int32(1)))
01229             #self.assertRaises(ValueError, setattr, m.p, 'j', 1)
01230             #self.assertRaises(ValueError, setattr, m, 'j', 1)
01231             # But OK to change through the process
01232             process.m.p.i = 4
01233             self.assertEqual(process.m.p.i.value(), 4)
01234             process.m.p = PSet(j=int32(1))
01235             # should work to clone it, though
01236             m2 = m.clone(p = PSet(i = int32(5)), j = int32(8))
01237             m2.p.i = 6
01238             m2.j = 8
01239 
01240 
    unittest.main()
def Config::TestModuleCommand::testGlobalReplace (   self)

Definition at line 996 of file Config.py.

00997                                    :
00998             p = Process('test')
00999             p.a = EDAnalyzer("MyAnalyzer")
01000             p.b = EDAnalyzer("YourAnalyzer")
01001             p.c = EDAnalyzer("OurAnalyzer")
01002             p.s = Sequence(p.a*p.b)
01003             p.p = Path(p.c+p.s+p.a)
01004             new = EDAnalyzer("NewAnalyzer")
01005             p.globalReplace("a",new)

def Config::TestModuleCommand::testImplicitSchedule (   self)

Definition at line 1098 of file Config.py.

01099                                       :
01100             p = Process("test")
01101             p.a = EDAnalyzer("MyAnalyzer")
01102             p.b = EDAnalyzer("YourAnalyzer")
01103             p.c = EDAnalyzer("OurAnalyzer")
01104             p.path1 = Path(p.a)
01105             p.path2 = Path(p.b)
01106             self.assert_(p.schedule is None)
01107             pths = p.paths
01108             keys = pths.keys()
01109             self.assertEqual(pths[keys[0]],p.path1)
01110             self.assertEqual(pths[keys[1]],p.path2)
01111 
01112             p = Process("test")
01113             p.a = EDAnalyzer("MyAnalyzer")
01114             p.b = EDAnalyzer("YourAnalyzer")
01115             p.c = EDAnalyzer("OurAnalyzer")
01116             p.path2 = Path(p.b)
01117             p.path1 = Path(p.a)
01118             self.assert_(p.schedule is None)
01119             pths = p.paths
01120             keys = pths.keys()
01121             self.assertEqual(pths[keys[1]],p.path1)
01122             self.assertEqual(pths[keys[0]],p.path2)
01123 

def Config::TestModuleCommand::testOverride (   self)

Definition at line 1131 of file Config.py.

01132                               :
01133             p = Process('test')
01134             a = EDProducer("A", a1=int32(0))
01135             self.assert_(not a.isModified())
01136             a.a1 = 1
01137             self.assert_(a.isModified())
01138             p.a = a
01139             self.assertEqual(p.a.a1.value(), 1)
01140             # try adding an unmodified module.
01141             # should accept it
01142             p.a = EDProducer("A", a1=int32(2))
01143             self.assertEqual(p.a.a1.value(), 2)
01144             # try adding a modified module.  Should throw
01145             # no longer, since the same (modified) say, geometry
01146             # could come from more than one cff
01147             b = EDProducer("A", a1=int32(3))
01148             b.a1 = 4
01149             #self.assertRaises(RuntimeError, setattr, *(p,'a',b))
01150             ps1 = PSet(a = int32(1))
01151             ps2 = PSet(a = int32(2))
01152             self.assertRaises(ValueError, EDProducer, 'C', ps1, ps2)
01153             self.assertRaises(ValueError, EDProducer, 'C', ps1, a=int32(3))

def Config::TestModuleCommand::testParameterizable (   self)

Definition at line 836 of file Config.py.

00837                                      :
00838             p = _Parameterizable()
00839             self.assertEqual(len(p.parameterNames_()),0)
00840             p.a = int32(1)
00841             self.assert_('a' in p.parameterNames_())
00842             self.assertEqual(p.a.value(), 1)
00843             p.a = 10
00844             self.assertEqual(p.a.value(), 10)
00845             p.a = untracked(int32(1))
00846             self.assertEqual(p.a.value(), 1)
00847             self.failIf(p.a.isTracked())
00848             p.a = untracked.int32(1)
00849             self.assertEqual(p.a.value(), 1)
00850             self.failIf(p.a.isTracked())
00851             p = _Parameterizable(foo=int32(10), bar = untracked(double(1.0)))
00852             self.assertEqual(p.foo.value(), 10)
00853             self.assertEqual(p.bar.value(),1.0)
00854             self.failIf(p.bar.isTracked())
00855             self.assertRaises(TypeError,setattr,(p,'c',1))
00856             p = _Parameterizable(a=PSet(foo=int32(10), bar = untracked(double(1.0))))
00857             self.assertEqual(p.a.foo.value(),10)
00858             self.assertEqual(p.a.bar.value(),1.0)
00859             p.b = untracked(PSet(fii = int32(1)))
00860             self.assertEqual(p.b.fii.value(),1)
00861             self.failIf(p.b.isTracked())
00862             #test the fact that values can be shared
00863             v = int32(10)
00864             p=_Parameterizable(a=v)
00865             v.setValue(11)
00866             self.assertEqual(p.a.value(),11)
00867             p.a = 12
00868             self.assertEqual(p.a.value(),12)
            self.assertEqual(v.value(),12)
def Config::TestModuleCommand::testPath (   self)

Definition at line 1021 of file Config.py.

01022                           :
01023             p = Process("test")
01024             p.a = EDAnalyzer("MyAnalyzer")
01025             p.b = EDAnalyzer("YourAnalyzer")
01026             p.c = EDAnalyzer("OurAnalyzer")
01027             path = Path(p.a)
01028             path *= p.b
01029             path += p.c
01030             self.assertEqual(str(path),'a+b+c')
01031             path = Path(p.a*p.b+p.c)
01032             self.assertEqual(str(path),'a+b+c')
01033 #            path = Path(p.a)*p.b+p.c #This leads to problems with sequences
01034 #            self.assertEqual(str(path),'((a*b)+c)')
01035             path = Path(p.a+ p.b*p.c)
01036             self.assertEqual(str(path),'a+b+c')
01037             path = Path(p.a*(p.b+p.c))
01038             self.assertEqual(str(path),'a+b+c')
01039             path = Path(p.a*(p.b+~p.c))
01040             self.assertEqual(str(path),'a+b+~c')
01041             p.es = ESProducer("AnESProducer")
01042             self.assertRaises(TypeError,Path,p.es)

def Config::TestModuleCommand::testPrefers (   self)

Definition at line 1166 of file Config.py.

01167                              :
01168             p = Process("Test")
01169             p.add_(ESSource("ForceSource"))
01170             p.juicer = ESProducer("JuicerProducer")
01171             p.prefer("ForceSource")
01172             p.prefer("juicer")
01173             self.assertEqual(p.dumpConfig(),
01174 """process Test = {
01175     es_module juicer = JuicerProducer { 
01176     }
01177     es_source  = ForceSource { 
01178     }
01179     es_prefer  = ForceSource { 
01180     }
01181     es_prefer juicer = JuicerProducer { 
01182     }
01183 }
01184 """)
01185             p.prefer("juicer",fooRcd=vstring("Foo"))
01186             self.assertEqual(p.dumpConfig(),
01187 """process Test = {
01188     es_module juicer = JuicerProducer { 
01189     }
01190     es_source  = ForceSource { 
01191     }
01192     es_prefer  = ForceSource { 
01193     }
01194     es_prefer juicer = JuicerProducer { 
01195         vstring fooRcd = {
01196             'Foo'
01197         }
01198 
01199     }
01200 }
01201 """)
01202             self.assertEqual(p.dumpPython(),
01203 """import FWCore.ParameterSet.Config as cms
01204 
01205 process = cms.Process("Test")
01206 
01207 process.juicer = cms.ESProducer("JuicerProducer")
01208 
01209 
01210 process.ForceSource = cms.ESSource("ForceSource")
01211 
01212 
01213 process.prefer("ForceSource")
01214 
01215 process.prefer("juicer",
01216     fooRcd = cms.vstring('Foo')
01217 )
01218 
01219 """)

def Config::TestModuleCommand::testProcessDumpConfig (   self)

Definition at line 925 of file Config.py.

00926                                        :
00927             p = Process("test")
00928             p.a = EDAnalyzer("MyAnalyzer")
00929             p.p = Path(p.a)
00930             p.s = Sequence(p.a)
00931             p.r = Sequence(p.s)
00932             p.p2 = Path(p.s)
00933             p.schedule = Schedule(p.p2,p.p)
00934             d=p.dumpPython()
00935             self.assertEqual(d,
00936 """import FWCore.ParameterSet.Config as cms
00937 
00938 process = cms.Process("test")
00939 
00940 process.a = cms.EDAnalyzer("MyAnalyzer")
00941 
00942 
00943 process.s = cms.Sequence(process.a)
00944 
00945 
00946 process.r = cms.Sequence(process.s)
00947 
00948 
00949 process.p = cms.Path(process.a)
00950 
00951 
00952 process.p2 = cms.Path(process.s)
00953 
00954 
00955 process.schedule = cms.Schedule(process.p2,process.p)
00956 """)
00957             #Reverse order of 'r' and 's'
00958             p = Process("test")
00959             p.a = EDAnalyzer("MyAnalyzer")
00960             p.p = Path(p.a)
00961             p.r = Sequence(p.a)
00962             p.s = Sequence(p.r)
00963             p.p2 = Path(p.r)
00964             p.schedule = Schedule(p.p2,p.p)
00965             p.b = EDAnalyzer("YourAnalyzer")
00966             d=p.dumpPython()
00967             self.assertEqual(d,
00968 """import FWCore.ParameterSet.Config as cms
00969 
00970 process = cms.Process("test")
00971 
00972 process.a = cms.EDAnalyzer("MyAnalyzer")
00973 
00974 
00975 process.b = cms.EDAnalyzer("YourAnalyzer")
00976 
00977 
00978 process.r = cms.Sequence(process.a)
00979 
00980 
00981 process.s = cms.Sequence(process.r)
00982 
00983 
00984 process.p = cms.Path(process.a)
00985 
00986 
00987 process.p2 = cms.Path(process.r)
00988 
00989 
00990 process.schedule = cms.Schedule(process.p2,process.p)
""")
def Config::TestModuleCommand::testProcessExtend (   self)

Definition at line 898 of file Config.py.

00899                                    :
00900             class FromArg(object):
00901                 def __init__(self,*arg,**args):
00902                     for name in args.iterkeys():
00903                         self.__dict__[name]=args[name]
00904 
00905             a=EDAnalyzer("MyAnalyzer")
00906             s1 = Sequence(a)
00907             s2 = Sequence(s1)
00908             s3 = Sequence(s2)
00909             d = FromArg(
00910                     a=a,
00911                     b=Service("Full"),
00912                     c=Path(a),
00913                     d=s2,
00914                     e=s1,
00915                     f=s3,
00916                     g=Sequence(s1+s2+s3)
00917                 )
00918             p = Process("Test")
00919             p.extend(d)
00920             self.assertEqual(p.a.type_(),"MyAnalyzer")
00921             self.assertRaises(AttributeError,getattr,p,'b')
00922             self.assertEqual(p.Full.type_(),"Full")
00923             self.assertEqual(str(p.c),'a')
00924             self.assertEqual(str(p.d),'a')

def Config::TestModuleCommand::testProcessInsertion (   self)

Definition at line 876 of file Config.py.

00877                                       :
00878             p = Process("test")
00879             p.a = EDAnalyzer("MyAnalyzer")
00880             self.assert_( 'a' in p.analyzers_() )
00881             self.assert_( 'a' in p.analyzers)
00882             p.add_(Service("MessageLogger"))
00883             self.assert_('MessageLogger' in p.services_())
00884             self.assertEqual(p.MessageLogger.type_(), "MessageLogger")
00885             p.Tracer = Service("Tracer")
00886             self.assert_('Tracer' in p.services_())
00887             self.assertRaises(TypeError, setattr, *(p,'b',"this should fail"))
00888             self.assertRaises(TypeError, setattr, *(p,'bad',Service("MessageLogger")))
00889             self.assertRaises(ValueError, setattr, *(p,'bad',Source("PoolSource")))
00890             p.out = OutputModule("Outer")
00891             self.assertEqual(p.out.type_(), 'Outer')
00892             self.assert_( 'out' in p.outputModules_() )
00893 
00894             p.geom = ESSource("GeomProd")
00895             self.assert_('geom' in p.es_sources_())
00896             p.add_(ESSource("ConfigDB"))
00897             self.assert_('ConfigDB' in p.es_sources_())

def Config::TestModuleCommand::testSchedule (   self)

Definition at line 1059 of file Config.py.

01060                               :
01061             p = Process("test")
01062             p.a = EDAnalyzer("MyAnalyzer")
01063             p.b = EDAnalyzer("YourAnalyzer")
01064             p.c = EDAnalyzer("OurAnalyzer")
01065             p.path1 = Path(p.a)
01066             p.path2 = Path(p.b)
01067 
01068             s = Schedule(p.path1,p.path2)
01069             self.assertEqual(s[0],p.path1)
01070             self.assertEqual(s[1],p.path2)
01071             p.schedule = s
01072             self.assert_('b' in p.schedule.moduleNames())
01073             self.assert_(hasattr(p, 'b'))
01074             self.assert_(hasattr(p, 'c'))
01075             p.prune()
01076             self.assert_('b' in p.schedule.moduleNames())
01077             self.assert_(hasattr(p, 'b'))
01078             self.assert_(not hasattr(p, 'c'))
01079 
01080             #adding a path not attached to the Process should cause an exception
01081             p = Process("test")
01082             p.a = EDAnalyzer("MyAnalyzer")
01083             path1 = Path(p.a)
01084             s = Schedule(path1)
01085             self.assertRaises(RuntimeError, lambda : p.setSchedule_(s) )
01086 
01087             #make sure anonymous sequences work
01088             p = Process("test")
01089             p.a = EDAnalyzer("MyAnalyzer")
01090             p.b = EDAnalyzer("MyOtherAnalyzer")
01091             p.c = EDProducer("MyProd")
01092             path1 = Path(p.c*Sequence(p.a+p.b))
01093             s = Schedule(path1)
01094             self.assert_('a' in s.moduleNames())
01095             self.assert_('b' in s.moduleNames())
01096             self.assert_('c' in s.moduleNames())
01097             

def Config::TestModuleCommand::testSecSource (   self)

Definition at line 991 of file Config.py.

00992                                :
00993             p = Process('test')
00994             p.a = SecSource("MySecSource")
00995             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 1006 of file Config.py.

01007                               :
01008             p = Process('test')
01009             p.a = EDAnalyzer("MyAnalyzer")
01010             p.b = EDAnalyzer("YourAnalyzer")
01011             p.c = EDAnalyzer("OurAnalyzer")
01012             p.s = Sequence(p.a*p.b)
01013             self.assertEqual(str(p.s),'a+b')
01014             self.assertEqual(p.s.label_(),'s')
01015             path = Path(p.c+p.s)
01016             self.assertEqual(str(path),'c+a+b')
01017             p._validateSequence(path, 'p1')
01018             notInProcess = EDAnalyzer('NotInProcess')
01019             p2 = Path(p.c+p.s*notInProcess)
01020             self.assertRaises(RuntimeError, p._validateSequence, p2, 'p2')

def Config::TestModuleCommand::testTypedParameterizable (   self)

Definition at line 869 of file Config.py.

00870                                           :
00871             p = _TypedParameterizable("blah", b=int32(1))
00872             #see if copy works deeply
00873             other = p.copy()
00874             other.b = 2
00875             self.assertNotEqual(p.b,other.b)

def Config::TestModuleCommand::testUsing (   self)

Definition at line 1124 of file Config.py.

01125                            :
01126             p = Process('test')
01127             p.block = PSet(a = int32(1))
01128             p.modu = EDAnalyzer('Analyzer', p.block, b = int32(2))
01129             self.assertEqual(p.modu.a.value(),1)
01130             self.assertEqual(p.modu.b.value(),2)