mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-24 21:24:05 -08:00
[Tests] Promtool: Sort output where Prometheus does not guarantee the order.
Previously this was working because iout-of-order chunks forced a sort and merge. Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
This commit is contained in:
parent
da31da3ea6
commit
2936ab80d7
|
@ -20,6 +20,7 @@ import (
|
||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
@ -152,12 +153,18 @@ func TestTSDBDump(t *testing.T) {
|
||||||
expectedMetrics, err := os.ReadFile(tt.expectedDump)
|
expectedMetrics, err := os.ReadFile(tt.expectedDump)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
expectedMetrics = normalizeNewLine(expectedMetrics)
|
expectedMetrics = normalizeNewLine(expectedMetrics)
|
||||||
// even though in case of one matcher samples are not sorted, the order in the cases above should stay the same.
|
// Sort both, because Prometheus does not guarantee the output order.
|
||||||
require.Equal(t, string(expectedMetrics), dumpedMetrics)
|
require.Equal(t, sortLines(string(expectedMetrics)), sortLines(dumpedMetrics))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func sortLines(buf string) string {
|
||||||
|
lines := strings.Split(buf, "\n")
|
||||||
|
slices.Sort(lines)
|
||||||
|
return strings.Join(lines, "\n")
|
||||||
|
}
|
||||||
|
|
||||||
func TestTSDBDumpOpenMetrics(t *testing.T) {
|
func TestTSDBDumpOpenMetrics(t *testing.T) {
|
||||||
storage := promqltest.LoadedStorage(t, `
|
storage := promqltest.LoadedStorage(t, `
|
||||||
load 1m
|
load 1m
|
||||||
|
@ -169,7 +176,7 @@ func TestTSDBDumpOpenMetrics(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
expectedMetrics = normalizeNewLine(expectedMetrics)
|
expectedMetrics = normalizeNewLine(expectedMetrics)
|
||||||
dumpedMetrics := getDumpedSamples(t, storage.Dir(), math.MinInt64, math.MaxInt64, []string{"{__name__=~'(?s:.*)'}"}, formatSeriesSetOpenMetrics)
|
dumpedMetrics := getDumpedSamples(t, storage.Dir(), math.MinInt64, math.MaxInt64, []string{"{__name__=~'(?s:.*)'}"}, formatSeriesSetOpenMetrics)
|
||||||
require.Equal(t, string(expectedMetrics), dumpedMetrics)
|
require.Equal(t, sortLines(string(expectedMetrics)), sortLines(dumpedMetrics))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTSDBDumpOpenMetricsRoundTrip(t *testing.T) {
|
func TestTSDBDumpOpenMetricsRoundTrip(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue