Skip to content

Commit 1647f07

Browse files
Fix retry.with_delay multiplier parameter handling (googleapis#164)
Issue: googleapis#163
1 parent a5b175f commit 1647f07

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

google/api_core/retry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ def with_delay(self, initial=None, maximum=None, multiplier=None):
345345
predicate=self._predicate,
346346
initial=initial if initial is not None else self._initial,
347347
maximum=maximum if maximum is not None else self._maximum,
348-
multiplier=multiplier if maximum is not None else self._multiplier,
348+
multiplier=multiplier if multiplier is not None else self._multiplier,
349349
deadline=self._deadline,
350350
on_error=self._on_error,
351351
)

tests/unit/test_retry.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,44 @@ def test_with_delay(self):
246246
deadline=4,
247247
on_error=mock.sentinel.on_error,
248248
)
249-
new_retry = retry_.with_delay(initial=1, maximum=2, multiplier=3)
249+
new_retry = retry_.with_delay(initial=5, maximum=6, multiplier=7)
250250
assert retry_ is not new_retry
251-
assert new_retry._initial == 1
251+
assert new_retry._initial == 5
252+
assert new_retry._maximum == 6
253+
assert new_retry._multiplier == 7
254+
255+
# the rest of the attributes should remain the same
256+
assert new_retry._deadline == retry_._deadline
257+
assert new_retry._predicate is retry_._predicate
258+
assert new_retry._on_error is retry_._on_error
259+
260+
def test_with_delay_partial_options(self):
261+
retry_ = retry.Retry(
262+
predicate=mock.sentinel.predicate,
263+
initial=1,
264+
maximum=2,
265+
multiplier=3,
266+
deadline=4,
267+
on_error=mock.sentinel.on_error,
268+
)
269+
new_retry = retry_.with_delay(initial=4)
270+
assert retry_ is not new_retry
271+
assert new_retry._initial == 4
252272
assert new_retry._maximum == 2
253273
assert new_retry._multiplier == 3
254274

275+
new_retry = retry_.with_delay(maximum=4)
276+
assert retry_ is not new_retry
277+
assert new_retry._initial == 1
278+
assert new_retry._maximum == 4
279+
assert new_retry._multiplier == 3
280+
281+
new_retry = retry_.with_delay(multiplier=4)
282+
assert retry_ is not new_retry
283+
assert new_retry._initial == 1
284+
assert new_retry._maximum == 2
285+
assert new_retry._multiplier == 4
286+
255287
# the rest of the attributes should remain the same
256288
assert new_retry._deadline == retry_._deadline
257289
assert new_retry._predicate is retry_._predicate

0 commit comments

Comments
 (0)