2019-02-10 18:17:37 -06:00
|
|
|
package azuremonitor
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestTimeGrain(t *testing.T) {
|
|
|
|
Convey("TimeGrain", t, func() {
|
|
|
|
tgc := &TimeGrain{}
|
|
|
|
|
|
|
|
Convey("create ISO 8601 Duration", func() {
|
|
|
|
Convey("when given a time unit smaller than a day", func() {
|
|
|
|
minuteKbnDuration := tgc.createISO8601Duration(1, "m")
|
|
|
|
hourKbnDuration := tgc.createISO8601Duration(2, "h")
|
|
|
|
minuteDuration := tgc.createISO8601Duration(1, "minute")
|
|
|
|
hourDuration := tgc.createISO8601Duration(2, "hour")
|
|
|
|
|
|
|
|
Convey("should convert it to a time duration", func() {
|
|
|
|
So(minuteKbnDuration, ShouldEqual, "PT1M")
|
|
|
|
So(hourKbnDuration, ShouldEqual, "PT2H")
|
|
|
|
|
|
|
|
So(minuteDuration, ShouldEqual, "PT1M")
|
|
|
|
So(hourDuration, ShouldEqual, "PT2H")
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
Convey("when given the day time unit", func() {
|
|
|
|
kbnDuration := tgc.createISO8601Duration(1, "d")
|
|
|
|
duration := tgc.createISO8601Duration(2, "day")
|
|
|
|
|
|
|
|
Convey("should convert it to a date duration", func() {
|
|
|
|
So(kbnDuration, ShouldEqual, "P1D")
|
|
|
|
So(duration, ShouldEqual, "P2D")
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
2019-02-11 06:27:08 -06:00
|
|
|
Convey("create ISO 8601 Duration from Grafana interval in milliseconds", func() {
|
2019-02-10 18:17:37 -06:00
|
|
|
Convey("and interval is less than a minute", func() {
|
2019-02-11 06:27:08 -06:00
|
|
|
durationMS, err := tgc.createISO8601DurationFromIntervalMS(100)
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
|
|
durationS, err := tgc.createISO8601DurationFromIntervalMS(59999)
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
2019-02-10 18:17:37 -06:00
|
|
|
Convey("should be rounded up to a minute as is the minimum interval for Azure Monitor", func() {
|
|
|
|
So(durationMS, ShouldEqual, "PT1M")
|
|
|
|
So(durationS, ShouldEqual, "PT1M")
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
Convey("and interval is more than a minute", func() {
|
2019-02-11 06:27:08 -06:00
|
|
|
intervals := map[string]int64{
|
|
|
|
"10m": 600000,
|
|
|
|
"2d": 172800000,
|
|
|
|
}
|
|
|
|
durationM, err := tgc.createISO8601DurationFromIntervalMS(intervals["10m"])
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
durationD, err := tgc.createISO8601DurationFromIntervalMS(intervals["2d"])
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
2019-02-10 18:17:37 -06:00
|
|
|
Convey("should be rounded up to a minute as is the minimum interval for Azure Monitor", func() {
|
|
|
|
So(durationM, ShouldEqual, "PT10M")
|
|
|
|
So(durationD, ShouldEqual, "P2D")
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|