Ejemplo n.º 1
0
    def test_pin_find(self):
        # ensure Pin will find the first available pin

        # Override service
        obj_a = self.Obj()
        pin = Pin(service='service-a')
        pin.onto(obj_a)

        # Override service
        obj_b = self.Obj()
        pin = Pin(service='service-b')
        pin.onto(obj_b)

        # No Pin set
        obj_c = self.Obj()

        # We find the first pin (obj_b)
        pin = Pin._find(obj_c, obj_b, obj_a)
        ok_(pin is not None)
        eq_(pin.service, 'service-b')

        # We find the first pin (obj_a)
        pin = Pin._find(obj_a, obj_b, obj_c)
        ok_(pin is not None)
        eq_(pin.service, 'service-a')

        # We don't find a pin if none is there
        pin = Pin._find(obj_c, obj_c, obj_c)
        ok_(pin is None)
Ejemplo n.º 2
0
    def test_pin_find(self):
        # ensure Pin will find the first available pin

        # Override service
        obj_a = self.Obj()
        pin = Pin(service="service-a")
        pin.onto(obj_a)

        # Override service
        obj_b = self.Obj()
        pin = Pin(service="service-b")
        pin.onto(obj_b)

        # No Pin set
        obj_c = self.Obj()

        # We find the first pin (obj_b)
        pin = Pin._find(obj_c, obj_b, obj_a)
        assert pin is not None
        assert pin.service == "service-b"

        # We find the first pin (obj_a)
        pin = Pin._find(obj_a, obj_b, obj_c)
        assert pin is not None
        assert pin.service == "service-a"

        # We don't find a pin if none is there
        pin = Pin._find(obj_c, obj_c, obj_c)
        assert pin is None
Ejemplo n.º 3
0
def traced_jsonify(wrapped, instance, args, kwargs):
    pin = Pin._find(wrapped, instance, get_current_app())
    if not pin or not pin.enabled():
        return wrapped(*args, **kwargs)

    with pin.tracer.trace("flask.jsonify"):
        return wrapped(*args, **kwargs)
Ejemplo n.º 4
0
 def wrapper(wrapped, instance, args, kwargs):
     pin = Pin._find(instance, mod)
     if pin and not pin.enabled():
         return wrapped(*args, **kwargs)
     elif not pin:
         log.debug("Pin not found for traced method %r", wrapped)
         return wrapped(*args, **kwargs)
     return func(mod, pin, wrapped, instance, args, kwargs)
Ejemplo n.º 5
0
def traced_render_template(wrapped, instance, args, kwargs):
    """Wrapper for flask.templating.render_template"""
    pin = Pin._find(wrapped, instance, get_current_app())
    if not pin or not pin.enabled():
        return wrapped(*args, **kwargs)

    with pin.tracer.trace('flask.render_template', span_type=http.TEMPLATE):
        return wrapped(*args, **kwargs)
Ejemplo n.º 6
0
def traced_blueprint_add_url_rule(wrapped, instance, args, kwargs):
    pin = Pin._find(wrapped, instance)
    if not pin:
        return wrapped(*args, **kwargs)

    def _wrap(rule, endpoint=None, view_func=None, **kwargs):
        if view_func:
            pin.clone().onto(view_func)
        return wrapped(rule, endpoint=endpoint, view_func=view_func, **kwargs)

    return _wrap(*args, **kwargs)
Ejemplo n.º 7
0
def traced_get_socket(wrapped, instance, args, kwargs):
    pin = Pin._find(wrapped, instance)
    if not pin or not pin.enabled():
        with wrapped(*args, **kwargs) as sock_info:
            yield sock_info
            return

    with pin.tracer.trace("pymongo.get_socket",
                          service=trace_utils.int_service(pin, config.pymongo),
                          span_type=SpanTypes.MONGODB) as span:
        with wrapped(*args, **kwargs) as sock_info:
            set_address_tags(span, sock_info.address)
            span.set_tag(SPAN_MEASURED_KEY)
            yield sock_info
Ejemplo n.º 8
0
def traced_render(wrapped, instance, args, kwargs):
    """
    Wrapper for flask.templating._render

    This wrapper is used for setting template tags on the span.

    This method is called for render_template or render_template_string
    """
    pin = Pin._find(wrapped, instance, get_current_app())
    # DEV: `get_current_span` will verify `pin` is valid and enabled first
    span = get_current_span(pin)
    if not span:
        return wrapped(*args, **kwargs)

    def _wrap(template, context, app):
        name = getattr(template, 'name', None) or config.flask.get('template_default_name')
        span.resource = name
        span.set_tag('flask.template_name', name)
        return wrapped(*args, **kwargs)
    return _wrap(*args, **kwargs)
Ejemplo n.º 9
0
def traced_render(wrapped, instance, args, kwargs):
    """
    Wrapper for flask.templating._render

    This wrapper is used for setting template tags on the span.

    This method is called for render_template or render_template_string
    """
    pin = Pin._find(wrapped, instance, get_current_app())
    span = pin.tracer.current_span()

    if not pin.enabled or not span:
        return wrapped(*args, **kwargs)

    def _wrap(template, context, app):
        name = getattr(template, "name", None) or config.flask.get("template_default_name")
        span.resource = name
        span.set_tag("flask.template_name", name)
        return wrapped(*args, **kwargs)

    return _wrap(*args, **kwargs)
Ejemplo n.º 10
0
    def wrapper(wrapped, instance, args, kwargs):
        pin = Pin._find(wrapped, instance, get_current_app())
        if not pin or not pin.enabled():
            return wrapped(*args, **kwargs)

        return func(pin, wrapped, instance, args, kwargs)