From bf0107708d4b494c562059d7db8d935a76d91316 Mon Sep 17 00:00:00 2001 From: Ashley Camba Garrido Date: Fri, 17 Nov 2017 13:47:37 +0100 Subject: Remove deprecated transport in dsn --- raven/base.py | 8 --- raven/conf/remote.py | 15 +---- raven/transport/__init__.py | 2 - raven/transport/base.py | 1 - raven/transport/eventlet.py | 2 - raven/transport/exceptions.py | 22 ------- raven/transport/gevent.py | 2 - raven/transport/http.py | 1 - raven/transport/registry.py | 75 ---------------------- raven/transport/requests.py | 2 - raven/transport/threaded.py | 2 - raven/transport/threaded_requests.py | 2 - raven/transport/tornado.py | 2 - raven/transport/twisted.py | 1 - raven/utils/encoding.py | 2 - tests/base/tests.py | 25 ++++---- tests/contrib/django/tests.py | 3 +- tests/handlers/logging/tests.py | 7 +- tests/new_client.py | 68 ++++++++++++++++++++ tests/transport/gevent/tests.py | 3 +- tests/transport/requests/test_threaded_requests.py | 7 +- tests/transport/requests/tests.py | 4 +- tests/transport/tests.py | 29 ++++----- tests/transport/threaded/tests.py | 7 +- tests/transport/tornado/tests.py | 18 ++++-- 25 files changed, 131 insertions(+), 179 deletions(-) delete mode 100644 raven/transport/exceptions.py delete mode 100644 raven/transport/registry.py create mode 100644 tests/new_client.py diff --git a/raven/base.py b/raven/base.py index 652e5e4..1c144e3 100644 --- a/raven/base.py +++ b/raven/base.py @@ -42,7 +42,6 @@ from raven.utils.encoding import to_unicode from raven.utils.serializer import transform from raven.utils.stacks import get_stack_info, iter_stack_frames from raven.utils.transaction import TransactionStack -from raven.transport.registry import TransportRegistry, default_transports # enforce imports to avoid obscure stacktraces with MemoryError import raven.events # NOQA @@ -148,8 +147,6 @@ class Client(object): logger = logging.getLogger('raven') protocol_version = '6' - _registry = TransportRegistry(transports=default_transports) - def __init__(self, dsn=None, raise_send_errors=False, transport=None, install_sys_hook=True, install_logging_hook=True, hook_libraries=None, enable_breadcrumbs=True, @@ -258,7 +255,6 @@ class Client(object): result = RemoteConfig.from_string( dsn, transport=transport, - transport_registry=self._registry, ) self._transport_cache[dsn] = result self.remote = result @@ -287,10 +283,6 @@ class Client(object): from raven.breadcrumbs import hook_libraries hook_libraries(libraries) - @classmethod - def register_scheme(cls, scheme, transport_class): - cls._registry.register_scheme(scheme, transport_class) - def get_processors(self): for processor in self.processors: yield self.module_cache[processor](self) diff --git a/raven/conf/remote.py b/raven/conf/remote.py index 4afe587..76316bb 100644 --- a/raven/conf/remote.py +++ b/raven/conf/remote.py @@ -2,7 +2,6 @@ from __future__ import absolute_import import logging import os -import warnings from raven.utils.compat import PY2, text_type from raven.exceptions import InvalidDsn @@ -76,7 +75,7 @@ class RemoteConfig(object): return '//%s@%s%s/%s' % (self.public_key, netloc, url.path, self.project) @classmethod - def from_string(cls, value, transport=None, transport_registry=None): + def from_string(cls, value, transport=None): # in Python 2.x sending the DSN as a unicode value will eventually # cause issues in httplib if PY2: @@ -85,17 +84,7 @@ class RemoteConfig(object): url = urlparse(value.strip()) if url.scheme not in ('http', 'https'): - warnings.warn('Transport selection via DSN is deprecated. You should explicitly pass the transport class to Client() instead.') - - if transport is None: - if not transport_registry: - from raven.transport import TransportRegistry, default_transports - transport_registry = TransportRegistry(default_transports) - - if not transport_registry.supported_scheme(url.scheme): - raise InvalidDsn(ERR_UNKNOWN_SCHEME.format(url.scheme, value)) - - transport = transport_registry.get_transport_cls(url.scheme) + raise InvalidDsn('Invalid Sentry DSN: %r' % url.geturl()) netloc = url.hostname if url.port: diff --git a/raven/transport/__init__.py b/raven/transport/__init__.py index 3549c7b..014bdff 100644 --- a/raven/transport/__init__.py +++ b/raven/transport/__init__.py @@ -11,11 +11,9 @@ from __future__ import absolute_import from raven.transport.base import * # NOQA from raven.transport.eventlet import * # NOQA -from raven.transport.exceptions import * # NOQA from raven.transport.gevent import * # NOQA from raven.transport.http import * # NOQA from raven.transport.requests import * # NOQA -from raven.transport.registry import * # NOQA from raven.transport.twisted import * # NOQA from raven.transport.threaded import * # NOQA from raven.transport.tornado import * # NOQA diff --git a/raven/transport/base.py b/raven/transport/base.py index 3704524..bb2cd31 100644 --- a/raven/transport/base.py +++ b/raven/transport/base.py @@ -21,7 +21,6 @@ class Transport(object): """ is_async = False - scheme = [] def send(self, url, data, headers): """ diff --git a/raven/transport/eventlet.py b/raven/transport/eventlet.py index 48502b9..346ca76 100644 --- a/raven/transport/eventlet.py +++ b/raven/transport/eventlet.py @@ -24,8 +24,6 @@ except ImportError: class EventletHTTPTransport(HTTPTransport): - scheme = ['eventlet+http', 'eventlet+https'] - def __init__(self, pool_size=100, **kwargs): if not has_eventlet: raise ImportError('EventletHTTPTransport requires eventlet.') diff --git a/raven/transport/exceptions.py b/raven/transport/exceptions.py deleted file mode 100644 index ce471a5..0000000 --- a/raven/transport/exceptions.py +++ /dev/null @@ -1,22 +0,0 @@ -""" -raven.transport.exceptions -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. -:license: BSD, see LICENSE for more details. -""" -from __future__ import absolute_import - - -class InvalidScheme(ValueError): - """ - Raised when a transport is constructed using a URI which is not - handled by the transport - """ - - -class DuplicateScheme(Exception): - """ - Raised when registering a handler for a particular scheme which - is already registered - """ diff --git a/raven/transport/gevent.py b/raven/transport/gevent.py index e871545..0276560 100644 --- a/raven/transport/gevent.py +++ b/raven/transport/gevent.py @@ -24,8 +24,6 @@ except ImportError: class GeventedHTTPTransport(AsyncTransport, HTTPTransport): - scheme = ['gevent+http', 'gevent+https'] - def __init__(self, maximum_outstanding_requests=100, *args, **kwargs): if not has_gevent: raise ImportError('GeventedHTTPTransport requires gevent.') diff --git a/raven/transport/http.py b/raven/transport/http.py index a5a0804..fe81d43 100644 --- a/raven/transport/http.py +++ b/raven/transport/http.py @@ -15,7 +15,6 @@ from raven.utils.http import urlopen class HTTPTransport(Transport): - scheme = ['sync+http', 'sync+https'] def __init__(self, timeout=defaults.TIMEOUT, verify_ssl=True, ca_certs=defaults.CA_BUNDLE): diff --git a/raven/transport/registry.py b/raven/transport/registry.py deleted file mode 100644 index 9f5d3c5..0000000 --- a/raven/transport/registry.py +++ /dev/null @@ -1,75 +0,0 @@ -""" -raven.transport.registry -~~~~~~~~~~~~~~~~~~~~~~~~ - -:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. -:license: BSD, see LICENSE for more details. -""" -from __future__ import absolute_import - -# TODO(dcramer): we really should need to import all of these by default -from raven.transport.eventlet import EventletHTTPTransport -from raven.transport.exceptions import DuplicateScheme -from raven.transport.http import HTTPTransport -from raven.transport.gevent import GeventedHTTPTransport -from raven.transport.requests import RequestsHTTPTransport -from raven.transport.threaded import ThreadedHTTPTransport -from raven.transport.threaded_requests import ThreadedRequestsHTTPTransport -from raven.transport.twisted import TwistedHTTPTransport -from raven.transport.tornado import TornadoHTTPTransport -from raven.utils import urlparse - - -class TransportRegistry(object): - def __init__(self, transports=None): - # setup a default list of senders - self._schemes = {} - self._transports = {} - - if transports: - for transport in transports: - self.register_transport(transport) - - def register_transport(self, transport): - if not hasattr(transport, 'scheme') or not hasattr(transport.scheme, '__iter__'): - raise AttributeError('Transport %s must have a scheme list', transport.__class__.__name__) - - for scheme in transport.scheme: - self.register_scheme(scheme, transport) - - def register_scheme(self, scheme, cls): - """ - It is possible to inject new schemes at runtime - """ - if scheme in self._schemes: - raise DuplicateScheme() - - urlparse.register_scheme(scheme) - # TODO (vng): verify the interface of the new class - self._schemes[scheme] = cls - - def supported_scheme(self, scheme): - return scheme in self._schemes - - def get_transport(self, parsed_url, **options): - full_url = parsed_url.geturl() - if full_url not in self._transports: - # Remove the options from the parsed_url - parsed_url = urlparse.urlparse(full_url.split('?')[0]) - self._transports[full_url] = self._schemes[parsed_url.scheme](parsed_url, **options) - return self._transports[full_url] - - def get_transport_cls(self, scheme): - return self._schemes[scheme] - - -default_transports = [ - HTTPTransport, - ThreadedHTTPTransport, - GeventedHTTPTransport, - TwistedHTTPTransport, - RequestsHTTPTransport, - ThreadedRequestsHTTPTransport, - TornadoHTTPTransport, - EventletHTTPTransport, -] diff --git a/raven/transport/requests.py b/raven/transport/requests.py index 8310ef3..111d49d 100644 --- a/raven/transport/requests.py +++ b/raven/transport/requests.py @@ -18,8 +18,6 @@ except ImportError: class RequestsHTTPTransport(HTTPTransport): - scheme = ['requests+http', 'requests+https'] - def __init__(self, *args, **kwargs): if not has_requests: raise ImportError('RequestsHTTPTransport requires requests.') diff --git a/raven/transport/threaded.py b/raven/transport/threaded.py index c2f1088..8ccc4f8 100644 --- a/raven/transport/threaded.py +++ b/raven/transport/threaded.py @@ -160,8 +160,6 @@ class AsyncWorker(object): class ThreadedHTTPTransport(AsyncTransport, HTTPTransport): - scheme = ['http', 'https', 'threaded+http', 'threaded+https'] - def get_worker(self): if not hasattr(self, '_worker') or not self._worker.is_alive(): self._worker = AsyncWorker() diff --git a/raven/transport/threaded_requests.py b/raven/transport/threaded_requests.py index cdc05a3..68b878b 100644 --- a/raven/transport/threaded_requests.py +++ b/raven/transport/threaded_requests.py @@ -14,8 +14,6 @@ from raven.transport.threaded import AsyncWorker class ThreadedRequestsHTTPTransport(AsyncTransport, RequestsHTTPTransport): - scheme = ['threaded+requests+http', 'threaded+requests+https'] - def get_worker(self): if not hasattr(self, '_worker'): self._worker = AsyncWorker() diff --git a/raven/transport/tornado.py b/raven/transport/tornado.py index b1a1dec..83ded15 100644 --- a/raven/transport/tornado.py +++ b/raven/transport/tornado.py @@ -22,8 +22,6 @@ except ImportError: class TornadoHTTPTransport(AsyncTransport, HTTPTransport): - scheme = ['tornado+http', 'tornado+https'] - def __init__(self, *args, **kwargs): if not has_tornado: raise ImportError('TornadoHTTPTransport requires tornado.') diff --git a/raven/transport/twisted.py b/raven/transport/twisted.py index e3f19c5..513b86b 100644 --- a/raven/transport/twisted.py +++ b/raven/transport/twisted.py @@ -24,7 +24,6 @@ except ImportError: class TwistedHTTPTransport(AsyncTransport, HTTPTransport): - scheme = ['twisted+http', 'twisted+https'] def __init__(self, *args, **kwargs): if not has_twisted: diff --git a/raven/utils/encoding.py b/raven/utils/encoding.py index 997a943..87d88b0 100644 --- a/raven/utils/encoding.py +++ b/raven/utils/encoding.py @@ -7,8 +7,6 @@ raven.utils.encoding """ from __future__ import absolute_import, unicode_literals -import warnings - from raven.utils.compat import integer_types, text_type, binary_type, \ string_types, PY2 diff --git a/tests/base/tests.py b/tests/base/tests.py index 5644db0..2e45986 100644 --- a/tests/base/tests.py +++ b/tests/base/tests.py @@ -97,7 +97,7 @@ class ClientTest(TestCase): assert client is not client2 def test_client_picks_up_env_dsn(self): - DSN = 'sync+http://public:secret@example.com/1' + DSN = 'http://public:secret@example.com/1' PUBLIC_DSN = '//public@example.com/1' with mock.patch.dict(os.environ, {'SENTRY_DSN': DSN}): client = Client() @@ -111,17 +111,18 @@ class ClientTest(TestCase): should_try.return_value = True client = Client( - dsn='sync+http://public:secret@example.com/1' + dsn='http://public:secret@example.com/1', + transport=HTTPTransport ) # test error send.side_effect = Exception() - client.send_remote('sync+http://example.com/api/store', client.encode({})) + client.send_remote('http://example.com/api/store', client.encode({})) self.assertEquals(client.state.status, client.state.ERROR) # test recovery send.side_effect = None - client.send_remote('sync+http://example.com/api/store', client.encode({})) + client.send_remote('http://example.com/api/store', client.encode({})) self.assertEquals(client.state.status, client.state.ONLINE) @mock.patch('raven.transport.http.HTTPTransport.send') @@ -130,18 +131,19 @@ class ClientTest(TestCase): should_try.return_value = True client = Client( - dsn='sync+http://public:secret@example.com/1' + dsn='http://public:secret@example.com/1', + transport=HTTPTransport ) # test error send.side_effect = RateLimited('foo', 5) - client.send_remote('sync+http://example.com/api/1/store/', client.encode({})) + client.send_remote('http://example.com/api/1/store/', client.encode({})) self.assertEquals(client.state.status, client.state.ERROR) self.assertEqual(client.state.retry_after, 5) # test recovery send.side_effect = None - client.send_remote('sync+http://example.com/api/1/store/', client.encode({})) + client.send_remote('http://example.com/api/1/store/', client.encode({})) self.assertEquals(client.state.status, client.state.ONLINE) self.assertEqual(client.state.retry_after, 0) @@ -225,7 +227,8 @@ class ClientTest(TestCase): def test_raise_exception_on_send_error(self, should_try, _send_remote): should_try.return_value = True client = Client( - dsn='sync+http://public:secret@example.com/1', + dsn='http://public:secret@example.com/1', + transport=HTTPTransport ) # Test for the default behaviour in which a send error is handled by the client @@ -236,7 +239,8 @@ class ClientTest(TestCase): # Test for the case in which a send error is raised to the calling frame. client = Client( - dsn='sync+http://public:secret@example.com/1', + dsn='http://public:secret@example.com/1', + transport=HTTPTransport, raise_send_errors=True, ) with self.assertRaises(Exception): @@ -570,9 +574,6 @@ class ClientTest(TestCase): transport=HTTPTransport) assert type(client.remote.get_transport()) is HTTPTransport - client = Client('sync+http://public:secret@example.com/1') - assert type(client.remote.get_transport()) is HTTPTransport - def test_marks_in_app_frames_for_stacktrace(self): client = TempStoreClient( include_paths=['foo'], diff --git a/tests/contrib/django/tests.py b/tests/contrib/django/tests.py index fbb7e96..c061b9e 100644 --- a/tests/contrib/django/tests.py +++ b/tests/contrib/django/tests.py @@ -693,7 +693,8 @@ class DjangoLoggingTest(TestCase): class CeleryIsolatedClientTest(TestCase): def setUp(self): self.client = CeleryClient( - dsn='sync+http://public:secret@example.com/1' + dsn='http://public:secret@example.com/1', + transport=HTTPTransport ) @mock.patch('raven.contrib.django.celery.send_raw') diff --git a/tests/handlers/logging/tests.py b/tests/handlers/logging/tests.py index 5b6dc5b..b57e358 100644 --- a/tests/handlers/logging/tests.py +++ b/tests/handlers/logging/tests.py @@ -7,6 +7,7 @@ import mock from raven.utils.compat import iteritems, PY2 from raven.base import Client from raven.handlers.logging import SentryHandler +from raven.transport import HTTPTransport from raven.utils.stacks import iter_stack_frames from raven.utils.testutils import TestCase @@ -86,7 +87,8 @@ class LoggingIntegrationTest(TestCase): should_try.return_value = True # Test for the default behaviour in which an exception is handled by the client or handler client = Client( - dsn='sync+http://public:secret@example.com/1', + dsn='http://public:secret@example.com/1', + transport=HTTPTransport, ) handler = SentryHandler(client) _send_remote.side_effect = Exception() @@ -96,7 +98,8 @@ class LoggingIntegrationTest(TestCase): # Test for the case in which a send error is raised to the calling frame. client = Client( - dsn='sync+http://public:secret@example.com/1', + dsn='http://public:secret@example.com/1', + transport=HTTPTransport, raise_send_errors=True, ) handler = SentryHandler(client) diff --git a/tests/new_client.py b/tests/new_client.py new file mode 100644 index 0000000..1e4e209 --- /dev/null +++ b/tests/new_client.py @@ -0,0 +1,68 @@ + + + +class Client(object): + + def __init__(self, dsn=Ellipsis, *args, **kwargs): + + self.dsn = dsn + self.environment = Environ() # singleton encapsulating lazy? system properties + self.settings = Settings(dsn, *args, **kwargs) # kwargs settings > os.environ variables > defaults + self.transport = self.get_transport() + self.instrument() + self.spool = self.get_spool() # in-memory, to-disk, etc... + + def get_interfaces(self, **kwargs): # returns list of callables + return self.settings.get('interfaces') + + def get_instrumentation_hooks(self, **kwargs): # returns list of callables + return self.settings.get('instrument_hooks') + + def get_validators(self, **kwargs): # returns list of callables + return self.settings.get('validators') + + def get_default_message(self, **kwargs): # returns dictionary + return self.settings.get('message_data') + + def instrument(self, force=False): + if self.environment.instrumented or force: + for hook in self.get_instrument_hooks(): + try: + hook() + except Exception: + # log.warn("Configuration bla bla...") + self.sys_warnings.append({"type": "sys_hook", "message":"Hook ... failed. ") + + + def capture_exception(self, exception, **kwargs): + message = Message(exception, defaults=self.get_default_message(), **kwargs) + for interface in self.get_interfaces(**kwargs): + try: + message = interface.process(message, self.settings, self.environment) + except Exception as e: + message.add_error(interface, e) + + for validator in self.get_validators(**kwargs): + try: + message = validator.process(message, self.settings, self.environment) + except ValidationError: + pass # maybe we can fix it here, purge the offending interface, etc.. ? + except Exception: + message.add_error(validator, e) + + try: + message.send(transport=self.transport, sys_warnings=self.sys_warnings) + except NetworkException: + message.retry = True + self.spool.add(message) + except Exception: + # add to sys warnings? + self.sys_warnings.append({"type":"transport_failed", "message": "Some messages are failing, check logs") + + + + + + + + diff --git a/tests/transport/gevent/tests.py b/tests/transport/gevent/tests.py index b31efe6..46bb294 100644 --- a/tests/transport/gevent/tests.py +++ b/tests/transport/gevent/tests.py @@ -22,7 +22,8 @@ class GeventTransportTest(TestCase): gevent.monkey.patch_time() self.addCleanup(reload, time) self.client = Client( - dsn="gevent+http://some_username:some_password@localhost:8143/1", + dsn="http://some_username:some_password@localhost:8143/1", + transport=GeventedHTTPTransport ) @mock.patch.object(GeventedHTTPTransport, '_done') diff --git a/tests/transport/requests/test_threaded_requests.py b/tests/transport/requests/test_threaded_requests.py index 2147962..2059b41 100644 --- a/tests/transport/requests/test_threaded_requests.py +++ b/tests/transport/requests/test_threaded_requests.py @@ -23,8 +23,11 @@ class DummyThreadedScheme(ThreadedRequestsHTTPTransport): class ThreadedTransportTest(TestCase): def setUp(self): - self.url = "threaded+requests+http://some_username:some_password@localhost:8143/1" - self.client = Client(dsn=self.url) + self.url = "http://some_username:some_password@localhost:8143/1" + self.client = Client( + dsn=self.url, + transport=ThreadedRequestsHTTPTransport + ) @mock.patch('raven.transport.requests.post') def test_does_send(self, send): diff --git a/tests/transport/requests/tests.py b/tests/transport/requests/tests.py index 97bc483..0513416 100644 --- a/tests/transport/requests/tests.py +++ b/tests/transport/requests/tests.py @@ -4,12 +4,14 @@ import mock from raven.utils.testutils import TestCase from raven.base import Client +from raven.transport.requests import RequestsHTTPTransport class RequestsTransportTest(TestCase): def setUp(self): self.client = Client( - dsn="requests+http://some_username:some_password@localhost:8143/1", + dsn="http://some_username:some_password@localhost:8143/1", + transport=RequestsHTTPTransport ) @mock.patch('raven.transport.requests.post') diff --git a/tests/transport/tests.py b/tests/transport/tests.py index ecec09a..3c08500 100644 --- a/tests/transport/tests.py +++ b/tests/transport/tests.py @@ -6,7 +6,6 @@ from raven.base import Client # Some internal stuff to extend the transport layer from raven.transport import Transport -from raven.transport.exceptions import DuplicateScheme # Simplify comparing dicts with primitive values: from raven.utils import json @@ -17,9 +16,7 @@ import pytz import zlib -class DummyScheme(Transport): - - scheme = ['mock'] +class DummyTransport(Transport): def __init__(self, timeout=5): self.timeout = timeout @@ -34,28 +31,26 @@ class DummyScheme(Transport): class TransportTest(TestCase): - def setUp(self): - try: - Client.register_scheme('mock', DummyScheme) - except DuplicateScheme: - pass - def test_basic_config(self): c = Client( - dsn="mock://some_username:some_password@localhost:8143/1?timeout=1", - name="test_server" + dsn="http://some_username:some_password@localhost:8143/1?timeout=1", + name="test_server", + transport=DummyTransport ) assert c.remote.options == { 'timeout': '1', } def test_custom_transport(self): - c = Client(dsn="mock://some_username:some_password@localhost:8143/1") + c = Client( + dsn="http://some_username:some_password@localhost:8143/1", + transport=DummyTransport + ) data = dict(a=42, b=55, c=list(range(50))) c.send(**data) - mock_cls = c._transport_cache['mock://some_username:some_password@localhost:8143/1'].get_transport() + mock_cls = c._transport_cache['http://some_username:some_password@localhost:8143/1'].get_transport() print(mock_cls.__dict__) expected_message = zlib.decompress(c.encode(data)) @@ -70,8 +65,10 @@ class TransportTest(TestCase): def test_build_then_send(self): c = Client( - dsn="mock://some_username:some_password@localhost:8143/1", - name="test_server") + dsn="http://some_username:some_password@localhost:8143/1", + name="test_server", + transport=DummyTransport + ) mydate = datetime.datetime(2012, 5, 4, tzinfo=pytz.utc) d = calendar.timegm(mydate.timetuple()) diff --git a/tests/transport/threaded/tests.py b/tests/transport/threaded/tests.py index e07e0b0..2e96929 100644 --- a/tests/transport/threaded/tests.py +++ b/tests/transport/threaded/tests.py @@ -36,8 +36,11 @@ class LoggingThreadedScheme(ThreadedHTTPTransport): class ThreadedTransportTest(TestCase): def setUp(self): - self.url = "threaded+http://some_username:some_password@localhost:8143/1" - self.client = Client(dsn=self.url) + self.url = "http://some_username:some_password@localhost:8143/1" + self.client = Client( + dsn=self.url, + transport=ThreadedHTTPTransport + ) @mock.patch('raven.transport.http.HTTPTransport.send') def test_does_send(self, send): diff --git a/tests/transport/tornado/tests.py b/tests/transport/tornado/tests.py index 351b4d4..e1053b7 100644 --- a/tests/transport/tornado/tests.py +++ b/tests/transport/tornado/tests.py @@ -3,6 +3,7 @@ from __future__ import absolute_import import mock from raven.base import Client +from raven.transport import TornadoHTTPTransport from tornado import gen, testing, httpclient @@ -19,12 +20,13 @@ class TornadoTransportTests(testing.AsyncTestCase): timeout = 1 verify_ssl = 1 ca_certs = "/some/path/somefile" + dsn_string = "{0}?timeout={1}&verify_ssl={2}&ca_certs={3}" fake = fake_client.return_value raven_client = Client( - dsn="tornado+{0}?timeout={1}&verify_ssl={2}&ca_certs={3}". - format(url, timeout, verify_ssl, ca_certs)) - + dsn=dsn_string.format(url, timeout, verify_ssl, ca_certs), + transport=TornadoHTTPTransport + ) raven_client.captureMessage(message="test") # make sure an instance of HTTPClient was created, since we are not in @@ -43,7 +45,10 @@ class TornadoTransportTests(testing.AsyncTestCase): @testing.gen_test def test__sending_with_error_calls_error_callback(self): - c = Client(dsn='tornado+http://uver:pass@localhost:46754/1') + c = Client( + dsn='http://user:pass@localhost:46754/1', + transport=TornadoHTTPTransport + ) with mock.patch.object(Client, '_failed_send') as mock_failed: c.captureMessage(message='test') @@ -53,7 +58,10 @@ class TornadoTransportTests(testing.AsyncTestCase): @testing.gen_test def test__sending_successfully_calls_success_callback(self): - c = Client(dsn='tornado+http://uver:pass@localhost:46754/1') + c = Client( + dsn='http://user:pass@localhost:46754/1', + transport=TornadoHTTPTransport + ) with mock.patch.object(Client, '_successful_send') as mock_successful: with mock.patch.object(httpclient.AsyncHTTPClient, 'fetch') as mock_fetch: mock_fetch.return_value = gen.maybe_future(True) -- cgit v1.2.1