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
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