1package internal
2
3import (
4	"time"
5
6	"github.com/influxdata/influxdb/services/meta"
7	"github.com/influxdata/influxql"
8)
9
10// MetaClientMock is a mockable implementation of meta.MetaClient.
11type MetaClientMock struct {
12	CloseFn                             func() error
13	CreateContinuousQueryFn             func(database, name, query string) error
14	CreateDatabaseFn                    func(name string) (*meta.DatabaseInfo, error)
15	CreateDatabaseWithRetentionPolicyFn func(name string, spec *meta.RetentionPolicySpec) (*meta.DatabaseInfo, error)
16	CreateRetentionPolicyFn             func(database string, spec *meta.RetentionPolicySpec, makeDefault bool) (*meta.RetentionPolicyInfo, error)
17	CreateShardGroupFn                  func(database, policy string, timestamp time.Time) (*meta.ShardGroupInfo, error)
18	CreateSubscriptionFn                func(database, rp, name, mode string, destinations []string) error
19	CreateUserFn                        func(name, password string, admin bool) (meta.User, error)
20
21	DatabaseFn  func(name string) *meta.DatabaseInfo
22	DatabasesFn func() []meta.DatabaseInfo
23
24	DataFn                func() meta.Data
25	DeleteShardGroupFn    func(database string, policy string, id uint64) error
26	DropContinuousQueryFn func(database, name string) error
27	DropDatabaseFn        func(name string) error
28	DropRetentionPolicyFn func(database, name string) error
29	DropSubscriptionFn    func(database, rp, name string) error
30	DropShardFn           func(id uint64) error
31	DropUserFn            func(name string) error
32
33	OpenFn func() error
34
35	PrecreateShardGroupsFn func(from, to time.Time) error
36	PruneShardGroupsFn     func() error
37
38	RetentionPolicyFn func(database, name string) (rpi *meta.RetentionPolicyInfo, err error)
39
40	AuthenticateFn           func(username, password string) (ui meta.User, err error)
41	AdminUserExistsFn        func() bool
42	SetAdminPrivilegeFn      func(username string, admin bool) error
43	SetDataFn                func(*meta.Data) error
44	SetPrivilegeFn           func(username, database string, p influxql.Privilege) error
45	ShardGroupsByTimeRangeFn func(database, policy string, min, max time.Time) (a []meta.ShardGroupInfo, err error)
46	ShardOwnerFn             func(shardID uint64) (database, policy string, sgi *meta.ShardGroupInfo)
47	TruncateShardGroupsFn    func(t time.Time) error
48	UpdateRetentionPolicyFn  func(database, name string, rpu *meta.RetentionPolicyUpdate, makeDefault bool) error
49	UpdateUserFn             func(name, password string) error
50	UserPrivilegeFn          func(username, database string) (*influxql.Privilege, error)
51	UserPrivilegesFn         func(username string) (map[string]influxql.Privilege, error)
52	UserFn                   func(username string) (meta.User, error)
53	UsersFn                  func() []meta.UserInfo
54}
55
56func (c *MetaClientMock) Close() error {
57	return c.CloseFn()
58}
59
60func (c *MetaClientMock) CreateContinuousQuery(database, name, query string) error {
61	return c.CreateContinuousQueryFn(database, name, query)
62}
63
64func (c *MetaClientMock) CreateDatabase(name string) (*meta.DatabaseInfo, error) {
65	return c.CreateDatabaseFn(name)
66}
67
68func (c *MetaClientMock) CreateDatabaseWithRetentionPolicy(name string, spec *meta.RetentionPolicySpec) (*meta.DatabaseInfo, error) {
69	return c.CreateDatabaseWithRetentionPolicyFn(name, spec)
70}
71
72func (c *MetaClientMock) CreateRetentionPolicy(database string, spec *meta.RetentionPolicySpec, makeDefault bool) (*meta.RetentionPolicyInfo, error) {
73	return c.CreateRetentionPolicyFn(database, spec, makeDefault)
74}
75
76func (c *MetaClientMock) CreateShardGroup(database, policy string, timestamp time.Time) (*meta.ShardGroupInfo, error) {
77	return c.CreateShardGroupFn(database, policy, timestamp)
78}
79
80func (c *MetaClientMock) CreateSubscription(database, rp, name, mode string, destinations []string) error {
81	return c.CreateSubscriptionFn(database, rp, name, mode, destinations)
82}
83
84func (c *MetaClientMock) CreateUser(name, password string, admin bool) (meta.User, error) {
85	return c.CreateUserFn(name, password, admin)
86}
87
88func (c *MetaClientMock) Database(name string) *meta.DatabaseInfo {
89	return c.DatabaseFn(name)
90}
91
92func (c *MetaClientMock) Databases() []meta.DatabaseInfo {
93	return c.DatabasesFn()
94}
95
96func (c *MetaClientMock) DeleteShardGroup(database string, policy string, id uint64) error {
97	return c.DeleteShardGroupFn(database, policy, id)
98}
99
100func (c *MetaClientMock) DropContinuousQuery(database, name string) error {
101	return c.DropContinuousQueryFn(database, name)
102}
103
104func (c *MetaClientMock) DropDatabase(name string) error {
105	return c.DropDatabaseFn(name)
106}
107
108func (c *MetaClientMock) DropRetentionPolicy(database, name string) error {
109	return c.DropRetentionPolicyFn(database, name)
110}
111
112func (c *MetaClientMock) DropShard(id uint64) error {
113	return c.DropShardFn(id)
114}
115
116func (c *MetaClientMock) DropSubscription(database, rp, name string) error {
117	return c.DropSubscriptionFn(database, rp, name)
118}
119
120func (c *MetaClientMock) DropUser(name string) error {
121	return c.DropUserFn(name)
122}
123
124func (c *MetaClientMock) RetentionPolicy(database, name string) (rpi *meta.RetentionPolicyInfo, err error) {
125	return c.RetentionPolicyFn(database, name)
126}
127
128func (c *MetaClientMock) SetAdminPrivilege(username string, admin bool) error {
129	return c.SetAdminPrivilegeFn(username, admin)
130}
131
132func (c *MetaClientMock) SetPrivilege(username, database string, p influxql.Privilege) error {
133	return c.SetPrivilegeFn(username, database, p)
134}
135
136func (c *MetaClientMock) ShardGroupsByTimeRange(database, policy string, min, max time.Time) (a []meta.ShardGroupInfo, err error) {
137	return c.ShardGroupsByTimeRangeFn(database, policy, min, max)
138}
139
140func (c *MetaClientMock) ShardOwner(shardID uint64) (database, policy string, sgi *meta.ShardGroupInfo) {
141	return c.ShardOwnerFn(shardID)
142}
143
144func (c *MetaClientMock) TruncateShardGroups(t time.Time) error {
145	return c.TruncateShardGroupsFn(t)
146}
147
148func (c *MetaClientMock) UpdateRetentionPolicy(database, name string, rpu *meta.RetentionPolicyUpdate, makeDefault bool) error {
149	return c.UpdateRetentionPolicyFn(database, name, rpu, makeDefault)
150}
151
152func (c *MetaClientMock) UpdateUser(name, password string) error {
153	return c.UpdateUserFn(name, password)
154}
155
156func (c *MetaClientMock) UserPrivilege(username, database string) (*influxql.Privilege, error) {
157	return c.UserPrivilegeFn(username, database)
158}
159
160func (c *MetaClientMock) UserPrivileges(username string) (map[string]influxql.Privilege, error) {
161	return c.UserPrivilegesFn(username)
162}
163
164func (c *MetaClientMock) Authenticate(username, password string) (meta.User, error) {
165	return c.AuthenticateFn(username, password)
166}
167func (c *MetaClientMock) AdminUserExists() bool { return c.AdminUserExistsFn() }
168
169func (c *MetaClientMock) User(username string) (meta.User, error) { return c.UserFn(username) }
170func (c *MetaClientMock) Users() []meta.UserInfo                  { return c.UsersFn() }
171
172func (c *MetaClientMock) Open() error                { return c.OpenFn() }
173func (c *MetaClientMock) Data() meta.Data            { return c.DataFn() }
174func (c *MetaClientMock) SetData(d *meta.Data) error { return c.SetDataFn(d) }
175
176func (c *MetaClientMock) PrecreateShardGroups(from, to time.Time) error {
177	return c.PrecreateShardGroupsFn(from, to)
178}
179func (c *MetaClientMock) PruneShardGroups() error { return c.PruneShardGroupsFn() }
180