@@ -713,34 +713,62 @@ func TestMetricsConsumerGroupHandler_error_nextConsumer(t *testing.T) {
713
713
consumerError := errors .New ("failed to consume" )
714
714
obsrecv , err := receiverhelper .NewObsReport (receiverhelper.ObsReportSettings {ReceiverCreateSettings : receivertest .NewNopSettings ()})
715
715
require .NoError (t , err )
716
- c := metricsConsumerGroupHandler {
717
- unmarshaler : newPdataMetricsUnmarshaler (& pmetric.ProtoUnmarshaler {}, defaultEncoding ),
718
- logger : zap .NewNop (),
719
- ready : make (chan bool ),
720
- nextConsumer : consumertest .NewErr (consumerError ),
721
- obsrecv : obsrecv ,
722
- headerExtractor : & nopHeaderExtractor {},
723
- telemetryBuilder : nopTelemetryBuilder (t ),
724
- }
725
716
726
- wg := sync.WaitGroup {}
727
- wg .Add (1 )
728
- groupClaim := & testConsumerGroupClaim {
729
- messageChan : make (chan * sarama.ConsumerMessage ),
717
+ tests := []struct {
718
+ name string
719
+ err error
720
+ expectedBackoff time.Duration
721
+ }{
722
+ {
723
+ name : "memory limiter data refused error" ,
724
+ err : errMemoryLimiterDataRefused ,
725
+ expectedBackoff : backoff .DefaultInitialInterval ,
726
+ },
727
+ {
728
+ name : "consumer error that does not require backoff" ,
729
+ err : consumerError ,
730
+ expectedBackoff : 0 ,
731
+ },
730
732
}
731
- go func () {
732
- e := c .ConsumeClaim (testConsumerGroupSession {ctx : context .Background ()}, groupClaim )
733
- assert .EqualError (t , e , consumerError .Error ())
734
- wg .Done ()
735
- }()
736
733
737
- ld := testdata .GenerateMetrics (1 )
738
- unmarshaler := & pmetric.ProtoMarshaler {}
739
- bts , err := unmarshaler .MarshalMetrics (ld )
740
- require .NoError (t , err )
741
- groupClaim .messageChan <- & sarama.ConsumerMessage {Value : bts }
742
- close (groupClaim .messageChan )
743
- wg .Wait ()
734
+ for _ , tt := range tests {
735
+ t .Run (tt .name , func (t * testing.T ) {
736
+ backOff := backoff .NewExponentialBackOff ()
737
+ backOff .RandomizationFactor = 0
738
+ c := metricsConsumerGroupHandler {
739
+ unmarshaler : newPdataMetricsUnmarshaler (& pmetric.ProtoUnmarshaler {}, defaultEncoding ),
740
+ logger : zap .NewNop (),
741
+ ready : make (chan bool ),
742
+ nextConsumer : consumertest .NewErr (tt .err ),
743
+ obsrecv : obsrecv ,
744
+ headerExtractor : & nopHeaderExtractor {},
745
+ telemetryBuilder : nopTelemetryBuilder (t ),
746
+ backOff : backOff ,
747
+ }
748
+
749
+ wg := sync.WaitGroup {}
750
+ wg .Add (1 )
751
+ groupClaim := & testConsumerGroupClaim {
752
+ messageChan : make (chan * sarama.ConsumerMessage ),
753
+ }
754
+ go func () {
755
+ start := time .Now ()
756
+ e := c .ConsumeClaim (testConsumerGroupSession {ctx : context .Background ()}, groupClaim )
757
+ end := time .Now ()
758
+ assert .EqualError (t , e , tt .err .Error ())
759
+ assert .WithinDuration (t , start .Add (tt .expectedBackoff ), end , 100 * time .Millisecond )
760
+ wg .Done ()
761
+ }()
762
+
763
+ ld := testdata .GenerateMetrics (1 )
764
+ unmarshaler := & pmetric.ProtoMarshaler {}
765
+ bts , err := unmarshaler .MarshalMetrics (ld )
766
+ require .NoError (t , err )
767
+ groupClaim .messageChan <- & sarama.ConsumerMessage {Value : bts }
768
+ close (groupClaim .messageChan )
769
+ wg .Wait ()
770
+ })
771
+ }
744
772
}
745
773
746
774
func TestMetricsReceiver_encoding_extension (t * testing.T ) {
@@ -1072,34 +1100,62 @@ func TestLogsConsumerGroupHandler_error_nextConsumer(t *testing.T) {
1072
1100
consumerError := errors .New ("failed to consume" )
1073
1101
obsrecv , err := receiverhelper .NewObsReport (receiverhelper.ObsReportSettings {ReceiverCreateSettings : receivertest .NewNopSettings ()})
1074
1102
require .NoError (t , err )
1075
- c := logsConsumerGroupHandler {
1076
- unmarshaler : newPdataLogsUnmarshaler (& plog.ProtoUnmarshaler {}, defaultEncoding ),
1077
- logger : zap .NewNop (),
1078
- ready : make (chan bool ),
1079
- nextConsumer : consumertest .NewErr (consumerError ),
1080
- obsrecv : obsrecv ,
1081
- headerExtractor : & nopHeaderExtractor {},
1082
- telemetryBuilder : nopTelemetryBuilder (t ),
1083
- }
1084
1103
1085
- wg := sync.WaitGroup {}
1086
- wg .Add (1 )
1087
- groupClaim := & testConsumerGroupClaim {
1088
- messageChan : make (chan * sarama.ConsumerMessage ),
1104
+ tests := []struct {
1105
+ name string
1106
+ err error
1107
+ expectedBackoff time.Duration
1108
+ }{
1109
+ {
1110
+ name : "memory limiter data refused error" ,
1111
+ err : errMemoryLimiterDataRefused ,
1112
+ expectedBackoff : backoff .DefaultInitialInterval ,
1113
+ },
1114
+ {
1115
+ name : "consumer error that does not require backoff" ,
1116
+ err : consumerError ,
1117
+ expectedBackoff : 0 ,
1118
+ },
1089
1119
}
1090
- go func () {
1091
- e := c .ConsumeClaim (testConsumerGroupSession {ctx : context .Background ()}, groupClaim )
1092
- assert .EqualError (t , e , consumerError .Error ())
1093
- wg .Done ()
1094
- }()
1095
1120
1096
- ld := testdata .GenerateLogs (1 )
1097
- unmarshaler := & plog.ProtoMarshaler {}
1098
- bts , err := unmarshaler .MarshalLogs (ld )
1099
- require .NoError (t , err )
1100
- groupClaim .messageChan <- & sarama.ConsumerMessage {Value : bts }
1101
- close (groupClaim .messageChan )
1102
- wg .Wait ()
1121
+ for _ , tt := range tests {
1122
+ t .Run (tt .name , func (t * testing.T ) {
1123
+ backOff := backoff .NewExponentialBackOff ()
1124
+ backOff .RandomizationFactor = 0
1125
+ c := logsConsumerGroupHandler {
1126
+ unmarshaler : newPdataLogsUnmarshaler (& plog.ProtoUnmarshaler {}, defaultEncoding ),
1127
+ logger : zap .NewNop (),
1128
+ ready : make (chan bool ),
1129
+ nextConsumer : consumertest .NewErr (tt .err ),
1130
+ obsrecv : obsrecv ,
1131
+ headerExtractor : & nopHeaderExtractor {},
1132
+ telemetryBuilder : nopTelemetryBuilder (t ),
1133
+ backOff : backOff ,
1134
+ }
1135
+
1136
+ wg := sync.WaitGroup {}
1137
+ wg .Add (1 )
1138
+ groupClaim := & testConsumerGroupClaim {
1139
+ messageChan : make (chan * sarama.ConsumerMessage ),
1140
+ }
1141
+ go func () {
1142
+ start := time .Now ()
1143
+ e := c .ConsumeClaim (testConsumerGroupSession {ctx : context .Background ()}, groupClaim )
1144
+ end := time .Now ()
1145
+ assert .EqualError (t , e , tt .err .Error ())
1146
+ assert .WithinDuration (t , start .Add (tt .expectedBackoff ), end , 100 * time .Millisecond )
1147
+ wg .Done ()
1148
+ }()
1149
+
1150
+ ld := testdata .GenerateLogs (1 )
1151
+ unmarshaler := & plog.ProtoMarshaler {}
1152
+ bts , err := unmarshaler .MarshalLogs (ld )
1153
+ require .NoError (t , err )
1154
+ groupClaim .messageChan <- & sarama.ConsumerMessage {Value : bts }
1155
+ close (groupClaim .messageChan )
1156
+ wg .Wait ()
1157
+ })
1158
+ }
1103
1159
}
1104
1160
1105
1161
// Test unmarshaler for different charsets and encodings.
0 commit comments