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,20 @@ 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+ }
41+ return {"OK" : True , "Value" : lambda : mocks [class_name ]}
42+
3043 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
44+ "DIRAC.WorkloadManagementSystem.Agent.StalledJobAgent.ObjectLoader.loadObject" ,
45+ side_effect = mock_load_object ,
3746 )
38- mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.ReqClient" , return_value = mockNone )
39-
4047 jca = JobCleaningAgent ()
4148 jca .log = gLogger
4249 jca .log .setLevel ("DEBUG" )
@@ -128,15 +135,27 @@ def test_deleteJobOversizedSandbox(mocker, inputs, params, expected):
128135
129136 mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.AgentModule.__init__" )
130137 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 )
133138 mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.ReqClient" , return_value = mockNone )
134139 mocker .patch (
135140 "DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.getDNForUsername" , return_value = S_OK (["/bih/boh/DN" ])
136141 )
137142 mocker .patch ("DIRAC.WorkloadManagementSystem.Agent.JobCleaningAgent.getJobParameters" , return_value = params )
138143
144+ def mock_load_object (module_path , class_name ):
145+ mocks = {
146+ "JobDB" : MagicMock (),
147+ "TaskQueueDB" : MagicMock (),
148+ "PilotAgentsDB" : MagicMock (),
149+ "SandboxMetadataDB" : MagicMock (),
150+ }
151+ return {"OK" : True , "Value" : lambda : mocks [class_name ]}
152+
153+ mocker .patch (
154+ "DIRAC.WorkloadManagementSystem.Agent.StalledJobAgent.ObjectLoader.loadObject" ,
155+ side_effect = mock_load_object ,
156+ )
139157 jobCleaningAgent = JobCleaningAgent ()
158+
140159 jobCleaningAgent .log = gLogger
141160 jobCleaningAgent .log .setLevel ("DEBUG" )
142161 jobCleaningAgent ._AgentModule__configDefaults = mockAM
0 commit comments