Files
hassio-addons-avm/hassio-google-drive-backup/tests/test_backoff.py

105 lines
3.0 KiB
Python

from pytest import fixture, raises
from backup.util import Backoff
@fixture
def error():
return Exception()
def test_defaults(error):
backoff = Backoff()
assert backoff.backoff(error) == 2
assert backoff.backoff(error) == 4
assert backoff.backoff(error) == 8
assert backoff.backoff(error) == 16
assert backoff.backoff(error) == 32
assert backoff.backoff(error) == 64
assert backoff.backoff(error) == 128
assert backoff.backoff(error) == 256
assert backoff.backoff(error) == 512
assert backoff.backoff(error) == 1024
assert backoff.backoff(error) == 2048
for x in range(10000):
assert backoff.backoff(error) == 3600
def test_max(error):
backoff = Backoff(max=500)
assert backoff.backoff(error) == 2
assert backoff.backoff(error) == 4
assert backoff.backoff(error) == 8
assert backoff.backoff(error) == 16
assert backoff.backoff(error) == 32
assert backoff.backoff(error) == 64
assert backoff.backoff(error) == 128
assert backoff.backoff(error) == 256
for x in range(10000):
assert backoff.backoff(error) == 500
def test_initial(error):
backoff = Backoff(initial=0)
assert backoff.backoff(error) == 0
assert backoff.backoff(error) == 2
assert backoff.backoff(error) == 4
assert backoff.backoff(error) == 8
assert backoff.backoff(error) == 16
assert backoff.backoff(error) == 32
assert backoff.backoff(error) == 64
assert backoff.backoff(error) == 128
assert backoff.backoff(error) == 256
assert backoff.backoff(error) == 512
assert backoff.backoff(error) == 1024
assert backoff.backoff(error) == 2048
for x in range(10000):
assert backoff.backoff(error) == 3600
def test_attempts(error):
backoff = Backoff(attempts=5)
assert backoff.backoff(error) == 2
assert backoff.backoff(error) == 4
assert backoff.backoff(error) == 8
assert backoff.backoff(error) == 16
assert backoff.backoff(error) == 32
for x in range(5):
with raises(type(error)):
backoff.backoff(error)
def test_start(error):
backoff = Backoff(base=10)
assert backoff.backoff(error) == 10
assert backoff.backoff(error) == 20
assert backoff.backoff(error) == 40
assert backoff.backoff(error) == 80
def test_realistic(error):
backoff = Backoff(base=5, initial=0, exp=1.5, attempts=5)
assert backoff.backoff(error) == 0
assert backoff.backoff(error) == 5
assert backoff.backoff(error) == 5 * 1.5
assert backoff.backoff(error) == 5 * (1.5**2)
assert backoff.backoff(error) == 5 * (1.5**3)
for x in range(5):
with raises(type(error)):
backoff.backoff(error)
def test_maxOut(error):
backoff = Backoff(base=10, max=100)
assert backoff.backoff(error) == 10
assert backoff.backoff(error) == 20
backoff.maxOut()
assert backoff.backoff(error) == 100
assert backoff.backoff(error) == 100
backoff.reset()
assert backoff.backoff(error) == 10