|
4 | 4 | package cloudwatch |
5 | 5 |
|
6 | 6 | import ( |
| 7 | + "math" |
7 | 8 | "strconv" |
8 | 9 | "strings" |
9 | 10 | "testing" |
@@ -1000,20 +1001,28 @@ func TestConvertOtelExponentialHistogram(t *testing.T) { |
1000 | 1001 | }, |
1001 | 1002 | } |
1002 | 1003 |
|
| 1004 | + // Since some of the values could be zero, we can't use InEpsilon (requires non-zero values to form relative error) |
| 1005 | + // We calculate the relative error directly and then use InDelta instead |
| 1006 | + const epsilon = 0.0001 |
| 1007 | + |
1003 | 1008 | for _, tc := range testCases { |
1004 | 1009 | t.Run(tc.name, func(_ *testing.T) { |
1005 | 1010 | dps := convertOtelExponentialHistogramDataPoints(tc.histogramDPS, "foo", "none", 1, entity) |
1006 | 1011 |
|
1007 | 1012 | assert.Equal(t, 1, len(dps)) |
1008 | 1013 | for i, expectedDP := range tc.expected { |
1009 | | - assert.Equal(t, dps[i].distribution.Maximum(), *expectedDP.StatisticValues.Maximum, "datapoint Maximum mismatch at index %d", i) |
1010 | | - assert.Equal(t, dps[i].distribution.Minimum(), *expectedDP.StatisticValues.Minimum, "datapoint Minimum mismatch at index %d", i) |
1011 | | - assert.Equal(t, dps[i].distribution.Sum(), *expectedDP.StatisticValues.Sum, "datapoint Sum mismatch at index %d", i) |
| 1014 | + assert.InDelta(t, *expectedDP.StatisticValues.Maximum, dps[i].distribution.Maximum(), math.Abs(*expectedDP.StatisticValues.Maximum)*epsilon, "datapoint Maximum mismatch at index %d", i) |
| 1015 | + assert.InDelta(t, *expectedDP.StatisticValues.Minimum, dps[i].distribution.Minimum(), math.Abs(*expectedDP.StatisticValues.Minimum)*epsilon, "datapoint Minimum mismatch at index %d", i) |
| 1016 | + assert.InDelta(t, *expectedDP.StatisticValues.Sum, dps[i].distribution.Sum(), math.Abs(*expectedDP.StatisticValues.Sum)*epsilon, "datapoint Sum mismatch at index %d", i) |
1012 | 1017 | assert.Equal(t, dps[i].distribution.SampleCount(), *expectedDP.StatisticValues.SampleCount, "datapoint Samplecount mismatch at index %d", i) |
1013 | 1018 |
|
1014 | 1019 | values, counts := dps[i].distribution.ValuesAndCounts() |
1015 | | - assert.Equal(t, tc.expectedValues[i], values, "datapoint values mismatch at index %d", i) |
1016 | | - assert.Equal(t, tc.expectedCounts[i], counts, "datapoint counts mismatch at index %d", i) |
| 1020 | + for j, expectedValue := range tc.expectedValues[i] { |
| 1021 | + assert.InDelta(t, expectedValue, values[j], math.Abs(expectedValue)*epsilon, "datapoint values mismatch at index %d, value %d", i, j) |
| 1022 | + } |
| 1023 | + for j, expectedCount := range tc.expectedCounts[i] { |
| 1024 | + assert.InDelta(t, expectedCount, counts[j], math.Abs(expectedCount)*epsilon, "datapoint counts mismatch at index %d, count %d", i, j) |
| 1025 | + } |
1017 | 1026 | } |
1018 | 1027 | }) |
1019 | 1028 | } |
|
0 commit comments