Skip to content

Commit 2ce6d39

Browse files
committed
feat(DEVC-1752): remove redundant tests according to new schema for retry logic
1 parent 41064cd commit 2ce6d39

4 files changed

Lines changed: 5 additions & 103 deletions

File tree

docs/modules/ROOT/examples/api/tutorial008.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/corva/api.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def __init__(
2525
api_key: str,
2626
app_key: str,
2727
app_connection_id: Optional[int] = None,
28-
max_retries: Optional[int] = None,
28+
max_retries: Optional[int] = 0,
2929
pool_conn_count: Optional[int] = None,
3030
pool_max_size: Optional[int] = None,
3131
pool_block: Optional[bool] = None,
@@ -52,16 +52,6 @@ def default_headers(self):
5252
"X-Corva-App": self.app_key,
5353
}
5454

55-
@property
56-
def max_retries(self) -> int:
57-
return self._max_retries
58-
59-
@max_retries.setter
60-
def max_retries(self, value: int):
61-
if not (0 <= value <= 10):
62-
raise ValueError("Values between 0 and 10 are allowed")
63-
self._max_retries = value
64-
6555
def get(self, path: str, **kwargs):
6656
return self._request("GET", path, **kwargs)
6757

@@ -109,6 +99,7 @@ def _execute_request(
10999
params: Optional[dict],
110100
data: Optional[dict],
111101
headers: Optional[dict] = None,
102+
timeout: Optional[int] = None,
112103
) -> requests.Response:
113104
"""Executes the request.
114105
@@ -129,6 +120,7 @@ def _execute_request(
129120
params=params,
130121
json=data,
131122
headers=headers,
123+
timeout=timeout,
132124
)
133125

134126
def _request(
@@ -139,6 +131,7 @@ def _request(
139131
data: Optional[dict] = None,
140132
params: Optional[dict] = None,
141133
headers: Optional[dict] = None,
134+
timeout: Optional[int] = None,
142135
) -> requests.Response:
143136
"""Prepares HTTP request.
144137
@@ -165,6 +158,7 @@ def _request(
165158
params=params,
166159
data=data,
167160
headers=headers,
161+
timeout=timeout,
168162
)
169163

170164
def get_dataset(

tests/unit/test_api.py

Lines changed: 0 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import contextlib
22
import json
33
import re
4-
import time
54
import urllib.parse
65
from http import HTTPStatus
76

@@ -74,8 +73,6 @@ def test_request_additional_headers(api, requests_mock: RequestsMocker):
7473
[
7574
(3, contextlib.nullcontext()),
7675
(30, contextlib.nullcontext()),
77-
(2, pytest.raises(ValueError)),
78-
(31, pytest.raises(ValueError)),
7976
],
8077
)
8178
def test_request_timeout_limits(timeout, exc_ctx, api, requests_mock: RequestsMocker):
@@ -200,81 +197,6 @@ def test_disabled_by_default_retrying_logic_works_as_expected(
200197
), "For disabled by default retrying functionality only 1 request should happen."
201198

202199

203-
def test_enabled_retrying_logic_with_all_failed_retries_returns_http_response_object(
204-
api, requests_mock: RequestsMocker
205-
):
206-
api.max_retries = 1
207-
path = "/"
208-
url = f"{SETTINGS.API_ROOT_URL}{path}"
209-
210-
bad_requests_statuses_codes = [
211-
HTTPStatus.BAD_GATEWAY,
212-
HTTPStatus.SERVICE_UNAVAILABLE,
213-
]
214-
215-
requests_mock.register_uri(
216-
"GET",
217-
url,
218-
[
219-
{"status_code": int(status_code)}
220-
for status_code in bad_requests_statuses_codes
221-
],
222-
)
223-
224-
# Making sure all retrying attempts were failed.
225-
assert api.max_retries < len(bad_requests_statuses_codes)
226-
227-
response = api.get(path)
228-
229-
assert response.status_code == bad_requests_statuses_codes[0]
230-
231-
232-
def test_enabled_retrying_logic_works_as_expected(api, requests_mock: RequestsMocker):
233-
api.max_retries = 6 # Enabling retrying functionality to make up to 6 attempts.
234-
path = "/"
235-
url = f"{SETTINGS.API_ROOT_URL}{path}"
236-
237-
bad_requests_statuses_codes = [
238-
HTTPStatus.TOO_MANY_REQUESTS,
239-
HTTPStatus.INTERNAL_SERVER_ERROR,
240-
HTTPStatus.BAD_GATEWAY,
241-
HTTPStatus.SERVICE_UNAVAILABLE,
242-
HTTPStatus.GATEWAY_TIMEOUT,
243-
]
244-
good_requests_statuses_codes = [HTTPStatus.OK]
245-
246-
requests_sequence_return_status_codes = (
247-
bad_requests_statuses_codes + good_requests_statuses_codes
248-
)
249-
250-
requests_mock.register_uri(
251-
"GET",
252-
url,
253-
[
254-
{"status_code": int(status_code)}
255-
for status_code in requests_sequence_return_status_codes
256-
],
257-
)
258-
259-
start_time = time.time()
260-
response = api.get(path)
261-
end_time = time.time()
262-
263-
assert response.status_code in good_requests_statuses_codes
264-
assert len(requests_mock.request_history) == len(
265-
requests_sequence_return_status_codes
266-
)
267-
assert end_time - start_time > 1, (
268-
f"At least 1 second retry delay should be applied for "
269-
f"{len(bad_requests_statuses_codes)} retries."
270-
)
271-
272-
273-
def test__trying_to_set_wrong_max_retries__value_error_raised(api):
274-
with pytest.raises(ValueError):
275-
api.max_retries = 15
276-
277-
278200
def test__app_insert_data__improves_coverage(api, requests_mock: RequestsMocker):
279201

280202
post_mock = requests_mock.post(

tests/unit/test_docs/test_api.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
tutorial005,
1616
tutorial006,
1717
tutorial007,
18-
tutorial008,
1918
)
2019

2120

@@ -122,9 +121,3 @@ def test_tutorial007(app_runner, mocker: MockerFixture):
122121
app_runner(tutorial007.scheduled_app, time_event)
123122
time_mock.assert_called_once()
124123

125-
126-
def test_tutorial008(app_runner, mocker: MockerFixture):
127-
time_event = ScheduledDataTimeEvent(
128-
asset_id=0, company_id=0, start_time=0, end_time=0
129-
)
130-
app_runner(tutorial008.scheduled_app, time_event)

0 commit comments

Comments
 (0)