예제 #1
0
 def testEDAnalyzer(self):
     empty = EDAnalyzer("Empty")
     withParam = EDAnalyzer("Parameterized",foo=untracked(int32(1)), bar = untracked(string("it")))
     self.assertEqual(withParam.foo.value(), 1)
     self.assertEqual(withParam.bar.value(), "it")
     aCopy = withParam.copy()
     self.assertEqual(aCopy.foo.value(), 1)
     self.assertEqual(aCopy.bar.value(), "it")
     withType = EDAnalyzer("Test",type = int32(1))
     self.assertEqual(withType.type.value(),1)
     block = PSet(i = int32(9))
     m = EDProducer("DumbProducer", block, j = int32(10))
     self.assertEqual(9, m.i.value())
     self.assertEqual(10, m.j.value())
예제 #2
0
 def testService(self):
     empty = Service("Empty")
     withParam = Service("Parameterized",foo=untracked(int32(1)), bar = untracked(string("it")))
     self.assertEqual(withParam.foo.value(), 1)
     self.assertEqual(withParam.bar.value(), "it")
     self.assertEqual(empty.dumpPython(), "cms.Service(\"Empty\")\n")
     self.assertEqual(withParam.dumpPython(), "cms.Service(\"Parameterized\",\n    bar = cms.untracked.string(\'it\'),\n    foo = cms.untracked.int32(1)\n)\n")
예제 #3
0
        def testSwitchProducer(self):
            # Constructor
            sp = SwitchProducerTest(test1 = EDProducer("Foo"), test2 = EDProducer("Bar"))
            self.assertEqual(sp.test1.type_(), "Foo")
            self.assertEqual(sp.test2.type_(), "Bar")
            self.assertRaises(ValueError, lambda: SwitchProducerTest(nonexistent = EDProducer("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = EDAnalyzer("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = EDFilter("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = Source("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = OutputModule("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = Looper("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = EDAlias()))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = Service("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = ESSource("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = ESProducer("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = ESPrefer("Foo")))
            self.assertRaises(TypeError, lambda: SwitchProducerTest(test1 = SwitchProducerTest(test1 = EDProducer("Foo"))))

            # Case decision
            sp = SwitchProducerTest(test1 = EDProducer("Foo"), test2 = EDProducer("Bar"))
            self.assertEqual(sp._getProducer().type_(), "Bar")
            sp = SwitchProducerTest1Dis(test1 = EDProducer("Foo"), test2 = EDProducer("Bar"))
            self.assertEqual(sp._getProducer().type_(), "Bar")
            sp = SwitchProducerTest2Dis(test1 = EDProducer("Foo"), test2 = EDProducer("Bar"))
            self.assertEqual(sp._getProducer().type_(), "Foo")
            sp = SwitchProducerTest(test1 = EDProducer("Bar"))
            self.assertEqual(sp._getProducer().type_(), "Bar")
            sp = SwitchProducerTest1Dis(test1 = EDProducer("Bar"))
            self.assertRaises(RuntimeError, sp._getProducer)

            # Mofications
            from Types import int32, string, PSet
            sp = SwitchProducerTest(test1 = EDProducer("Foo",
                                                       a = int32(1),
                                                       b = PSet(c = int32(2))),
                                    test2 = EDProducer("Bar",
                                                       aa = int32(11),
                                                       bb = PSet(cc = int32(12))))
            # Simple clone
            cl = sp.clone()
            self.assertEqual(cl.test1.type_(), "Foo")
            self.assertEqual(cl.test1.a.value(), 1)
            self.assertEqual(cl.test1.b.c.value(), 2)
            self.assertEqual(cl.test2.type_(), "Bar")
            self.assertEqual(cl.test2.aa.value(), 11)
            self.assertEqual(cl.test2.bb.cc.value(), 12)
            # Modify clone
            cl.test1.a = 3
            self.assertEqual(cl.test1.a.value(), 3)
            cl.test1 = EDProducer("Fred")
            self.assertEqual(cl.test1.type_(), "Fred")
            def _assignEDAnalyzer():
                cl.test1 = EDAnalyzer("Foo")
            self.assertRaises(TypeError, _assignEDAnalyzer)
            def _assignSwitchProducer():
                cl.test1 = SwitchProducerTest(test1 = SwitchProducerTest(test1 = EDProducer("Foo")))
            self.assertRaises(TypeError, _assignSwitchProducer)
            # Modify values with a dict
            cl = sp.clone(test1 = dict(a = 4, b = dict(c = None)),
                          test2 = dict(aa = 15, bb = dict(cc = 45, dd = string("foo"))))
            self.assertEqual(cl.test1.a.value(), 4)
            self.assertEqual(cl.test1.b.hasParameter("c"), False)
            self.assertEqual(cl.test2.aa.value(), 15)
            self.assertEqual(cl.test2.bb.cc.value(), 45)
            self.assertEqual(cl.test2.bb.dd.value(), "foo")
            # Replace/add/remove EDProducers
            cl = sp.clone(test1 = EDProducer("Fred", x = int32(42)),
                          test3 = EDProducer("Wilma", y = int32(24)),
                          test2 = None)
            self.assertEqual(cl.test1.type_(), "Fred")
            self.assertEqual(cl.test1.x.value(), 42)
            self.assertEqual(cl.test3.type_(), "Wilma")
            self.assertEqual(cl.test3.y.value(), 24)
            self.assertEqual(hasattr(cl, "test2"), False)
            self.assertRaises(TypeError, lambda: sp.clone(test1 = EDAnalyzer("Foo")))
            self.assertRaises(TypeError, lambda: sp.clone(test1 = SwitchProducerTest(test1 = SwitchProducerTest(test1 = EDProducer("Foo")))))

            # Dump
            sp = SwitchProducerTest(test2 = EDProducer("Foo",
                                                       a = int32(1),
                                                       b = PSet(c = int32(2))),
                                    test1 = EDProducer("Bar",
                                                       aa = int32(11),
                                                       bb = PSet(cc = int32(12))))
            self.assertEqual(sp.dumpPython(),
"""SwitchProducerTest(
    test1 = cms.EDProducer("Bar",
        aa = cms.int32(11),
        bb = cms.PSet(
            cc = cms.int32(12)
        )
    ),
    test2 = cms.EDProducer("Foo",
        a = cms.int32(1),
        b = cms.PSet(
            c = cms.int32(2)
        )
    )
)
""")
            # Pickle
            import pickle
            sp = SwitchProducerPickleable(cpu = EDProducer("Foo"))
            pkl = pickle.dumps(sp)
            unpkl = pickle.loads(pkl)
            self.assertEqual(unpkl.cpu.type_(), "Foo")