update repository references and improve script handling
This commit is contained in:
104
hassio-google-drive-backup/tests/test_backoff.py
Normal file
104
hassio-google-drive-backup/tests/test_backoff.py
Normal file
@@ -0,0 +1,104 @@
|
||||
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
|
||||
Reference in New Issue
Block a user