def _nr_wrapper_handler_(wrapped, instance, args, kwargs): transaction = current_transaction() if transaction is None: return wrapped(*args, **kwargs) name = callable_name(wrapped) transaction.set_transaction_name(name, priority=3) return function_trace(name=name)(wrapped)(*args, **kwargs)
def _nr_aiohttp_view_wrapper_(wrapped, instance, args, kwargs): transaction = current_transaction() if not transaction: return wrapped(*args, **kwargs) name = callable_name(wrapped) transaction.set_transaction_name(name, priority=1) return function_trace(name=name)(wrapped)(*args, **kwargs)
def method_wrapper(wrapped, instance, args, kwargs): transaction = current_transaction() if transaction is None: return wrapped(*args, **kwargs) name = callable_name(wrapped) transaction.set_transaction_name(name, priority=2) traced_method = function_trace(name=name)(wrapped) return traced_method(*args, **kwargs)
def _nr_aiohttp_wrap_application_init_(wrapped, instance, args, kwargs): result = wrapped(*args, **kwargs) if hasattr(instance, '_middlewares'): for index, middleware in enumerate(instance._middlewares): if getattr(middleware, '__middleware_version__', None) == 1: traced_middleware = function_trace()(middleware) else: traced_middleware = _nr_aiohttp_wrap_middleware_(middleware) instance._middlewares[index] = traced_middleware return result
def _wrapper(wrapped, instance, args, kwargs): transaction = current_transaction() if transaction is None: return wrapped(*args, **kwargs) name = callable_name(wrapped) if is_request_middleware: transaction.set_transaction_name(name, priority=2) response = function_trace(name=name)(wrapped)(*args, **kwargs) return response
def _nr_method(wrapped, instance, args, kwargs): transaction = current_transaction() if transaction is None: return wrapped(*args, **kwargs) if getattr(transaction, '_method_seen', None): return wrapped(*args, **kwargs) name = callable_name(wrapped) transaction.set_transaction_name(name, priority=2) transaction._method_seen = True if getattr(wrapped, '__tornado_coroutine__', False): return wrapped(*args, **kwargs) return function_trace(name=name)(wrapped)(*args, **kwargs)
def _nr_wrapper_error_handler_(wrapped, instance, args, kwargs): transaction = current_transaction() if not transaction: return wrapped(*args, **kwargs) name = callable_name(wrapped) transaction.set_transaction_name(name, priority=1) try: response = function_trace(name=name)(wrapped)(*args, **kwargs) except: transaction.record_exception() raise return response
def _nr_wrapper_handler_(wrapped, instance, args, kwargs): transaction = current_transaction() if transaction is None: return wrapped(*args, **kwargs) name = callable_name(wrapped) view_class = getattr(wrapped, 'view_class', None) if view_class: try: method = args[0].method.lower() name = callable_name(view_class) + '.' + method except: pass transaction.set_transaction_name(name, priority=3) return function_trace(name=name)(wrapped)(*args, **kwargs)
def _inner(): result = yield from wrapped(*args, **kwargs) return function_trace()(result)
c = coro() # kickstart the coroutine next(c) assert c.throw(MyException) == "foobar" # finish consumption of the coroutine if necessary for _ in c: pass @pytest.mark.parametrize( "trace", [ function_trace(name="simple_gen"), external_trace(library="lib", url="http://foo.com"), database_trace("select * from foo"), datastore_trace("lib", "foo", "bar"), message_trace("lib", "op", "typ", "name"), memcache_trace("cmd"), ], ) def test_coroutine_functions_outside_of_transaction(trace): @trace def coro(): for _ in range(2): yield "foo" assert [_ for _ in coro()] == ["foo", "foo"]
yield 'foobar' c = coro() # kickstart the coroutine next(c) assert c.throw(MyException) == 'foobar' # finish consumption of the coroutine if necessary for _ in c: pass @pytest.mark.parametrize('trace', [ function_trace(name='simple_gen'), external_trace(library='lib', url='http://foo.com'), database_trace('select * from foo'), datastore_trace('lib', 'foo', 'bar'), message_trace('lib', 'op', 'typ', 'name'), memcache_trace('cmd'), ]) def test_coroutine_functions_outside_of_transaction(trace): @trace def coro(): for _ in range(2): yield 'foo' assert [_ for _ in coro()] == ['foo', 'foo']