@@ -396,3 +396,55 @@ type mockBackendAuthHandler struct{}
396396func (m * mockBackendAuthHandler ) Do (context.Context , map [string ]string , * extprocv3.HeaderMutation , * extprocv3.BodyMutation ) error {
397397 return nil
398398}
399+
400+ // mockImageGenerationMetrics implements [metrics.ImageGenerationMetrics] for testing.
401+ type mockImageGenerationMetrics struct {
402+ requestSuccessCount int
403+ requestErrorCount int
404+ model string
405+ backend string
406+ tokenUsageCount int
407+ }
408+
409+ func (m * mockImageGenerationMetrics ) StartRequest (map [string ]string ) {}
410+ func (m * mockImageGenerationMetrics ) SetModel (requestModel , responseModel string ) {
411+ m .model = responseModel
412+ }
413+ func (m * mockImageGenerationMetrics ) SetBackend (b * filterapi.Backend ) { m .backend = b .Name }
414+ func (m * mockImageGenerationMetrics ) RecordTokenUsage (_ context.Context , _ uint32 , _ uint32 , _ map [string ]string ) {
415+ m .tokenUsageCount ++
416+ }
417+ func (m * mockImageGenerationMetrics ) RecordRequestCompletion (_ context.Context , success bool , _ map [string ]string ) {
418+ if success {
419+ m .requestSuccessCount ++
420+ } else {
421+ m .requestErrorCount ++
422+ }
423+ }
424+ func (m * mockImageGenerationMetrics ) RecordImageGeneration (_ context.Context , _ int , _ string , _ string , _ map [string ]string ) {
425+ }
426+
427+ func (m * mockImageGenerationMetrics ) RequireRequestFailure (t * testing.T ) {
428+ require .Equal (t , 0 , m .requestSuccessCount )
429+ require .Equal (t , 1 , m .requestErrorCount )
430+ }
431+ func (m * mockImageGenerationMetrics ) RequireRequestNotCompleted (t * testing.T ) {
432+ require .Equal (t , 0 , m .requestSuccessCount )
433+ require .Equal (t , 0 , m .requestErrorCount )
434+ }
435+ func (m * mockImageGenerationMetrics ) RequireRequestSuccess (t * testing.T ) {
436+ require .Equal (t , 1 , m .requestSuccessCount )
437+ require .Equal (t , 0 , m .requestErrorCount )
438+ }
439+ func (m * mockImageGenerationMetrics ) RequireSelectedModel (t * testing.T , model string ) {
440+ require .Equal (t , model , m .model )
441+ }
442+ func (m * mockImageGenerationMetrics ) RequireSelectedBackend (t * testing.T , backend string ) {
443+ require .Equal (t , backend , m .backend )
444+ }
445+ func (m * mockImageGenerationMetrics ) RequireTokensRecorded (t * testing.T , count int ) {
446+ require .Equal (t , count , m .tokenUsageCount )
447+ }
448+
449+ // Ensure mock implements the interface at compile-time.
450+ var _ metrics.ImageGenerationMetrics = & mockImageGenerationMetrics {}
0 commit comments