Help us shape the future of Go! Take the 2026 Go Developer Survey

terrafarm

package
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: Oct 26, 2017 License: Apache-2.0 Imports: 25 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