def test_setRequest(self): requestString = self.getTestRequestString() requestType = 'transfer' requestStatus = 'waiting' result = self.requestDB.setRequest(requestType,self.requestName,requestStatus,requestString) self.assert_(result['OK']) result = self.requestDB.getRequest('transfer') self.assert_(result['OK']) request = DataManagementRequest(request=result['Value']['RequestString']) res = request.getNumSubRequests(requestType) for ind in range (res['Value']): res = request.getSubRequestFiles(ind,requestType) files = res['Value'] for file in files: file['Status'] = 'Done' res = request.setSubRequestFiles(ind, type, files) res = request.toXML() requestString = res['Value'] result = self.requestDB.updateRequest(self.requestName, requestString) self.assert_(result['OK']) requestStatus = 'done' result = self.requestDB.setRequestStatus(requestType,self.requestName,requestStatus) #there is some transient error here where it fails to retrieve the requestID self.assert_( result['OK']) result = self.requestDB.deleteRequest(self.requestName) self.assert_(result['OK'])
def test_setRequest(self): requestString = self.getTestRequestString() requestType = 'transfer' requestStatus = 'waiting' result = self.requestDB.setRequest(requestType, self.requestName, requestStatus, requestString) self.assert_(result['OK']) result = self.requestDB.getRequest('transfer') self.assert_(result['OK']) request = DataManagementRequest( request=result['Value']['RequestString']) res = request.getNumSubRequests(requestType) for ind in range(res['Value']): res = request.getSubRequestFiles(ind, requestType) files = res['Value'] for file in files: file['Status'] = 'Done' res = request.setSubRequestFiles(ind, type, files) res = request.toXML() requestString = res['Value'] result = self.requestDB.updateRequest(self.requestName, requestString) self.assert_(result['OK']) requestStatus = 'done' result = self.requestDB.setRequestStatus(requestType, self.requestName, requestStatus) #there is some transient error here where it fails to retrieve the requestID self.assert_(result['OK']) result = self.requestDB.deleteRequest(self.requestName) self.assert_(result['OK'])
def test_fullChain(self): ########################################################## # This is the section to be done by the data manager or whoever # Create the DataManagementRequest dmRequest = DataManagementRequest() requestID = 9999999 dmRequest.setRequestID(requestID) requestType = 'transfer' res = dmRequest.initiateSubRequest(requestType) ind = res['Value'] subRequestDict = { 'Operation': 'Replicate', 'SourceSE': 'CERN-disk', 'TargetSE': 'SARA-SRM2', 'Catalogue': 'LFC', 'Status': 'Waiting', 'SubRequestID': 0, 'SpaceToken': 'LHCb_RAW' } res = dmRequest.setSubRequestAttributes(ind, requestType, subRequestDict) lfn = '/lhcb/production/DC06/phys-v2-lumi5/00001925/DST/0000/00001925_00000090_5.dst' files = [] fileDict = { 'FileID': 9999, 'LFN': lfn, 'Size': 10000, 'PFN': '', 'GUID': '', 'Md5': '', 'Addler': '', 'Attempt': 0, 'Status': 'Waiting' } files.append(fileDict) res = dmRequest.setSubRequestFiles(ind, requestType, files) requestName = 'test-Request-%s' % time.time() dmRequest.setRequestName(requestName) jobID = 0 dmRequest.setJobID(jobID) ownerDN = '/C=Country/O=Organisation/OU=Unit/L=Location/CN=Name' dmRequest.setOwnerDN(ownerDN) diracInstance = 'developement' dmRequest.setDiracInstance(diracInstance) res = dmRequest.toXML() requestString = res['Value'] print requestString # Insert the request in the request DB res = self.RequestDB.setRequest(requestType, requestName, 'Dummy', requestString) print res, 'RequestDB.setRequest()' self.assert_(res['OK']) self.assertEqual(type(res['Value']), types.IntType) requestID = res['Value'] """
def setUp(self): self.DMRequest = DataManagementRequest()
def test_toFile(self): lfn = '/lhcb/production/test/case.lfn' # Add dummy transfer request transferDic = { 'Attributes': { 'Status': 'Waiting', 'SubRequestID': '7F7C1D94-E452-CD50-204C-EE2E2F1816A9', 'Catalogue': '', 'TargetSE': 'CERN-tape', 'Operation': 'MoveAndRegister', 'SourceSE': 'RAL-tape' }, 'Files': { 'File1': { 'LFN': lfn, 'Status': 'Waiting', 'Attempt': 1, 'PFN': '', 'Size': 1231231, 'GUID': '7E9CED5A-295B-ED88-CE9A-CF41A62D2175', 'Addler': '', 'Md5': '' } }, 'Datasets': { 'Dataset1': 'DC06Stripping' } } self.DMRequest.addSubRequest('transfer', transferDic) # Add dummy register request registerDic = { 'Attributes': { 'Status': 'Waiting', 'SubRequestID': '7F7C1D94-E452-CD50-204C-EE2E2F1816A9', 'Catalogue': '', 'TargetSE': 'CERN-tape', 'Operation': 'RegisterFile' }, 'Files': { 'File1': { 'LFN': lfn, 'Status': 'Waiting', 'Attempt': 1, 'PFN': 'srm://srm.cern.ch/castor/cern.ch/grid/lhcb/production/test/case.lfn', 'Size': 1231231, 'GUID': '7E9CED5A-295B-ED88-CE9A-CF41A62D2175', 'Addler': 'addler32', 'Md5': 'md5' } }, 'Datasets': { 'Dataset1': 'DC06Stripping' } } self.DMRequest.addSubRequest('register', registerDic) # Add dummy removal request removalDic = { 'Attributes': { 'Status': 'Waiting', 'SubRequestID': '7F7C1D94-E452-CD50-204C-EE2E2F1816A9', 'Catalogue': '', 'TargetSE': 'CERN-tape', 'Operation': 'RemoveReplica', 'Catalogue': 'LFC' }, 'Files': { 'File1': { 'LFN': lfn, 'Status': 'Waiting', 'Attempt': 1, 'PFN': 'srm://srm.cern.ch/castor/cern.ch/grid/lhcb/production/test/case.lfn', 'Size': 1231231, 'GUID': '7E9CED5A-295B-ED88-CE9A-CF41A62D2175', 'Addler': 'addler32', 'Md5': 'md5' } }, 'Datasets': { 'Dataset1': 'DC06Stripping' } } self.DMRequest.addSubRequest('removal', removalDic) # Add dummy stage request stageDic = { 'Attributes': { 'Status': 'Waiting', 'SubRequestID': '7F7C1D94-E452-CD50-204C-EE2E2F1816A9', 'Catalogue': '', 'TargetSE': 'CERN-tape', 'Operation': 'StageAndPin' }, 'Files': { 'File1': { 'LFN': lfn, 'Status': 'Waiting', 'Attempt': 1, 'PFN': 'srm://srm.cern.ch/castor/cern.ch/grid/lhcb/production/test/case.lfn', 'Size': 1231231, 'GUID': '7E9CED5A-295B-ED88-CE9A-CF41A62D2175', 'Addler': 'addler32', 'Md5': 'md5' } }, 'Datasets': { 'Dataset1': 'DC06Stripping' } } self.DMRequest.addSubRequest('stage', stageDic) # Get the XML string of the DM request string = self.DMRequest.toXML() fname = 'testRequest.xml' # Write the DMRequest to a file self.DMRequest.toFile(fname) # Get the file contents reqfile = open(fname, 'r') testString = reqfile.read() reqfile.close() # Check the file contents are what is expected self.assertEqual(string, testString) testReq = DataManagementRequest(string) # Test that what is obtained when parsing the request is the same as what is given. transferReqDouble = self.DMRequest.getSubRequest(0, 'transfer') for key in transferReqDouble.keys(): if key == 'Files': self.assertEqual(transferDic['Files'], transferReqDouble['Files']) elif key == 'Datasets': self.assertEqual(transferDic[key], transferReqDouble[key]) else: for att in transferDic['Attributes'].keys(): self.assertEqual(transferDic['Attributes'][att], transferReqDouble['Attributes'][att]) registerReqDouble = self.DMRequest.getSubRequest(0, 'register') for key in registerDic.keys(): if key == 'Files': self.assertEqual(registerDic['Files'], registerReqDouble['Files']) elif key == 'Datasets': self.assertEqual(registerDic[key], registerReqDouble[key]) else: for att in registerDic['Attributes'].keys(): self.assertEqual(registerDic['Attributes'][att], registerReqDouble['Attributes'][att]) removalReqDouble = self.DMRequest.getSubRequest(0, 'removal') for key in removalDic.keys(): if key == 'Files': self.assertEqual(removalDic['Files'], removalReqDouble['Files']) elif key == 'Datasets': self.assertEqual(removalDic[key], removalReqDouble[key]) else: for att in removalDic['Attributes'].keys(): self.assertEqual(removalDic['Attributes'][att], removalReqDouble['Attributes'][att]) stageReqDouble = self.DMRequest.getSubRequest(0, 'stage') for key in stageDic.keys(): if key == 'Files': self.assertEqual(stageDic['Files'], stageReqDouble['Files']) elif key == 'Datasets': self.assertEqual(stageDic[key], stageReqDouble[key]) else: for att in stageDic['Attributes'].keys(): self.assertEqual(stageDic['Attributes'][att], stageReqDouble['Attributes'][att])
def test_fullChain(self): ########################################################## # This is the section to be done by the data manager or whoever # Create the DataManagementRequest dmRequest = DataManagementRequest() requestID = 9999999 dmRequest.setRequestID(requestID) requestType = 'transfer' res = dmRequest.initiateSubRequest(requestType) ind = res['Value'] subRequestDict = {'Operation':'Replicate','SourceSE':'CERN-disk','TargetSE':'SARA-SRM2','Catalogue':'LFC','Status':'Waiting','SubRequestID':0,'SpaceToken':'LHCb_RAW'} res = dmRequest.setSubRequestAttributes(ind,requestType,subRequestDict) lfn = '/lhcb/production/DC06/phys-v2-lumi5/00001925/DST/0000/00001925_00000090_5.dst' files = [] fileDict = {'FileID':9999,'LFN':lfn,'Size':10000,'PFN':'','GUID':'','Md5':'','Addler':'','Attempt':0,'Status':'Waiting'} files.append(fileDict) res = dmRequest.setSubRequestFiles(ind,requestType,files) requestName = 'test-Request-%s' % time.time() dmRequest.setRequestName(requestName) jobID = 0 dmRequest.setJobID(jobID) ownerDN = '/C=Country/O=Organisation/OU=Unit/L=Location/CN=Name' dmRequest.setOwnerDN(ownerDN) diracInstance = 'developement' dmRequest.setDiracInstance(diracInstance) res = dmRequest.toXML() requestString = res['Value'] print requestString # Insert the request in the request DB res = self.RequestDB.setRequest(requestType,requestName,'Dummy',requestString) print res,'RequestDB.setRequest()' self.assert_(res['OK']) self.assertEqual(type(res['Value']),types.IntType) requestID = res['Value'] """
def test_fullChain(self): ########################################################## # This is the section to be done by the data manager or whoever # Create the DataManagementRequest dmRequest = DataManagementRequest() requestID = 9999999 dmRequest.setRequestID(requestID) requestType = "transfer" res = dmRequest.initiateSubRequest(requestType) ind = res["Value"] subRequestDict = { "Operation": "Replicate", "SourceSE": "CERN-disk", "TargetSE": "SARA-SRM2", "Catalogue": "LFC", "Status": "Waiting", "SubRequestID": 0, "SpaceToken": "LHCb_RAW", } res = dmRequest.setSubRequestAttributes(ind, requestType, subRequestDict) lfn = "/lhcb/production/DC06/phys-v2-lumi5/00001925/DST/0000/00001925_00000090_5.dst" files = [] fileDict = { "FileID": 9999, "LFN": lfn, "Size": 10000, "PFN": "", "GUID": "", "Md5": "", "Addler": "", "Attempt": 0, "Status": "Waiting", } files.append(fileDict) res = dmRequest.setSubRequestFiles(ind, requestType, files) requestName = "test-Request-%s" % time.time() dmRequest.setRequestName(requestName) jobID = 0 dmRequest.setJobID(jobID) ownerDN = "/C=Country/O=Organisation/OU=Unit/L=Location/CN=Name" dmRequest.setOwnerDN(ownerDN) diracInstance = "developement" dmRequest.setDiracInstance(diracInstance) res = dmRequest.toXML() requestString = res["Value"] print requestString # Insert the request in the request DB res = self.RequestDB.setRequest(requestType, requestName, "Dummy", requestString) print res, "RequestDB.setRequest()" self.assert_(res["OK"]) self.assertEqual(type(res["Value"]), types.IntType) requestID = res["Value"] """