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, )
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)
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)
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)
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)
def test_basic_wsgi_call(self): app = otel_wsgi.OpenTelemetryMiddleware(simple_wsgi) response = app(self.environ, self.start_response) self.validate_response(response)
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)