cockroach: github.com/cockroachdb/cockroach/pkg/gossip/simulation Index | Files

package simulation

import "github.com/cockroachdb/cockroach/pkg/gossip/simulation"

Index

Package Files

network.go

type Network Uses

type Network struct {
    Nodes      []*Node
    Stopper    *stop.Stopper
    RPCContext *rpc.Context
    // contains filtered or unexported fields
}

Network provides access to a test gossip network of nodes.

func NewNetwork Uses

func NewNetwork(
    stopper *stop.Stopper, nodeCount int, createResolvers bool, defaultZoneConfig *config.ZoneConfig,
) *Network

NewNetwork creates nodeCount gossip nodes.

func (*Network) CreateNode Uses

func (n *Network) CreateNode(defaultZoneConfig *config.ZoneConfig) (*Node, error)

CreateNode creates a simulation node and starts an RPC server for it.

func (*Network) GetNodeFromID Uses

func (n *Network) GetNodeFromID(nodeID roachpb.NodeID) (*Node, bool)

GetNodeFromID returns the simulation node associated with provided node ID, or nil if there is no such node.

func (*Network) IsNetworkConnected Uses

func (n *Network) IsNetworkConnected() bool

IsNetworkConnected returns true if the network is fully connected with no partitions (i.e. every node knows every other node's network address).

func (*Network) RunUntilFullyConnected Uses

func (n *Network) RunUntilFullyConnected() int

RunUntilFullyConnected blocks until the gossip network has received gossip from every other node in the network. It returns the gossip cycle at which the network became fully connected.

func (*Network) SimulateNetwork Uses

func (n *Network) SimulateNetwork(simCallback func(cycle int, network *Network) bool)

SimulateNetwork runs until the simCallback returns false.

At each cycle, every node gossips a key equal to its address (unique) with the cycle as the value. The received cycle value can be used to determine the aging of information between any two nodes in the network.

At each cycle of the simulation, node 0 gossips the sentinel.

The simulation callback receives the cycle and the network as arguments.

func (*Network) Start Uses

func (n *Network) Start()

Start starts all gossip nodes. TODO(spencer): make all methods in Network return errors instead of fatal logging.

func (*Network) StartNode Uses

func (n *Network) StartNode(node *Node) error

StartNode initializes a gossip instance for the simulation node and starts it.

type Node Uses

type Node struct {
    Gossip    *gossip.Gossip
    Server    *grpc.Server
    Listener  net.Listener
    Registry  *metric.Registry
    Resolvers []resolver.Resolver
}

Node represents a node used in a Network. It includes information about the node's gossip instance, network address, and underlying server.

func (*Node) Addr Uses

func (n *Node) Addr() net.Addr

Addr returns the address of the connected listener.

Package simulation imports 21 packages (graph) and is imported by 1 packages. Updated 2019-07-12. Refresh now. Tools for package owners.