예제 #1
0
 def test_wsgi_internal_error(self):
     app = otel_wsgi.OpenTelemetryMiddleware(error_wsgi_unhandled)
     self.assertRaises(ValueError, app, self.environ, self.start_response)
     span_list = self.memory_exporter.get_finished_spans()
     self.assertEqual(len(span_list), 1)
     self.assertEqual(
         span_list[0].status.canonical_code,
         StatusCanonicalCode.INTERNAL,
     )
예제 #2
0
    def test_wsgi_generator(self):
        original_response = Response()
        gen_wsgi = create_gen_wsgi(original_response)
        app = otel_wsgi.OpenTelemetryMiddleware(gen_wsgi)
        response = app(self.environ, self.start_response)
        # Verify that start_response has not been called
        self.assertIsNone(self.status)
        self.validate_response(response)

        # Verify that close has been called exactly once
        self.assertEqual(original_response.close_calls, 1)
예제 #3
0
    def test_wsgi_iterable(self):
        original_response = Response()
        iter_wsgi = create_iter_wsgi(original_response)
        app = otel_wsgi.OpenTelemetryMiddleware(iter_wsgi)
        response = app(self.environ, self.start_response)
        # Verify that start_response has been called
        self.assertTrue(self.status)
        self.validate_response(response)

        # Verify that close has been called exactly once
        self.assertEqual(1, original_response.close_calls)
예제 #4
0
    def test_override_span_name(self):
        """Test that span_names can be overwritten by our callback function."""
        span_name = "Dymaxion"

        def get_predefined_span_name(scope):
            # pylint: disable=unused-argument
            return span_name

        app = otel_wsgi.OpenTelemetryMiddleware(
            simple_wsgi, name_callback=get_predefined_span_name)
        response = app(self.environ, self.start_response)
        self.validate_response(response, span_name=span_name)
예제 #5
0
 def test_wsgi_exc_info(self):
     app = otel_wsgi.OpenTelemetryMiddleware(error_wsgi)
     response = app(self.environ, self.start_response)
     self.validate_response(response, error=ValueError)
예제 #6
0
 def test_basic_wsgi_call(self):
     app = otel_wsgi.OpenTelemetryMiddleware(simple_wsgi)
     response = app(self.environ, self.start_response)
     self.validate_response(response)
예제 #7
0
 def test_default_span_name_missing_request_method(self):
     """Test that default span_names with missing request method."""
     self.environ.pop("REQUEST_METHOD")
     app = otel_wsgi.OpenTelemetryMiddleware(simple_wsgi)
     response = app(self.environ, self.start_response)
     self.validate_response(response, span_name="HTTP", http_method=None)