| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- package tsdb
- import (
- "fmt"
- "testing"
- "time"
- . "github.com/smartystreets/goconvey/convey"
- )
- func TestSqlEngine(t *testing.T) {
- Convey("SqlEngine", t, func() {
- dt := time.Date(2018, 3, 14, 21, 20, 6, int(527345*time.Microsecond), time.UTC)
- Convey("Given row values with time.Time as time columns", func() {
- var nilPointer *time.Time
- fixtures := make([]interface{}, 3)
- fixtures[0] = dt
- fixtures[1] = &dt
- fixtures[2] = nilPointer
- for i := range fixtures {
- ConvertSqlTimeColumnToEpochMs(fixtures, i)
- }
- Convey("When converting them should return epoch time with millisecond precision ", func() {
- expected := float64(dt.UnixNano()) / float64(time.Millisecond)
- So(fixtures[0].(float64), ShouldEqual, expected)
- So(fixtures[1].(float64), ShouldEqual, expected)
- So(fixtures[2], ShouldBeNil)
- })
- })
- Convey("Given row values with int64 as time columns", func() {
- tSeconds := dt.Unix()
- tMilliseconds := dt.UnixNano() / 1e6
- tNanoSeconds := dt.UnixNano()
- var nilPointer *int64
- fixtures := make([]interface{}, 7)
- fixtures[0] = tSeconds
- fixtures[1] = &tSeconds
- fixtures[2] = tMilliseconds
- fixtures[3] = &tMilliseconds
- fixtures[4] = tNanoSeconds
- fixtures[5] = &tNanoSeconds
- fixtures[6] = nilPointer
- for i := range fixtures {
- ConvertSqlTimeColumnToEpochMs(fixtures, i)
- }
- Convey("When converting them should return epoch time with millisecond precision ", func() {
- So(fixtures[0].(int64), ShouldEqual, tSeconds*1e3)
- So(fixtures[1].(int64), ShouldEqual, tSeconds*1e3)
- So(fixtures[2].(int64), ShouldEqual, tMilliseconds)
- So(fixtures[3].(int64), ShouldEqual, tMilliseconds)
- So(fixtures[4].(int64), ShouldEqual, tMilliseconds)
- So(fixtures[5].(int64), ShouldEqual, tMilliseconds)
- So(fixtures[6], ShouldBeNil)
- })
- })
- Convey("Given row values with uin64 as time columns", func() {
- tSeconds := uint64(dt.Unix())
- tMilliseconds := uint64(dt.UnixNano() / 1e6)
- tNanoSeconds := uint64(dt.UnixNano())
- var nilPointer *uint64
- fixtures := make([]interface{}, 7)
- fixtures[0] = tSeconds
- fixtures[1] = &tSeconds
- fixtures[2] = tMilliseconds
- fixtures[3] = &tMilliseconds
- fixtures[4] = tNanoSeconds
- fixtures[5] = &tNanoSeconds
- fixtures[6] = nilPointer
- for i := range fixtures {
- ConvertSqlTimeColumnToEpochMs(fixtures, i)
- }
- Convey("When converting them should return epoch time with millisecond precision ", func() {
- So(fixtures[0].(int64), ShouldEqual, tSeconds*1e3)
- So(fixtures[1].(int64), ShouldEqual, tSeconds*1e3)
- So(fixtures[2].(int64), ShouldEqual, tMilliseconds)
- So(fixtures[3].(int64), ShouldEqual, tMilliseconds)
- So(fixtures[4].(int64), ShouldEqual, tMilliseconds)
- So(fixtures[5].(int64), ShouldEqual, tMilliseconds)
- So(fixtures[6], ShouldBeNil)
- })
- })
- Convey("Given row values with int32 as time columns", func() {
- tSeconds := int32(dt.Unix())
- var nilInt *int32
- fixtures := make([]interface{}, 3)
- fixtures[0] = tSeconds
- fixtures[1] = &tSeconds
- fixtures[2] = nilInt
- for i := range fixtures {
- ConvertSqlTimeColumnToEpochMs(fixtures, i)
- }
- Convey("When converting them should return epoch time with millisecond precision ", func() {
- So(fixtures[0].(int64), ShouldEqual, dt.Unix()*1e3)
- So(fixtures[1].(int64), ShouldEqual, dt.Unix()*1e3)
- So(fixtures[2], ShouldBeNil)
- })
- })
- Convey("Given row values with uint32 as time columns", func() {
- tSeconds := uint32(dt.Unix())
- var nilInt *uint32
- fixtures := make([]interface{}, 3)
- fixtures[0] = tSeconds
- fixtures[1] = &tSeconds
- fixtures[2] = nilInt
- for i := range fixtures {
- ConvertSqlTimeColumnToEpochMs(fixtures, i)
- }
- Convey("When converting them should return epoch time with millisecond precision ", func() {
- So(fixtures[0].(int64), ShouldEqual, dt.Unix()*1e3)
- So(fixtures[1].(int64), ShouldEqual, dt.Unix()*1e3)
- So(fixtures[2], ShouldBeNil)
- })
- })
- Convey("Given row values with float64 as time columns", func() {
- tSeconds := float64(dt.UnixNano()) / float64(time.Second)
- tMilliseconds := float64(dt.UnixNano()) / float64(time.Millisecond)
- tNanoSeconds := float64(dt.UnixNano())
- var nilPointer *float64
- fixtures := make([]interface{}, 7)
- fixtures[0] = tSeconds
- fixtures[1] = &tSeconds
- fixtures[2] = tMilliseconds
- fixtures[3] = &tMilliseconds
- fixtures[4] = tNanoSeconds
- fixtures[5] = &tNanoSeconds
- fixtures[6] = nilPointer
- for i := range fixtures {
- ConvertSqlTimeColumnToEpochMs(fixtures, i)
- }
- Convey("When converting them should return epoch time with millisecond precision ", func() {
- So(fixtures[0].(float64), ShouldEqual, tMilliseconds)
- So(fixtures[1].(float64), ShouldEqual, tMilliseconds)
- So(fixtures[2].(float64), ShouldEqual, tMilliseconds)
- So(fixtures[3].(float64), ShouldEqual, tMilliseconds)
- fmt.Println(fixtures[4].(float64))
- fmt.Println(tMilliseconds)
- So(fixtures[4].(float64), ShouldEqual, tMilliseconds)
- So(fixtures[5].(float64), ShouldEqual, tMilliseconds)
- So(fixtures[6], ShouldBeNil)
- })
- })
- Convey("Given row values with float32 as time columns", func() {
- tSeconds := float32(dt.Unix())
- var nilInt *float32
- fixtures := make([]interface{}, 3)
- fixtures[0] = tSeconds
- fixtures[1] = &tSeconds
- fixtures[2] = nilInt
- for i := range fixtures {
- ConvertSqlTimeColumnToEpochMs(fixtures, i)
- }
- Convey("When converting them should return epoch time with millisecond precision ", func() {
- So(fixtures[0].(float64), ShouldEqual, float32(dt.Unix()*1e3))
- So(fixtures[1].(float64), ShouldEqual, float32(dt.Unix()*1e3))
- So(fixtures[2], ShouldBeNil)
- })
- })
- })
- }
|