Documentation ¶
Overview ¶
Package integration implements tests built upon embedded etcd, and focus on etcd correctness.
Features/goals of the integration tests: 1. test the whole code base except command-line parsing. 2. check internal data, including raft, store and etc. 3. based on goroutines, which is faster than process. 4. mainly tests user behavior and user-facing API.
Index ¶
- Constants
- func CloseClients(t *testing.T, clients []*clientv3.Client)
- func MakeMultiNodeClients(t *testing.T, clus *ClusterV3, clients *[]*clientv3.Client) func() *clientv3.Client
- func MakeSingleNodeClients(t *testing.T, clus *ClusterV3, clients *[]*clientv3.Client) func() *clientv3.Client
- func MustNewHTTPClient(t testing.TB, eps []string, tls *transport.TLSInfo) client.Client
- func NewClientV3(m *member) (*clientv3.Client, error)
- func NewCluster(t testing.TB, size int) *cluster
- func NewClusterByConfig(t testing.TB, cfg *ClusterConfig) *cluster
- func NewListenerWithAddr(t testing.TB, addr string) net.Listener
- func WaitClientV3(t testing.TB, kv clientv3.KV)
- type ClusterConfig
- type ClusterV3
- func (c *ClusterV3) AddAndLaunchLearnerMember(t testing.TB)
- func (c ClusterV3) AddMember(t testing.TB) types.URLs
- func (c *ClusterV3) Client(i int) *clientv3.Client
- func (c *ClusterV3) GetLearnerMembers() ([]*pb.Member, error)
- func (c ClusterV3) HTTPMembers() []client.Member
- func (c ClusterV3) Launch(t testing.TB)
- func (c *ClusterV3) MustNewMember(t testing.TB, resp *clientv3.MemberAddResponse) *member
- func (c *ClusterV3) NewClientV3(memberIndex int) (*clientv3.Client, error)
- func (c *ClusterV3) RandClient() *clientv3.Client
- func (c ClusterV3) RemoveMember(t testing.TB, id uint64)
- func (c *ClusterV3) TakeClient(idx int)
- func (c *ClusterV3) Terminate(t testing.TB)
- func (c ClusterV3) URL(i int) string
- func (c ClusterV3) URLs() []string
- func (c ClusterV3) WaitLeader(t testing.TB) int
- func (c ClusterV3) WaitNoLeader()
- type LazyCluster
- type SortableMemberSliceByPeerURLs
- type SortableProtoMemberSliceByPeerURLs
Constants ¶
const ( // RequestWaitTimeout is the time duration to wait for a request to go through or detect leader loss. RequestWaitTimeout = 3 * time.Second URLScheme = "unix" URLSchemeTLS = "unixs" )
const ThroughProxy = false
Variables ¶
This section is empty.
Functions ¶
func CloseClients ¶
CloseClients closes all the clients from the 'clients' list.
func MakeMultiNodeClients ¶
func MakeMultiNodeClients(t *testing.T, clus *ClusterV3, clients *[]*clientv3.Client) func() *clientv3.Client
MakeMultiNodeClients creates factory of clients that all connect to random members. All the created clients are put on the 'clients' list. The factory is thread-safe.
func MakeSingleNodeClients ¶
func MakeSingleNodeClients(t *testing.T, clus *ClusterV3, clients *[]*clientv3.Client) func() *clientv3.Client
MakeSingleNodeClients creates factory of clients that all connect to member 0. All the created clients are put on the 'clients' list. The factory is thread-safe.
func MustNewHTTPClient ¶
func NewClientV3 ¶
func NewClientV3(m *member) (*clientv3.Client, error)
NewClientV3 creates a new grpc client connection to the member
func NewCluster ¶
NewCluster returns an unlaunched cluster of the given size which has been set to use static bootstrap.
func NewClusterByConfig ¶
func NewClusterByConfig(t testing.TB, cfg *ClusterConfig) *cluster
NewClusterByConfig returns an unlaunched cluster defined by a cluster configuration
func WaitClientV3 ¶
Types ¶
type ClusterConfig ¶
type ClusterConfig struct { Size int PeerTLS *transport.TLSInfo ClientTLS *transport.TLSInfo DiscoveryURL string AuthToken string UseGRPC bool QuotaBackendBytes int64 MaxTxnOps uint MaxRequestBytes uint SnapshotCount uint64 SnapshotCatchUpEntries uint64 GRPCKeepAliveMinTime time.Duration GRPCKeepAliveInterval time.Duration GRPCKeepAliveTimeout time.Duration // SkipCreatingClient to skip creating clients for each member. SkipCreatingClient bool ClientMaxCallSendMsgSize int ClientMaxCallRecvMsgSize int // UseIP is true to use only IP for gRPC requests. UseIP bool EnableLeaseCheckpoint bool LeaseCheckpointInterval time.Duration WatchProgressNotifyInterval time.Duration }
type ClusterV3 ¶
type ClusterV3 struct {
// contains filtered or unexported fields
}
func NewClusterV3 ¶
func NewClusterV3(t testing.TB, cfg *ClusterConfig) *ClusterV3
NewClusterV3 returns a launched cluster with a grpc client connection for each cluster member.
func (*ClusterV3) AddAndLaunchLearnerMember ¶
AddAndLaunchLearnerMember creates a leaner member, adds it to cluster via v3 MemberAdd API, and then launches the new member.
func (*ClusterV3) GetLearnerMembers ¶
GetLearnerMembers returns the list of learner members in cluster using MemberList API.
func (ClusterV3) HTTPMembers ¶
func (c ClusterV3) HTTPMembers() []client.Member
HTTPMembers returns a list of all active members as client.Members
func (*ClusterV3) MustNewMember ¶
MustNewMember creates a new member instance based on the response of V3 Member Add API.
func (*ClusterV3) NewClientV3 ¶
NewClientV3 creates a new grpc client connection to the member
func (*ClusterV3) RandClient ¶
func (c *ClusterV3) RandClient() *clientv3.Client
func (ClusterV3) RemoveMember ¶
func (*ClusterV3) TakeClient ¶
func (ClusterV3) URLs ¶
func (c ClusterV3) URLs() []string
URLs returns a list of all active client URLs in the cluster
func (ClusterV3) WaitLeader ¶
WaitLeader returns index of the member in c.Members that is leader (or -1).
func (ClusterV3) WaitNoLeader ¶
func (c ClusterV3) WaitNoLeader()
type LazyCluster ¶
type LazyCluster interface { // EndpointsV2 - exposes connection points for client v2. // Calls to this method might initialize the cluster. EndpointsV2() []string // EndpointsV3 - exposes connection points for client v3. // Calls to this method might initialize the cluster. EndpointsV3() []string // Cluster - calls to this method might initialize the cluster. Cluster() *ClusterV3 // Transport - call to this method might initialize the cluster. Transport() *http.Transport Terminate() }
func NewLazyCluster ¶
func NewLazyCluster() LazyCluster
NewLazyCluster returns a new test cluster handler that gets created on the first call to GetEndpoints() or GetTransport()
func NewLazyClusterWithConfig ¶
func NewLazyClusterWithConfig(cfg ClusterConfig) LazyCluster
NewLazyClusterWithConfig returns a new test cluster handler that gets created on the first call to GetEndpoints() or GetTransport()
type SortableMemberSliceByPeerURLs ¶
type SortableMemberSliceByPeerURLs []client.Member
func (SortableMemberSliceByPeerURLs) Len ¶
func (p SortableMemberSliceByPeerURLs) Len() int
func (SortableMemberSliceByPeerURLs) Less ¶
func (p SortableMemberSliceByPeerURLs) Less(i, j int) bool
func (SortableMemberSliceByPeerURLs) Swap ¶
func (p SortableMemberSliceByPeerURLs) Swap(i, j int)
type SortableProtoMemberSliceByPeerURLs ¶
func (SortableProtoMemberSliceByPeerURLs) Len ¶
func (p SortableProtoMemberSliceByPeerURLs) Len() int
func (SortableProtoMemberSliceByPeerURLs) Less ¶
func (p SortableProtoMemberSliceByPeerURLs) Less(i, j int) bool
func (SortableProtoMemberSliceByPeerURLs) Swap ¶
func (p SortableProtoMemberSliceByPeerURLs) Swap(i, j int)
Directories ¶
Path | Synopsis |
---|---|
Package integration implements tests built upon embedded etcd, focusing on the correctness of the etcd v2 client.
|
Package integration implements tests built upon embedded etcd, focusing on the correctness of the etcd v2 client. |
Package clientv3test implements tests built upon embedded etcd, and focuses on correctness of etcd client.
|
Package clientv3test implements tests built upon embedded etcd, and focuses on correctness of etcd client. |