testutils

package
v0.0.0-...-92c8ec3 Latest Latest
Warning

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

Go to latest
Published: Jun 10, 2016 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddRaftNode

func AddRaftNode(t *testing.T, clockSource *fakeclock.FakeClock, nodes map[uint64]*TestNode, tc *cautils.TestCA, opts ...raft.NewNodeOptions)

AddRaftNode adds an additional raft test node to an existing cluster

func AdvanceTicks

func AdvanceTicks(clockSource *fakeclock.FakeClock, ticks int)

AdvanceTicks advances the raft state machine fake clock

func CheckNoValue

func CheckNoValue(t *testing.T, clockSource *fakeclock.FakeClock, raftNode *TestNode)

CheckNoValue checks that there is no value replicated on nodes, generally used to test the absence of a leader

func CheckValue

func CheckValue(t *testing.T, clockSource *fakeclock.FakeClock, raftNode *TestNode, createdNode *api.Node)

CheckValue checks that the value has been propagated between raft members

func CheckValuesOnNodes

func CheckValuesOnNodes(t *testing.T, clockSource *fakeclock.FakeClock, checkNodes map[uint64]*TestNode, ids []string, values []*api.Node)

CheckValuesOnNodes checks that all the nodes in the cluster have the same replicated data, generally used to check if a node can catch up with the logs correctly

func NewRaftCluster

func NewRaftCluster(t *testing.T, tc *cautils.TestCA, config ...*api.RaftConfig) (map[uint64]*TestNode, *fakeclock.FakeClock)

NewRaftCluster creates a new raft cluster with 3 nodes for testing

func PollFunc

func PollFunc(clockSource *fakeclock.FakeClock, f func() error) error

PollFunc is like PollFuncWithTimeout with timeout=10s.

func PollFuncWithTimeout

func PollFuncWithTimeout(clockSource *fakeclock.FakeClock, f func() error, timeout time.Duration) error

PollFuncWithTimeout is used to periodically execute a check function, it returns error after timeout.

func ProposeValue

func ProposeValue(t *testing.T, raftNode *TestNode, nodeID ...string) (*api.Node, error)

ProposeValue proposes a value to a raft test cluster

func ShutdownNode

func ShutdownNode(node *TestNode)

ShutdownNode shuts down a raft test node and deletes the content of the state directory

func TeardownCluster

func TeardownCluster(t *testing.T, nodes map[uint64]*TestNode)

TeardownCluster destroys a raft cluster used for tests

func WaitForCluster

func WaitForCluster(t *testing.T, clockSource *fakeclock.FakeClock, nodes map[uint64]*TestNode)

WaitForCluster waits until leader will be one of specified nodes

func WaitForPeerNumber

func WaitForPeerNumber(t *testing.T, clockSource *fakeclock.FakeClock, nodes map[uint64]*TestNode, count int)

WaitForPeerNumber waits until peers in cluster converge to specified number

Types

type TestNode

type TestNode struct {
	*raft.Node
	Listener       *wrappedListener
	SecurityConfig *ca.SecurityConfig
}

TestNode represents a raft test node

func Leader

func Leader(nodes map[uint64]*TestNode) *TestNode

Leader determines who is the leader amongst a set of raft nodes belonging to the same cluster

func NewInitNode

func NewInitNode(t *testing.T, tc *cautils.TestCA, raftConfig *api.RaftConfig, opts ...raft.NewNodeOptions) (*TestNode, *fakeclock.FakeClock)

NewInitNode creates a new raft node initiating the cluster for other members to join

func NewJoinNode

func NewJoinNode(t *testing.T, clockSource *fakeclock.FakeClock, join string, tc *cautils.TestCA, opts ...raft.NewNodeOptions) *TestNode

NewJoinNode creates a new raft node joining an existing cluster

func NewNode

func NewNode(t *testing.T, clockSource *fakeclock.FakeClock, tc *cautils.TestCA, opts ...raft.NewNodeOptions) *TestNode

NewNode creates a new raft node to use for tests

func RestartNode

func RestartNode(t *testing.T, clockSource *fakeclock.FakeClock, oldNode *TestNode, forceNewCluster bool) *TestNode

RestartNode restarts a raft test node

Jump to

Keyboard shortcuts

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