chore(parsers.xpath): Add benchmark for msgpack format (#14313)
This commit is contained in:
parent
e79191a9b4
commit
be88a340de
|
|
@ -1573,7 +1573,7 @@ func BenchmarkParsingXML(b *testing.B) {
|
||||||
DefaultMetricName: "benchmark",
|
DefaultMetricName: "benchmark",
|
||||||
Format: "xml",
|
Format: "xml",
|
||||||
Configs: []Config{benchmarkConfigXML},
|
Configs: []Config{benchmarkConfigXML},
|
||||||
Log: testutil.Logger{Name: "parsers.xpath"},
|
Log: testutil.Logger{Name: "parsers.xpath", Quiet: true},
|
||||||
}
|
}
|
||||||
require.NoError(b, plugin.Init())
|
require.NoError(b, plugin.Init())
|
||||||
|
|
||||||
|
|
@ -1635,7 +1635,7 @@ func BenchmarkParsingJSON(b *testing.B) {
|
||||||
DefaultMetricName: "benchmark",
|
DefaultMetricName: "benchmark",
|
||||||
Format: "xpath_json",
|
Format: "xpath_json",
|
||||||
Configs: []Config{benchmarkConfigJSON},
|
Configs: []Config{benchmarkConfigJSON},
|
||||||
Log: testutil.Logger{Name: "parsers.xpath"},
|
Log: testutil.Logger{Name: "parsers.xpath", Quiet: true},
|
||||||
}
|
}
|
||||||
require.NoError(b, plugin.Init())
|
require.NoError(b, plugin.Init())
|
||||||
|
|
||||||
|
|
@ -1678,3 +1678,106 @@ func BenchmarkParsingProtobuf(b *testing.B) {
|
||||||
_, _ = plugin.Parse(benchmarkData)
|
_, _ = plugin.Parse(benchmarkData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var benchmarkDataMsgPack = [][]byte{
|
||||||
|
{
|
||||||
|
0xdf, 0x00, 0x00, 0x00, 0x05, 0xa9, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0xce,
|
||||||
|
0x62, 0x90, 0x98, 0x9d, 0xa5, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x05, 0xa6, 0x73, 0x6f, 0x75, 0x72,
|
||||||
|
0x63, 0x65, 0xa6, 0x6d, 0x79, 0x68, 0x6f, 0x73, 0x74, 0xad, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70,
|
||||||
|
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0xa6, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0xab, 0x74,
|
||||||
|
0x61, 0x67, 0x73, 0x5f, 0x73, 0x64, 0x6b, 0x76, 0x65, 0x72, 0xa6, 0x33, 0x2e, 0x31, 0x31, 0x2e,
|
||||||
|
0x35,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x85, 0xA6, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0xA6, 0x6D, 0x79, 0x68, 0x6F, 0x73, 0x74, 0xAB,
|
||||||
|
0x74, 0x61, 0x67, 0x73, 0x5F, 0x73, 0x64, 0x6B, 0x76, 0x65, 0x72, 0xA6, 0x33, 0x2E, 0x31, 0x31,
|
||||||
|
0x2E, 0x34, 0xAD, 0x74, 0x61, 0x67, 0x73, 0x5F, 0x70, 0x6C, 0x61, 0x74, 0x66, 0x6F, 0x72, 0x6D,
|
||||||
|
0xA6, 0x70, 0x79, 0x74, 0x68, 0x6F, 0x6E, 0xA5, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x04, 0xA9, 0x74,
|
||||||
|
0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0xCE, 0x62, 0x90, 0x98, 0x9D,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBenchmarkDataMsgPack(t *testing.T) {
|
||||||
|
plugin := &Parser{
|
||||||
|
DefaultMetricName: "benchmark",
|
||||||
|
Format: "xpath_msgpack",
|
||||||
|
Configs: []Config{
|
||||||
|
{
|
||||||
|
Tags: map[string]string{
|
||||||
|
"source": "source",
|
||||||
|
"tags_sdkver": "tags_sdkver",
|
||||||
|
"tags_platform": "tags_platform",
|
||||||
|
},
|
||||||
|
Fields: map[string]string{
|
||||||
|
"value": "number(value)",
|
||||||
|
},
|
||||||
|
Timestamp: "timestamp",
|
||||||
|
TimestampFmt: "unix",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Log: testutil.Logger{Name: "parsers.xpath", Quiet: true},
|
||||||
|
}
|
||||||
|
require.NoError(t, plugin.Init())
|
||||||
|
|
||||||
|
expected := []telegraf.Metric{
|
||||||
|
metric.New(
|
||||||
|
"benchmark",
|
||||||
|
map[string]string{
|
||||||
|
"source": "myhost",
|
||||||
|
"tags_platform": "python",
|
||||||
|
"tags_sdkver": "3.11.5",
|
||||||
|
},
|
||||||
|
map[string]interface{}{
|
||||||
|
"value": 5.0,
|
||||||
|
},
|
||||||
|
time.Unix(1653643421, 0),
|
||||||
|
),
|
||||||
|
metric.New(
|
||||||
|
"benchmark",
|
||||||
|
map[string]string{
|
||||||
|
"source": "myhost",
|
||||||
|
"tags_platform": "python",
|
||||||
|
"tags_sdkver": "3.11.4",
|
||||||
|
},
|
||||||
|
map[string]interface{}{
|
||||||
|
"value": 4.0,
|
||||||
|
},
|
||||||
|
time.Unix(1653643421, 0),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
actual := make([]telegraf.Metric, 0, 2)
|
||||||
|
for _, msg := range benchmarkDataMsgPack {
|
||||||
|
m, err := plugin.Parse(msg)
|
||||||
|
require.NoError(t, err)
|
||||||
|
actual = append(actual, m...)
|
||||||
|
}
|
||||||
|
testutil.RequireMetricsEqual(t, expected, actual, testutil.SortMetrics())
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkParsingMsgPack(b *testing.B) {
|
||||||
|
plugin := &Parser{
|
||||||
|
DefaultMetricName: "benchmark",
|
||||||
|
Format: "xpath_msgpack",
|
||||||
|
Configs: []Config{
|
||||||
|
{
|
||||||
|
Tags: map[string]string{
|
||||||
|
"source": "source",
|
||||||
|
"tags_sdkver": "tags_sdkver",
|
||||||
|
"tags_platform": "tags_platform",
|
||||||
|
},
|
||||||
|
Fields: map[string]string{
|
||||||
|
"value": "number(value)",
|
||||||
|
},
|
||||||
|
Timestamp: "timestamp",
|
||||||
|
TimestampFmt: "unix",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Log: testutil.Logger{Name: "parsers.xpath", Quiet: true},
|
||||||
|
}
|
||||||
|
require.NoError(b, plugin.Init())
|
||||||
|
|
||||||
|
for n := 0; n < b.N; n++ {
|
||||||
|
_, _ = plugin.Parse(benchmarkDataMsgPack[n%2])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue