Skip to content

Commit b7360d0

Browse files
committed
fix e2e tests
Signed-off-by: Javan Lacerda <javanlacerda@google.com>
1 parent 7ec4eed commit b7360d0

4 files changed

Lines changed: 43 additions & 16 deletions

File tree

src/clusterfuzz/_internal/batch/service.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -375,10 +375,8 @@ def create_utask_main_job(self, module: str, job_type: str,
375375
batch_tasks = [
376376
remote_task_types.RemoteTask(command, job_type, input_download_url)
377377
]
378-
result = self.create_utask_main_jobs(batch_tasks)
379-
if result is None:
380-
return result
381-
return result[0]
378+
uncreated_tasks = self.create_utask_main_jobs(batch_tasks)
379+
return uncreated_tasks
382380

383381
def create_utask_main_jobs(self,
384382
remote_tasks: List[remote_task_types.RemoteTask]):

src/clusterfuzz/_internal/tests/core/batch/batch_service_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def test_create_uworker_main_batch_job(self):
254254
UUIDS[0], spec1, ['url1'])
255255
self.mock_batch_client_instance.create_job.assert_called_with(
256256
expected_create_request)
257-
self.assertEqual(result, 'job')
257+
self.assertEqual(result, [])
258258

259259

260260
@test_utils.with_cloud_emulators('datastore')

src/clusterfuzz/_internal/tests/core/bot/startup/run_bot_test.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ class ScheduleUtaskMainsTest(unittest.TestCase):
134134
def setUp(self):
135135
helpers.patch(self, [
136136
'clusterfuzz._internal.base.tasks.get_utask_mains',
137-
'clusterfuzz._internal.remote_task.remote_task_gate.RemoteTaskGate.create_utask_main_jobs',
137+
'clusterfuzz._internal.remote_task.remote_task_gate.RemoteTaskGate',
138138
'clusterfuzz._internal.base.tasks.bulk_add_tasks',
139139
])
140140

@@ -150,11 +150,12 @@ def test_schedule_tasks_requeue_uncreated(self):
150150
self.mock.get_utask_mains.return_value = [mock_task]
151151

152152
# Simulate that the tasks were not created and returned back.
153-
self.mock.create_utask_main_jobs.side_effect = lambda x, tasks: tasks
153+
self.mock.RemoteTaskGate.return_value.create_utask_main_jobs.side_effect = lambda tasks: tasks
154154

155155
run_bot.schedule_utask_mains()
156156

157-
self.mock.create_utask_main_jobs.assert_called_once()
157+
self.mock.RemoteTaskGate.return_value.create_utask_main_jobs.assert_called_once(
158+
)
158159

159160
# Check that bulk_add_tasks was called with the tasks returned by create_utask_main_jobs
160161
# and the correct queue.
@@ -179,10 +180,11 @@ def test_schedule_tasks_success(self):
179180
mock_task.lease.return_value.__exit__.return_value = None
180181

181182
self.mock.get_utask_mains.return_value = [mock_task]
182-
self.mock.create_utask_main_jobs.return_value = []
183+
self.mock.RemoteTaskGate.return_value.create_utask_main_jobs.return_value = []
183184

184185
run_bot.schedule_utask_mains()
185186

186-
self.mock.create_utask_main_jobs.assert_called_once()
187+
self.mock.RemoteTaskGate.return_value.create_utask_main_jobs.assert_called_once(
188+
)
187189
self.mock.bulk_add_tasks.assert_called_once_with(
188190
[], queue=taskslib.PREPROCESS_QUEUE, eta_now=True)

src/clusterfuzz/_internal/tests/core/k8s/k8s_service_e2e_test.py

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)