Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/tests/test_retry.py
Show First 20 Lines • Show All 555 Lines • ▼ Show 20 Lines | |||||
def test_retrying_proxy_storage_directory_add(swh_storage, sample_data): | def test_retrying_proxy_storage_directory_add(swh_storage, sample_data): | ||||
"""Standard directory_add works as before | """Standard directory_add works as before | ||||
""" | """ | ||||
sample_dir = sample_data.directory | sample_dir = sample_data.directory | ||||
directory = swh_storage.directory_get_random() # no directory | |||||
assert not directory | |||||
s = swh_storage.directory_add([sample_dir]) | s = swh_storage.directory_add([sample_dir]) | ||||
assert s == { | assert s == { | ||||
"directory:add": 1, | "directory:add": 1, | ||||
} | } | ||||
directory_id = swh_storage.directory_get_random() # only 1 | directory_id = swh_storage.directory_get_random() # only 1 | ||||
assert directory_id == sample_dir.id | assert directory_id == sample_dir.id | ||||
Show All 11 Lines | mock_memory.side_effect = [ | ||||
# second try goes ko | # second try goes ko | ||||
psycopg2.IntegrityError("directory already inserted"), | psycopg2.IntegrityError("directory already inserted"), | ||||
# ok then! | # ok then! | ||||
{"directory:add": 1}, | {"directory:add": 1}, | ||||
] | ] | ||||
sample_dir = sample_data.directories[1] | sample_dir = sample_data.directories[1] | ||||
directory_id = swh_storage.directory_get_random() # no directory | |||||
assert not directory_id | |||||
s = swh_storage.directory_add([sample_dir]) | s = swh_storage.directory_add([sample_dir]) | ||||
assert s == { | assert s == { | ||||
"directory:add": 1, | "directory:add": 1, | ||||
} | } | ||||
mock_memory.assert_has_calls( | mock_memory.assert_has_calls( | ||||
[call([sample_dir]), call([sample_dir]), call([sample_dir]),] | [call([sample_dir]), call([sample_dir]), call([sample_dir]),] | ||||
) | ) | ||||
def test_retrying_proxy_swh_storage_directory_add_failure( | def test_retrying_proxy_swh_storage_directory_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("swh.storage.in_memory.InMemoryStorage.directory_add") | mock_memory = mocker.patch("swh.storage.in_memory.InMemoryStorage.directory_add") | ||||
mock_memory.side_effect = StorageArgumentException( | mock_memory.side_effect = StorageArgumentException( | ||||
"Refuse to add directory always!" | "Refuse to add directory always!" | ||||
) | ) | ||||
sample_dir = sample_data.directory | sample_dir = sample_data.directory | ||||
directory_id = swh_storage.directory_get_random() # no directory | |||||
assert not directory_id | |||||
with pytest.raises(StorageArgumentException, match="Refuse to add"): | with pytest.raises(StorageArgumentException, match="Refuse to add"): | ||||
swh_storage.directory_add([sample_dir]) | swh_storage.directory_add([sample_dir]) | ||||
assert mock_memory.call_count == 1 | assert mock_memory.call_count == 1 | ||||
def test_retrying_proxy_storage_revision_add(swh_storage, sample_data): | def test_retrying_proxy_storage_revision_add(swh_storage, sample_data): | ||||
"""Standard revision_add works as before | """Standard revision_add works as before | ||||
▲ Show 20 Lines • Show All 203 Lines • Show Last 20 Lines |