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