mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-29 21:23:55 +08:00
adding unit test case for ASGI framework for application wrapped with… (#899)
* adding unit test case for ASGI framework for application wrapped with another framework * resolving lint errors * resolving generate build errors * resolving flake errors Co-authored-by: Diego Hurtado <ocelotl@users.noreply.github.com>
This commit is contained in:
@ -30,7 +30,7 @@ from opentelemetry.test.asgitestutil import (
|
||||
setup_testing_defaults,
|
||||
)
|
||||
from opentelemetry.test.test_base import TestBase
|
||||
from opentelemetry.trace import format_span_id, format_trace_id
|
||||
from opentelemetry.trace import SpanKind, format_span_id, format_trace_id
|
||||
|
||||
|
||||
async def http_app(scope, receive, send):
|
||||
@ -550,5 +550,38 @@ class TestAsgiAttributes(unittest.TestCase):
|
||||
)
|
||||
|
||||
|
||||
class TestWrappedApplication(AsgiTestBase):
|
||||
def test_mark_span_internal_in_presence_of_span_from_other_framework(self):
|
||||
tracer_provider, exporter = TestBase.create_tracer_provider()
|
||||
tracer = tracer_provider.get_tracer(__name__)
|
||||
app = otel_asgi.OpenTelemetryMiddleware(
|
||||
simple_asgi, tracer_provider=tracer_provider
|
||||
)
|
||||
|
||||
# Wrapping the otel intercepted app with server span
|
||||
async def wrapped_app(scope, receive, send):
|
||||
with tracer.start_as_current_span(
|
||||
"test", kind=SpanKind.SERVER
|
||||
) as _:
|
||||
await app(scope, receive, send)
|
||||
|
||||
self.seed_app(wrapped_app)
|
||||
self.send_default_request()
|
||||
span_list = exporter.get_finished_spans()
|
||||
|
||||
self.assertEqual(SpanKind.INTERNAL, span_list[0].kind)
|
||||
self.assertEqual(SpanKind.INTERNAL, span_list[1].kind)
|
||||
self.assertEqual(SpanKind.INTERNAL, span_list[2].kind)
|
||||
self.assertEqual(trace_api.SpanKind.INTERNAL, span_list[3].kind)
|
||||
|
||||
# SERVER "test"
|
||||
self.assertEqual(SpanKind.SERVER, span_list[4].kind)
|
||||
|
||||
# internal span should be child of the test span we have provided
|
||||
self.assertEqual(
|
||||
span_list[4].context.span_id, span_list[3].parent.span_id
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
Reference in New Issue
Block a user