From 64f56b4cb575a7933e2cd78553d5094d581f55c0 Mon Sep 17 00:00:00 2001 From: Joshua Powers Date: Thu, 16 Nov 2023 14:06:05 -0700 Subject: [PATCH] chore(parsers.influx): Add benchmark (#14315) --- .../influx/influx_upstream/parser_test.go | 50 +++++++++++++++++++ plugins/parsers/influx/parser_test.go | 50 +++++++++++++++++++ 2 files changed, 100 insertions(+) diff --git a/plugins/parsers/influx/influx_upstream/parser_test.go b/plugins/parsers/influx/influx_upstream/parser_test.go index 9af4ed900..05146234e 100644 --- a/plugins/parsers/influx/influx_upstream/parser_test.go +++ b/plugins/parsers/influx/influx_upstream/parser_test.go @@ -1018,3 +1018,53 @@ func TestStreamParserProducesAllAvailableMetrics(t *testing.T) { _, err = parser.Next() require.NoError(t, err) } + +const benchmarkData = `benchmark,tags_host=myhost,tags_platform=python,tags_sdkver=3.11.5 value=5 1653643421 +benchmark,tags_host=myhost,tags_platform=python,tags_sdkver=3.11.4 value=4 1653643422 +` + +func TestBenchmarkData(t *testing.T) { + plugin := &Parser{} + require.NoError(t, plugin.Init()) + + expected := []telegraf.Metric{ + metric.New( + "benchmark", + map[string]string{ + "tags_host": "myhost", + "tags_platform": "python", + "tags_sdkver": "3.11.5", + }, + map[string]interface{}{ + "value": float64(5), + }, + time.Unix(1653643422, 0), + ), + metric.New( + "benchmark", + map[string]string{ + "tags_host": "myhost", + "tags_platform": "python", + "tags_sdkver": "3.11.4", + }, + map[string]interface{}{ + "value": float64(4), + }, + time.Unix(1653643422, 0), + ), + } + + // Do the parsing + actual, err := plugin.Parse([]byte(benchmarkData)) + require.NoError(t, err) + testutil.RequireMetricsEqual(t, expected, actual, testutil.IgnoreTime(), testutil.SortMetrics()) +} + +func BenchmarkParsing(b *testing.B) { + plugin := &Parser{} + require.NoError(b, plugin.Init()) + + for n := 0; n < b.N; n++ { + _, _ = plugin.Parse([]byte(benchmarkData)) + } +} diff --git a/plugins/parsers/influx/parser_test.go b/plugins/parsers/influx/parser_test.go index a76fe6f64..e1f3d6693 100644 --- a/plugins/parsers/influx/parser_test.go +++ b/plugins/parsers/influx/parser_test.go @@ -985,3 +985,53 @@ func TestStreamParserProducesAllAvailableMetrics(t *testing.T) { _, err = parser.Next() require.NoError(t, err) } + +const benchmarkData = `benchmark,tags_host=myhost,tags_platform=python,tags_sdkver=3.11.5 value=5 1653643421 +benchmark,tags_host=myhost,tags_platform=python,tags_sdkver=3.11.4 value=4 1653643422 +` + +func TestBenchmarkData(t *testing.T) { + plugin := &Parser{} + require.NoError(t, plugin.Init()) + + expected := []telegraf.Metric{ + metric.New( + "benchmark", + map[string]string{ + "tags_host": "myhost", + "tags_platform": "python", + "tags_sdkver": "3.11.5", + }, + map[string]interface{}{ + "value": float64(5), + }, + time.Unix(1653643422, 0), + ), + metric.New( + "benchmark", + map[string]string{ + "tags_host": "myhost", + "tags_platform": "python", + "tags_sdkver": "3.11.4", + }, + map[string]interface{}{ + "value": float64(4), + }, + time.Unix(1653643422, 0), + ), + } + + // Do the parsing + actual, err := plugin.Parse([]byte(benchmarkData)) + require.NoError(t, err) + testutil.RequireMetricsEqual(t, expected, actual, testutil.IgnoreTime(), testutil.SortMetrics()) +} + +func BenchmarkParsing(b *testing.B) { + plugin := &Parser{} + require.NoError(b, plugin.Init()) + + for n := 0; n < b.N; n++ { + _, _ = plugin.Parse([]byte(benchmarkData)) + } +}