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)
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
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)
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)
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)
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)
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
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)
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)
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)