Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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)
Exemplo n.º 9
0
 def _inner():
     result = yield from wrapped(*args, **kwargs)
     return function_trace()(result)
Exemplo n.º 10
0
    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']