influxdb/query/execute/executetest/dataset.go

93 lines
2.1 KiB
Go

package executetest
import (
"testing"
"github.com/google/go-cmp/cmp"
"github.com/influxdata/platform/query"
"github.com/influxdata/platform/query/execute"
uuid "github.com/satori/go.uuid"
)
func RandomDatasetID() execute.DatasetID {
return execute.DatasetID(uuid.NewV4())
}
type Dataset struct {
ID execute.DatasetID
Retractions []query.GroupKey
ProcessingTimeUpdates []execute.Time
WatermarkUpdates []execute.Time
Finished bool
FinishedErr error
}
func NewDataset(id execute.DatasetID) *Dataset {
return &Dataset{
ID: id,
}
}
func (d *Dataset) AddTransformation(t execute.Transformation) {
panic("not implemented")
}
func (d *Dataset) RetractTable(key query.GroupKey) error {
d.Retractions = append(d.Retractions, key)
return nil
}
func (d *Dataset) UpdateProcessingTime(t execute.Time) error {
d.ProcessingTimeUpdates = append(d.ProcessingTimeUpdates, t)
return nil
}
func (d *Dataset) UpdateWatermark(mark execute.Time) error {
d.WatermarkUpdates = append(d.WatermarkUpdates, mark)
return nil
}
func (d *Dataset) Finish(err error) {
if d.Finished {
panic("finish has already been called")
}
d.Finished = true
d.FinishedErr = err
}
func (d *Dataset) SetTriggerSpec(t query.TriggerSpec) {
panic("not implemented")
}
type NewTransformation func(execute.Dataset, execute.TableBuilderCache) execute.Transformation
func TransformationPassThroughTestHelper(t *testing.T, newTr NewTransformation) {
t.Helper()
now := execute.Now()
d := NewDataset(RandomDatasetID())
c := execute.NewTableBuilderCache(UnlimitedAllocator)
c.SetTriggerSpec(execute.DefaultTriggerSpec)
parentID := RandomDatasetID()
tr := newTr(d, c)
if err := tr.UpdateWatermark(parentID, now); err != nil {
t.Fatal(err)
}
if err := tr.UpdateProcessingTime(parentID, now); err != nil {
t.Fatal(err)
}
tr.Finish(parentID, nil)
exp := &Dataset{
ID: d.ID,
ProcessingTimeUpdates: []execute.Time{now},
WatermarkUpdates: []execute.Time{now},
Finished: true,
FinishedErr: nil,
}
if !cmp.Equal(d, exp) {
t.Errorf("unexpected dataset -want/+got\n%s", cmp.Diff(exp, d))
}
}