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

        """