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())
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")
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")