Skip to content

Commit 66f9277

Browse files
author
Test User
committed
feat: cleanup and some additional tests
1 parent 82c3452 commit 66f9277

File tree

2 files changed

+38
-12
lines changed

2 files changed

+38
-12
lines changed

packages/google-api-core/google/api_core/resumable_media/requests_upload.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,10 @@
2727
_DEFAULT_TIMEOUT = 60.0 # seconds
2828

2929

30-
3130
class _RecoveryRetransmit(Exception):
3231
"""Internal exception to trigger retransmission after a state resync."""
33-
pass
3432

33+
pass
3534

3635

3736
class ResumableUploadStatus:
@@ -223,7 +222,9 @@ def do_initiate():
223222

224223
try:
225224
response = retry(do_initiate)()
226-
self._machine.process_initiate_response(response.status_code, response.headers)
225+
self._machine.process_initiate_response(
226+
response.status_code, response.headers
227+
)
227228
except Exception as e:
228229
self._machine.process_initiate_error(e)
229230
raise
@@ -260,9 +261,7 @@ def do_transmit():
260261
transport, data, data_len
261262
)
262263
if need_recovery:
263-
_LOGGER.info(
264-
"Transparent recovery triggered for chunk transmission."
265-
)
264+
_LOGGER.info("Transparent recovery triggered for chunk transmission.")
266265
self._recover(transport)
267266
# Raise to signal the outer Retry loop to resubmit
268267
raise _RecoveryRetransmit()
@@ -391,9 +390,9 @@ def do_query():
391390
return response
392391

393392
retry_for_recovery = google.api_core.retry.Retry(
394-
predicate=self._get_retry_predicate(),
395-
deadline=self._check_deadline(),
396-
)
393+
predicate=self._get_retry_predicate(),
394+
deadline=self._check_deadline(),
395+
)
397396

398397
try:
399398
response = retry_for_recovery(do_query)()
@@ -406,7 +405,7 @@ def do_query():
406405

407406
# Seek stream to correct position
408407
_LOGGER.info("Server reported %d bytes received. Seeking stream.", received)
409-
408+
410409
if hasattr(self.stream, "seekable") and not self.stream.seekable():
411410
raise ValueError(
412411
f"Stream is not seekable. Cannot recover upload to offset {received}."

packages/google-api-core/tests/unit/resumable_media/test_upload.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# limitations under the License.
1414

1515

16+
from google.api_core import exceptions
1617
from google.api_core.resumable_media import _common
1718
from google.api_core.resumable_media import _upload
1819

@@ -35,7 +36,7 @@ def test_chunk_size_granularity(self):
3536

3637
def test_initiate_request(self):
3738
upload = _upload.ResumableUpload("http://test.local/upload")
38-
method, url, headers, body = upload.initiate_request(
39+
method, url, headers, body = upload.build_initiate_request(
3940
stream_metadata={"x-custom-meta": "value"},
4041
content_type="text/plain",
4142
size=100,
@@ -51,7 +52,7 @@ def test_initiate_request(self):
5152

5253
def test_initiate_request_conflicting_metadata(self):
5354
upload = _upload.ResumableUpload("http://test.local/upload")
54-
method, url, headers, body = upload.initiate_request(
55+
method, url, headers, body = upload.build_initiate_request(
5556
stream_metadata={
5657
"x-custom-meta": "value",
5758
_common.UPLOAD_PROTOCOL_HEADER: "malicious-protocol",
@@ -209,3 +210,29 @@ def test_process_recovery_response_final(self):
209210
upload.process_recovery_response(200, headers)
210211

211212
assert upload.finished
213+
214+
def test_process_initiate_error(self):
215+
upload = _upload.ResumableUpload("http://test.local/upload")
216+
upload.process_initiate_error(Exception("Test error"))
217+
assert upload.invalid
218+
219+
def test_process_chunk_error_recoverable(self):
220+
upload = _upload.ResumableUpload("http://test.local/upload")
221+
exc = exceptions.GoogleAPICallError("Recoverable")
222+
exc.code = 400
223+
224+
assert upload.process_chunk_error(exc)
225+
assert not upload.invalid
226+
227+
def test_process_chunk_error_non_recoverable(self):
228+
upload = _upload.ResumableUpload("http://test.local/upload")
229+
exc = exceptions.GoogleAPICallError("Non-recoverable")
230+
exc.code = 500
231+
232+
assert not upload.process_chunk_error(exc)
233+
assert upload.invalid
234+
235+
def test_process_recovery_error(self):
236+
upload = _upload.ResumableUpload("http://test.local/upload")
237+
upload.process_recovery_error(Exception("Test error"))
238+
assert upload.invalid

0 commit comments

Comments
 (0)