1- """ Test class for Job Cleaning Agent
2- """
1+ """Test class for Job Cleaning Agent"""
2+
33from unittest .mock import MagicMock
44
55import pytest
1616mockNone = MagicMock ()
1717mockNone .return_value = None
1818mockJMC = MagicMock ()
19+ mockJobDB = MagicMock ()
20+ mockJobDB .getDistinctJobAttributes = mockReply
21+ mockJobDB .selectJobs = mockReply
1922
2023
2124@pytest .fixture
@@ -27,16 +30,21 @@ def jca(mocker):
2730 create = True ,
2831 )
2932 mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.AgentModule.am_getOption" , return_value = mockAM )
33+
34+ def mock_load_object (module_path , class_name ):
35+ mocks = {
36+ "JobDB" : mockJobDB ,
37+ "TaskQueueDB" : MagicMock (),
38+ "PilotAgentsDB" : MagicMock (),
39+ "SandboxMetadataDB" : MagicMock (),
40+ "StorageManagementDB" : MagicMock (),
41+ }
42+ return {"OK" : True , "Value" : lambda : mocks [class_name ]}
43+
3044 mocker .patch (
31- "DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.JobDB.getDistinctJobAttributes" , side_effect = mockReply
32- )
33- mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.JobDB.selectJobs" , side_effect = mockReply )
34- mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.JobDB.__init__" , side_effect = mockNone )
35- mocker .patch (
36- "DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.SandboxMetadataDB.__init__" , side_effect = mockNone
45+ "DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.ObjectLoader.loadObject" ,
46+ side_effect = mock_load_object ,
3747 )
38- mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.ReqClient" , return_value = mockNone )
39-
4048 jca = JobCleaningAgent ()
4149 jca .log = gLogger
4250 jca .log .setLevel ("DEBUG" )
@@ -128,15 +136,28 @@ def test_deleteJobOversizedSandbox(mocker, inputs, params, expected):
128136
129137 mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.AgentModule.__init__" )
130138 mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.AgentModule.am_getOption" , return_value = mockAM )
131- mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.JobDB" , return_value = mockNone )
132- mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.SandboxMetadataDB" , return_value = mockNone )
133139 mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.ReqClient" , return_value = mockNone )
134140 mocker .patch (
135141 "DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.getDNForUsername" , return_value = S_OK (["/bih/boh/DN" ])
136142 )
137143 mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.getJobParameters" , return_value = params )
138144
145+ def mock_load_object (module_path , class_name ):
146+ mocks = {
147+ "JobDB" : MagicMock (),
148+ "TaskQueueDB" : MagicMock (),
149+ "PilotAgentsDB" : MagicMock (),
150+ "SandboxMetadataDB" : MagicMock (),
151+ "StorageManagementDB" : MagicMock (),
152+ }
153+ return {"OK" : True , "Value" : lambda : mocks [class_name ]}
154+
155+ mocker .patch (
156+ "DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.ObjectLoader.loadObject" ,
157+ side_effect = mock_load_object ,
158+ )
139159 jobCleaningAgent = JobCleaningAgent ()
160+
140161 jobCleaningAgent .log = gLogger
141162 jobCleaningAgent .log .setLevel ("DEBUG" )
142163 jobCleaningAgent ._AgentModule__configDefaults = mockAM
0 commit comments