From 31159ab8e9afc26cccb6db20c77377f248e6006c Mon Sep 17 00:00:00 2001 From: Omar Selo Date: Fri, 10 May 2024 11:00:42 +0000 Subject: [PATCH] Delete test execution reruns requests after submitting them --- .../test_executions_rerunner.py | 8 +++++ .../test_test_executions_rerunner.py | 30 +++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/scriptlets/test-executions-rerunner/test_executions_rerunner.py b/scriptlets/test-executions-rerunner/test_executions_rerunner.py index 6d8c6ef..0cf848a 100644 --- a/scriptlets/test-executions-rerunner/test_executions_rerunner.py +++ b/scriptlets/test-executions-rerunner/test_executions_rerunner.py @@ -28,6 +28,7 @@ def __init__(self, jenkins_api_token: Optional[str] = None): def run(self): self._load_rerun_requests() self._submit_rerun_requests() + self._delete_rerun_requests() def _load_rerun_requests(self) -> None: response = requests.get(reruns_link) @@ -38,6 +39,13 @@ def _submit_rerun_requests(self) -> None: for rerun_request in self.rerun_requests: self._submit_rerun(rerun_request) + def _delete_rerun_requests(self) -> None: + test_execution_ids = {rr["test_execution_id"] for rr in self.rerun_requests} + if test_execution_ids: + requests.delete( + reruns_link, json={"test_execution_ids": list(test_execution_ids)} + ) + def _submit_rerun(self, rerun_request: dict) -> None: base_job_link = self._extract_base_job_link_from_ci_link( rerun_request["ci_link"] diff --git a/scriptlets/test-executions-rerunner/test_test_executions_rerunner.py b/scriptlets/test-executions-rerunner/test_test_executions_rerunner.py index 46d5ff4..e03f147 100644 --- a/scriptlets/test-executions-rerunner/test_test_executions_rerunner.py +++ b/scriptlets/test-executions-rerunner/test_test_executions_rerunner.py @@ -26,19 +26,28 @@ def test_correctly_submits_deb_rerun_request(requests_mock: Mocker): json=[{"test_execution_id": 1, "ci_link": ci_link, "family": "deb"}], ) - def is_data_valid(request) -> bool: # noqa: ANN001 + def are_build_parameters_valid(request) -> bool: # noqa: ANN001 return request.json() == {"TESTPLAN": "full"} rerun_link = f"{job_link}/buildWithParameters" - matcher = requests_mock.post( + jenkins_build_matcher = requests_mock.post( rerun_link, request_headers=jenkins_request_headers, - additional_matcher=is_data_valid, + additional_matcher=are_build_parameters_valid, + ) + + def is_delete_body_valid(request) -> bool: + return request.json() == {"test_execution_ids": [1]} + + test_observer_delete_matcher = requests_mock.delete( + reruns_link, + additional_matcher=is_delete_body_valid, ) execute() - assert matcher.called_once + assert jenkins_build_matcher.called_once + assert test_observer_delete_matcher.called_once def test_correctly_submits_snap_rerun_request(requests_mock: Mocker): @@ -51,14 +60,23 @@ def test_correctly_submits_snap_rerun_request(requests_mock: Mocker): ) rerun_link = f"{job_link}/build" - matcher = requests_mock.post( + jenkins_build_matcher = requests_mock.post( rerun_link, request_headers=jenkins_request_headers, ) + def is_delete_body_valid(request) -> bool: + return request.json() == {"test_execution_ids": [1]} + + test_observer_delete_matcher = requests_mock.delete( + reruns_link, + additional_matcher=is_delete_body_valid, + ) + execute() - assert matcher.called_once + assert jenkins_build_matcher.called_once + assert test_observer_delete_matcher.called_once def execute():