framework

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2016 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Timeout used in benchmarks, to eg: scale an rc
	DefaultTimeout = 30 * time.Minute

	// Rc manifest used to create pods for benchmarks.
	// TODO: Convert this to a full path?
	TestRCManifest = "benchmark-controller.json"

	// Test Namspace, for pods and rcs.
	TestNS = "test"
)

Variables

This section is empty.

Functions

func DeleteAllEtcdKeys

func DeleteAllEtcdKeys()

DeleteAllEtcdKeys deletes all keys from etcd. TODO: Instead of sprinkling calls to this throughout the code, adjust the prefix in etcdtest package; then just delete everything once at the end of the test run.

func NewAutoscalingEtcdStorage added in v0.4.0

func NewAutoscalingEtcdStorage(client etcd.Client) storage.Interface

func NewBatchEtcdStorage added in v0.4.0

func NewBatchEtcdStorage(client etcd.Client) storage.Interface

func NewEtcdClient

func NewEtcdClient() etcd.Client

func NewEtcdStorage

func NewEtcdStorage() storage.Interface

func NewExtensionsEtcdStorage added in v0.3.0

func NewExtensionsEtcdStorage(client etcd.Client) storage.Interface

func NewIntegrationTestMasterConfig added in v0.3.0

func NewIntegrationTestMasterConfig() *master.Config

Returns the master config appropriate for most integration tests.

func NewMasterConfig added in v0.3.0

func NewMasterConfig() *master.Config

Returns a basic master config.

func RCFromManifest

func RCFromManifest(fileName string) *api.ReplicationController

RCFromManifest reads a .json file and returns the rc in it.

func RequireEtcd

func RequireEtcd()

func RunAMaster

func RunAMaster(t *testing.T) (*master.Master, *httptest.Server)

TODO: Merge this into startMasterOrDie.

func RunParallel

func RunParallel(task Task, numTasks, numWorkers int)

RunParallel spawns a goroutine per task in the given queue

func ScaleRC

func ScaleRC(name, ns string, replicas int, restClient *client.Client) (*api.ReplicationController, error)

ScaleRC scales the given rc to the given replicas.

func StartPods

func StartPods(numPods int, host string, restClient *client.Client) error

StartPods check for numPods in TestNS. If they exist, it no-ops, otherwise it starts up a temp rc, scales it to match numPods, then deletes the rc leaving behind the pods.

func StartRC

func StartRC(controller *api.ReplicationController, restClient *client.Client) (*api.ReplicationController, error)

StartRC creates given rc if it doesn't already exist, then updates it via kubectl's scaler.

func StopRC

func StopRC(rc *api.ReplicationController, restClient *client.Client) error

StopRC stops the rc via kubectl's stop library

func WithEtcdKey

func WithEtcdKey(f func(string))

Types

type Config

type Config struct {
	// If nil, a default is used, partially filled configs will not get populated.
	MasterConfig            *master.Config
	StartReplicationManager bool
	// If true, all existing etcd keys are purged before starting master components
	DeleteEtcdKeys bool
	// Client throttling qps
	QPS float32
	// Client burst qps, also burst replicas allowed in rc manager
	Burst int
}

Config is a struct of configuration directives for NewMasterComponents.

type MasterComponents

type MasterComponents struct {
	// Raw http server in front of the master
	ApiServer *httptest.Server
	// Kubernetes master, contains an embedded etcd storage
	KubeMaster *master.Master
	// Restclient used to talk to the kubernetes master
	RestClient *client.Client
	// Replication controller manager
	ControllerManager *replicationcontroller.ReplicationManager
	// contains filtered or unexported fields
}

MasterComponents is a control struct for all master components started via NewMasterComponents. TODO: Include all master components (scheduler, nodecontroller). TODO: Reconcile with integration.go, currently the master used there doesn't understand how to restart cleanly, which is required for each iteration of a benchmark. The integration tests also don't make it easy to isolate and turn off components at will.

func NewMasterComponents

func NewMasterComponents(c *Config) *MasterComponents

NewMasterComponents creates, initializes and starts master components based on the given config.

func (*MasterComponents) Stop

func (m *MasterComponents) Stop(apiServer, rcManager bool)

type Task

type Task func(id int) error

Task is a function passed to worker goroutines by RunParallel. The function needs to implement its own thread safety.

Jump to

Keyboard shortcuts

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