def test_execute_getfilemetadata_empty( self ):
   exists_dict = { 'list_of.txt' : True, 'something' : True }
   self.ujf.jobID = 512
   request_mock = Mock()
   request_mock.RequestName = 'job_512_request.xml'
   request_mock.JobID = 512
   request_mock.SourceComponent = "Job_512"
   report_mock = Mock()
   self.ujf.jobReport = report_mock
   self.ujf.workflow_commons = { 'TotalSteps' : '42', 'Request' : request_mock,
                                 'JOB_ID' : '512', 'IS_PROD' : True,
                                 'PRODUCTION_ID' : '98245', 'Platform' : 'myTestPlatform',
                                 'Owner' : 'myTestOwner123RichGuy', 'VO' : 'myTestVirtualOrga',
                                 'JobReport' : report_mock }
   self.ujf.workflowStatus = S_OK()
   self.ujf.stepStatus = S_OK()
   self.ujf.userOutputData = [ 'something' ]
   self.ujf.userOutputSE = 'myTestReceivingSE'
   self.ujf.userOutputPath = 'my/User/OPPath'
   with patch('%s.os.path.exists' % MODULE_NAME, new=Mock(side_effect=lambda path: exists_dict[path])), \
        patch('%s.open' % MODULE_NAME, mock_open(read_data='myfilecontent,makeniceadlerchecksum')), \
        patch('%s.os.path.getsize' % MODULE_NAME, new=Mock(return_value=3048)), \
        patch('%s.os.getcwd' % MODULE_NAME, new=Mock(return_value='/mycurdirTestMe')), \
        patch('%s.getDestinationSEList' % MODULE_NAME, new=Mock(return_value=S_OK(['CERN-DIP-4']))), \
        patch('%s.UserJobFinalization.getFileMetadata' % MODULE_NAME, new=Mock(return_value=S_OK())):
     result = self.ujf.execute()
     assertDiracSucceedsWith_equals( result, None, self )
     report_mock.setApplicationStatus.assert_called_once_with(
       'No Output Data Files To Upload', True )
 def test_execute_ignoreapperrors( self ):
   exists_dict = { 'list_of.txt' : True, 'something' : True }
   self.ujf.jobID = 512
   self.ujf.ignoreapperrors = True
   request_mock = Mock()
   request_mock.RequestName = 'job_512_request.xml'
   request_mock.JobID = 512
   request_mock.SourceComponent = "Job_512"
   self.ujf.workflow_commons = { 'TotalSteps' : '42', 'Request' : request_mock,
                                 'JOB_ID' : '512', 'IS_PROD' : True,
                                 'PRODUCTION_ID' : '98245', 'Platform' : 'myTestPlatform',
                                 'Owner' : 'myTestOwner123RichGuy', 'VO' : 'myTestVirtualOrga',
                                 'UserOutputSE' : 'myTestReceivingSE' }
   transfer_mock = Mock()
   transfer_mock.transferAndRegisterFile.return_value = S_OK( {} )
   transfer_mock.transferAndRegisterFileFailover.return_value = S_OK()
   dataman_mock = Mock()
   dataman_mock.replicateAndRegister.return_value = S_OK()
   self.ujf.workflowStatus = S_OK()
   self.ujf.stepStatus = S_OK()
   self.ujf.userOutputData = [ 'list_of.txt', 'filenames.jar' ]
   self.ujf.userOutputSE = 'thisValueIsntUsed'
   self.ujf.userOutputPath = 'my/User/OPPath'
   with patch('%s.constructUserLFNs' % MODULE_NAME, new=Mock(return_value=S_OK(['/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/list_of.txt', '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/filenames.jar']))) as constructlfn_mock, \
        patch('%s.UserJobFinalization.getCandidateFiles' % MODULE_NAME, new=Mock(return_value={ 'OK' : False, 'Value' : {} })) as getcf_mock, \
        patch('%s.os.path.exists' % MODULE_NAME, new=Mock(side_effect=lambda path: exists_dict[path])), \
        patch('%s.open' % MODULE_NAME, mock_open(read_data='myfilecontent,makeniceadlerchecksum')), \
        patch('%s.os.path.getsize' % MODULE_NAME, new=Mock(return_value=3048)), \
        patch('%s.os.getcwd' % MODULE_NAME, new=Mock(return_value='/mycurdirTestMe')), \
        patch('%s.getDestinationSEList' % MODULE_NAME, new=Mock(return_value=S_OK(['CERN-DIP-4']))), \
        patch('%s.FailoverTransfer' % MODULE_NAME, new=transfer_mock), \
        patch('%s.DataManager' % MODULE_NAME, new=dataman_mock), \
        patch('%s.time.sleep' % MODULE_NAME, new=Mock(return_value=True)), \
        patch('%s.UserJobFinalization.getFileMetadata' % MODULE_NAME, new=Mock(return_value={ 'OK' : False, 'Value' : { 'workingFile1' : { 'resolvedSE' : ( 'someOtherSite', ), 'localpath' : '/my/local/first/path', 'lfn' : 'LFN:/ilc/some/dir/file1.txt', 'filedict' : 8520 }, 'thisFileWorks.too' : { 'resolvedSE' : ( 'someOtherOtherSite', ), 'localpath' : '/dir/current/local.lfn', 'lfn' : 'LFN:/ilc/mydir/file2.ppt', 'filedict' : 98453 } } })) as getfmd_mock:
     #TODO: does this (getcandidatefiles mock, getfilemetadata mock) make sense? S_ERROR usually will not have a value, so this would actually throw an error in real environment
     result = self.ujf.execute()
   assertDiracSucceeds( result, self )
   getcf_mock.assert_called_once_with( [
     { 'outputPath': 'TXT', 'outputFile': 'list_of.txt', 'outputDataSE': ['myTestReceivingSE'] },
     {'outputPath': 'JAR', 'outputFile': 'filenames.jar', 'outputDataSE': ['myTestReceivingSE'] }
   ], [ '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/list_of.txt',
        '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/filenames.jar' ], '' )
   constructlfn_mock.assert_called_once_with(
     512, 'myTestVirtualOrga', 'myTestOwner123RichGuy',
     [ 'list_of.txt', 'filenames.jar' ], 'my/User/OPPath' )
   getfmd_mock.assert_called_once_with( {} )
   transfer_mock = transfer_mock() # Necessary for the assumptions
   transfer_mock.transferAndRegisterFile.assert_any_call(
     'workingFile1', '/my/local/first/path', 'LFN:/ilc/some/dir/file1.txt',
     ['myTestReceivingSE', 'CERN-DIP-4'], fileCatalog=['FileCatalog'],
     fileMetaDict=8520 )
   transfer_mock.transferAndRegisterFile.assert_called_with(
     'thisFileWorks.too', '/dir/current/local.lfn', 'LFN:/ilc/mydir/file2.ppt',
     ['myTestReceivingSE', 'CERN-DIP-4'], fileCatalog=['FileCatalog'],
     fileMetaDict=98453 )
   assertEqualsImproved( len(transfer_mock.transferAndRegisterFile.mock_calls),
                         14, self )
   self.assertFalse( transfer_mock.transferAndRegisterFileFailover.called )
   dataman_mock = dataman_mock()
   assertMockCalls( dataman_mock.replicateAndRegister, [ ( 'LFN:/ilc/mydir/file2.ppt', 'myTestReceivingSE' ),
                                                         ( 'LFN:/ilc/some/dir/file1.txt', 'myTestReceivingSE' ) ],
                    self, only_these_calls = False )
 def test_execute( self ):
   exists_dict = { 'list_of.txt' : True, 'filenames.jar' : True }
   self.ujf.jobID = 512
   request_mock = Mock()
   request_mock.RequestName = 'job_512_request.xml'
   request_mock.JobID = 512
   request_mock.SourceComponent = "Job_512"
   self.ujf.workflow_commons = { 'TotalSteps' : '42', 'Request' : request_mock,
                                 'JOB_ID' : '512', 'IS_PROD' : True,
                                 'PRODUCTION_ID' : '98245',
                                 'Platform' : 'myTestPlatform',
                                 'Owner' : 'myTestOwner123RichGuy',
                                 'VO' : 'myTestVirtualOrga',
                                 'UserOutputSE' : 'myTestReceivingSE' }
   transfer_mock = Mock()
   transfer_mock.transferAndRegisterFile.return_value = S_OK( {} )
   transfer_mock.transferAndRegisterFileFailover.return_value = S_OK()
   dataman_mock = Mock()
   dataman_mock.replicateAndRegister.return_value = S_OK()
   self.ujf.workflowStatus = S_OK()
   self.ujf.stepStatus = S_OK()
   self.ujf.userOutputData = [ 'list_of.txt', 'filenames.jar' ]
   self.ujf.userOutputSE = 'thisValueIsntUsed'
   self.ujf.userOutputPath = 'my/User/OPPath'
   with patch('%s.constructUserLFNs' % MODULE_NAME, new=Mock(return_value=S_OK(['/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/list_of.txt', '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/filenames.jar']))) as constructlfn_mock, \
        patch('%s.os.path.exists' % MODULE_NAME, new=Mock(side_effect=lambda path: exists_dict[path])) as exists_mock, \
        patch('%s.open' % MODULE_NAME, mock_open(read_data='myfilecontent,makeniceadlerchecksum')), \
        patch('%s.os.path.getsize' % MODULE_NAME, new=Mock(return_value=3048)), \
        patch('%s.os.getcwd' % MODULE_NAME, new=Mock(return_value='/mycurdirTestMe')), \
        patch('%s.getDestinationSEList' % MODULE_NAME, new=Mock(return_value=S_OK(['CERN-DIP-4']))), \
        patch('%s.FailoverTransfer' % MODULE_NAME, new=transfer_mock), \
        patch('%s.DataManager' % MODULE_NAME, new=dataman_mock), \
        patch('%s.time.sleep' % MODULE_NAME, new=Mock(return_value=True)):
     result = self.ujf.execute()
   assertDiracSucceeds( result, self )
   constructlfn_mock.assert_called_once_with(
     512, 'myTestVirtualOrga', 'myTestOwner123RichGuy',
     [ 'list_of.txt', 'filenames.jar' ], 'my/User/OPPath' )
   transfer_mock = transfer_mock() # Necessary for the assumptions
   transfer_mock.transferAndRegisterFile.assert_any_call(
     'list_of.txt', '/mycurdirTestMe/list_of.txt',
     '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/list_of.txt',
     [ 'myTestReceivingSE', 'CERN-DIP-4' ], fileCatalog=['FileCatalog'],
     fileMetaDict={
       'Status' : 'Waiting', 'ADLER32' : False, 'ChecksumType' : 'ADLER32',
       'Checksum' : False,
       'LFN' : '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/list_of.txt',
       'GUID' : None, 'Addler' : False, 'Size' : 3048 } )
   transfer_mock.transferAndRegisterFile.assert_called_with(
     'filenames.jar', '/mycurdirTestMe/filenames.jar',
     '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/filenames.jar',
     [ 'myTestReceivingSE', 'CERN-DIP-4' ], fileCatalog=['FileCatalog'],
     fileMetaDict={ 'Status' : 'Waiting', 'ADLER32' : False,
                    'ChecksumType' : 'ADLER32', 'Checksum' : False,
                    'LFN' : '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/filenames.jar',
                    'GUID' : None, 'Addler' : False, 'Size' : 3048 } )
   assertEqualsImproved( len(transfer_mock.transferAndRegisterFile.mock_calls), 14, self )
   self.assertFalse( transfer_mock.transferAndRegisterFileFailover.called )
   dataman_mock = dataman_mock()
   assertMockCalls( dataman_mock.replicateAndRegister,
                    [ ('/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/filenames.jar',
                       'myTestReceivingSE' ),
                      ( '/myTestVirtualOrga/testpre/m/myTestOwner123RichGuy/my/User/OPPath/list_of.txt',
                        'myTestReceivingSE' ) ], self, only_these_calls = False )
   assertEqualsImproved( len(exists_mock.mock_calls), 2, self )