コード例 #1
0
def configure(version):
    from Gaudi.Configuration import (importOptions, ApplicationMgr, MessageSvc)
    from Configurables import DDDBConf, CondDB, CondDBAccessSvc
    dddbConf = DDDBConf()
    cdb = CondDB()

    DBs = []
    for i in range(3):
        data = {"name": "TESTDB%d" % i}
        DBs.append(
            CondDBAccessSvc(
                data["name"],
                ConnectionString="sqlite_file:../data/%(name)s.db/%(name)s" %
                data))

    cdb.PartitionConnectionString["DDDB"] = DBs[0].ConnectionString
    cdb.Tags["DDDB"] = ""
    if version == 1:
        cdb.addAlternative(DBs[1], '/AutoMap/FolderSet2')
    elif version == 2:
        cdb.addAlternative(DBs[2], '/AutoMap/FolderSet3')
    elif version == 3:
        cdb.addAlternative(DBs[1], '/AutoMap/FolderSet2/ObjectA')
    elif version == 4:
        cdb.addLayer(DBs[1])
        cdb.addLayer(DBs[2])
    elif version != 0:
        raise RuntimeError("Invalid version number")

    ApplicationMgr(TopAlg=["LoadDDDB"], EvtSel="NONE")
コード例 #2
0
class DetCondConfigurationTest(unittest.TestCase):

    def assertEqualsConfig(self, lhs, rhs):
        self.assertEquals(lhs.getFullName(), rhs.getFullName())
    
    def setUp(self):
        unittest.TestCase.setUp(self)
        self.DDDB = DDDBConf()
        self.CondDB = CondDB()
    
    def tearDown(self):
        self.DDDB = self.CondDB = None
        purge()
        GaudiKernel.Configurable._appliedConfigurableUsers_ = False
        unittest.TestCase.tearDown(self)

    def checkHeartBeat(self, conf, chkstr = ""):
        conf = allConfigurables[eval(conf.split(':')[0]).split("/")[1]]
        if isinstance(conf, CondDBLayeringSvc):
            conf = conf.Layers[-1]# Only check the bottom layer
        self.assertEquals(conf.getProp("HeartBeatCondition"), chkstr)


    def test_000_originalConfiguration(self):
        """Check the default configuration"""
        applyConfigurableUsers()
        global orig_reader, orig_dict
        orig_reader = allConfigurables["CondDBCnvSvc"].CondDBReader
        self.assertEquals(orig_reader.__class__.__name__,
                          "CondDBDispatcherSvc")
        orig_dict = dict(orig_reader.Alternatives)
        
    def test_010_addCondDBLayer_1(self):
        """Add one layer from CondDBAccessSvc instance""" 
        # Add the layer
        layer = CondDBAccessSvc("layer")
        self.CondDB.addLayer(layer)
        
        applyConfigurableUsers()
        
        reader = allConfigurables["CondDBCnvSvc"].CondDBReader
        # check if we have a layering svc
        self.assertEquals(reader.__class__.__name__, "CondDBLayeringSvc")
        # check for the new layer...
        self.assertEqual(reader.Layers[0], layer)
        # ... plus the original one
        self.assertEqualsConfig(reader.Layers[1], orig_reader)
                          
    def test_010_addCondDBLayer_2(self):
        """Add layers from allowed Configurable instances""" 
        # Add the layers (one per type)
        types = [CondDBAccessSvc,
                 CondDBDispatcherSvc,
                 CondDBLayeringSvc,
                 CondDBTimeSwitchSvc,
                 CondDBSQLiteCopyAccSvc]
        layers = []
        for i in range(len(types)):
            layer = types[i]("layer_%d"%i)
            layers.append(layer)
            self.CondDB.addLayer(layer)
        
        applyConfigurableUsers()
        
        reader = allConfigurables["CondDBCnvSvc"].CondDBReader
        # check if we have a layering svc
        self.assertEquals(reader.__class__.__name__, "CondDBLayeringSvc")
        # correct size?
        self.assertEquals(len(reader.Layers), len(layers) + 1)
        # correct order (inverse of insertion order)...
        layers.reverse()
        for i in range(len(types)):
            self.assertEqual(reader.Layers[i], layers[i])
        # ... plus the original one
        self.assertEqualsConfig(reader.Layers[len(layers)], orig_reader)
        
    def test_020_addCondDBAlternative_1(self):
        """Add one alternative from CondDBAccessSvc instance"""
        # Add the alternative
        alternative = CondDBAccessSvc("alternative")
        self.CondDB.addAlternative(alternative, "/Test")

        applyConfigurableUsers()
        
        reader = allConfigurables["CondDBCnvSvc"].CondDBReader
        # the reader should not have changed
        self.assertEqualsConfig(reader, orig_reader)
        # correct size?
        self.assertEquals(len(reader.Alternatives), len(orig_dict) + 1)
        # check the previous alternatives
        for k in orig_dict:
            self.assertEqualsConfig(reader.Alternatives[k], orig_dict[k])
        # plus the new one
        self.assertEqualsConfig(reader.Alternatives["/Test"], alternative)
        
    def test_020_addCondDBAlternative_2(self):
        """Replace one alternative from CondDBAccessSvc instance"""
        path = orig_dict.keys()[0]
        
        # Add the alternative
        alternative = CondDBAccessSvc("alternative")
        self.CondDB.addAlternative(alternative, path)

        applyConfigurableUsers()
        
        reader = allConfigurables["CondDBCnvSvc"].CondDBReader
        # the reader should not have changed
        self.assertEqualsConfig(reader, orig_reader)
        # correct size?
        self.assertEquals(len(reader.Alternatives), len(orig_dict))
        # check the previous alternatives
        for k in orig_dict:
            if k != path:
                self.assertEqualsConfig(reader.Alternatives[k], orig_dict[k])
            else:
                self.assertEqualsConfig(reader.Alternatives[k], alternative)

    def test_030_heartbeat(self):
        """HeartBeat condition (off-line, Oracle, default)"""
        self.CondDB.Online = False
        self.CondDB.UseOracle = True
        applyConfigurableUsers()
        
        hbc = allConfigurables["ONLINE"].getProp("HeartBeatCondition")
        
        self.assertEquals(hbc, "/Conditions/Online/LHCb/Tick")
        
    def test_031_heartbeat(self):
        """HeartBeat condition (off-line, Oracle, ignore)"""
        self.CondDB.Online = False
        self.CondDB.UseOracle = True
        self.CondDB.IgnoreHeartBeat = True
        applyConfigurableUsers()
        
        hbc = allConfigurables["ONLINE"].getProp("HeartBeatCondition")
        
        self.assertEquals(hbc, "")
    
    def test_032_heartbeat(self):
        """HeartBeat condition (off-line, SQLite, default)"""
        self.CondDB.Online = False
        self.CondDB.UseOracle = False
        applyConfigurableUsers()
        
        online = allConfigurables["ONLINE"]
        for conf in online.Readers[:-1]:
            self.checkHeartBeat(conf, "")
        conf = online.Readers[-1]
        self.checkHeartBeat(conf, "/Conditions/Online/LHCb/Tick")
        
    def test_033_heartbeat(self):
        """HeartBeat condition (off-line, SQLite, ignore)"""
        self.CondDB.Online = False
        self.CondDB.UseOracle = False
        self.CondDB.IgnoreHeartBeat = True
        applyConfigurableUsers()
        
        online = allConfigurables["ONLINE"]
        for conf in online.Readers:
            self.checkHeartBeat(conf, "")
        
    def test_040_heartbeat(self):
        """HeartBeat condition (on-line, Oracle, not ignore)"""
        self.CondDB.Online = True
        self.CondDB.UseOracle = True
        self.CondDB.IgnoreHeartBeat = False
        applyConfigurableUsers()
        
        hbc = allConfigurables["ONLINE"].getProp("HeartBeatCondition")
        
        self.assertEquals(hbc, "/Conditions/Online/LHCb/Tick")
        
    def test_041_heartbeat(self):
        """HeartBeat condition (on-line, Oracle, default)"""
        self.CondDB.Online = True
        self.CondDB.UseOracle = True
        applyConfigurableUsers()
        
        hbc = allConfigurables["ONLINE"].getProp("HeartBeatCondition")
        
        self.assertEquals(hbc, "")
    
    def test_042_heartbeat(self):
        """HeartBeat condition (on-line, SQLite, not ignore)"""
        self.CondDB.Online = True
        self.CondDB.UseOracle = False
        self.CondDB.IgnoreHeartBeat = False
        applyConfigurableUsers()
        
        online = allConfigurables["ONLINE"]
        for conf in online.Readers[:-1]:
            self.checkHeartBeat(conf, "")
        conf = online.Readers[-1]
        self.checkHeartBeat(conf, "/Conditions/Online/LHCb/Tick")
        
    def test_043_heartbeat(self):
        """HeartBeat condition (on-line, SQLite, default)"""
        self.CondDB.Online = True
        self.CondDB.UseOracle = False
        applyConfigurableUsers()
        
        online = allConfigurables["ONLINE"]
        for conf in online.Readers:
            self.checkHeartBeat(conf, "")