swarmkit: github.com/mattoddie/swarmkit/manager/state/raft/testutils Index | Files

package testutils

import "github.com/mattoddie/swarmkit/manager/state/raft/testutils"

Index

Package Files

testutils.go

func AddRaftNode Uses

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 Uses

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

AdvanceTicks advances the raft state machine fake clock

func CheckNoValue Uses

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 Uses

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 Uses

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 Uses

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 Uses

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

PollFunc is like PollFuncWithTimeout with timeout=10s.

func PollFuncWithTimeout Uses

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 Uses

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

ProposeValue proposes a value to a raft test cluster

func ShutdownNode Uses

func ShutdownNode(node *TestNode)

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

func TeardownCluster Uses

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

TeardownCluster destroys a raft cluster used for tests

func WaitForCluster Uses

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

WaitForCluster waits until leader will be one of specified nodes

func WaitForPeerNumber Uses

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

WaitForPeerNumber waits until peers in cluster converge to specified number

type TestNode Uses

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

TestNode represents a raft test node

func Leader Uses

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 Uses

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 Uses

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 Uses

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 Uses

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

RestartNode restarts a raft test node

Package testutils imports 20 packages (graph). Updated 2017-05-16. Refresh now. Tools for package owners. This is a dead-end fork (no commits since the fork).