simulator

package
v4.0.4 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2020 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddNodes

type AddNodes struct {
	// contains filtered or unexported fields
}

AddNodes adds nodes.

func (*AddNodes) Run

func (e *AddNodes) Run(raft *RaftEngine, tickCount int64) bool

Run implements the event interface.

type Client

type Client interface {
	GetClusterID(ctx context.Context) uint64
	AllocID(ctx context.Context) (uint64, error)
	Bootstrap(ctx context.Context, store *metapb.Store, region *metapb.Region) error
	PutStore(ctx context.Context, store *metapb.Store) error
	StoreHeartbeat(ctx context.Context, stats *pdpb.StoreStats) error
	RegionHeartbeat(ctx context.Context, region *core.RegionInfo) error
	Close()
}

Client is a PD (Placement Driver) client. It should not be used after calling Close().

func NewClient

func NewClient(pdAddr string, tag string) (Client, <-chan *pdpb.RegionHeartbeatResponse, error)

NewClient creates a PD client.

type Connection

type Connection struct {
	Nodes map[uint64]*Node
	// contains filtered or unexported fields
}

Connection records the informations of connection among nodes.

func NewConnection

func NewConnection(simCase *cases.Case, pdAddr string, storeConfig *SimConfig) (*Connection, error)

NewConnection creates nodes according to the configuration and returns the connection among nodes.

type DeleteNodes

type DeleteNodes struct {
	// contains filtered or unexported fields
}

DeleteNodes deletes nodes.

func (*DeleteNodes) Run

func (e *DeleteNodes) Run(raft *RaftEngine, tickCount int64) bool

Run implements the event interface.

type Driver

type Driver struct {
	// contains filtered or unexported fields
}

Driver promotes the cluster status change.

func NewDriver

func NewDriver(pdAddr string, caseName string, simConfig *SimConfig) (*Driver, error)

NewDriver returns a driver.

func (*Driver) Check

func (d *Driver) Check() bool

Check checks if the simulation is completed.

func (*Driver) GetBootstrapInfo

func (d *Driver) GetBootstrapInfo(r *RaftEngine) (*metapb.Store, *metapb.Region, error)

GetBootstrapInfo returns a valid bootstrap store and region.

func (*Driver) Prepare

func (d *Driver) Prepare() error

Prepare initializes cluster information, bootstraps cluster and starts nodes.

func (*Driver) PrintStatistics

func (d *Driver) PrintStatistics()

PrintStatistics prints the statistics of the scheduler.

func (*Driver) Start

func (d *Driver) Start() error

Start starts all nodes.

func (*Driver) Stop

func (d *Driver) Stop()

Stop stops all nodes.

func (*Driver) Tick

func (d *Driver) Tick()

Tick invokes nodes' Tick.

func (*Driver) TickCount

func (d *Driver) TickCount() int64

TickCount returns the simulation's tick count.

type Event

type Event interface {
	Run(raft *RaftEngine, tickCount int64) bool
}

Event affects the status of the cluster.

type EventRunner

type EventRunner struct {
	// contains filtered or unexported fields
}

EventRunner includes all events.

func NewEventRunner

func NewEventRunner(events []cases.EventDescriptor, raftEngine *RaftEngine) *EventRunner

NewEventRunner creates an event runner.

func (*EventRunner) Tick

func (er *EventRunner) Tick(tickCount int64)

Tick ticks the event run

type Node

type Node struct {
	*metapb.Store
	sync.RWMutex
	// contains filtered or unexported fields
}

Node simulates a TiKV.

func NewNode

func NewNode(s *cases.Store, pdAddr string, ioRate int64) (*Node, error)

NewNode returns a Node.

func (*Node) AddTask

func (n *Node) AddTask(task Task)

AddTask adds task in this node.

func (*Node) GetState

func (n *Node) GetState() metapb.StoreState

GetState returns current node state.

func (*Node) Start

