From 8192121da700dd93faa71bcd87e28c700cd6106b Mon Sep 17 00:00:00 2001 From: David Cramer Date: Mon, 6 Aug 2012 20:03:26 -0700 Subject: [PATCH] Support correctly disabling the Raven client with an empty dsn value --- raven/base.py | 13 +++++++++++-- raven/contrib/django/client.py | 6 +++--- tests/client/tests.py | 3 +++ tests/contrib/celery/tests.py | 2 +- tests/contrib/flask/tests.py | 3 +++ tests/contrib/zerorpc/tests.py | 3 +++ tests/handlers/logbook/tests.py | 3 +++ tests/handlers/logging/tests.py | 3 +++ tests/middleware/tests.py | 3 +++ 9 files changed, 33 insertions(+), 6 deletions(-) diff --git a/raven/base.py b/raven/base.py index 6f63f5d44..fcd20e020 100644 --- a/raven/base.py +++ b/raven/base.py @@ -174,8 +174,7 @@ def __init__(self, servers=None, include_paths=None, exclude_paths=None, # servers may be set to a NoneType (for Django) if servers and not (key or (secret_key and public_key)): - msg = 'Missing configuration for client. Please see documentation.' - raise TypeError(msg) + self.logger.info('Raven is not configured (disabled). Please see documentation for more information.') if kwargs.get('timeout') is not None: warnings.warn('The ``timeout`` option no longer does anything. Pass the option to your transport instead.') @@ -390,6 +389,9 @@ def capture(self, event_type, data=None, date=None, time_spent=None, :return: a 32-length string identifying this event """ + if not self.is_enabled(): + return + data = self.build_msg(event_type, data, date, time_spent, extra, stack, public_key=public_key, tags=tags, **kwargs) @@ -413,6 +415,13 @@ def _get_log_message(self, data): message = data.pop('message', '') return message + def is_enabled(self): + """ + Return a boolean describing whether the client should attempt to send + events. + """ + return bool(self.servers) + def send_remote(self, url, data, headers={}): if not self.state.should_try(): message = self._get_log_message(data) diff --git a/raven/contrib/django/client.py b/raven/contrib/django/client.py index cba7173ca..a8602115d 100644 --- a/raven/contrib/django/client.py +++ b/raven/contrib/django/client.py @@ -25,6 +25,9 @@ class DjangoClient(Client): logger = logging.getLogger('sentry.errors.client.django') + def is_enabled(self): + return self.servers or 'sentry' in settings.INSTALLED_APPS + def get_user_info(self, request): if request.user.is_authenticated(): user_info = { @@ -117,9 +120,6 @@ def send(self, **kwargs): return self.send_integrated(kwargs) except Exception, e: self.error_logger.error('Unable to record event: %s', e, exc_info=True) - else: - self.error_logger.error('No servers configured, and sentry not installed. Cannot send message') - return None def send_integrated(self, kwargs): from sentry.models import Group diff --git a/tests/client/tests.py b/tests/client/tests.py index 9255ec9fa..c2ddc1c77 100644 --- a/tests/client/tests.py +++ b/tests/client/tests.py @@ -15,6 +15,9 @@ def __init__(self, servers=None, **kwargs): self.events = [] super(TempStoreClient, self).__init__(servers=servers, **kwargs) + def is_enabled(self): + return True + def send(self, **kwargs): self.events.append(kwargs) diff --git a/tests/contrib/celery/tests.py b/tests/contrib/celery/tests.py index a3e64c454..1272ccea5 100644 --- a/tests/contrib/celery/tests.py +++ b/tests/contrib/celery/tests.py @@ -8,7 +8,7 @@ class ClientTest(TestCase): def setUp(self): - self.client = CeleryClient() + self.client = CeleryClient(servers=['http://example.com']) @mock.patch('raven.contrib.celery.CeleryClient.send_raw') def test_send_encoded(self, send_raw): diff --git a/tests/contrib/flask/tests.py b/tests/contrib/flask/tests.py index 69953f457..96d8cbff3 100644 --- a/tests/contrib/flask/tests.py +++ b/tests/contrib/flask/tests.py @@ -10,6 +10,9 @@ def __init__(self, servers=None, **kwargs): self.events = [] super(TempStoreClient, self).__init__(servers=servers, **kwargs) + def is_enabled(self): + return True + def send(self, **kwargs): self.events.append(kwargs) diff --git a/tests/contrib/zerorpc/tests.py b/tests/contrib/zerorpc/tests.py index ae841057a..78896e907 100644 --- a/tests/contrib/zerorpc/tests.py +++ b/tests/contrib/zerorpc/tests.py @@ -15,6 +15,9 @@ def __init__(self, servers=None, **kwargs): self.events = [] super(TempStoreClient, self).__init__(servers=servers, **kwargs) + def is_enabled(self): + return True + def send(self, **kwargs): self.events.append(kwargs) diff --git a/tests/handlers/logbook/tests.py b/tests/handlers/logbook/tests.py index 2ae56950d..a91d93966 100644 --- a/tests/handlers/logbook/tests.py +++ b/tests/handlers/logbook/tests.py @@ -9,6 +9,9 @@ def __init__(self, servers=None, **kwargs): self.events = [] super(TempStoreClient, self).__init__(servers=servers, **kwargs) + def is_enabled(self): + return True + def send(self, **kwargs): self.events.append(kwargs) diff --git a/tests/handlers/logging/tests.py b/tests/handlers/logging/tests.py index 07df80fa0..21f26ce52 100644 --- a/tests/handlers/logging/tests.py +++ b/tests/handlers/logging/tests.py @@ -10,6 +10,9 @@ def __init__(self, servers=None, **kwargs): self.events = [] super(TempStoreClient, self).__init__(servers=servers, **kwargs) + def is_enabled(self): + return True + def send(self, **kwargs): self.events.append(kwargs) diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py index 942fff42c..c191e7051 100644 --- a/tests/middleware/tests.py +++ b/tests/middleware/tests.py @@ -11,6 +11,9 @@ def __init__(self, servers=None, **kwargs): self.events = [] super(TempStoreClient, self).__init__(servers=servers, **kwargs) + def is_enabled(self): + return True + def send(self, **kwargs): self.events.append(kwargs)