class OpencensusMiddleware(_OpencensusMiddleware): def __init__(self, get_response=None): self.get_response = get_response self.propagator = get_tracer_propagator() self.exporter = get_tracer_exporter() self.sampler = get_tracer_sampler() settings_ = getattr(settings, 'OPENCENSUS', {}) settings_ = settings_.get('TRACE', {}) self.blacklist_paths = settings_.get(BLACKLIST_PATHS, None) self.blacklist_hostnames = settings_.get(BLACKLIST_HOSTNAMES, None) self.resolver = RouteResolver() def process_view(self, request, view_func, *args, **kwargs): """Process view is executed before the view function, here we get the function name add set it as the span name. """ # Do not trace if the url is blacklisted if utils.disable_tracing_url(request.path, self.blacklist_paths): return try: # Get the current span and set the span name to the current # function name of the request. tracer = _get_current_tracer() span = tracer.current_span() span.name = 'Recv.' + self.resolver.resolve(request.path_info) tracer.add_attribute_to_current_span( attribute_key='django.view', attribute_value=utils.get_func_name(view_func)) except Exception: # pragma: no cover logger.error('Failed to trace request', exc_info=True)
def test_included_match(): resolver = RouteResolver() result = resolver.resolve('/example/foo/bar/baz', example_url_conf) assert result == '/example/foo/bar/{param}'
def test_complex_match(): resolver = RouteResolver() result = resolver.resolve('/api/1234/store/', example_url_conf) assert result == '/api/{project_id}/store/'
def test_simple_match(): resolver = RouteResolver() result = resolver.resolve('/report/', example_url_conf) assert result == '/report/'
def test_no_match(): resolver = RouteResolver() result = resolver.resolve('/foo/bar', example_url_conf) assert result == '/foo/bar'
def test_included_match(): resolver = RouteResolver() result = resolver.resolve('/example/foo/bar/baz', example_url_conf) assert result == '/example/foo/bar/{param}'
def test_complex_match(): resolver = RouteResolver() result = resolver.resolve('/api/1234/store/', example_url_conf) assert result == '/api/{project_id}/store/'
def test_simple_match(): resolver = RouteResolver() result = resolver.resolve('/report/', example_url_conf) assert result == '/report/'
def test_no_match(): resolver = RouteResolver() result = resolver.resolve('/foo/bar', example_url_conf) assert result == '/foo/bar'
def test_simple_match( ): # TODO: ash add matchedstring to make this test actually test something resolver = RouteResolver() result = resolver.resolve('/report/', example_url_conf) assert result == '/report/'
def test_simple_match(): # TODO: ash add matchedstring to make this test actually test something resolver = RouteResolver() result = resolver.resolve('/report/', example_url_conf) assert result == '/report/'