From a11d29fb20f50987bf78e99001c12e08b6e97027 Mon Sep 17 00:00:00 2001 From: Matt Bennett Date: Wed, 7 Feb 2018 08:22:19 +0000 Subject: [PATCH] hardcode eventlet transport rather than relying on dsn prefix --- nameko_sentry.py | 4 +++- test_nameko_sentry.py | 26 +++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/nameko_sentry.py b/nameko_sentry.py index 6986112..18f7713 100644 --- a/nameko_sentry.py +++ b/nameko_sentry.py @@ -5,6 +5,7 @@ from nameko.web.handlers import HttpRequestHandler from raven import Client from raven.utils.wsgi import get_environ, get_headers +from raven.transport.eventlet import EventletHTTPTransport from six.moves.urllib.parse import urlsplit # pylint: disable=E0401 from werkzeug.exceptions import ClientDisconnected @@ -26,7 +27,8 @@ def setup(self): sentry_config = sentry_config or {} dsn = sentry_config.get('DSN', None) kwargs = sentry_config.get('CLIENT_CONFIG', {}) - self.client = Client(dsn, **kwargs) + + self.client = Client(dsn, transport=EventletHTTPTransport, **kwargs) report_expected_exceptions = sentry_config.get( 'REPORT_EXPECTED_EXCEPTIONS', True diff --git a/test_nameko_sentry.py b/test_nameko_sentry.py index ad023e9..67b8f9e 100644 --- a/test_nameko_sentry.py +++ b/test_nameko_sentry.py @@ -32,7 +32,7 @@ def config(rabbit_config): config = rabbit_config.copy() config.update({ 'SENTRY': { - 'DSN': 'eventlet+http://user:pass@localhost:9000/1', + 'DSN': 'http://user:pass@localhost:9000/1', 'CLIENT_CONFIG': { 'site': 'site name' } @@ -66,6 +66,30 @@ def patched_sentry(): yield +@pytest.mark.parametrize("dsn", [ + 'http://user:pass@localhost:9000/1', + 'eventlet+http://user:pass@localhost:9000/1', +]) +def test_eventlet_transport( + dsn, rabbit_config, container_factory, service_cls +): + config = rabbit_config.copy() + config.update({ + 'SENTRY': { + 'DSN': dsn + } + }) + + container = container_factory(service_cls, config) + container.start() + + sentry = get_extension(container, SentryReporter) + + # transport set correctly + transport = sentry.client.remote.get_transport() + assert isinstance(transport, EventletHTTPTransport) + + @pytest.mark.usefixtures('patched_sentry') def test_setup(container_factory, service_cls, config):