@@ -131,11 +131,7 @@ func Test_completionsProcessorUpstreamFilter_ProcessResponseHeaders(t *testing.T
131131 const headerName = ":test-header:"
132132 const headerValue = ":test-header-value:"
133133 mt .expHeaders [headerName ] = headerValue
134- mt .resHeaderMutation = & extprocv3.HeaderMutation {
135- SetHeaders : []* corev3.HeaderValueOption {
136- {Header : & corev3.HeaderValue {Key : headerName , RawValue : []byte (headerValue )}},
137- },
138- }
134+ mt .resHeaderMutation = []internalapi.Header {{headerName , headerValue }}
139135
140136 resp , err := p .ProcessResponseHeaders (t .Context (), & corev3.HeaderMap {
141137 Headers : []* corev3.HeaderValue {
@@ -165,14 +161,8 @@ func Test_completionsProcessorUpstreamFilter_ProcessResponseBody(t *testing.T) {
165161 metrics : mm ,
166162 }
167163
168- mt .resErrorHeaderMutation = & extprocv3.HeaderMutation {
169- SetHeaders : []* corev3.HeaderValueOption {
170- {Header : & corev3.HeaderValue {Key : "test" , RawValue : []byte ("error" )}},
171- },
172- }
173- mt .resErrorBodyMutation = & extprocv3.BodyMutation {
174- Mutation : & extprocv3.BodyMutation_Body {Body : []byte ("error body" )},
175- }
164+ mt .resErrorHeaderMutation = []internalapi.Header {{"test" , "error" }}
165+ mt .resErrorBodyMutation = []byte ("test error" )
176166
177167 resp , err := p .ProcessResponseBody (t .Context (), & extprocv3.HttpBody {Body : []byte ("test error" )})
178168 require .NoError (t , err )
@@ -197,14 +187,8 @@ func Test_completionsProcessorUpstreamFilter_ProcessResponseBody(t *testing.T) {
197187 metrics : mm ,
198188 }
199189
200- mt .resHeaderMutation = & extprocv3.HeaderMutation {
201- SetHeaders : []* corev3.HeaderValueOption {
202- {Header : & corev3.HeaderValue {Key : "test" , RawValue : []byte ("success" )}},
203- },
204- }
205- mt .resBodyMutation = & extprocv3.BodyMutation {
206- Mutation : & extprocv3.BodyMutation_Body {Body : []byte ("response body" )},
207- }
190+ mt .resHeaderMutation = []internalapi.Header {{"test" , "success" }}
191+ mt .resBodyMutation = []byte ("response body" )
208192 mt .resTokenUsage = translator.LLMTokenUsage {
209193 InputTokens : 10 ,
210194 OutputTokens : 20 ,
@@ -404,10 +388,10 @@ func completionBodyFromModel(t *testing.T, model string) []byte {
404388type mockCompletionTranslator struct {
405389 t * testing.T
406390 expHeaders map [string ]string
407- resHeaderMutation * extprocv3. HeaderMutation
408- resBodyMutation * extprocv3. BodyMutation
409- resErrorHeaderMutation * extprocv3. HeaderMutation
410- resErrorBodyMutation * extprocv3. BodyMutation
391+ resHeaderMutation []internalapi. Header
392+ resBodyMutation [] byte
393+ resErrorHeaderMutation []internalapi. Header
394+ resErrorBodyMutation [] byte
411395 resTokenUsage translator.LLMTokenUsage
412396 resModel internalapi.ResponseModel
413397 err error
@@ -649,10 +633,10 @@ func Test_completionsProcessorUpstreamFilter_ProcessResponseBody_NonSuccess(t *t
649633 // Verify we record failure for non-2xx responses and do it exactly once (defer suppressed).
650634 t .Run ("non-2xx status failure once" , func (t * testing.T ) {
651635 inBody := & extprocv3.HttpBody {Body : []byte ("error-body" ), EndOfStream : true }
652- expHeadMut := & extprocv3.HeaderMutation {}
653- expBodyMut := & extprocv3.BodyMutation {}
654636 mm := & mockCompletionMetrics {}
655- mt := & mockCompletionTranslator {t : t , resErrorHeaderMutation : expHeadMut , resErrorBodyMutation : expBodyMut }
637+ mt := & mockCompletionTranslator {t : t , resErrorHeaderMutation : []internalapi.Header {
638+ {"foo" , "bar" },
639+ }, resErrorBodyMutation : []byte ("abcd" )}
656640 p := & completionsProcessorUpstreamFilter {
657641 translator : mt ,
658642 metrics : mm ,
@@ -661,8 +645,10 @@ func Test_completionsProcessorUpstreamFilter_ProcessResponseBody_NonSuccess(t *t
661645 res , err := p .ProcessResponseBody (t .Context (), inBody )
662646 require .NoError (t , err )
663647 commonRes := res .Response .(* extprocv3.ProcessingResponse_ResponseBody ).ResponseBody .Response
664- require .Equal (t , expBodyMut , commonRes .BodyMutation )
665- require .Equal (t , expHeadMut , commonRes .HeaderMutation )
648+ require .Equal (t , "abcd" , string (commonRes .BodyMutation .GetBody ()))
649+ require .Len (t , commonRes .HeaderMutation .SetHeaders , 1 )
650+ require .Equal (t , "foo" , commonRes .HeaderMutation .SetHeaders [0 ].Header .Key )
651+ require .Equal (t , "bar" , string (commonRes .HeaderMutation .SetHeaders [0 ].Header .RawValue ))
666652 mm .RequireRequestFailure (t )
667653 })
668654}
@@ -767,13 +753,12 @@ func Test_completionsProcessorUpstreamFilter_CELCostEvaluation(t *testing.T) {
767753 // Using exactly the same test data as chat completion CEL test
768754 t .Run ("CEL expressions with token usage" , func (t * testing.T ) {
769755 inBody := & extprocv3.HttpBody {Body : []byte ("response-body" ), EndOfStream : true }
770- expBodyMut := & extprocv3.BodyMutation {}
771- expHeadMut := & extprocv3.HeaderMutation {}
756+ expBody := []byte ("response-body" )
772757 mm := & mockCompletionMetrics {}
773758 mt := & mockCompletionTranslator {
774759 t : t ,
775- resBodyMutation : expBodyMut ,
776- resHeaderMutation : expHeadMut ,
760+ resBodyMutation : expBody ,
761+ resHeaderMutation : []internalapi. Header {{ "foo" , "bar" }} ,
777762 resTokenUsage : translator.LLMTokenUsage {
778763 OutputTokens : 123 ,
779764 InputTokens : 1 ,
@@ -813,8 +798,10 @@ func Test_completionsProcessorUpstreamFilter_CELCostEvaluation(t *testing.T) {
813798 res , err := p .ProcessResponseBody (t .Context (), inBody )
814799 require .NoError (t , err )
815800 commonRes := res .Response .(* extprocv3.ProcessingResponse_ResponseBody ).ResponseBody .Response
816- require .Equal (t , expBodyMut , commonRes .BodyMutation )
817- require .Equal (t , expHeadMut , commonRes .HeaderMutation )
801+ require .Equal (t , string (expBody ), string (commonRes .BodyMutation .GetBody ()))
802+ require .Len (t , commonRes .HeaderMutation , 1 )
803+ require .Equal (t , "foo" , commonRes .HeaderMutation .SetHeaders [0 ].Header .Key )
804+ require .Equal (t , "bar" , string (commonRes .HeaderMutation .SetHeaders [0 ].Header .RawValue ))
818805 mm .RequireRequestSuccess (t )
819806 require .Equal (t , 124 , mm .tokenUsageCount ) // 1 input + 123 output
820807 md := res .DynamicMetadata
0 commit comments