Ejemplo n.º 1
0
    def testC_MultipleSites(self):
        """
        _MultipleSites_

        See if it opens blocks in multiple sites.
        """

        # Skip this test as it is now obsolete
        # keep it around for legacy value (i.e., I need to know what's in it)
        return


        files = []

        config = self.createConfig()

        name   = "ThisIsATest_%s" %(makeUUID())
        tier   = "RECO"
        nFiles = 12
        datasetPath = '/%s/%s/%s' % (name, name, tier)
        files.extend(self.getFiles(name = name, tier = tier, nFiles = nFiles, site = 'Ramilles'))
        files.extend(self.getFiles(name = name, tier = tier, nFiles = nFiles, site = 'Blenheim'))


        dbsInterface = DBSInterface(config)
        localAPI     = dbsInterface.getAPIRef()
        globeAPI     = dbsInterface.getAPIRef(globalRef = True)

        algo, dataset = self.createAlgoDataset(name = name, datasetPath = datasetPath)

        affectedBlocks = dbsInterface.runDBSBuffer(algo = algo, dataset = dataset)
        #files = files)
        result  = listAlgorithms(apiRef = localAPI, patternExe = name)
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0]['ExecutableName'], name)
        result  = listPrimaryDatasets(apiRef = localAPI, match = name)
        self.assertEqual(result, [name])
        result    = listProcessedDatasets(apiRef = localAPI, primary = name, dataTier = "*")
        self.assertEqual(result, [name])


        # Should have four blocks, two for each site
        self.assertEqual(len(affectedBlocks), 4)
        RamBlocks = []
        BleBlocks = []
        for block in affectedBlocks:
            if block['StorageElementList'][0]['Name'] == 'Blenheim':
                BleBlocks.append(block)
            elif block['StorageElementList'][0]['Name'] == 'Ramilles':
                RamBlocks.append(block)

        self.assertEqual(len(RamBlocks), 2)
        self.assertEqual(len(BleBlocks), 2)

        self.assertEqual(RamBlocks[0]['NumberOfFiles'], 10)
        self.assertEqual(BleBlocks[0]['NumberOfFiles'], 10)
        self.assertEqual(RamBlocks[1]['NumberOfFiles'], 2)
        self.assertEqual(BleBlocks[1]['NumberOfFiles'], 2)


        # We should have two blocks in global
        # Both should have ten files, and both should be closed
        result    = listBlocks(apiRef = globeAPI, datasetPath = datasetPath)
        self.assertEqual(len(result), 2)
        self.assertEqual(result[0]['OpenForWriting'], '0')
        self.assertEqual(result[0]['NumberOfFiles'], 10)


        return
Ejemplo n.º 2
0
    def testB_DBSInterfaceSimple(self):
        """
        _DBSInterfaceSimple_

        Do some simple checks using the DBSInterface methods instead
        of the individual functions.
        """

        # Skip this test due to block format change
        # It's tested by DBSUploadPoller_t
        # I'd like to keep it in the code so I can look
        # at it, and maybe bring it back one day.
        return



        config = self.createConfig()

        name   = "ThisIsATest_%s" %(makeUUID())
        tier   = "RECO"
        nFiles = 12
        datasetPath = '/%s/%s/%s' % (name, name, tier)
        files  = self.getFiles(name = name, tier = tier, nFiles = nFiles)


        dbsInterface = DBSInterface(config)
        localAPI     = dbsInterface.getAPIRef()
        globeAPI     = dbsInterface.getAPIRef(globalRef = True)

        algo, dataset = self.createAlgoDataset(name = name, datasetPath = datasetPath)



        # Can we insert a dataset algo?
        affectedBlocks = dbsInterface.runDBSBuffer(algo = algo, dataset = dataset,
                                                   files = files)
        result  = listAlgorithms(apiRef = localAPI, patternExe = name)
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0]['ExecutableName'], name)
        result  = listPrimaryDatasets(apiRef = localAPI, match = name)
        self.assertEqual(result, [name])
        result    = listProcessedDatasets(apiRef = localAPI, primary = name, dataTier = "*")
        self.assertEqual(result, [name])


        result = listDatasetFiles(apiRef = localAPI, datasetPath = datasetPath)
        self.assertEqual(len(result), 12)
        self.assertEqual(len(affectedBlocks), 2)
        # Create two blocks, one open, one closed, one with ten files, one with two
        self.assertEqual(affectedBlocks[0]['OpenForWriting'], '0')
        self.assertEqual(affectedBlocks[1]['OpenForWriting'], '1')
        self.assertEqual(affectedBlocks[0]['NumberOfFiles'], 10)
        self.assertEqual(affectedBlocks[1]['NumberOfFiles'], 2)


        # There should be one block in global
        # It should have ten files and be closed
        result    = listBlocks(apiRef = globeAPI, datasetPath = datasetPath)
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0]['OpenForWriting'], '0')
        self.assertEqual(result[0]['NumberOfFiles'], 10)


        return