diff --git a/storage/remote/otlptranslator/prometheusremotewrite/metrics_to_prw_test.go b/storage/remote/otlptranslator/prometheusremotewrite/metrics_to_prw_test.go index 39865ec11d..f5ad665331 100644 --- a/storage/remote/otlptranslator/prometheusremotewrite/metrics_to_prw_test.go +++ b/storage/remote/otlptranslator/prometheusremotewrite/metrics_to_prw_test.go @@ -94,6 +94,51 @@ func TestFromMetrics(t *testing.T) { }) } + for _, convertHistogramsToNHCB := range []bool{false, true} { + t.Run(fmt.Sprintf("successful/convertHistogramsToNHCB=%v", convertHistogramsToNHCB), func(t *testing.T) { + request := pmetricotlp.NewExportRequest() + rm := request.Metrics().ResourceMetrics().AppendEmpty() + generateAttributes(rm.Resource().Attributes(), "resource", 10) + + metrics := rm.ScopeMetrics().AppendEmpty().Metrics() + ts := pcommon.NewTimestampFromTime(time.Now()) + + m := metrics.AppendEmpty() + m.SetEmptyHistogram() + m.SetName("histogram-1") + m.Histogram().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + h := m.Histogram().DataPoints().AppendEmpty() + h.SetTimestamp(ts) + + h.SetCount(15) + h.SetSum(155) + + generateAttributes(h.Attributes(), "series", 1) + + converter := NewPrometheusConverter() + annots, err := converter.FromMetrics( + context.Background(), + request.Metrics(), + Settings{ConvertHistogramsToNHCB: convertHistogramsToNHCB}, + ) + require.NoError(t, err) + require.Empty(t, annots) + + series := converter.TimeSeries() + + if convertHistogramsToNHCB { + require.Len(t, series[0].Histograms, 1) + require.Len(t, series[0].Samples, 0) + } else { + require.Len(t, series, 3) + for i := range series { + require.Len(t, series[i].Samples, 1) + require.Nil(t, series[i].Histograms) + } + } + }) + } + t.Run("context cancellation", func(t *testing.T) { converter := NewPrometheusConverter() ctx, cancel := context.WithCancel(context.Background())