浏览代码

stackdriver: update alignment period rules according to stackdriver

Erik Sundell 7 年之前
父节点
当前提交
481b8653d9
共有 2 个文件被更改,包括 58 次插入2 次删除
  1. 4 2
      pkg/tsdb/stackdriver/stackdriver.go
  2. 54 0
      pkg/tsdb/stackdriver/stackdriver_test.go

+ 4 - 2
pkg/tsdb/stackdriver/stackdriver.go

@@ -18,6 +18,7 @@ import (
 	"golang.org/x/net/context/ctxhttp"
 	"golang.org/x/net/context/ctxhttp"
 
 
 	"github.com/grafana/grafana/pkg/api/pluginproxy"
 	"github.com/grafana/grafana/pkg/api/pluginproxy"
+	"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
 	"github.com/grafana/grafana/pkg/components/null"
 	"github.com/grafana/grafana/pkg/components/null"
 	"github.com/grafana/grafana/pkg/components/simplejson"
 	"github.com/grafana/grafana/pkg/components/simplejson"
 	"github.com/grafana/grafana/pkg/log"
 	"github.com/grafana/grafana/pkg/log"
@@ -193,9 +194,10 @@ func setAggParams(params *url.Values, query *tsdb.Query, durationSeconds int) {
 
 
 	if alignmentPeriod == "stackdriver-auto" {
 	if alignmentPeriod == "stackdriver-auto" {
 		alignmentPeriodValue := int(math.Max(float64(durationSeconds), 60.0))
 		alignmentPeriodValue := int(math.Max(float64(durationSeconds), 60.0))
-		if alignmentPeriodValue <= 60*60*5 {
+		logger.Info("alignmentPeriodValue", "alignmentPeriodValue", alignmentPeriodValue)
+		if alignmentPeriodValue < 60*60*23 {
 			alignmentPeriod = "+60s"
 			alignmentPeriod = "+60s"
-		} else if alignmentPeriodValue <= 60*60*23 {
+		} else if alignmentPeriodValue < 60*60*24*6 {
 			alignmentPeriod = "+300s"
 			alignmentPeriod = "+300s"
 		} else {
 		} else {
 			alignmentPeriod = "+3600s"
 			alignmentPeriod = "+3600s"

+ 54 - 0
pkg/tsdb/stackdriver/stackdriver_test.go

@@ -94,6 +94,60 @@ func TestStackdriver(t *testing.T) {
 				})
 				})
 			})
 			})
 
 
+			Convey("and alignmentPeriod is set to stackdriver-auto", func() {
+				Convey("and range is two hours", func() {
+					tsdbQuery.TimeRange.From = "1538033322461"
+					tsdbQuery.TimeRange.To = "1538040522461"
+					tsdbQuery.Queries[0].Model = simplejson.NewFromAny(map[string]interface{}{
+						"target":          "target",
+						"alignmentPeriod": "stackdriver-auto",
+					})
+
+					queries, err := executor.buildQueries(tsdbQuery)
+					So(err, ShouldBeNil)
+					So(queries[0].Params["aggregation.alignmentPeriod"][0], ShouldEqual, `+60s`)
+				})
+
+				Convey("and range is 22 hours", func() {
+					tsdbQuery.TimeRange.From = "1538034524922"
+					tsdbQuery.TimeRange.To = "1538113724922"
+					tsdbQuery.Queries[0].Model = simplejson.NewFromAny(map[string]interface{}{
+						"target":          "target",
+						"alignmentPeriod": "stackdriver-auto",
+					})
+
+					queries, err := executor.buildQueries(tsdbQuery)
+					So(err, ShouldBeNil)
+					So(queries[0].Params["aggregation.alignmentPeriod"][0], ShouldEqual, `+60s`)
+				})
+
+				Convey("and range is 23 hours", func() {
+					tsdbQuery.TimeRange.From = "1538034567985"
+					tsdbQuery.TimeRange.To = "1538117367985"
+					tsdbQuery.Queries[0].Model = simplejson.NewFromAny(map[string]interface{}{
+						"target":          "target",
+						"alignmentPeriod": "stackdriver-auto",
+					})
+
+					queries, err := executor.buildQueries(tsdbQuery)
+					So(err, ShouldBeNil)
+					So(queries[0].Params["aggregation.alignmentPeriod"][0], ShouldEqual, `+300s`)
+				})
+
+				Convey("and range is 7 days", func() {
+					tsdbQuery.TimeRange.From = "1538036324073"
+					tsdbQuery.TimeRange.To = "1538641124073"
+					tsdbQuery.Queries[0].Model = simplejson.NewFromAny(map[string]interface{}{
+						"target":          "target",
+						"alignmentPeriod": "stackdriver-auto",
+					})
+
+					queries, err := executor.buildQueries(tsdbQuery)
+					So(err, ShouldBeNil)
+					So(queries[0].Params["aggregation.alignmentPeriod"][0], ShouldEqual, `+3600s`)
+				})
+			})
+
 			Convey("and alignmentPeriod is set in frontend", func() {
 			Convey("and alignmentPeriod is set in frontend", func() {
 				Convey("and alignment period is too big", func() {
 				Convey("and alignment period is too big", func() {
 					tsdbQuery.Queries[0].IntervalMs = 1000
 					tsdbQuery.Queries[0].IntervalMs = 1000