Esempio n. 1
0
    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'])
Esempio n. 2
0
    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']
        """
Esempio n. 3
0
 def setUp(self):
     self.DMRequest = DataManagementRequest()
Esempio n. 4
0
    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])