mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-12 16:44:05 -08:00
refac: move OM ct benchmark to promparse_test
Signed-off-by: Manik Rana <manikrana54@gmail.com>
This commit is contained in:
parent
3a2d8d51df
commit
4f0e6b99e8
24
model/textparse/omtestdata.txt
Normal file
24
model/textparse/omtestdata.txt
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# HELP foo Counter with and without labels to certify CT is parsed for both cases
|
||||||
|
# TYPE foo counter
|
||||||
|
foo_total 17.0 1520879607.789 # {id="counter-test"} 5
|
||||||
|
foo_created 1000
|
||||||
|
foo_total{a="b"} 17.0 1520879607.789 # {id="counter-test"} 5
|
||||||
|
foo_created{a="b"} 1000
|
||||||
|
# HELP bar Summary with CT at the end, making sure we find CT even if it's multiple lines a far
|
||||||
|
# TYPE bar summary
|
||||||
|
bar_count 17.0
|
||||||
|
bar_sum 324789.3
|
||||||
|
bar{quantile="0.95"} 123.7
|
||||||
|
bar{quantile="0.99"} 150.0
|
||||||
|
bar_created 1520430000
|
||||||
|
# HELP baz Histogram with the same objective as above's summary
|
||||||
|
# TYPE baz histogram
|
||||||
|
baz_bucket{le="0.0"} 0
|
||||||
|
baz_bucket{le="+Inf"} 17
|
||||||
|
baz_count 17
|
||||||
|
baz_sum 324789.3
|
||||||
|
baz_created 1520430000
|
||||||
|
# HELP fizz_created Gauge which shouldn't be parsed as CT
|
||||||
|
# TYPE fizz_created gauge
|
||||||
|
fizz_created 17.0
|
||||||
|
# EOF
|
|
@ -992,51 +992,3 @@ go_gc_duration_seconds_created`)
|
||||||
require.Equal(t, "go_gc_duration_seconds", string(copyParser.l.b[copyParser.offsets[0]:copyParser.offsets[1]]))
|
require.Equal(t, "go_gc_duration_seconds", string(copyParser.l.b[copyParser.offsets[0]:copyParser.offsets[1]]))
|
||||||
require.False(t, copyParser.skipCTSeries)
|
require.False(t, copyParser.skipCTSeries)
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkCTParse(b *testing.B) {
|
|
||||||
b.ReportAllocs()
|
|
||||||
|
|
||||||
input := `# HELP foo Counter with and without labels to certify CT is parsed for both cases
|
|
||||||
# TYPE foo counter
|
|
||||||
foo_total 17.0 1520879607.789 # {id="counter-test"} 5
|
|
||||||
foo_created 1000
|
|
||||||
foo_total{a="b"} 17.0 1520879607.789 # {id="counter-test"} 5
|
|
||||||
foo_created{a="b"} 1000
|
|
||||||
# HELP bar Summary with CT at the end, making sure we find CT even if it's multiple lines a far
|
|
||||||
# TYPE bar summary
|
|
||||||
bar_count 17.0
|
|
||||||
bar_sum 324789.3
|
|
||||||
bar{quantile="0.95"} 123.7
|
|
||||||
bar{quantile="0.99"} 150.0
|
|
||||||
bar_created 1520430000
|
|
||||||
# HELP baz Histogram with the same objective as above's summary
|
|
||||||
# TYPE baz histogram
|
|
||||||
baz_bucket{le="0.0"} 0
|
|
||||||
baz_bucket{le="+Inf"} 17
|
|
||||||
baz_count 17
|
|
||||||
baz_sum 324789.3
|
|
||||||
baz_created 1520430000
|
|
||||||
# HELP fizz_created Gauge which shouldn't be parsed as CT
|
|
||||||
# TYPE fizz_created gauge
|
|
||||||
fizz_created 17.0`
|
|
||||||
|
|
||||||
input += "\n# EOF\n"
|
|
||||||
|
|
||||||
b.ResetTimer()
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
p := NewOpenMetricsParser([]byte(input), labels.NewSymbolTable(), WithOMParserCTSeriesSkipped())
|
|
||||||
Outer:
|
|
||||||
for {
|
|
||||||
et, err := p.Next()
|
|
||||||
switch et {
|
|
||||||
case EntryInvalid:
|
|
||||||
if errors.Is(err, io.EOF) {
|
|
||||||
break Outer
|
|
||||||
}
|
|
||||||
b.Fatal(err)
|
|
||||||
case EntrySeries:
|
|
||||||
p.CreatedTimestamp()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -498,8 +498,16 @@ func BenchmarkParse(b *testing.B) {
|
||||||
"openmetrics": func(b []byte, st *labels.SymbolTable) Parser {
|
"openmetrics": func(b []byte, st *labels.SymbolTable) Parser {
|
||||||
return NewOpenMetricsParser(b, st)
|
return NewOpenMetricsParser(b, st)
|
||||||
},
|
},
|
||||||
|
"openmetrics/skip-ct": func(b []byte, st *labels.SymbolTable) Parser {
|
||||||
|
return NewOpenMetricsParser(b, st, WithOMParserCTSeriesSkipped())
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
for _, fn := range []string{"promtestdata.txt", "promtestdata.nometa.txt"} {
|
for _, fn := range []string{"promtestdata.txt", "promtestdata.nometa.txt", "omtestdata.txt"} {
|
||||||
|
// we only want to benchmark om parsers with omtestdata
|
||||||
|
if fn == "omtestdata.txt" && parserName == "prometheus" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
f, err := os.Open(fn)
|
f, err := os.Open(fn)
|
||||||
require.NoError(b, err)
|
require.NoError(b, err)
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
@ -631,6 +639,35 @@ func BenchmarkParse(b *testing.B) {
|
||||||
}
|
}
|
||||||
_ = total
|
_ = total
|
||||||
})
|
})
|
||||||
|
b.Run(parserName+"/created-lines/"+fn, func(b *testing.B) {
|
||||||
|
b.SetBytes(int64(len(buf) / promtestdataSampleCount))
|
||||||
|
b.ReportAllocs()
|
||||||
|
b.ResetTimer()
|
||||||
|
|
||||||
|
total := 0
|
||||||
|
|
||||||
|
st := labels.NewSymbolTable()
|
||||||
|
for i := 0; i < b.N; i += promtestdataSampleCount {
|
||||||
|
p := parser(buf, st)
|
||||||
|
|
||||||
|
Outer:
|
||||||
|
for i < b.N {
|
||||||
|
t, err := p.Next()
|
||||||
|
switch t {
|
||||||
|
case EntryInvalid:
|
||||||
|
if errors.Is(err, io.EOF) {
|
||||||
|
break Outer
|
||||||
|
}
|
||||||
|
b.Fatal(err)
|
||||||
|
case EntrySeries:
|
||||||
|
if parserName == "openmetrics/skip-ct" {
|
||||||
|
p.CreatedTimestamp()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ = total
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue