forked from DIRACGrid/DIRAC
/
test_Client.py
94 lines (72 loc) · 4.06 KB
/
test_Client.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import unittest
from DIRAC.Core.Base import Script
Script.parseCommandLine()
from mock import Mock
from DIRAC.TransformationSystem.Client.TaskManager import TaskBase, WorkflowTasks, RequestTasks
def getSitesForSE( ses ):
if ses == 'pippo':
return {'OK':True, 'Value':['Site2', 'Site3']}
else:
return {'OK':True, 'Value':['Site3']}
#############################################################################
class ClientsTestCase( unittest.TestCase ):
""" Base class for the clients test cases
"""
def setUp( self ):
self.mockTransClient = Mock()
self.mockTransClient.setTaskStatusAndWmsID.return_value = {'OK':True}
self.WMSClientMock = Mock()
self.jobMonitoringClient = Mock()
self.mockRequestClient = Mock()
self.jobMock = Mock()
self.taskBase = TaskBase( transClient = self.mockTransClient )
self.wfTasks = WorkflowTasks( transClient = self.mockTransClient,
submissionClient = self.WMSClientMock,
jobMonitoringClient = self.jobMonitoringClient,
outputDataModule = "mock",
jobClass = self.jobMock )
self.requestTasks = RequestTasks( transClient = self.mockTransClient,
requestClient = self.mockRequestClient
)
def tearDown( self ):
pass
#############################################################################
class TaskBaseSuccess( ClientsTestCase ):
def test_updateDBAfterTaskSubmission( self ):
res = self.taskBase.updateDBAfterTaskSubmission( {} )
self.assertEqual( res['OK'], True )
#############################################################################
class WorkflowTasksSuccess( ClientsTestCase ):
def test_prepareTranformationTasks( self ):
taskDict = {1:{'TransformationID':1, 'a1':'aa1', 'b1':'bb1', 'Site':'MySite'},
2:{'TransformationID':1, 'a2':'aa2', 'b2':'bb2', 'InputData':['a1', 'a2']},
3:{'TransformationID':2, 'a3':'aa3', 'b3':'bb3'},
}
res = self.wfTasks.prepareTransformationTasks( Mock(), taskDict, 'test_user', 'test_group' )
self.assertEqual( res, {'OK': True,
'Value': {1: {'a1': 'aa1', 'TaskObject': '', 'TransformationID': 1, 'b1': 'bb1', 'Site': 'MySite'},
2: {'TaskObject': '', 'a2': 'aa2', 'TransformationID': 1, 'InputData': ['a1', 'a2'], 'b2': 'bb2'},
3: {'TaskObject': '', 'a3': 'aa3', 'TransformationID': 2, 'b3': 'bb3'}}} )
def test__handleDestination( self ):
res = self.wfTasks._handleDestination( {'Site':'', 'TargetSE':''} )
self.assertEqual( res, ['ANY'] )
res = self.wfTasks._handleDestination( {'Site':'ANY', 'TargetSE':''} )
self.assertEqual( res, ['ANY'] )
res = self.wfTasks._handleDestination( {'TargetSE':'Unknown'} )
self.assertEqual( res, ['ANY'] )
res = self.wfTasks._handleDestination( {'Site':'Site1, Site2', 'TargetSE':''} )
self.assertEqual( res, ['Site1', 'Site2'] )
res = self.wfTasks._handleDestination( {'Site':'Site1, Site2', 'TargetSE':'pippo'}, getSitesForSE )
self.assertEqual( res, ['Site2'] )
res = self.wfTasks._handleDestination( {'Site':'Site1, Site2', 'TargetSE':'pippo, pluto'}, getSitesForSE )
self.assertEqual( res, [] )
res = self.wfTasks._handleDestination( {'Site':'Site1, Site2, Site3', 'TargetSE':'pippo, pluto'}, getSitesForSE )
self.assertEqual( res, ['Site3'] )
res = self.wfTasks._handleDestination( {'Site':'ANY', 'TargetSE':'pippo, pluto'}, getSitesForSE )
self.assertEqual( res, ['Site3'] )
#############################################################################
if __name__ == '__main__':
suite = unittest.defaultTestLoader.loadTestsFromTestCase( ClientsTestCase )
suite.addTest( unittest.defaultTestLoader.loadTestsFromTestCase( TaskBaseSuccess ) )
suite.addTest( unittest.defaultTestLoader.loadTestsFromTestCase( WorkflowTasksSuccess ) )
testResult = unittest.TextTestRunner( verbosity = 2 ).run( suite )