From 00545620146dfe38ecff79d5b1c3b7b7dbcd51ea Mon Sep 17 00:00:00 2001 From: Stuart Carnie Date: Fri, 16 Aug 2019 10:33:41 -0700 Subject: [PATCH] feat(gen): Add Copy(tsdb.Array) method to Values This allows data generators to produce tsdb arrays, which are useful for testing --- pkg/data/gen/arrays.gen.go | 45 +++++++++++++++++++++++++++++++++ pkg/data/gen/arrays.gen.go.tmpl | 9 +++++++ 2 files changed, 54 insertions(+) diff --git a/pkg/data/gen/arrays.gen.go b/pkg/data/gen/arrays.gen.go index f776cad6d7..87d73cf9d8 100644 --- a/pkg/data/gen/arrays.gen.go +++ b/pkg/data/gen/arrays.gen.go @@ -11,6 +11,10 @@ import ( "github.com/influxdata/influxdb/tsdb/tsm1" ) +type FloatValues interface { + Copy(*tsdb.FloatArray) +} + type floatArray struct { tsdb.FloatArray } @@ -28,6 +32,15 @@ func (a *floatArray) Encode(b []byte) ([]byte, error) { return tsm1.EncodeFloatArrayBlock(&a.FloatArray, b) } +func (a *floatArray) Copy(dst *tsdb.FloatArray) { + dst.Timestamps = append(dst.Timestamps[:0], a.Timestamps...) + dst.Values = append(dst.Values[:0], a.Values...) +} + +type IntegerValues interface { + Copy(*tsdb.IntegerArray) +} + type integerArray struct { tsdb.IntegerArray } @@ -45,6 +58,15 @@ func (a *integerArray) Encode(b []byte) ([]byte, error) { return tsm1.EncodeIntegerArrayBlock(&a.IntegerArray, b) } +func (a *integerArray) Copy(dst *tsdb.IntegerArray) { + dst.Timestamps = append(dst.Timestamps[:0], a.Timestamps...) + dst.Values = append(dst.Values[:0], a.Values...) +} + +type UnsignedValues interface { + Copy(*tsdb.UnsignedArray) +} + type unsignedArray struct { tsdb.UnsignedArray } @@ -62,6 +84,15 @@ func (a *unsignedArray) Encode(b []byte) ([]byte, error) { return tsm1.EncodeUnsignedArrayBlock(&a.UnsignedArray, b) } +func (a *unsignedArray) Copy(dst *tsdb.UnsignedArray) { + dst.Timestamps = append(dst.Timestamps[:0], a.Timestamps...) + dst.Values = append(dst.Values[:0], a.Values...) +} + +type StringValues interface { + Copy(*tsdb.StringArray) +} + type stringArray struct { tsdb.StringArray } @@ -79,6 +110,15 @@ func (a *stringArray) Encode(b []byte) ([]byte, error) { return tsm1.EncodeStringArrayBlock(&a.StringArray, b) } +func (a *stringArray) Copy(dst *tsdb.StringArray) { + dst.Timestamps = append(dst.Timestamps[:0], a.Timestamps...) + dst.Values = append(dst.Values[:0], a.Values...) +} + +type BooleanValues interface { + Copy(*tsdb.BooleanArray) +} + type booleanArray struct { tsdb.BooleanArray } @@ -95,3 +135,8 @@ func newBooleanArrayLen(sz int) *booleanArray { func (a *booleanArray) Encode(b []byte) ([]byte, error) { return tsm1.EncodeBooleanArrayBlock(&a.BooleanArray, b) } + +func (a *booleanArray) Copy(dst *tsdb.BooleanArray) { + dst.Timestamps = append(dst.Timestamps[:0], a.Timestamps...) + dst.Values = append(dst.Values[:0], a.Values...) +} diff --git a/pkg/data/gen/arrays.gen.go.tmpl b/pkg/data/gen/arrays.gen.go.tmpl index da63ee308a..9bd4e1a402 100644 --- a/pkg/data/gen/arrays.gen.go.tmpl +++ b/pkg/data/gen/arrays.gen.go.tmpl @@ -8,6 +8,10 @@ import ( {{range .}} {{ $typename := print .name "Array" }} {{ $tsdbname := print .Name "Array" }} +type {{.Name}}Values interface { + Copy(*tsdb.{{$tsdbname}}) +} + type {{$typename}} struct { tsdb.{{$tsdbname}} } @@ -24,4 +28,9 @@ func new{{$tsdbname}}Len(sz int) *{{$typename}} { func (a *{{$typename}}) Encode(b []byte) ([]byte, error) { return tsm1.Encode{{$tsdbname}}Block(&a.{{$tsdbname}}, b) } + +func (a *{{$typename}}) Copy(dst *tsdb.{{$tsdbname}}) { + dst.Timestamps = append(dst.Timestamps[:0], a.Timestamps...) + dst.Values = append(dst.Values[:0], a.Values...) +} {{end}} \ No newline at end of file