func (n *Node) Start() error

Start starts the node.

func (*Node) Stop

func (n *Node) Stop()

Stop stops this node.

func (*Node) Tick

func (n *Node) Tick(wg *sync.WaitGroup)

Tick steps node status change.

type RaftEngine

type RaftEngine struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

RaftEngine records all raft information.

func NewRaftEngine

func NewRaftEngine(conf *cases.Case, conn *Connection, storeConfig *SimConfig) *RaftEngine

NewRaftEngine creates the initialized raft with the configuration.

func (*RaftEngine) BootstrapRegion

func (r *RaftEngine) BootstrapRegion() *core.RegionInfo

BootstrapRegion gets a region to construct bootstrap info.

func (*RaftEngine) GetRegion

func (r *RaftEngine) GetRegion(regionID uint64) *core.RegionInfo

GetRegion returns the RegionInfo with regionID.

func (*RaftEngine) GetRegionChange

func (r *RaftEngine) GetRegionChange(storeID uint64) []uint64

GetRegionChange returns a list of RegionID for a given store.

func (*RaftEngine) GetRegions

func (r *RaftEngine) GetRegions() []*core.RegionInfo

GetRegions gets all RegionInfo from regionMap

func (*RaftEngine) NeedSplit

func (r *RaftEngine) NeedSplit(size, rows int64) bool

NeedSplit checks whether the region needs to split according its size and number of keys.

func (*RaftEngine) ResetRegionChange

func (r *RaftEngine) ResetRegionChange(storeID uint64, regionID uint64)

ResetRegionChange resets RegionInfo on a specific store with a given Region ID

func (*RaftEngine) SearchRegion

func (r *RaftEngine) SearchRegion(regionKey []byte) *core.RegionInfo

SearchRegion searches the RegionInfo from regionTree

func (*RaftEngine) SetRegion

func (r *RaftEngine) SetRegion(region *core.RegionInfo) []*core.RegionInfo

SetRegion sets the RegionInfo with regionID

type ReadFlowOnRegion

type ReadFlowOnRegion struct {
	// contains filtered or unexported fields
}

ReadFlowOnRegion reads bytes in some region

func (*ReadFlowOnRegion) Run

func (e *ReadFlowOnRegion) Run(raft *RaftEngine, tickCount int64) bool

Run implements the event interface.

type SimConfig

type SimConfig struct {
	// tick
	SimTickInterval typeutil.Duration `toml:"sim-tick-interval"`
	// store
	StoreCapacityGB    uint64 `toml:"store-capacity"`
	StoreAvailableGB   uint64 `toml:"store-available"`
	StoreIOMBPerSecond int64  `toml:"store-io-per-second"`
	StoreVersion       string `toml:"store-version"`
	// server
	ServerConfig *config.Config `toml:"server"`
}

SimConfig is the simulator configuration.

func NewSimConfig

func NewSimConfig(serverLogLevel string) *SimConfig

NewSimConfig create a new configuration of the simulator.

func (*SimConfig) Adjust

func (sc *SimConfig) Adjust() error

Adjust is used to adjust configurations

type Task

type Task interface {
	Desc() string
	RegionID() uint64
	Step(r *RaftEngine)
	IsFinished() bool
}

Task running in node.

type WriteFlowOnRegion

type WriteFlowOnRegion struct {
	// contains filtered or unexported fields
}

WriteFlowOnRegion writes bytes in some region.

func (*WriteFlowOnRegion) Run

func (e *WriteFlowOnRegion) Run(raft *RaftEngine, tickCount int64) bool

Run implements the event interface.

type WriteFlowOnSpot

type WriteFlowOnSpot struct {
	// contains filtered or unexported fields
}

WriteFlowOnSpot writes bytes in some range.

func (*WriteFlowOnSpot) Run

func (e *WriteFlowOnSpot) Run(raft *RaftEngine, tickCount int64) bool

Run implements the event interface.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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