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 )