@@ -74,7 +74,9 @@ def error_wsgi(environ, start_response):
7474
7575
7676class TestWsgiApplication (WsgiTestBase ):
77- def validate_response (self , response , error = None , span_name = "HTTP GET" ):
77+ def validate_response (
78+ self , response , error = None , span_name = "HTTP GET" , http_method = "GET"
79+ ):
7880 while True :
7981 try :
8082 value = next (response )
@@ -97,21 +99,20 @@ def validate_response(self, response, error=None, span_name="HTTP GET"):
9799 self .assertEqual (len (span_list ), 1 )
98100 self .assertEqual (span_list [0 ].name , span_name )
99101 self .assertEqual (span_list [0 ].kind , trace_api .SpanKind .SERVER )
100- self .assertEqual (
101- span_list [0 ].attributes ,
102- {
103- "component" : "http" ,
104- "http.method" : "GET" ,
105- "http.server_name" : "127.0.0.1" ,
106- "http.scheme" : "http" ,
107- "host.port" : 80 ,
108- "http.host" : "127.0.0.1" ,
109- "http.flavor" : "1.0" ,
110- "http.url" : "http://127.0.0.1/" ,
111- "http.status_text" : "OK" ,
112- "http.status_code" : 200 ,
113- },
114- )
102+ expected_attributes = {
103+ "component" : "http" ,
104+ "http.server_name" : "127.0.0.1" ,
105+ "http.scheme" : "http" ,
106+ "host.port" : 80 ,
107+ "http.host" : "127.0.0.1" ,
108+ "http.flavor" : "1.0" ,
109+ "http.url" : "http://127.0.0.1/" ,
110+ "http.status_text" : "OK" ,
111+ "http.status_code" : 200 ,
112+ }
113+ if http_method is not None :
114+ expected_attributes ["http.method" ] = http_method
115+ self .assertEqual (span_list [0 ].attributes , expected_attributes )
115116
116117 def test_basic_wsgi_call (self ):
117118 app = otel_wsgi .OpenTelemetryMiddleware (simple_wsgi )
@@ -161,6 +162,13 @@ def get_predefined_span_name(scope):
161162 response = app (self .environ , self .start_response )
162163 self .validate_response (response , span_name = span_name )
163164
165+ def test_default_span_name_missing_request_method (self ):
166+ """Test that default span_names with missing request method."""
167+ self .environ .pop ("REQUEST_METHOD" )
168+ app = otel_wsgi .OpenTelemetryMiddleware (simple_wsgi )
169+ response = app (self .environ , self .start_response )
170+ self .validate_response (response , span_name = "HTTP" , http_method = None )
171+
164172
165173class TestWsgiAttributes (unittest .TestCase ):
166174 def setUp (self ):
0 commit comments