@@ -86,4 +86,44 @@ void testAttemptStarted_includesLanguageAttribute() {
8686 io .opentelemetry .api .common .AttributeKey .stringKey (SpanTracer .LANGUAGE_ATTRIBUTE ),
8787 SpanTracer .DEFAULT_LANGUAGE );
8888 }
89+
90+ @ Test
91+ void testResponseHeadersReceived_setsContentLengthAttribute () {
92+ spanTracer .attemptStarted (new Object (), 1 );
93+
94+ java .util .Map <String , Object > headers = new java .util .HashMap <>();
95+ headers .put ("Content-Length" , 12345L );
96+ spanTracer .responseHeadersReceived (headers );
97+
98+ verify (span ).setAttribute (ObservabilityAttributes .HTTP_RESPONSE_BODY_SIZE , 12345L );
99+ }
100+
101+ @ Test
102+ void testResponseHeadersReceived_variousContentLengthStringFormats () {
103+ spanTracer .attemptStarted (new Object (), 1 );
104+
105+ java .util .Map <String , Object > headers = new java .util .HashMap <>();
106+ headers .put ("content-length" , "6789" );
107+ spanTracer .responseHeadersReceived (headers );
108+
109+ verify (span ).setAttribute (ObservabilityAttributes .HTTP_RESPONSE_BODY_SIZE , 6789L );
110+ }
111+
112+ @ Test
113+ void testResponseHeadersReceived_invalidOrMissingContentLength () {
114+ spanTracer .attemptStarted (new Object (), 1 );
115+
116+ java .util .Map <String , Object > headers = new java .util .HashMap <>();
117+ headers .put ("Content-Length" , "invalid" );
118+ spanTracer .responseHeadersReceived (headers );
119+
120+ headers .clear ();
121+ headers .put ("Other-Header" , "123" );
122+ spanTracer .responseHeadersReceived (headers );
123+
124+ verify (span , org .mockito .Mockito .never ())
125+ .setAttribute (
126+ org .mockito .ArgumentMatchers .eq (ObservabilityAttributes .HTTP_RESPONSE_BODY_SIZE ),
127+ org .mockito .ArgumentMatchers .anyLong ());
128+ }
89129}
0 commit comments