From 417f0e80fde42af5b5f469558e500af76f75eb30 Mon Sep 17 00:00:00 2001 From: Kostiantyn Masliuk <1pkg@protonmail.com> Date: Thu, 24 Oct 2024 14:51:46 -0700 Subject: [PATCH] tests: Add parallel monitoring middleware test --- .../middleware/monitoring_middleware_test.go | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/internal/beater/middleware/monitoring_middleware_test.go b/internal/beater/middleware/monitoring_middleware_test.go index cf78495bfd1..7e6e741cecc 100644 --- a/internal/beater/middleware/monitoring_middleware_test.go +++ b/internal/beater/middleware/monitoring_middleware_test.go @@ -18,6 +18,7 @@ package middleware import ( + "sync" "testing" "github.com/stretchr/testify/assert" @@ -157,4 +158,33 @@ func TestMonitoringHandler(t *testing.T) { mockMonitoringNil, ) }) + + t.Run("Parallel", func(t *testing.T) { + const i = 3 + reader := sdkmetric.NewManualReader(sdkmetric.WithTemporalitySelector( + func(ik sdkmetric.InstrumentKind) metricdata.Temporality { + return metricdata.DeltaTemporality + }, + )) + mp := sdkmetric.NewMeterProvider(sdkmetric.WithReader(reader)) + m := MonitoringMiddleware(mockMonitoringNil, mp) + c, _ := DefaultContextWithResponseRecorder() + var wg sync.WaitGroup + for range i { + wg.Add(1) + go func() { + Apply(m, HandlerIdle)(c) + wg.Done() + }() + } + wg.Wait() + monitoringtest.ExpectOtelMetrics(t, reader, map[string]interface{}{ + "http.server." + string(request.IDRequestCount): i, + "http.server." + string(request.IDResponseCount): i, + "http.server." + string(request.IDResponseValidCount): i, + "http.server." + string(request.IDUnset): i, + + "http.server.request.duration": i, + }) + }) }