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
Beispiel #4
0
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)