integration

package
v3.5.0-pre Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 3, 2020 License: Apache-2.0 Imports: 43 Imported by: 1

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

View Source
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"
)
View Source
const ThroughProxy = false

Variables

This section is empty.

Functions

func CloseClients

func CloseClients(t *testing.T, clients []*clientv3.Client)

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 MustNewHTTPClient(t testing.TB, eps []string, tls *transport.TLSInfo) client.Client

func NewClientV3

func NewClientV3(m *member) (*clientv3.Client, error)

NewClientV3 creates a new grpc client connection to the member

func NewCluster

func NewCluster(t testing.TB, size int) *cluster

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 NewListenerWithAddr

func NewListenerWithAddr(t testing.TB, addr string) net.Listener

func WaitClientV3

func WaitClientV3(t testing.TB, kv clientv3.KV)

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

func (c *ClusterV3) AddAndLaunchLearnerMember(t testing.TB)

AddAndLaunchLearnerMember creates a leaner member, adds it to cluster via v3 MemberAdd API, and then launches the new member.

func (ClusterV3) AddMember

func (c ClusterV3) AddMember(t testing.TB) types.URLs

AddMember return PeerURLs of the added member.

func (*ClusterV3) Client

func (c *ClusterV3) Client(i int) *clientv3.Client

func (*ClusterV3) GetLearnerMembers

func (c *ClusterV3) GetLearnerMembers() ([]*pb.Member, error)

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) Launch

func (c ClusterV3) Launch(t testing.TB)

func (*ClusterV3) MustNewMember

func (c *ClusterV3) MustNewMember(t testing.TB, resp *clientv3.MemberAddResponse) *member

MustNewMember creates a new member instance based on the response of V3 Member Add API.

func (*ClusterV3) NewClientV3

func (c *ClusterV3) NewClientV3(memberIndex int) (*clientv3.Client, error)

NewClientV3 creates a new grpc client connection to the member

func (*ClusterV3) RandClient

func (c *ClusterV3) RandClient() *clientv3.Client

func (ClusterV3) RemoveMember

func (c ClusterV3) RemoveMember(t testing.TB, id uint64)

func (*ClusterV3) TakeClient

func (c *ClusterV3) TakeClient(idx int)

func (*ClusterV3) Terminate

func (c *ClusterV3) Terminate(t testing.TB)

func (ClusterV3) URL

func (c ClusterV3) URL(i int) string

func (ClusterV3) URLs

func (c ClusterV3) URLs() []string

URLs returns a list of all active client URLs in the cluster

func (ClusterV3) WaitLeader

func (c ClusterV3) WaitLeader(t testing.TB) int

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 (SortableMemberSliceByPeerURLs) Less

func (p SortableMemberSliceByPeerURLs) Less(i, j int) bool

func (SortableMemberSliceByPeerURLs) Swap

func (p SortableMemberSliceByPeerURLs) Swap(i, j int)

type SortableProtoMemberSliceByPeerURLs

type SortableProtoMemberSliceByPeerURLs []*pb.Member

func (SortableProtoMemberSliceByPeerURLs) Len

func (SortableProtoMemberSliceByPeerURLs) Less

func (SortableProtoMemberSliceByPeerURLs) Swap

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL