Beispiel #1
0
def setup_storage(config):
    settings = config.get_settings()

    # Id generators by resource name.
    config.registry.id_generators = {}
    for key, value in settings.items():
        m = re.match(r"^([^_]*)_?id_generator", key)
        if m is None:
            continue
        resource_name = m.group(1)
        id_generator = config.maybe_dotted(value)
        config.registry.id_generators[resource_name] = id_generator()

    storage_mod = settings["storage_backend"]
    if not storage_mod:
        return

    storage_mod = config.maybe_dotted(storage_mod)
    backend = storage_mod.load_from_config(config)
    if not isinstance(backend, storage.StorageBase):
        raise ConfigurationError(f"Invalid storage backend: {backend}")
    config.registry.storage = backend

    heartbeat = storage.heartbeat(backend)
    config.registry.heartbeats["storage"] = heartbeat
def setup_storage(config):
    settings = config.get_settings()

    # Id generators by resource name.
    config.registry.id_generators = {}
    for key, value in settings.items():
        m = re.match(r'^([^_]*)_?id_generator', key)
        if m is None:
            continue
        resource_name = m.group(1)
        id_generator = config.maybe_dotted(value)
        config.registry.id_generators[resource_name] = id_generator()

    storage_mod = settings['storage_backend']
    if not storage_mod:
        return

    storage_mod = config.maybe_dotted(storage_mod)
    backend = storage_mod.load_from_config(config)
    if not isinstance(backend, storage.StorageBase):
        raise ConfigurationError("Invalid storage backend: %s" % backend)
    config.registry.storage = backend

    heartbeat = storage.heartbeat(backend)
    config.registry.heartbeats['storage'] = heartbeat
Beispiel #3
0
 def test_ping_returns_false_if_unavailable_in_readonly_mode(self):
     request = DummyRequest()
     request.headers['Authorization'] = 'Basic bWF0OjI='
     request.registry.settings = {'readonly': 'true'}
     ping = heartbeat(self.storage)
     with mock.patch.object(self.storage, 'get_all',
                            side_effect=exceptions.BackendError("Boom!")):
         self.assertFalse(ping(request))
Beispiel #4
0
 def test_ping_returns_true_when_working(self):
     request = DummyRequest()
     request.headers['Authorization'] = 'Basic bWF0OjI='
     ping = heartbeat(self.storage)
     with mock.patch('kinto.core.storage.random.SystemRandom.random', return_value=0.7):
         self.assertTrue(ping(request))
     with mock.patch('kinto.core.storage.random.SystemRandom.random', return_value=0.5):
         self.assertTrue(ping(request))
Beispiel #5
0
    def test_ping_logs_error_if_unavailable(self):
        request = DummyRequest()
        self.client_error_patcher.start()
        ping = heartbeat(self.storage)

        with mock.patch('kinto.core.storage.logger.exception') as exc_handler:
            self.assertFalse(ping(request))

        self.assertTrue(exc_handler.called)
Beispiel #6
0
 def test_ping_leaves_no_tombstone(self):
     request = DummyRequest()
     request.headers['Authorization'] = 'Basic bWF0OjI='
     ping = heartbeat(self.storage)
     with mock.patch('kinto.core.storage.random.SystemRandom.random', return_value=0.7):
         ping(request)
     with mock.patch('kinto.core.storage.random.SystemRandom.random', return_value=0.5):
         ping(request)
     records, count = self.storage.get_all(parent_id='__heartbeat__',
                                           collection_id='__heartbeat__',
                                           include_deleted=True)
     self.assertEqual(len(records), 0)
Beispiel #7
0
    def test_ping_returns_false_if_unavailable(self):
        request = DummyRequest()
        request.headers['Authorization'] = self.storage_kw['auth']
        request.registry.settings = {'readonly': 'false'}
        ping = heartbeat(self.storage)

        with mock.patch('kinto.core.storage.random.SystemRandom.random', return_value=0.7):
            ping(request)

        self.client_error_patcher.start()
        with mock.patch('kinto.core.storage.random.SystemRandom.random', return_value=0.7):
            self.assertFalse(ping(request))
        with mock.patch('kinto.core.storage.random.SystemRandom.random', return_value=0.5):
            self.assertFalse(ping(request))
Beispiel #8
0
def setup_storage(config):
    settings = config.get_settings()

    id_generator = config.maybe_dotted(settings['id_generator'])
    config.registry.id_generator = id_generator()

    storage_mod = settings['storage_backend']
    if not storage_mod:
        return

    storage_mod = config.maybe_dotted(storage_mod)
    backend = storage_mod.load_from_config(config)
    if not isinstance(backend, storage.StorageBase):
        raise ConfigurationError("Invalid storage backend: %s" % backend)
    config.registry.storage = backend

    heartbeat = storage.heartbeat(backend)
    config.registry.heartbeats['storage'] = heartbeat
Beispiel #9
0
def setup_storage(config):
    settings = config.get_settings()

    id_generator = config.maybe_dotted(settings['id_generator'])
    config.registry.id_generator = id_generator()

    storage_mod = settings['storage_backend']
    if not storage_mod:
        return

    storage_mod = config.maybe_dotted(storage_mod)
    backend = storage_mod.load_from_config(config)
    if not isinstance(backend, storage.StorageBase):
        raise ConfigurationError("Invalid storage backend: %s" % backend)
    config.registry.storage = backend

    heartbeat = storage.heartbeat(backend)
    config.registry.heartbeats['storage'] = heartbeat
Beispiel #10
0
 def test_ping_returns_true_when_working_in_readonly_mode(self):
     request = DummyRequest()
     request.headers['Authorization'] = 'Basic bWF0OjI='
     request.registry.settings = {'readonly': 'true'}
     ping = heartbeat(self.storage)
     self.assertTrue(ping(request))