influxdb/query/functions/shift_test.go

124 lines
2.7 KiB
Go
Raw Normal View History

2018-05-21 21:13:54 +00:00
package functions_test
import (
"testing"
"time"
2018-05-21 21:20:06 +00:00
"github.com/influxdata/platform/query"
"github.com/influxdata/platform/query/execute"
"github.com/influxdata/platform/query/execute/executetest"
"github.com/influxdata/platform/query/functions"
2018-05-21 21:20:06 +00:00
"github.com/influxdata/platform/query/querytest"
2018-05-21 21:13:54 +00:00
)
func TestShiftOperation_Marshaling(t *testing.T) {
data := []byte(`{"id":"shift","kind":"shift","spec":{"shift":"1h"}}`)
op := &query.Operation{
ID: "shift",
Spec: &functions.ShiftOpSpec{
Shift: query.Duration(1 * time.Hour),
},
}
querytest.OperationMarshalingTestHelper(t, data, op)
}
func TestShift_Process(t *testing.T) {
cols := []query.ColMeta{
{Label: "t1", Type: query.TString},
{Label: execute.DefaultTimeColLabel, Type: query.TTime},
{Label: execute.DefaultValueColLabel, Type: query.TFloat},
2018-05-21 21:13:54 +00:00
}
testCases := []struct {
name string
spec *functions.ShiftProcedureSpec
2018-07-10 23:33:00 +00:00
data []query.Table
want []*executetest.Table
2018-05-21 21:13:54 +00:00
}{
{
2018-07-10 23:33:00 +00:00
name: "one table",
2018-05-21 21:13:54 +00:00
spec: &functions.ShiftProcedureSpec{
Columns: []string{execute.DefaultTimeColLabel},
Shift: query.Duration(1),
},
2018-07-10 23:33:00 +00:00
data: []query.Table{
&executetest.Table{
2018-05-21 21:13:54 +00:00
KeyCols: []string{"t1"},
ColMeta: cols,
Data: [][]interface{}{
{"a", execute.Time(1), 2.0},
{"a", execute.Time(2), 1.0},
},
},
},
2018-07-10 23:33:00 +00:00
want: []*executetest.Table{
2018-05-21 21:13:54 +00:00
{
KeyCols: []string{"t1"},
ColMeta: cols,
Data: [][]interface{}{
{"a", execute.Time(2), 2.0},
{"a", execute.Time(3), 1.0},
},
},
},
},
{
2018-07-10 23:33:00 +00:00
name: "multiple tables",
2018-05-21 21:13:54 +00:00
spec: &functions.ShiftProcedureSpec{
Columns: []string{execute.DefaultTimeColLabel},
Shift: query.Duration(2),
},
2018-07-10 23:33:00 +00:00
data: []query.Table{
&executetest.Table{
2018-05-21 21:13:54 +00:00
KeyCols: []string{"t1"},
ColMeta: cols,
Data: [][]interface{}{
{"a", execute.Time(1), 2.0},
{"a", execute.Time(2), 1.0},
},
},
2018-07-10 23:33:00 +00:00
&executetest.Table{
2018-05-21 21:13:54 +00:00
KeyCols: []string{"t1"},
ColMeta: cols,
Data: [][]interface{}{
{"b", execute.Time(3), 3.0},
{"b", execute.Time(4), 4.0},
},
},
},
2018-07-10 23:33:00 +00:00
want: []*executetest.Table{
2018-05-21 21:13:54 +00:00
{
KeyCols: []string{"t1"},
ColMeta: cols,
Data: [][]interface{}{
{"a", execute.Time(3), 2.0},
{"a", execute.Time(4), 1.0},
},
},
{
KeyCols: []string{"t1"},
ColMeta: cols,
Data: [][]interface{}{
{"b", execute.Time(5), 3.0},
{"b", execute.Time(6), 4.0},
},
},
},
},
}
for _, tc := range testCases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
executetest.ProcessTestHelper(
t,
tc.data,
tc.want,
nil,
2018-07-10 23:33:00 +00:00
func(d execute.Dataset, c execute.TableBuilderCache) execute.Transformation {
2018-05-21 21:13:54 +00:00
return functions.NewShiftTransformation(d, c, tc.spec)
},
)
})
}
}