Skip to content

Commit 311e608

Browse files
committed
Add a timeout to HTTP POST connects and reads
Both timeout are hardcoded to 10 seconds. Later commits will make this configurable. This doesn't put a timeout around _all_ of the HTTP POST requests in the codebase.
1 parent ae94f52 commit 311e608

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

reportportal_client/service.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ def __init__(self,
190190
self.is_skipped_an_issue = is_skipped_an_issue
191191
self.base_url_v1 = uri_join(self.endpoint, "api/v1", self.project)
192192
self.base_url_v2 = uri_join(self.endpoint, "api/v2", self.project)
193+
self.post_timeout = (10, 10)
193194

194195
self.session = requests.Session()
195196
if retries:
@@ -228,7 +229,13 @@ def start_launch(self,
228229
"rerunOf": rerunOf
229230
}
230231
url = uri_join(self.base_url_v2, "launch")
231-
r = self.session.post(url=url, json=data, verify=self.verify_ssl)
232+
r = self.session.request(
233+
method='POST',
234+
url=url,
235+
json=data,
236+
verify=self.verify_ssl,
237+
timeout=self.post_timeout
238+
)
232239
self.launch_id = _get_id(r)
233240
logger.debug("start_launch - ID: %s", self.launch_id)
234241
return self.launch_id
@@ -354,7 +361,13 @@ def start_test_item(self,
354361
url = uri_join(self.base_url_v2, "item", parent_item_id)
355362
else:
356363
url = uri_join(self.base_url_v2, "item")
357-
r = self.session.post(url=url, json=data, verify=self.verify_ssl)
364+
r = self.session.request(
365+
method='POST',
366+
url=url,
367+
json=data,
368+
verify=self.verify_ssl,
369+
timeout=self.post_timeout
370+
)
358371

359372
item_id = _get_id(r)
360373
logger.debug("start_test_item - ID: %s", item_id)
@@ -508,10 +521,12 @@ def _log_batch(self, log_data, force=False):
508521
files.extend(attachments)
509522
for i in range(POST_LOGBATCH_RETRY_COUNT):
510523
try:
511-
r = self.session.post(
524+
r = self.session.request(
525+
method='POST',
512526
url=url,
513527
files=files,
514-
verify=self.verify_ssl
528+
verify=self.verify_ssl,
529+
timeout=self.post_timeout
515530
)
516531
logger.debug("log_batch response: %s", r.text)
517532
self._batch_logs = []

tests/test_service.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,11 @@ def test_start_item(self, rp_service):
254254
'codeRef': None,
255255
'testCaseId': None},
256256
url='http://endpoint/api/v2/project/item',
257+
method='POST',
258+
timeout=(10, 10),
257259
verify=True)
258260

259-
rp_service.session.post.assert_called_with(**expected_result)
261+
rp_service.session.request.assert_called_with(**expected_result)
260262
assert rp_start == 123
261263

262264
start_item_optional = [
@@ -299,6 +301,8 @@ def test_start_item_code_optional_params(self, rp_service, field_name,
299301
'codeRef': None,
300302
'testCaseId': None},
301303
url='http://endpoint/api/v2/project/item',
304+
method='POST',
305+
timeout=(10, 10),
302306
verify=True)
303307
expected_result['json'][expected_name] = expected_value
304-
rp_service.session.post.assert_called_with(**expected_result)
308+
rp_service.session.request.assert_called_with(**expected_result)

0 commit comments

Comments
 (0)