@@ -45,6 +45,7 @@ import (
4545 "go.opentelemetry.io/otel/sdk/metric/metricdata/metricdatatest"
4646 sdktrace "go.opentelemetry.io/otel/sdk/trace"
4747 "go.opentelemetry.io/otel/sdk/trace/tracetest"
48+ semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
4849 "go.uber.org/zap"
4950 "go.uber.org/zap/zapcore"
5051 "go.uber.org/zap/zaptest/observer"
@@ -693,7 +694,17 @@ func TestAppenderFlushRequestError(t *testing.T) {
693694 w .WriteHeader (sc )
694695 w .Write ([]byte (`{"error": {"root_cause": [{"type": "x_content_parse_exception","reason": "reason"}],"type": "x_content_parse_exception","reason": "reason","caused_by": {"type": "json_parse_exception","reason": "reason"}},"status": 400}` ))
695696 })
696- indexer , err := docappender .New (client , docappender.Config {FlushInterval : time .Minute })
697+
698+ rdr := sdkmetric .NewManualReader (sdkmetric .WithTemporalitySelector (
699+ func (ik sdkmetric.InstrumentKind ) metricdata.Temporality {
700+ return metricdata .DeltaTemporality
701+ },
702+ ))
703+
704+ indexer , err := docappender .New (client , docappender.Config {
705+ FlushInterval : time .Minute ,
706+ MeterProvider : sdkmetric .NewMeterProvider (sdkmetric .WithReader (rdr )),
707+ })
697708 require .NoError (t , err )
698709 defer indexer .Close (context .Background ())
699710
@@ -716,15 +727,33 @@ func TestAppenderFlushRequestError(t *testing.T) {
716727 BytesTotal : bytesTotal ,
717728 BytesUncompressedTotal : bytesUncompressedTotal ,
718729 }
730+ var status string
719731 switch {
720732 case sc == 429 :
733+ status = "TooMany"
721734 wantStats .TooManyRequests = int64 (docs )
722735 case sc >= 500 :
736+ status = "FailedServer"
723737 wantStats .FailedServer = int64 (docs )
724738 case sc >= 400 && sc != 429 :
739+ status = "FailedClient"
725740 wantStats .FailedClient = int64 (docs )
726741 }
727742 assert .Equal (t , wantStats , stats )
743+
744+ var rm metricdata.ResourceMetrics
745+ assert .NoError (t , rdr .Collect (context .Background (), & rm ))
746+
747+ var asserted atomic.Int64
748+ assertCounter := docappendertest .NewAssertCounter (t , & asserted )
749+ docappendertest .AssertOTelMetrics (t , rm .ScopeMetrics [0 ].Metrics , func (m metricdata.Metrics ) {
750+ switch m .Name {
751+ case "elasticsearch.events.processed" :
752+ assertCounter (m , 3 , attribute .NewSet (attribute .String ("status" , status ), semconv .HTTPResponseStatusCode (sc )))
753+ }
754+ })
755+ assert .Equal (t , int64 (1 ), asserted .Load ())
756+
728757 }
729758 t .Run ("400" , func (t * testing.T ) {
730759 test (t , http .StatusBadRequest , "flush failed (400): {\" error\" :{\" type\" :\" x_content_parse_exception\" ,\" caused_by\" :{\" type\" :\" json_parse_exception\" }}}" )
0 commit comments