def test_should_sample(self): from opencensus.trace import samplers sampler = samplers.AlwaysOffSampler() mock_context = mock.Mock() mock_context.trace_id = 'fake_id' should_sample = sampler.should_sample(mock_context) self.assertFalse(should_sample)
def test__after_request_not_sampled(self): flask_trace_header = 'traceparent' trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05' span_id = '6e0c63257de34c92' flask_trace_id = '00-{}-{}-00'.format(trace_id, span_id) sampler = samplers.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 = samplers.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
def initialize_tracer(request: 'flask.Request') -> tracer.Tracer: if TRACE_PROPAGATE == "google": propagator = google_cloud_format.GoogleCloudFormatPropagator() else: propagator = trace_context_http_header_format.TraceContextPropagator() if TRACE_EXPORTER == "stackdriver": exporter = trace_exporter.StackdriverExporter(transport=AsyncTransport) sampler = samplers.AlwaysOnSampler() elif TRACE_EXPORTER == "log": exporter = logging_exporter.LoggingExporter( handler=py_logging.NullHandler(), transport=AsyncTransport) sampler = samplers.AlwaysOnSampler() elif TRACE_EXPORTER == "stdout": exporter = print_exporter.PrintExporter(transport=AsyncTransport) sampler = samplers.AlwaysOnSampler() else: exporter = print_exporter.PrintExporter(transport=AsyncTransport) sampler = samplers.AlwaysOffSampler() span_context = propagator.from_headers(request.headers) return tracer.Tracer(exporter=exporter, sampler=sampler, propagator=propagator, span_context=span_context)