@@ -111,7 +111,28 @@ def _wait_for_job_and_delete(self, job_name):
111111 self .api_client .delete_namespaced_job (
112112 name = job_name ,
113113 namespace = 'default' ,
114- body = k8s_client .V1DeleteOptions (propagation_policy = 'Foreground' ))
114+ body = k8s_client .V1DeleteOptions (propagation_policy = 'Background' ))
115+
116+ # Wait for deletion.
117+ for _ in range (120 ):
118+ try :
119+ self .api_client .read_namespaced_job (job_name , 'default' )
120+ time .sleep (1 )
121+ except k8s_client .rest .ApiException as e :
122+ if e .status == 404 :
123+ return
124+ raise
125+
126+ self .fail (f'Job { job_name } was not deleted.' )
127+
128+ def _get_cf_jobs (self ):
129+ """Returns a list of ClusterFuzz jobs."""
130+ jobs = self .api_client .list_namespaced_job ('default' )
131+ return [
132+ j .metadata .name
133+ for j in jobs .items
134+ if j .metadata .name .startswith ('cf-job-' )
135+ ]
115136
116137 def test_create_job (self ):
117138 """Tests creating a job."""
@@ -143,9 +164,13 @@ def test_create_uworker_main_batch_job(self, mock_get_command_from_module,
143164 is_kata = False )
144165 mock_get_k8s_job_configs .return_value = {('fuzz' , 'test-job' ): config }
145166
146- actual_job_name = self .kubernetes_client .create_utask_main_job (
167+ result = self .kubernetes_client .create_utask_main_job (
147168 'module' , 'test-job' , 'url1' )
148- self ._wait_for_job_and_delete (actual_job_name )
169+ self .assertEqual (result , [])
170+
171+ jobs = self ._get_cf_jobs ()
172+ self .assertEqual (len (jobs ), 1 )
173+ self ._wait_for_job_and_delete (jobs [0 ])
149174
150175 @mock .patch ('clusterfuzz._internal.k8s.service._get_k8s_job_configs' )
151176 @mock .patch (
@@ -181,10 +206,12 @@ def test_create_uworker_main_batch_jobs(self, mock_get_command_from_module,
181206 remote_task_types .RemoteTask ('fuzz' , 'test-job2' , 'url2' ),
182207 ]
183208
184- actual_job_names = self .kubernetes_client .create_utask_main_jobs (tasks )
185- self .assertEqual (len ( actual_job_names ), 2 )
209+ result = self .kubernetes_client .create_utask_main_jobs (tasks )
210+ self .assertEqual (result , [] )
186211
187- for job_name in actual_job_names :
212+ jobs = self ._get_cf_jobs ()
213+ self .assertEqual (len (jobs ), 2 )
214+ for job_name in jobs :
188215 self ._wait_for_job_and_delete (job_name )
189216
190217
0 commit comments