diff --git a/swh/storage/tests/test_api_client.py b/swh/storage/tests/test_api_client.py index 0879d6be..d52a0e27 100644 --- a/swh/storage/tests/test_api_client.py +++ b/swh/storage/tests/test_api_client.py @@ -1,141 +1,143 @@ # Copyright (C) 2015-2018 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import shutil import tempfile import unittest import pytest from swh.core.api.tests.server_testing import ServerTestFixture import swh.storage.storage as storage from swh.storage.journal_writer import \ get_journal_writer, InMemoryJournalWriter from swh.storage.in_memory import Storage as InMemoryStorage from swh.storage.api.client import RemoteStorage import swh.storage.api.server as server from swh.storage.api.server import app from swh.storage.tests.test_storage import \ CommonTestStorage, CommonPropTestStorage, StorageTestDbFixture class RemoteStorageFixture(ServerTestFixture, unittest.TestCase): """Test the remote storage API. This class doesn't define any tests as we want identical functionality between local and remote storage. All the tests are therefore defined in CommonTestStorage. """ def setUp(self): self.app = app super().setUp() self.storage = RemoteStorage(self.url()) class RemotePgStorageFixture(StorageTestDbFixture, RemoteStorageFixture): def setUp(self): def mock_get_journal_writer(cls, args=None): assert cls == 'inmemory' return journal_writer server.storage = None storage.get_journal_writer = mock_get_journal_writer journal_writer = InMemoryJournalWriter() self.journal_writer = journal_writer # ServerTestFixture needs to have self.objroot for # setUp() method, but this field is defined in # AbstractTestStorage's setUp() # To avoid confusion, override the self.objroot to a # one chosen in this class. self.storage_base = tempfile.mkdtemp() self.objroot = self.storage_base self.config = { 'storage': { 'cls': 'local', 'args': { 'db': 'dbname=%s' % self.TEST_DB_NAME, 'objstorage': { 'cls': 'pathslicing', 'args': { 'root': self.storage_base, 'slicing': '0:2', }, }, 'journal_writer': { 'cls': 'inmemory', } } } } super().setUp() def tearDown(self): super().tearDown() shutil.rmtree(self.storage_base) storage.get_journal_writer = get_journal_writer class RemoteMemStorageFixture(RemoteStorageFixture): def setUp(self): self.config = { 'storage': { 'cls': 'memory', 'args': { 'journal_writer': { 'cls': 'inmemory', } } } } self.__storage = InMemoryStorage(journal_writer={'cls': 'inmemory'}) self._get_storage_patcher = unittest.mock.patch( 'swh.storage.api.server.get_storage', return_value=self.__storage) self._get_storage_patcher.start() super().setUp() self.journal_writer = self.__storage.journal_writer def tearDown(self): super().tearDown() self._get_storage_patcher.stop() +@pytest.mark.network class TestRemoteMemStorage(CommonTestStorage, RemoteMemStorageFixture): @pytest.mark.skip('refresh_stat_counters not available in the remote api.') def test_stat_counters(self): pass @pytest.mark.skip('postgresql-specific test') def test_content_add_db(self): pass @pytest.mark.skip('postgresql-specific test') def test_skipped_content_add_db(self): pass @pytest.mark.skip('postgresql-specific test') def test_content_add_metadata_db(self): pass @pytest.mark.skip( 'not implemented, see https://forge.softwareheritage.org/T1633') def test_skipped_content_add(self): pass @pytest.mark.db +@pytest.mark.network class TestRemotePgStorage(CommonTestStorage, RemotePgStorageFixture): @pytest.mark.skip('refresh_stat_counters not available in the remote api.') def test_stat_counters(self): pass @pytest.mark.db @pytest.mark.property_based class PropTestRemotePgStorage(CommonPropTestStorage, RemotePgStorageFixture): @pytest.mark.skip('too slow') def test_add_arbitrary(self): pass