Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/tests/test_retry.py
Show All 10 Lines | |||||
from swh.model.model import ( | from swh.model.model import ( | ||||
Content, Directory, Release, Revision, Snapshot, Origin | Content, Directory, Release, Revision, Snapshot, Origin | ||||
) | ) | ||||
from swh.storage import get_storage | from swh.storage import get_storage | ||||
from swh.storage.exc import HashCollision, StorageArgumentException | from swh.storage.exc import HashCollision, StorageArgumentException | ||||
from .storage_data import date_visit1 | |||||
@pytest.fixture | @pytest.fixture | ||||
def fake_hash_collision(sample_data): | def fake_hash_collision(sample_data): | ||||
return HashCollision( | return HashCollision( | ||||
'sha1', "38762cf7f55934b34d179ae6a4c80cadccbb7f0a", []) | 'sha1', "38762cf7f55934b34d179ae6a4c80cadccbb7f0a", []) | ||||
@pytest.fixture | @pytest.fixture | ||||
▲ Show 20 Lines • Show All 234 Lines • ▼ Show 20 Lines | def test_retrying_proxy_swh_storage_origin_visit_add(swh_storage, sample_data): | ||||
""" | """ | ||||
sample_origin = sample_data['origin'][0] | sample_origin = sample_data['origin'][0] | ||||
origin_url = swh_storage.origin_add_one(sample_origin) | origin_url = swh_storage.origin_add_one(sample_origin) | ||||
origin = list(swh_storage.origin_visit_get(origin_url)) | origin = list(swh_storage.origin_visit_get(origin_url)) | ||||
assert not origin | assert not origin | ||||
origin_visit = swh_storage.origin_visit_add(origin_url, '2020-01-01', 'hg') | origin_visit = swh_storage.origin_visit_add(origin_url, date_visit1, 'hg') | ||||
assert origin_visit.origin == origin_url | assert origin_visit.origin == origin_url | ||||
assert isinstance(origin_visit.visit, int) | assert isinstance(origin_visit.visit, int) | ||||
origin_visit = next(swh_storage.origin_visit_get(origin_url)) | origin_visit = next(swh_storage.origin_visit_get(origin_url)) | ||||
assert origin_visit['origin'] == origin_url | assert origin_visit['origin'] == origin_url | ||||
assert isinstance(origin_visit['visit'], int) | assert isinstance(origin_visit['visit'], int) | ||||
Show All 17 Lines | def test_retrying_proxy_swh_storage_origin_visit_add_retry( | ||||
] | ] | ||||
mock_sleep = mocker.patch( | mock_sleep = mocker.patch( | ||||
'swh.storage.retry.RetryingProxyStorage' | 'swh.storage.retry.RetryingProxyStorage' | ||||
'.origin_visit_add.retry.sleep') | '.origin_visit_add.retry.sleep') | ||||
origin = list(swh_storage.origin_visit_get(origin_url)) | origin = list(swh_storage.origin_visit_get(origin_url)) | ||||
assert not origin | assert not origin | ||||
r = swh_storage.origin_visit_add(origin_url, '2020-01-01', 'git') | r = swh_storage.origin_visit_add(origin_url, date_visit1, 'git') | ||||
assert r == {'origin': origin_url, 'visit': 1} | assert r == {'origin': origin_url, 'visit': 1} | ||||
mock_memory.assert_has_calls([ | mock_memory.assert_has_calls([ | ||||
call(origin_url, '2020-01-01', 'git'), | call(origin_url, date_visit1, 'git'), | ||||
call(origin_url, '2020-01-01', 'git'), | call(origin_url, date_visit1, 'git'), | ||||
call(origin_url, '2020-01-01', 'git') | call(origin_url, date_visit1, 'git') | ||||
]) | ]) | ||||
assert mock_sleep.call_count == 2 | assert mock_sleep.call_count == 2 | ||||
def test_retrying_proxy_swh_storage_origin_visit_add_failure( | def test_retrying_proxy_swh_storage_origin_visit_add_failure( | ||||
swh_storage, sample_data, mocker): | swh_storage, sample_data, mocker): | ||||
"""Unfiltered errors are raising without retry | """Unfiltered errors are raising without retry | ||||
""" | """ | ||||
mock_memory = mocker.patch( | mock_memory = mocker.patch( | ||||
'swh.storage.in_memory.InMemoryStorage.origin_visit_add') | 'swh.storage.in_memory.InMemoryStorage.origin_visit_add') | ||||
mock_memory.side_effect = StorageArgumentException( | mock_memory.side_effect = StorageArgumentException( | ||||
'Refuse to add origin always!') | 'Refuse to add origin always!') | ||||
origin_url = sample_data['origin'][0]['url'] | origin_url = sample_data['origin'][0]['url'] | ||||
origin = list(swh_storage.origin_visit_get(origin_url)) | origin = list(swh_storage.origin_visit_get(origin_url)) | ||||
assert not origin | assert not origin | ||||
with pytest.raises(StorageArgumentException, match='Refuse to add'): | with pytest.raises(StorageArgumentException, match='Refuse to add'): | ||||
swh_storage.origin_visit_add(origin_url, '2020-01-31', 'svn') | swh_storage.origin_visit_add(origin_url, date_visit1, 'svn') | ||||
mock_memory.assert_has_calls([ | mock_memory.assert_has_calls([ | ||||
call(origin_url, '2020-01-31', 'svn'), | call(origin_url, date_visit1, 'svn'), | ||||
]) | ]) | ||||
def test_retrying_proxy_storage_tool_add(swh_storage, sample_data): | def test_retrying_proxy_storage_tool_add(swh_storage, sample_data): | ||||
"""Standard tool_add works as before | """Standard tool_add works as before | ||||
""" | """ | ||||
sample_tool = sample_data['tool'][0] | sample_tool = sample_data['tool'][0] | ||||
▲ Show 20 Lines • Show All 252 Lines • ▼ Show 20 Lines | |||||
def test_retrying_proxy_swh_storage_origin_visit_update( | def test_retrying_proxy_swh_storage_origin_visit_update( | ||||
swh_storage, sample_data): | swh_storage, sample_data): | ||||
"""Standard origin_visit_update works as before | """Standard origin_visit_update works as before | ||||
""" | """ | ||||
sample_origin = sample_data['origin'][0] | sample_origin = sample_data['origin'][0] | ||||
origin_url = swh_storage.origin_add_one(sample_origin) | origin_url = swh_storage.origin_add_one(sample_origin) | ||||
origin_visit = swh_storage.origin_visit_add(origin_url, '2020-01-01', 'hg') | origin_visit = swh_storage.origin_visit_add(origin_url, date_visit1, 'hg') | ||||
ov = next(swh_storage.origin_visit_get(origin_url)) | ov = next(swh_storage.origin_visit_get(origin_url)) | ||||
assert ov['origin'] == origin_url | assert ov['origin'] == origin_url | ||||
assert ov['visit'] == origin_visit.visit | assert ov['visit'] == origin_visit.visit | ||||
assert ov['status'] == 'ongoing' | assert ov['status'] == 'ongoing' | ||||
assert ov['snapshot'] is None | assert ov['snapshot'] is None | ||||
assert ov['metadata'] is None | assert ov['metadata'] is None | ||||
▲ Show 20 Lines • Show All 371 Lines • Show Last 20 Lines |