コード例 #1
0
    def test_constructor_zipkin(self):
        service_name = 'test_service'
        host_name = 'test_hostname'
        port = 2333

        response = Response()

        def dummy_handler(request):
            return response

        exporter = zipkin_exporter.ZipkinExporter(service_name=service_name,
                                                  host_name=host_name,
                                                  port=port,
                                                  transport=sync.SyncTransport)

        mock_registry = mock.Mock(spec=Registry)
        mock_registry.settings = {}
        mock_registry.settings['OPENCENSUS_TRACE'] = {
            'EXPORTER': exporter,
        }

        middleware = pyramid_middleware.OpenCensusTweenFactory(
            dummy_handler,
            mock_registry,
        )

        assert isinstance(middleware.sampler, always_on.AlwaysOnSampler)
        assert isinstance(middleware.exporter, zipkin_exporter.ZipkinExporter)
        assert isinstance(middleware.propagator,
                          google_cloud_format.GoogleCloudFormatPropagator)

        self.assertEqual(middleware.exporter.service_name, service_name)
        self.assertEqual(middleware.exporter.host_name, host_name)
        self.assertEqual(middleware.exporter.port, port)
コード例 #2
0
    def test_constructor(self):
        pyramid_trace_header = 'X-Cloud-Trace-Context'
        trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05'
        span_id = '6e0c63257de34c92'
        pyramid_trace_id = '{}/{}'.format(trace_id, span_id)

        response = Response()

        def dummy_handler(request):
            return response

        mock_registry = mock.Mock(spec=Registry)
        mock_registry.settings = {}
        mock_registry.settings['OPENCENSUS_TRACE'] = {
            'EXPORTER': print_exporter.PrintExporter()
        }

        middleware = pyramid_middleware.OpenCensusTweenFactory(
            dummy_handler,
            mock_registry,
        )

        assert isinstance(middleware.sampler, always_on.AlwaysOnSampler)
        assert isinstance(middleware.exporter, print_exporter.PrintExporter)
        assert isinstance(middleware.propagator,
                          google_cloud_format.GoogleCloudFormatPropagator)

        # Just a smoke test to make sure things work
        request = DummyRequest(
            registry=mock_registry,
            path='/',
            headers={pyramid_trace_header: pyramid_trace_id},
        )

        assert middleware(request) == response
コード例 #3
0
    def test__after_request_blacklist(self):
        pyramid_trace_header = 'X-Cloud-Trace-Context'
        trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05'
        span_id = '6e0c63257de34c92'
        pyramid_trace_id = '{}/{}'.format(trace_id, span_id)

        response = Response()

        def dummy_handler(request):
            return response

        mock_registry = mock.Mock(spec=Registry)
        mock_registry.settings = {}

        middleware = pyramid_middleware.OpenCensusTweenFactory(
            dummy_handler,
            mock_registry,
        )

        request = DummyRequest(
            registry=mock_registry,
            path='/_ah/health',
            headers={pyramid_trace_header: pyramid_trace_id},
        )

        middleware._before_request(request)

        tracer = execution_context.get_opencensus_tracer()
        assert isinstance(tracer, noop_tracer.NoopTracer)

        span = tracer.current_span()

        middleware._after_request(request, response)

        assert isinstance(span, base.NullContextManager)
コード例 #4
0
    def test__after_request(self):
        from opencensus.trace import execution_context
        from opencensus.trace.ext.pyramid import pyramid_middleware
        from opencensus.trace.samplers import always_off

        pyramid_trace_header = 'X_CLOUD_TRACE_CONTEXT'
        trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05'
        span_id = 1234
        pyramid_trace_id = '{}/{}'.format(trace_id, span_id)

        response = Response(status=200)

        def dummy_handler(request):
            return response

        mock_registry = mock.Mock(spec=Registry)
        mock_registry.settings = {}

        middleware = pyramid_middleware.OpenCensusTweenFactory(
            dummy_handler,
            mock_registry,
        )

        request = DummyRequest(
            registry=mock_registry,
            path='/',
            headers={pyramid_trace_header: pyramid_trace_id},
        )

        middleware._before_request(request)

        tracer = execution_context.get_opencensus_tracer()
        self.assertIsNotNone(tracer)

        span = tracer.current_span()

        expected_attributes = {
            '/http/url': u'/',
            '/http/method': 'GET',
            '/http/status_code': '200',
        }

        self.assertEqual(span.parent_span.span_id, span_id)

        middleware._after_request(request, response)

        self.assertEqual(span.attributes, expected_attributes)
コード例 #5
0
    def test__after_request(self):
        pyramid_trace_header = 'X-Cloud-Trace-Context'
        trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05'
        span_id = '6e0c63257de34c92'
        pyramid_trace_id = '{}/{}'.format(trace_id, span_id)

        response = Response(status=200)

        def dummy_handler(request):
            return response

        mock_registry = mock.Mock(spec=Registry)
        mock_registry.settings = {}

        middleware = pyramid_middleware.OpenCensusTweenFactory(
            dummy_handler,
            mock_registry,
        )

        request = DummyRequest(
            registry=mock_registry,
            path='/',
            headers={pyramid_trace_header: pyramid_trace_id},
        )

        middleware._before_request(request)

        tracer = execution_context.get_opencensus_tracer()
        self.assertIsNotNone(tracer)

        span = tracer.current_span()

        expected_attributes = {
            '/http/url': u'/',
            '/http/method': 'GET',
            '/http/status_code': '200',
        }

        self.assertEqual(span.parent_span.span_id, span_id)

        middleware._after_request(request, response)

        self.assertEqual(span.attributes, expected_attributes)
コード例 #6
0
    def test__after_request_blacklist(self):
        from opencensus.trace import execution_context
        from opencensus.trace.tracers import base
        from opencensus.trace.tracers import noop_tracer
        from opencensus.trace.ext.pyramid import pyramid_middleware

        pyramid_trace_header = 'X_CLOUD_TRACE_CONTEXT'
        trace_id = '2dd43a1d6b2549c6bc2a1a54c2fc0b05'
        span_id = 1234
        pyramid_trace_id = '{}/{}'.format(trace_id, span_id)

        response = Response()

        def dummy_handler(request):
            return response

        mock_registry = mock.Mock(spec=Registry)
        mock_registry.settings = {}

        middleware = pyramid_middleware.OpenCensusTweenFactory(
            dummy_handler,
            mock_registry,
        )

        request = DummyRequest(
            registry=mock_registry,
            path='/_ah/health',
            headers={pyramid_trace_header: pyramid_trace_id},
        )

        middleware._before_request(request)

        tracer = execution_context.get_opencensus_tracer()
        assert isinstance(tracer, noop_tracer.NoopTracer)

        span = tracer.current_span()

        middleware._after_request(request, response)

        assert isinstance(span, base.NullContextManager)