Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/tests/test_retry.py
Show First 20 Lines • Show All 255 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] | ||||
swh_storage.origin_add_one(sample_origin) | swh_storage.origin_add_one(sample_origin) | ||||
origin_url = sample_origin['url'] | origin_url = sample_origin['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 | ||||
origin = Origin(url=origin_url) | |||||
origin_visit = swh_storage.origin_visit_add( | origin_visit = swh_storage.origin_visit_add( | ||||
origin_url, '2020-01-01', 'hg') | origin, '2020-01-01', '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) | ||||
def test_retrying_proxy_swh_storage_origin_visit_add_retry( | def test_retrying_proxy_swh_storage_origin_visit_add_retry( | ||||
swh_storage, sample_data, mocker): | swh_storage, sample_data, mocker): | ||||
Show All 16 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(sample_origin, '2020-01-01', 'git') | origin = Origin(url=sample_origin) | ||||
r = swh_storage.origin_visit_add(origin, '2020-01-01', '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(sample_origin, '2020-01-01', 'git'), | call(origin, '2020-01-01', 'git'), | ||||
call(sample_origin, '2020-01-01', 'git'), | call(origin, '2020-01-01', 'git'), | ||||
call(sample_origin, '2020-01-01', 'git') | call(origin, '2020-01-01', '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 | ||||
origin = Origin(url=origin_url) | |||||
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, '2020-01-31', 'svn') | ||||
mock_memory.assert_has_calls([ | mock_memory.assert_has_calls([ | ||||
call(origin_url, '2020-01-31', 'svn'), | call(origin, '2020-01-31', '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 253 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] | ||||
swh_storage.origin_add_one(sample_origin) | swh_storage.origin_add_one(sample_origin) | ||||
origin_url = sample_origin['url'] | origin_url = sample_origin['url'] | ||||
origin = Origin(url=origin_url) | |||||
origin_visit = swh_storage.origin_visit_add( | origin_visit = swh_storage.origin_visit_add( | ||||
origin_url, '2020-01-01', 'hg') | origin, '2020-01-01', '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 | ||||
swh_storage.origin_visit_update(origin_url, ov['visit'], status='full') | swh_storage.origin_visit_update( | ||||
origin.url, origin_visit.visit, status='full') | |||||
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'] == 'full' | assert ov['status'] == 'full' | ||||
assert ov['snapshot'] is None | assert ov['snapshot'] is None | ||||
assert ov['metadata'] is None | assert ov['metadata'] is None | ||||
def test_retrying_proxy_swh_storage_origin_visit_update_retry( | def test_retrying_proxy_swh_storage_origin_visit_update_retry( | ||||
swh_storage, sample_data, mocker): | swh_storage, sample_data, mocker): | ||||
"""Multiple retries for hash collision and psycopg2 error but finally ok | """Multiple retries for hash collision and psycopg2 error but finally ok | ||||
▲ Show 20 Lines • Show All 357 Lines • Show Last 20 Lines |