1package internal
2
3import (
4	"io"
5	"time"
6
7	"github.com/influxdata/influxdb/models"
8	"github.com/influxdata/influxdb/query"
9	"github.com/influxdata/influxdb/tsdb"
10	"github.com/influxdata/influxql"
11	"go.uber.org/zap"
12)
13
14// TSDBStoreMock is a mockable implementation of tsdb.Store.
15type TSDBStoreMock struct {
16	BackupShardFn             func(id uint64, since time.Time, w io.Writer) error
17	BackupSeriesFileFn        func(database string, w io.Writer) error
18	ExportShardFn             func(id uint64, ExportStart time.Time, ExportEnd time.Time, w io.Writer) error
19	CloseFn                   func() error
20	CreateShardFn             func(database, policy string, shardID uint64, enabled bool) error
21	CreateShardSnapshotFn     func(id uint64) (string, error)
22	DatabasesFn               func() []string
23	DeleteDatabaseFn          func(name string) error
24	DeleteMeasurementFn       func(database, name string) error
25	DeleteRetentionPolicyFn   func(database, name string) error
26	DeleteSeriesFn            func(database string, sources []influxql.Source, condition influxql.Expr) error
27	DeleteShardFn             func(id uint64) error
28	DiskSizeFn                func() (int64, error)
29	ExpandSourcesFn           func(sources influxql.Sources) (influxql.Sources, error)
30	ImportShardFn             func(id uint64, r io.Reader) error
31	MeasurementSeriesCountsFn func(database string) (measuments int, series int)
32	MeasurementsCardinalityFn func(database string) (int64, error)
33	MeasurementNamesFn        func(auth query.Authorizer, database string, cond influxql.Expr) ([][]byte, error)
34	OpenFn                    func() error
35	PathFn                    func() string
36	RestoreShardFn            func(id uint64, r io.Reader) error
37	SeriesCardinalityFn       func(database string) (int64, error)
38	SetShardEnabledFn         func(shardID uint64, enabled bool) error
39	ShardFn                   func(id uint64) *tsdb.Shard
40	ShardGroupFn              func(ids []uint64) tsdb.ShardGroup
41	ShardIDsFn                func() []uint64
42	ShardNFn                  func() int
43	ShardRelativePathFn       func(id uint64) (string, error)
44	ShardsFn                  func(ids []uint64) []*tsdb.Shard
45	StatisticsFn              func(tags map[string]string) []models.Statistic
46	TagKeysFn                 func(auth query.Authorizer, shardIDs []uint64, cond influxql.Expr) ([]tsdb.TagKeys, error)
47	TagValuesFn               func(auth query.Authorizer, shardIDs []uint64, cond influxql.Expr) ([]tsdb.TagValues, error)
48	WithLoggerFn              func(log *zap.Logger)
49	WriteToShardFn            func(shardID uint64, points []models.Point) error
50}
51
52func (s *TSDBStoreMock) BackupShard(id uint64, since time.Time, w io.Writer) error {
53	return s.BackupShardFn(id, since, w)
54}
55func (s *TSDBStoreMock) BackupSeriesFile(database string, w io.Writer) error {
56	return s.BackupSeriesFileFn(database, w)
57}
58func (s *TSDBStoreMock) ExportShard(id uint64, ExportStart time.Time, ExportEnd time.Time, w io.Writer) error {
59	return s.ExportShardFn(id, ExportStart, ExportEnd, w)
60}
61func (s *TSDBStoreMock) Close() error { return s.CloseFn() }
62func (s *TSDBStoreMock) CreateShard(database string, retentionPolicy string, shardID uint64, enabled bool) error {
63	return s.CreateShardFn(database, retentionPolicy, shardID, enabled)
64}
65func (s *TSDBStoreMock) CreateShardSnapshot(id uint64) (string, error) {
66	return s.CreateShardSnapshotFn(id)
67}
68func (s *TSDBStoreMock) Databases() []string {
69	return s.DatabasesFn()
70}
71func (s *TSDBStoreMock) DeleteDatabase(name string) error {
72	return s.DeleteDatabaseFn(name)
73}
74func (s *TSDBStoreMock) DeleteMeasurement(database string, name string) error {
75	return s.DeleteMeasurementFn(database, name)
76}
77func (s *TSDBStoreMock) DeleteRetentionPolicy(database string, name string) error {
78	return s.DeleteRetentionPolicyFn(database, name)
79}
80func (s *TSDBStoreMock) DeleteSeries(database string, sources []influxql.Source, condition influxql.Expr) error {
81	return s.DeleteSeriesFn(database, sources, condition)
82}
83func (s *TSDBStoreMock) DeleteShard(shardID uint64) error {
84	return s.DeleteShardFn(shardID)
85}
86func (s *TSDBStoreMock) DiskSize() (int64, error) {
87	return s.DiskSizeFn()
88}
89func (s *TSDBStoreMock) ExpandSources(sources influxql.Sources) (influxql.Sources, error) {
90	return s.ExpandSourcesFn(sources)
91}
92func (s *TSDBStoreMock) ImportShard(id uint64, r io.Reader) error {
93	return s.ImportShardFn(id, r)
94}
95func (s *TSDBStoreMock) MeasurementNames(auth query.Authorizer, database string, cond influxql.Expr) ([][]byte, error) {
96	return s.MeasurementNamesFn(auth, database, cond)
97}
98func (s *TSDBStoreMock) MeasurementSeriesCounts(database string) (measuments int, series int) {
99	return s.MeasurementSeriesCountsFn(database)
100}
101func (s *TSDBStoreMock) MeasurementsCardinality(database string) (int64, error) {
102	return s.MeasurementsCardinalityFn(database)
103}
104func (s *TSDBStoreMock) Open() error {
105	return s.OpenFn()
106}
107func (s *TSDBStoreMock) Path() string {
108	return s.PathFn()
109}
110func (s *TSDBStoreMock) RestoreShard(id uint64, r io.Reader) error {
111	return s.RestoreShardFn(id, r)
112}
113func (s *TSDBStoreMock) SeriesCardinality(database string) (int64, error) {
114	return s.SeriesCardinalityFn(database)
115}
116func (s *TSDBStoreMock) SetShardEnabled(shardID uint64, enabled bool) error {
117	return s.SetShardEnabledFn(shardID, enabled)
118}
119func (s *TSDBStoreMock) Shard(id uint64) *tsdb.Shard {
120	return s.ShardFn(id)
121}
122func (s *TSDBStoreMock) ShardGroup(ids []uint64) tsdb.ShardGroup {
123	return s.ShardGroupFn(ids)
124}
125func (s *TSDBStoreMock) ShardIDs() []uint64 {
126	return s.ShardIDsFn()
127}
128func (s *TSDBStoreMock) ShardN() int {
129	return s.ShardNFn()
130}
131func (s *TSDBStoreMock) ShardRelativePath(id uint64) (string, error) {
132	return s.ShardRelativePathFn(id)
133}
134func (s *TSDBStoreMock) Shards(ids []uint64) []*tsdb.Shard {
135	return s.ShardsFn(ids)
136}
137func (s *TSDBStoreMock) Statistics(tags map[string]string) []models.Statistic {
138	return s.StatisticsFn(tags)
139}
140func (s *TSDBStoreMock) TagKeys(auth query.Authorizer, shardIDs []uint64, cond influxql.Expr) ([]tsdb.TagKeys, error) {
141	return s.TagKeysFn(auth, shardIDs, cond)
142}
143func (s *TSDBStoreMock) TagValues(auth query.Authorizer, shardIDs []uint64, cond influxql.Expr) ([]tsdb.TagValues, error) {
144	return s.TagValuesFn(auth, shardIDs, cond)
145}
146func (s *TSDBStoreMock) WithLogger(log *zap.Logger) {
147	s.WithLoggerFn(log)
148}
149func (s *TSDBStoreMock) WriteToShard(shardID uint64, points []models.Point) error {
150	return s.WriteToShardFn(shardID, points)
151}
152