From d9e9b473b8987db1d2a8ee54b4a9232e48389065 Mon Sep 17 00:00:00 2001 From: Rick Rossi Date: Tue, 28 Oct 2025 08:05:26 -0400 Subject: [PATCH] Fix classic histogram definition --- test/histograms/histograms_to_cw_test.go | 18 +++++++++--------- test/histograms/histograms_to_emf_test.go | 14 +++++++------- .../histograms/resources/otlp_emf_metrics.json | 16 ++++++++-------- test/histograms/resources/otlp_emf_pusher.sh | 6 ++++-- test/histograms/resources/otlp_metrics.json | 16 ++++++++-------- test/histograms/resources/otlp_pusher.sh | 8 +++++--- 6 files changed, 41 insertions(+), 37 deletions(-) diff --git a/test/histograms/histograms_to_cw_test.go b/test/histograms/histograms_to_cw_test.go index 0435623b1..f77a14912 100644 --- a/test/histograms/histograms_to_cw_test.go +++ b/test/histograms/histograms_to_cw_test.go @@ -151,29 +151,29 @@ func (t *OtlpHistogramTestRunner) validateHistogramMetric(metricName string) []s }, { stat: types.StatisticMaximum, - value: 2, + value: 4, }, { stat: types.StatisticSum, - value: 24, + value: 36, }, { stat: types.StatisticAverage, - value: 2, + value: 1.5, }, { stat: types.StatisticSampleCount, - value: 12, + value: 24, }, { stat: "p90", - value: 2.0, + value: 3.9, }, }, "my.cumulative.histogram": { { stat: types.StatisticMinimum, - value: 0, + value: 0.5, }, { stat: types.StatisticMaximum, @@ -181,11 +181,11 @@ func (t *OtlpHistogramTestRunner) validateHistogramMetric(metricName string) []s }, { stat: types.StatisticSum, - value: 24, + value: 12, }, { stat: types.StatisticAverage, - value: 2, + value: 1, }, { stat: types.StatisticSampleCount, @@ -193,7 +193,7 @@ func (t *OtlpHistogramTestRunner) validateHistogramMetric(metricName string) []s }, { stat: "p90", - value: 2.0, + value: 1.3, }, }, "my.delta.exponential.histogram": { diff --git a/test/histograms/histograms_to_emf_test.go b/test/histograms/histograms_to_emf_test.go index dfa87e2a2..88d2edf3e 100644 --- a/test/histograms/histograms_to_emf_test.go +++ b/test/histograms/histograms_to_emf_test.go @@ -64,19 +64,19 @@ func TestOTLPMetrics(t *testing.T) { }, { stat: types.StatisticMaximum, - value: 2, + value: 4, }, { stat: types.StatisticSum, - value: 12, // we send Sum=2 six times in one minute + value: 36, }, { stat: types.StatisticAverage, - value: 1, // sum / samplecount = 2/2 + value: 1.5, }, { stat: types.StatisticSampleCount, - value: 12, // we send Count=2 six times in one minute + value: 24, }, }, }, @@ -114,7 +114,7 @@ func TestOTLPMetrics(t *testing.T) { }, { stat: types.StatisticAverage, - value: 1, + value: 1, // we send Sum=2, Count=2 every time }, { stat: types.StatisticSampleCount, @@ -216,12 +216,12 @@ func TestOTLPMetrics(t *testing.T) { for _, e := range m.expected { values, err := fetcher.Fetch(namespace, m.name, m.dimensions, e.stat, metric.MinuteStatPeriod) require.NoError(t, err) - require.GreaterOrEqual(t, len(values), 3, "Not enough metrics retrieved for namespace {%s} metric Name {%s} stat {%s}", namespace, m.name, e.stat) + assert.GreaterOrEqual(t, len(values), 3, "Not enough metrics retrieved for namespace {%s} metric Name {%s} stat {%s}", namespace, m.name, e.stat) // omit first/last metric as the 1m collection intervals may be missing data points from when the agent was started/stopped middleValues := values[1 : len(values)-1] err = metric.IsAllValuesGreaterThanOrEqualToExpectedValueWithError(m.name, middleValues, e.value) - require.NoError(t, err) + assert.NoError(t, err) } }) } diff --git a/test/histograms/resources/otlp_emf_metrics.json b/test/histograms/resources/otlp_emf_metrics.json index 68d48dd8c..d81c3f75a 100644 --- a/test/histograms/resources/otlp_emf_metrics.json +++ b/test/histograms/resources/otlp_emf_metrics.json @@ -36,12 +36,12 @@ { "startTimeUnixNano": METRIC_TIME, "timeUnixNano": METRIC_TIME, - "count": 2, - "sum": 2, - "bucketCounts": [0,2], - "explicitBounds": [1,2], + "count": 4, + "sum": 6, + "bucketCounts": [1,2,1], + "explicitBounds": [0.5,2], "min": 0, - "max": 2, + "max": 4, "attributes": [ { "key": "my.delta.histogram.attr", @@ -72,10 +72,10 @@ "timeUnixNano": METRIC_TIME, "count": CUMULATIVE_HIST_COUNT, "sum": CUMULATIVE_HIST_SUM, - "bucketCounts": [0,CUMULATIVE_HIST_COUNT], - "explicitBounds": [1, 2], + "bucketCounts": [1,CUMULATIVE_HIST_COUNT,1], + "explicitBounds": [0.5,2], "min": 0, - "max": 2, + "max": 4, "attributes": [ { "key": "my.cumulative.histogram.attr", diff --git a/test/histograms/resources/otlp_emf_pusher.sh b/test/histograms/resources/otlp_emf_pusher.sh index ff31024b1..0289fb8f1 100644 --- a/test/histograms/resources/otlp_emf_pusher.sh +++ b/test/histograms/resources/otlp_emf_pusher.sh @@ -7,7 +7,7 @@ fi echo "Starting with INSTANCE_ID: $INSTANCE_ID" INITIAL_METRIC_TIME=$(date +%s%N) -COUNT=0 +COUNT=2 # Initialize the file cat ./resources/otlp_emf_metrics.json | sed -e "s/INITIAL_METRIC_TIME/$INITIAL_METRIC_TIME/" \ @@ -15,8 +15,10 @@ cat ./resources/otlp_emf_metrics.json | sed -e "s/INITIAL_METRIC_TIME/$INITIAL_M while true; do METRIC_TIME=$(date +%s%N) + + # Simulating a histogram with datapoints 0 and 4, and then adding 2 counts of value 1 for each iteration COUNT=$((COUNT + 2)) - SUM=$((COUNT)) + SUM=$((COUNT+4)) cat ./resources/otlp_emf_metrics_initial.json | \ sed -e "s/METRIC_TIME/$METRIC_TIME/" \ diff --git a/test/histograms/resources/otlp_metrics.json b/test/histograms/resources/otlp_metrics.json index 7bda2e72f..83ed46f8b 100644 --- a/test/histograms/resources/otlp_metrics.json +++ b/test/histograms/resources/otlp_metrics.json @@ -105,12 +105,12 @@ { "startTimeUnixNano": INITIAL_METRIC_TIME, "timeUnixNano": METRIC_TIME, - "count": 2, - "sum": 2, - "bucketCounts": [0,2], - "explicitBounds": [1,2], + "count": 4, + "sum": 6, + "bucketCounts": [1,2,1], + "explicitBounds": [0.5,2], "min": 0, - "max": 2, + "max": 4, "attributes": [ { "key": "my.delta.histogram.attr", @@ -135,10 +135,10 @@ "timeUnixNano": METRIC_TIME, "count": CUMULATIVE_HIST_COUNT, "sum": CUMULATIVE_HIST_SUM, - "bucketCounts": [0,CUMULATIVE_HIST_COUNT], - "explicitBounds": [1, 2], + "bucketCounts": [1,CUMULATIVE_HIST_COUNT,1], + "explicitBounds": [0.5,2], "min": 0, - "max": 2, + "max": 3, "attributes": [ { "key": "my.cumulative.histogram.attr", diff --git a/test/histograms/resources/otlp_pusher.sh b/test/histograms/resources/otlp_pusher.sh index 4bdb9edf9..228baf472 100755 --- a/test/histograms/resources/otlp_pusher.sh +++ b/test/histograms/resources/otlp_pusher.sh @@ -1,13 +1,15 @@ INITIAL_METRIC_TIME=$(date +%s%N) -COUNT=0 +COUNT=2 # Initialize the file cat ./resources/otlp_metrics.json | sed -e "s/INITIAL_METRIC_TIME/$INITIAL_METRIC_TIME/" > ./resources/otlp_metrics_initial.json; while true; do METRIC_TIME=$(date +%s%N) - COUNT=$((COUNT + 2)) # Increment count by 2 each iteration - SUM=$((COUNT)) + + # Simulating a histogram with datapoints 0 and 3, and then adding 2 counts of value 1 for each iteration + COUNT=$((COUNT + 2)) + SUM=$((COUNT+4)) cat ./resources/otlp_metrics_initial.json | sed -e "s/METRIC_TIME/$METRIC_TIME/" > otlp_metrics.json; sed -i -e "s/CUMULATIVE_HIST_COUNT/$COUNT/" otlp_metrics.json;