From cedaf41a36713c434d656c24d170b899eba82fa9 Mon Sep 17 00:00:00 2001 From: Emil Hessman Date: Mon, 14 Dec 2020 09:33:25 +0100 Subject: [PATCH] Chore: Rewrite opentsdb test to standard library (#29792) --- pkg/tsdb/opentsdb/opentsdb_test.go | 261 +++++++++++++++-------------- 1 file changed, 134 insertions(+), 127 deletions(-) diff --git a/pkg/tsdb/opentsdb/opentsdb_test.go b/pkg/tsdb/opentsdb/opentsdb_test.go index 98af4cb1256..053bb337aa0 100644 --- a/pkg/tsdb/opentsdb/opentsdb_test.go +++ b/pkg/tsdb/opentsdb/opentsdb_test.go @@ -5,162 +5,169 @@ import ( "github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/tsdb" - . "github.com/smartystreets/goconvey/convey" + "github.com/stretchr/testify/require" ) func TestOpenTsdbExecutor(t *testing.T) { - Convey("OpenTsdb query testing", t, func() { - exec := &OpenTsdbExecutor{} + exec := &OpenTsdbExecutor{} - Convey("Build metric with downsampling enabled", func() { - query := &tsdb.Query{ - Model: simplejson.New(), - } + t.Run("Build metric with downsampling enabled", func(t *testing.T) { + query := &tsdb.Query{ + Model: simplejson.New(), + } - query.Model.Set("metric", "cpu.average.percent") - query.Model.Set("aggregator", "avg") - query.Model.Set("disableDownsampling", false) - query.Model.Set("downsampleInterval", "") - query.Model.Set("downsampleAggregator", "avg") - query.Model.Set("downsampleFillPolicy", "none") + query.Model.Set("metric", "cpu.average.percent") + query.Model.Set("aggregator", "avg") + query.Model.Set("disableDownsampling", false) + query.Model.Set("downsampleInterval", "") + query.Model.Set("downsampleAggregator", "avg") + query.Model.Set("downsampleFillPolicy", "none") - metric := exec.buildMetric(query) + metric := exec.buildMetric(query) - So(len(metric), ShouldEqual, 3) - So(metric["metric"], ShouldEqual, "cpu.average.percent") - So(metric["aggregator"], ShouldEqual, "avg") - So(metric["downsample"], ShouldEqual, "1m-avg") - }) + require.Len(t, metric, 3) + require.Equal(t, "cpu.average.percent", metric["metric"]) + require.Equal(t, "avg", metric["aggregator"]) + require.Equal(t, "1m-avg", metric["downsample"]) + }) - Convey("Build metric with downsampling disabled", func() { - query := &tsdb.Query{ - Model: simplejson.New(), - } + t.Run("Build metric with downsampling disabled", func(t *testing.T) { + query := &tsdb.Query{ + Model: simplejson.New(), + } - query.Model.Set("metric", "cpu.average.percent") - query.Model.Set("aggregator", "avg") - query.Model.Set("disableDownsampling", true) - query.Model.Set("downsampleInterval", "") - query.Model.Set("downsampleAggregator", "avg") - query.Model.Set("downsampleFillPolicy", "none") + query.Model.Set("metric", "cpu.average.percent") + query.Model.Set("aggregator", "avg") + query.Model.Set("disableDownsampling", true) + query.Model.Set("downsampleInterval", "") + query.Model.Set("downsampleAggregator", "avg") + query.Model.Set("downsampleFillPolicy", "none") - metric := exec.buildMetric(query) + metric := exec.buildMetric(query) - So(len(metric), ShouldEqual, 2) - So(metric["metric"], ShouldEqual, "cpu.average.percent") - So(metric["aggregator"], ShouldEqual, "avg") - }) + require.Len(t, metric, 2) + require.Equal(t, "cpu.average.percent", metric["metric"]) + require.Equal(t, "avg", metric["aggregator"]) + }) - Convey("Build metric with downsampling enabled with params", func() { - query := &tsdb.Query{ - Model: simplejson.New(), - } + t.Run("Build metric with downsampling enabled with params", func(t *testing.T) { + query := &tsdb.Query{ + Model: simplejson.New(), + } - query.Model.Set("metric", "cpu.average.percent") - query.Model.Set("aggregator", "avg") - query.Model.Set("disableDownsampling", false) - query.Model.Set("downsampleInterval", "5m") - query.Model.Set("downsampleAggregator", "sum") - query.Model.Set("downsampleFillPolicy", "null") + query.Model.Set("metric", "cpu.average.percent") + query.Model.Set("aggregator", "avg") + query.Model.Set("disableDownsampling", false) + query.Model.Set("downsampleInterval", "5m") + query.Model.Set("downsampleAggregator", "sum") + query.Model.Set("downsampleFillPolicy", "null") - metric := exec.buildMetric(query) + metric := exec.buildMetric(query) - So(len(metric), ShouldEqual, 3) - So(metric["metric"], ShouldEqual, "cpu.average.percent") - So(metric["aggregator"], ShouldEqual, "avg") - So(metric["downsample"], ShouldEqual, "5m-sum-null") - }) + require.Len(t, metric, 3) + require.Equal(t, "cpu.average.percent", metric["metric"]) + require.Equal(t, "avg", metric["aggregator"]) + require.Equal(t, "5m-sum-null", metric["downsample"]) + }) - Convey("Build metric with tags with downsampling disabled", func() { - query := &tsdb.Query{ - Model: simplejson.New(), - } + t.Run("Build metric with tags with downsampling disabled", func(t *testing.T) { + query := &tsdb.Query{ + Model: simplejson.New(), + } - query.Model.Set("metric", "cpu.average.percent") - query.Model.Set("aggregator", "avg") - query.Model.Set("disableDownsampling", true) - query.Model.Set("downsampleInterval", "5m") - query.Model.Set("downsampleAggregator", "sum") - query.Model.Set("downsampleFillPolicy", "null") + query.Model.Set("metric", "cpu.average.percent") + query.Model.Set("aggregator", "avg") + query.Model.Set("disableDownsampling", true) + query.Model.Set("downsampleInterval", "5m") + query.Model.Set("downsampleAggregator", "sum") + query.Model.Set("downsampleFillPolicy", "null") - tags := simplejson.New() - tags.Set("env", "prod") - tags.Set("app", "grafana") - query.Model.Set("tags", tags.MustMap()) + tags := simplejson.New() + tags.Set("env", "prod") + tags.Set("app", "grafana") + query.Model.Set("tags", tags.MustMap()) - metric := exec.buildMetric(query) + metric := exec.buildMetric(query) - So(len(metric), ShouldEqual, 3) - So(metric["metric"], ShouldEqual, "cpu.average.percent") - So(metric["aggregator"], ShouldEqual, "avg") - So(metric["downsample"], ShouldEqual, nil) - So(len(metric["tags"].(map[string]interface{})), ShouldEqual, 2) - So(metric["tags"].(map[string]interface{})["env"], ShouldEqual, "prod") - So(metric["tags"].(map[string]interface{})["app"], ShouldEqual, "grafana") - So(metric["tags"].(map[string]interface{})["ip"], ShouldEqual, nil) - }) + require.Len(t, metric, 3) + require.Equal(t, "cpu.average.percent", metric["metric"]) + require.Equal(t, "avg", metric["aggregator"]) + require.Nil(t, metric["downsample"]) - Convey("Build metric with rate enabled but counter disabled", func() { - query := &tsdb.Query{ - Model: simplejson.New(), - } + metricTags := metric["tags"].(map[string]interface{}) + require.Len(t, metricTags, 2) + require.Equal(t, "prod", metricTags["env"]) + require.Equal(t, "grafana", metricTags["app"]) + require.Nil(t, metricTags["ip"]) + }) - query.Model.Set("metric", "cpu.average.percent") - query.Model.Set("aggregator", "avg") - query.Model.Set("disableDownsampling", true) - query.Model.Set("shouldComputeRate", true) - query.Model.Set("isCounter", false) + t.Run("Build metric with rate enabled but counter disabled", func(t *testing.T) { + query := &tsdb.Query{ + Model: simplejson.New(), + } - tags := simplejson.New() - tags.Set("env", "prod") - tags.Set("app", "grafana") - query.Model.Set("tags", tags.MustMap()) + query.Model.Set("metric", "cpu.average.percent") + query.Model.Set("aggregator", "avg") + query.Model.Set("disableDownsampling", true) + query.Model.Set("shouldComputeRate", true) + query.Model.Set("isCounter", false) - metric := exec.buildMetric(query) + tags := simplejson.New() + tags.Set("env", "prod") + tags.Set("app", "grafana") + query.Model.Set("tags", tags.MustMap()) - So(len(metric), ShouldEqual, 5) - So(metric["metric"], ShouldEqual, "cpu.average.percent") - So(metric["aggregator"], ShouldEqual, "avg") - So(len(metric["tags"].(map[string]interface{})), ShouldEqual, 2) - So(metric["tags"].(map[string]interface{})["env"], ShouldEqual, "prod") - So(metric["tags"].(map[string]interface{})["app"], ShouldEqual, "grafana") - So(metric["tags"].(map[string]interface{})["ip"], ShouldEqual, nil) - So(metric["rate"], ShouldEqual, true) - So(metric["rateOptions"].(map[string]interface{})["counter"], ShouldEqual, false) - }) + metric := exec.buildMetric(query) - Convey("Build metric with rate and counter enabled", func() { - query := &tsdb.Query{ - Model: simplejson.New(), - } + require.Len(t, metric, 5) + require.Equal(t, "cpu.average.percent", metric["metric"]) + require.Equal(t, "avg", metric["aggregator"]) - query.Model.Set("metric", "cpu.average.percent") - query.Model.Set("aggregator", "avg") - query.Model.Set("disableDownsampling", true) - query.Model.Set("shouldComputeRate", true) - query.Model.Set("isCounter", true) - query.Model.Set("counterMax", 45) - query.Model.Set("counterResetValue", 60) + metricTags := metric["tags"].(map[string]interface{}) + require.Len(t, metricTags, 2) + require.Equal(t, "prod", metricTags["env"]) + require.Equal(t, "grafana", metricTags["app"]) + require.Nil(t, metricTags["ip"]) - tags := simplejson.New() - tags.Set("env", "prod") - tags.Set("app", "grafana") - query.Model.Set("tags", tags.MustMap()) + require.True(t, metric["rate"].(bool)) + require.False(t, metric["rateOptions"].(map[string]interface{})["counter"].(bool)) + }) - metric := exec.buildMetric(query) + t.Run("Build metric with rate and counter enabled", func(t *testing.T) { + query := &tsdb.Query{ + Model: simplejson.New(), + } - So(len(metric), ShouldEqual, 5) - So(metric["metric"], ShouldEqual, "cpu.average.percent") - So(metric["aggregator"], ShouldEqual, "avg") - So(len(metric["tags"].(map[string]interface{})), ShouldEqual, 2) - So(metric["tags"].(map[string]interface{})["env"], ShouldEqual, "prod") - So(metric["tags"].(map[string]interface{})["app"], ShouldEqual, "grafana") - So(metric["tags"].(map[string]interface{})["ip"], ShouldEqual, nil) - So(metric["rate"], ShouldEqual, true) - So(len(metric["rateOptions"].(map[string]interface{})), ShouldEqual, 3) - So(metric["rateOptions"].(map[string]interface{})["counter"], ShouldEqual, true) - So(metric["rateOptions"].(map[string]interface{})["counterMax"], ShouldEqual, 45) - So(metric["rateOptions"].(map[string]interface{})["resetValue"], ShouldEqual, 60) - }) + query.Model.Set("metric", "cpu.average.percent") + query.Model.Set("aggregator", "avg") + query.Model.Set("disableDownsampling", true) + query.Model.Set("shouldComputeRate", true) + query.Model.Set("isCounter", true) + query.Model.Set("counterMax", 45) + query.Model.Set("counterResetValue", 60) + + tags := simplejson.New() + tags.Set("env", "prod") + tags.Set("app", "grafana") + query.Model.Set("tags", tags.MustMap()) + + metric := exec.buildMetric(query) + + require.Len(t, metric, 5) + require.Equal(t, "cpu.average.percent", metric["metric"]) + require.Equal(t, "avg", metric["aggregator"]) + + metricTags := metric["tags"].(map[string]interface{}) + require.Len(t, metricTags, 2) + require.Equal(t, "prod", metricTags["env"]) + require.Equal(t, "grafana", metricTags["app"]) + require.Nil(t, metricTags["ip"]) + + require.True(t, metric["rate"].(bool)) + metricRateOptions := metric["rateOptions"].(map[string]interface{}) + require.Len(t, metricRateOptions, 3) + require.True(t, metricRateOptions["counter"].(bool)) + require.Equal(t, float64(45), metricRateOptions["counterMax"]) + require.Equal(t, float64(60), metricRateOptions["resetValue"]) }) }