def test_should_sample(self): from opencensus.trace.samplers import always_off sampler = always_off.AlwaysOffSampler() should_sample = sampler.should_sample(trace_id='fake_id') self.assertFalse(should_sample)
def stop_trace(): """Stop the current trace.""" if not execution_context: return execution_context.set_current_span(None) tracer = execution_context.get_opencensus_tracer() tracer.tracer = noop_tracer.NoopTracer() tracer.span_context = SpanContext( trace_options=trace_options.TraceOptions(0)) tracer.sampler = always_off.AlwaysOffSampler()
def test__after_request_not_sampled(self): sanic_trace_header = 'X_CLOUD_TRACE_CONTEXT' trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05' span_id = '6e0c63257de34c92' sanic_trace_id = '{}/{}'.format(trace_id, span_id) sampler = always_off.AlwaysOffSampler() app = self.create_app() sanic_middleware.SanicMiddleware(app=app, sampler=sampler) request, response = app.test_client.get( '/', headers={sanic_trace_header: sanic_trace_id}) self.assertEqual(response.status, 200)
def test__after_request_not_sampled(self): flask_trace_header = 'X-Cloud-Trace-Context' trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05' span_id = '6e0c63257de34c92' flask_trace_id = '{}/{}'.format(trace_id, span_id) sampler = always_off.AlwaysOffSampler() app = self.create_app() flask_middleware.FlaskMiddleware(app=app, sampler=sampler) response = app.test_client().get( '/', headers={flask_trace_header: flask_trace_id}) self.assertEqual(response.status_code, 200)
def test__after_request_not_sampled(self): from opencensus.trace.samplers import always_off flask_trace_header = 'X_CLOUD_TRACE_CONTEXT' trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05' span_id = 1234 flask_trace_id = '{}/{}'.format(trace_id, span_id) sampler = always_off.AlwaysOffSampler() app = self.create_app() flask_middleware.FlaskMiddleware(app=app, sampler=sampler) response = app.test_client().get( '/', headers={flask_trace_header: flask_trace_id}) self.assertEqual(response.status_code, 200)
def test_teardown_include_exception_and_traceback_span_disabled(self): sampler = always_off.AlwaysOffSampler() app = self.create_app() app.config['TESTING'] = True middleware = flask_middleware.FlaskMiddleware(app=app, sampler=sampler) # TODO: send trace options in header (#465) original_method = middleware.propagator.from_headers def nope(*args, **kwargs): trace_options = TraceOptions() trace_options.set_enabled(False) return SpanContext(trace_options=trace_options) middleware.propagator.from_headers = nope with self.assertRaises(FlaskTestException): app.test_client().get('/error') middleware.propagator.from_headers = original_method
from opencensus.trace.samplers import always_on, always_off from opencensus.trace.tracer import Tracer logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) def is_enabled(): return getattr(settings, 'TRACING_ENABLED', False) # Setup the exporter ze = zipkin.ZipkinExporter(service_name=getattr(settings, 'TRACING_SERVICE', 'snoop'), host_name=getattr(settings, 'TRACING_HOST', 'zipkin'), port=getattr(settings, 'TRACING_PORT', 9411), endpoint=getattr(settings, 'TRACING_API', '/api/v2/spans')) # If enabled configure 100% sample rate, otherwise, 0% sample rate if is_enabled(): sampler = always_on.AlwaysOnSampler() else: sampler = always_off.AlwaysOffSampler() # Set the tracer to use the exporter # Get the global singleton Tracer object tracer = Tracer(exporter=ze, sampler=sampler) tracer.span('root')