terrafarm

package
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Oct 16, 2017 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// KeepClusterAlways lets Farmer always keep the test cluster.
	KeepClusterAlways = "always"
	// KeepClusterFailed lets Farmer keep only failed test clusters.
	KeepClusterFailed = "failed"
	// KeepClusterNever lets Farmer always destroy the test cluster.
	KeepClusterNever = "never"
)

The constants below are the possible values of the KeepCluster field.

Variables

This section is empty.

Functions

This section is empty.

Types

type Farmer

type Farmer struct {
	Output      io.Writer
	Cwd, LogDir string
	KeyName     string
	// SkipClusterInit controls the --join flags for the nodes. If false (the
	// default), then the first node will be empty and thus init the cluster,
	// and each node will have the previous node as its join flag. If true,
	// then all nodes will have all nodes in their join flags.
	//
	// Allows tests to work around https://github.com/cockroachdb/cockroach/issues/13027.
	SkipClusterInit bool
	CockroachBinary string
	CockroachFlags  string
	// NB: CockroachEnv might look like it wants to be a map, but we never use
	// the environment as key-value pairs in Go, we just pass this straight
	// through to the shell when we start cockroach on the remote hosts. The
	// reason for doing it this way rather than using
	// `(*golang.org/x/crypto/ssh.Session).SetEnv` is that setting the
	// session's environment requires server permission, and the default is to
	// allow nothing.
	CockroachEnv  string
	BenchmarkName string
	// TerraformArgs are appended to every Terraform command invocation.
	TerraformArgs []string
	// Prefix will be prepended all names of resources created by Terraform.
	Prefix string
	// StateFile is the file (under `Cwd`) in which Terraform will store its
	// state.
	StateFile   string
	KeepCluster string

	// RPCContext is used to open an ExternalClient which provides a KV connection
	// to the cluster by gRPC.
	RPCContext *rpc.Context
	// contains filtered or unexported fields
}

A Farmer sets up and manipulates a test cluster via terraform.

func (*Farmer) AbsLogDir

func (f *Farmer) AbsLogDir() string

AbsLogDir returns the absolute log dir to which logs are written.

func (*Farmer) Addr

func (f *Farmer) Addr(ctx context.Context, i int, port string) string

Addr returns the host and port from the node in the format HOST:PORT.

func (*Farmer) Assert

func (f *Farmer) Assert(ctx context.Context, t testing.TB)

Assert verifies that the cluster state is as expected (i.e. no unexpected restarts or node deaths occurred). Tests can call this periodically to ascertain cluster health. TODO(tschottdorf): unimplemented when nodes are expected down.

func (*Farmer) AssertAndStop

func (f *Farmer) AssertAndStop(ctx context.Context, t testing.TB)

AssertAndStop performs the same test as Assert but then proceeds to dismantle the cluster.

func (*Farmer) CollectLogs

func (f *Farmer) CollectLogs() error

CollectLogs copies all possibly interesting files from all available peers if LogDir is not empty.

func (*Farmer) Destroy

func (f *Farmer) Destroy(t testing.TB) error

Destroy collects the logs and tears down the cluster.

func (*Farmer) Exec

func (f *Farmer) Exec(i int, cmd string) error

Exec executes the given command on the i-th node.

func (*Farmer) ExecCLI added in v1.1.0

func (f *Farmer) ExecCLI(ctx context.Context, i int, cmd []string) (string, string, error)

ExecCLI runs ./cockroach <args> with sane defaults.

func (*Farmer) GetProcDone added in v1.1.0

func (f *Farmer) GetProcDone(i int, name string) <-chan error

GetProcDone returns a channel which will receive the named process' exit status.

func (*Farmer) Hostname

func (f *Farmer) Hostname(i int) string

Hostname implements the Cluster interface.

func (*Farmer) InternalIP

func (f *Farmer) InternalIP(ctx context.Context, i int) net.IP

InternalIP returns the address used for inter-node communication.

func (*Farmer) Kill

func (f *Farmer) Kill(ctx context.Context, i int) error

Kill terminates the cockroach process running on the given node number. The given integer must be in the range [0,NumNodes()-1].

func (*Farmer) MustDestroy

func (f *Farmer) MustDestroy(t testing.TB)

MustDestroy calls Destroy(), fataling on error.

func (*Farmer) NewClient

func (f *Farmer) NewClient(ctx context.Context, i int) (*client.DB, error)

NewClient implements the Cluster interface.

func (*Farmer) NumNodes

func (f *Farmer) NumNodes() int

NumNodes returns the number of nodes.

func (*Farmer) PGUrl

func (f *Farmer) PGUrl(ctx context.Context, i int) string

PGUrl returns a URL string for the given node postgres server.

func (*Farmer) Resize

func (f *Farmer) Resize(nodes int) error

Resize resizes a cluster given the desired number of nodes.

func (*Farmer) Restart

func (f *Farmer) Restart(ctx context.Context, i int) error

Restart terminates the cockroach process running on the given node number, unless it is already stopped, and restarts it. The given integer must be in the range [0,NumNodes()-1].

func (*Farmer) Start

func (f *Farmer) Start(ctx context.Context, i int, name string) error

Start starts the given process on the ith node.

func (*Farmer) StartLoad

func (f *Farmer) StartLoad(ctx context.Context, loadGenerator string) error

StartLoad starts n loadGenerator processes.

func (*Farmer) Stop

func (f *Farmer) Stop(ctx context.Context, i int, name string) error

Stop stops the given process on the ith node. This is useful for terminating a load generator cleanly to get stats outputted upon process termination.

func (*Farmer) URL

func (f *Farmer) URL(ctx context.Context, i int) string

URL returns the HTTP(s) endpoint.

func (*Farmer) WaitReady

func (f *Farmer) WaitReady(d time.Duration) error

WaitReady waits until the infrastructure is in a state that *should* allow for a healthy cluster. Currently, this means waiting for the load balancer to resolve from all nodes.

Jump to

Keyboard shortcuts

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