framework

package
v1.3.0-alpha.4 Latest Latest
Warning

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

Go to latest
Published: May 17, 2016 License: Apache-2.0 Imports: 78 Imported by: 0

Documentation ¶

Overview ¶

This is a utility for prometheus pushing functionality.

Index ¶

Constants ¶

View Source
const (
	// How long to wait for the pod to be listable
	PodListTimeout = time.Minute
	// Initial pod start can be delayed O(minutes) by slow docker pulls
	// TODO: Make this 30 seconds once #4566 is resolved.
	PodStartTimeout = 5 * time.Minute

	// If there are any orphaned namespaces to clean up, this test is running
	// on a long lived cluster. A long wait here is preferably to spurious test
	// failures caused by leaked resources from a previous test run.
	NamespaceCleanupTimeout = 15 * time.Minute

	// How long to wait for a service endpoint to be resolvable.
	ServiceStartTimeout = 1 * time.Minute

	// How often to Poll pods, nodes and claims.
	Poll = 2 * time.Second

	// service accounts are provisioned after namespace creation
	// a service account is required to support pod creation in a namespace as part of admission control
	ServiceAccountProvisionTimeout = 2 * time.Minute

	// How long to try single API calls (like 'get' or 'list'). Used to prevent
	// transient failures from failing tests.
	// TODO: client should not apply this timeout to Watch calls. Increased from 30s until that is fixed.
	SingleCallTimeout = 5 * time.Minute

	// How long nodes have to be "ready" when a test begins. They should already
	// be "ready" before the test starts, so this is small.
	NodeReadyInitialTimeout = 20 * time.Second

	// How long pods have to be "ready" when a test begins.
	PodReadyBeforeTimeout = 2 * time.Minute

	ServiceRespondingTimeout = 2 * time.Minute
	EndpointRegisterTimeout  = time.Minute

	// How long claims have to become dynamically provisioned
	ClaimProvisionTimeout = 5 * time.Minute
)
View Source
const (
	// NodeStartupThreshold is a rough estimate of the time allocated for a pod to start on a node.
	NodeStartupThreshold = 4 * time.Second
)

Variables ¶

View Source
var InterestingApiServerMetrics = []string{
	"apiserver_request_count",
	"apiserver_request_latencies_summary",
	"etcd_helper_cache_entry_count",
	"etcd_helper_cache_hit_count",
	"etcd_helper_cache_miss_count",
	"etcd_request_cache_add_latencies_summary",
	"etcd_request_cache_get_latencies_summary",
	"etcd_request_latencies_summary",
}
View Source
var InterestingKubeletMetrics = []string{
	"kubelet_container_manager_latency_microseconds",
	"kubelet_docker_errors",
	"kubelet_docker_operations_latency_microseconds",
	"kubelet_generate_pod_status_latency_microseconds",
	"kubelet_pod_start_latency_microseconds",
	"kubelet_pod_worker_latency_microseconds",
	"kubelet_pod_worker_start_latency_microseconds",
	"kubelet_sync_pods_latency_microseconds",
}
View Source
var ProvidersWithSSH = []string{"gce", "gke", "aws"}

ProvidersWithSSH are those providers where each node is accessible with SSH

View Source
var RunId = util.NewUUID()

unique identifier of the e2e run

View Source
var SubResourcePodProxyVersion = version.MustParse("v1.1.0")

SubResource proxy should have been functional in v1.0.0, but SubResource proxy via tunneling is known to be broken in v1.0. See https://github.com/kubernetes/kubernetes/pull/15224#issuecomment-146769463

TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).

Functions ¶

func AllNodesReady ¶

func AllNodesReady(c *client.Client, timeout time.Duration) error

checks whether all registered nodes are ready

func ApiCallToPerfData ¶

func ApiCallToPerfData(apicalls APIResponsiveness) *perftype.PerfData

ApiCallToPerfData transforms APIResponsiveness to PerfData.

func AssertCleanup ¶

func AssertCleanup(ns string, selectors ...string)

Asserts that cleanup of a namespace wrt selectors occured.

func BadEvents ¶

func BadEvents(events []*api.Event) int

Prints the histogram of the events and returns the number of bad events.

func BlockNetwork ¶

func BlockNetwork(from string, to string)

The following helper functions can block/unblock network from source host to destination host by manipulating iptable rules. This function assumes it can ssh to the source host.

Caution: Recommend to input IP instead of hostnames. Using hostnames will cause iptables to do a DNS lookup to resolve the name to an IP address, which will slow down the test and cause it to fail if DNS is absent or broken.

Suggested usage pattern:

func foo() {
	...
	defer UnblockNetwork(from, to)
	BlockNetwork(from, to)
	...
}

func CPUUsageToPerfData ¶

func CPUUsageToPerfData(usagePerNode NodesCPUSummary) *perftype.PerfData

CPUUsageToPerfData transforms NodesCPUSummary to PerfData.

func CheckConnectivityToHost ¶

func CheckConnectivityToHost(f *Framework, nodeName, podName, host string, timeout int) error

CheckConnectivityToHost launches a pod running wget on the specified node to test connectivity to the specified host. An error will be returned if the host is not reachable from the pod.

func CheckNewRSAnnotations ¶

func CheckNewRSAnnotations(c clientset.Interface, ns, deploymentName string, expectedAnnotations map[string]string) error

CheckNewRSAnnotations check if the new RS's annotation is as expected

func CheckPodHashLabel ¶

func CheckPodHashLabel(pods *api.PodList) error

func CheckPodsRunningReady ¶

func CheckPodsRunningReady(c *client.Client, ns string, podNames []string, timeout time.Duration) bool

checkPodsRunning returns whether all pods whose names are listed in podNames in namespace ns are running and ready, using c and waiting at most timeout.

func CheckRSHashLabel ¶

func CheckRSHashLabel(rs *extensions.ReplicaSet) error

func CheckTestingNSDeletedExcept ¶

func CheckTestingNSDeletedExcept(c *client.Client, skip string) error

CheckTestingNSDeletedExcept checks whether all e2e based existing namespaces are in the Terminating state and waits until they are finally deleted. It ignores namespace skip.

func Cleanup ¶

func Cleanup(filePath, ns string, selectors ...string)

Stops everything from filePath from namespace ns and checks if everything matching selectors from the given namespace is correctly stopped.

func CoreDump ¶

func CoreDump(dir string)

CoreDump SSHs to the master and all nodes and dumps their logs into dir. It shells out to cluster/log-dump.sh to accomplish this.

func CreateTestingNS ¶

func CreateTestingNS(baseName string, c *client.Client, labels map[string]string) (*api.Namespace, error)

CreateTestingNS should be used by every test, note that we append a common prefix to the provided test name. Please see NewFramework instead of using this directly.

func DeleteNamespaces ¶

func DeleteNamespaces(c *client.Client, deleteFilter, skipFilter []string) ([]string, error)

DeleteNamespaces deletes all namespaces that match the given delete and skip filters. Filter is by simple strings.Contains; first skip filter, then delete filter. Returns the list of deleted namespaces or an error.

func DeleteRC ¶

func DeleteRC(c *client.Client, ns, name string) error

Delete a Replication Controller and all pods it spawned

func DeleteReplicaSet ¶

func DeleteReplicaSet(c *client.Client, ns, name string) error

Delete a ReplicaSet and all pods it spawned

func DumpAllNamespaceInfo ¶

func DumpAllNamespaceInfo(c *client.Client, namespace string)

func DumpNodeDebugInfo ¶

func DumpNodeDebugInfo(c *client.Client, nodeNames []string)

func EnsureLoadBalancerResourcesDeleted ¶

func EnsureLoadBalancerResourcesDeleted(ip, portRange string) error

EnsureLoadBalancerResourcesDeleted ensures that cloud load balancer resources that were created are actually cleaned up. Currently only implemented for GCE/GKE.

func ExpectNoError ¶

func ExpectNoError(err error, explain ...interface{})

func FailedContainers ¶

func FailedContainers(pod *api.Pod) map[string]ContainerFailures

FailedContainers inspects all containers in a pod and returns failure information for containers that have failed or been restarted. A map is returned where the key is the containerID and the value is a struct containing the restart and failure information

func Failf ¶

func Failf(format string, args ...interface{})

func FilterNodes ¶

func FilterNodes(nodeList *api.NodeList, fn func(node api.Node) bool)

Filters nodes in NodeList in place, removing nodes that do not satisfy the given condition TODO: consider merging with pkg/client/cache.NodeLister

func FormatRuntimeOperationErrorRate ¶

func FormatRuntimeOperationErrorRate(nodesResult map[string]NodeRuntimeOperationErrorRate) string

FormatRuntimeOperationErrorRate formats the runtime operation error rate to string.

func GetHostExternalAddress ¶

func GetHostExternalAddress(client *client.Client, p *api.Pod) (externalAddress string, err error)

GetHostExternalAddress gets the node for a pod and returns the first External address. Returns an error if the node the pod is on doesn't have an External address.

func GetKubeletHeapStats ¶

func GetKubeletHeapStats(c *client.Client, nodeName string) (string, error)

func GetKubeletPods ¶

func GetKubeletPods(c *client.Client, node string) (*api.PodList, error)

GetKubeletPods retrieves the list of pods on the kubelet

func GetKubeletRunningPods ¶

func GetKubeletRunningPods(c *client.Client, node string) (*api.PodList, error)

GetKubeletRunningPods retrieves the list of running pods on the kubelet. The pods includes necessary information (e.g., UID, name, namespace for pods/containers), but do not contain the full spec.

func GetMasterHost ¶

func GetMasterHost() string

func GetNodePortURL ¶

func GetNodePortURL(client *client.Client, ns, name string, svcPort int) (string, error)

GetNodePortURL returns the url to a nodeport Service.

func GetPodLogs ¶

func GetPodLogs(c *client.Client, namespace, podName, containerName string) (string, error)

func GetReadyNodes ¶

func GetReadyNodes(f *Framework) (nodes *api.NodeList, err error)

GetReadyNodes retrieves a list of schedulable nodes whose condition is Ready. An error will be returned if no such nodes are found.

func GetServicesProxyRequest ¶

func GetServicesProxyRequest(c *client.Client, request *restclient.Request) (*restclient.Request, error)

func GetSigner ¶

func GetSigner(provider string) (ssh.Signer, error)

GetSigner returns an ssh.Signer for the provider ("gce", etc.) that can be used to SSH to their nodes.

func HighLatencyRequests ¶

func HighLatencyRequests(c *client.Client) (int, error)

Prints top five summary metrics for request types with latency and returns number of such request types above threshold.

func IsNodeConditionSetAsExpected ¶

func IsNodeConditionSetAsExpected(node *api.Node, conditionType api.NodeConditionType, wantTrue bool) bool

func IssueSSHCommand ¶

func IssueSSHCommand(cmd, provider string, node *api.Node) error

func KubeDescribe ¶

func KubeDescribe(text string, body func()) bool

Wrapper function for ginkgo describe. Adds namespacing. TODO: Support type safe tagging as well https://github.com/kubernetes/kubernetes/pull/22401.

func KubectlCmd ¶

func KubectlCmd(args ...string) *exec.Cmd

KubectlCmd runs the kubectl executable through the wrapper script.

func LaunchHostExecPod ¶

func LaunchHostExecPod(client *client.Client, ns, name string) *api.Pod

LaunchHostExecPod launches a hostexec pod in the given namespace and waits until it's Running

func LaunchWebserverPod ¶

func LaunchWebserverPod(f *Framework, podName, nodeName string) (ip string)

LaunchWebserverPod launches a pod serving http on port 8080 to act as the target for networking connectivity checks. The ip address of the created pod will be returned if the pod is launched successfully.

func ListSchedulableNodesOrDie ¶

func ListSchedulableNodesOrDie(c *client.Client) *api.NodeList

Convenient wrapper around listing nodes supporting retries.

func LoadClient ¶

func LoadClient() (*client.Client, error)

func LoadConfig ¶

func LoadConfig() (*restclient.Config, error)

func LogFailedContainers ¶

func LogFailedContainers(ns string)

func LogSSHResult ¶

func LogSSHResult(result SSHResult)

func LogSuspiciousLatency ¶

func LogSuspiciousLatency(latencyData []PodLatencyData, latencyDataLag []PodLatencyData, nodeCount int, c *client.Client)

LogSuspiciousLatency logs metrics/docker errors from all nodes that had slow startup times If latencyDataLag is nil then it will be populated from latencyData

func Logf ¶

func Logf(format string, args ...interface{})

func LookForString ¶

func LookForString(expectedString string, timeout time.Duration, fn func() string) (result string, err error)

Looks for the given string in the output of fn, repeatedly calling fn until the timeout is reached or the string is found. Returns last log and possibly error if the string was not found.

func LookForStringInFile ¶

func LookForStringInFile(ns, podName, container, file, expectedString string, timeout time.Duration) (result string, err error)

Looks for the given string in a file in a specific pod container

func LookForStringInLog ¶

func LookForStringInLog(ns, podName, container, expectedString string, timeout time.Duration) (result string, err error)

Looks for the given string in the log of a specific pod container

func LookForStringInPodExec ¶

func LookForStringInPodExec(ns, podName string, command []string, expectedString string, timeout time.Duration) (result string, err error)

Looks for the given string in the output of a command executed in a specific pod container

func NewHostExecPodSpec ¶

func NewHostExecPodSpec(ns, name string) *api.Pod

NewHostExecPodSpec returns the pod spec of hostexec pod

func NewKubectlCommand ¶

func NewKubectlCommand(args ...string) *kubectlBuilder

func NewResourceUsageGatherer ¶

func NewResourceUsageGatherer(c *client.Client, options ResourceGathererOptions) (*containerResourceGatherer, error)

func NodeAddresses ¶

func NodeAddresses(nodelist *api.NodeList, addrType api.NodeAddressType) []string

NodeAddresses returns the first address of the given type of each node.

func NodeProxyRequest ¶

func NodeProxyRequest(c *client.Client, node, endpoint string) (restclient.Result, error)

NodeProxyRequest performs a get on a node proxy endpoint given the nodename and rest client.

func NodeSSHHosts ¶

func NodeSSHHosts(c *client.Client) ([]string, error)

NodeSSHHosts returns SSH-able host names for all schedulable nodes - this excludes master node. It returns an error if it can't find an external IP for every node, though it still returns all hosts that it found in that case.

func OpenWebSocketForURL ¶

func OpenWebSocketForURL(url *url.URL, config *restclient.Config, protocols []string) (*websocket.Conn, error)

OpenWebSocketForURL constructs a websocket connection to the provided URL, using the client config, with the specified protocols.

func ParseKVLines ¶

func ParseKVLines(output, key string) string

ParseKVLines parses output that looks like lines containing "<key>: <val>" and returns <val> if <key> is found. Otherwise, it returns the empty string.

func PodNotReady ¶

func PodNotReady(p *api.Pod) (bool, error)

PodNotReady checks whether pod p's has a ready condition of status false.

func PodProxyResponseChecker ¶

func PodProxyResponseChecker(c *client.Client, ns string, label labels.Selector, controllerName string, respondName bool, pods *api.PodList) podProxyResponseChecker

func PodRunningReady ¶

func PodRunningReady(p *api.Pod) (bool, error)

PodRunningReady checks whether pod p's phase is running and it has a ready condition of status true.

func PodsCreated ¶

func PodsCreated(c *client.Client, ns, name string, replicas int32) (*api.PodList, error)

func PodsResponding ¶

func PodsResponding(c *client.Client, ns, name string, wantName bool, pods *api.PodList) error

func PrettyPrintJSON ¶

func PrettyPrintJSON(metrics interface{}) string

func PrintAllKubeletPods ¶

func PrintAllKubeletPods(c *client.Client, nodeName string)

func PrintLatencies ¶

func PrintLatencies(latencies []PodLatencyData, header string)

func PrintPerfData ¶

func PrintPerfData(p *perftype.PerfData)

PrintPerfData prints the perfdata in json format with PerfResultTag prefix. If an error occurs, nothing will be printed.

func ProviderIs ¶

func ProviderIs(providers ...string) bool

func ReadOrDie ¶

func ReadOrDie(filePath string) []byte

ReadOrDie reads a file from gobindata. To generate gobindata, run

# Install the program go get -u github.com/jteeuwen/go-bindata/...

Generate the bindata file. ¶

go-bindata \
	-pkg generated -ignore .jpg -ignore .png -ignore .md \
	./examples/* ./docs/user-guide/* test/e2e/testing-manifests/kubectl/* test/images/*

# Copy it into the generated directory if the results are what you expected. cp bindata.go test/e2e/generated

func RegisterFlags ¶

func RegisterFlags()

func RemoveCleanupAction ¶

func RemoveCleanupAction(p CleanupActionHandle)

RemoveCleanupAction removes a function that was installed by AddCleanupAction.

func ResetMetrics ¶

func ResetMetrics(c *client.Client) error

Resets latency metrics in apiserver.

func ResourceUsageToPerfData ¶

func ResourceUsageToPerfData(usagePerNode ResourceUsagePerNode) *perftype.PerfData

ResourceUsageToPerfData transforms ResourceUsagePerNode to PerfData. Notice that this function only cares about memory usage, because cpu usage information will be extracted from NodesCPUSummary.

func RestartApiserver ¶

func RestartApiserver() error

func RestartKubeProxy ¶

func RestartKubeProxy(host string) error

func RunCleanupActions ¶

func RunCleanupActions()

RunCleanupActions runs all functions installed by AddCleanupAction. It does not remove them (see RemoveCleanupAction) but it does run unlocked, so they may remove themselves.

func RunDeployment ¶

func RunDeployment(config DeploymentConfig) error

RunDeployment Launches (and verifies correctness) of a Deployment and will wait for all pods it spawns to become "Running". It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).

func RunHostCmd ¶

func RunHostCmd(ns, name, cmd string) (string, error)

RunHostCmd runs the given cmd in the context of the given pod using `kubectl exec` inside of a shell.

func RunHostCmdOrDie ¶

func RunHostCmdOrDie(ns, name, cmd string) string

RunHostCmdOrDie calls RunHostCmd and dies on error.

func RunKubectl ¶

func RunKubectl(args ...string) (string, error)

RunKubectl is a convenience wrapper over kubectlBuilder

func RunKubectlOrDie ¶

func RunKubectlOrDie(args ...string) string

RunKubectlOrDie is a convenience wrapper over kubectlBuilder

func RunKubectlOrDieInput ¶

func RunKubectlOrDieInput(data string, args ...string) string

RunKubectlOrDieInput is a convenience wrapper over kubectlBuilder that takes input to stdin

func RunKubernetesServiceTestContainer ¶

func RunKubernetesServiceTestContainer(repoRoot string, ns string)

Run a test container to try and contact the Kubernetes api-server from a pod, wait for it to flip to Ready, log its output and delete it.

func RunRC ¶

func RunRC(config RCConfig) error

RunRC Launches (and verifies correctness) of a Replication Controller and will wait for all pods it spawns to become "Running". It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).

func RunReplicaSet ¶

func RunReplicaSet(config ReplicaSetConfig) error

RunReplicaSet launches (and verifies correctness) of a ReplicaSet and waits until all the pods it launches to reach the "Running" state. It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).

func ScaleRC ¶

func ScaleRC(c *client.Client, ns, name string, size uint, wait bool) error

func ScaleRCByLabels ¶

func ScaleRCByLabels(client *client.Client, ns string, l map[string]string, replicas uint) error

ScaleRCByLabels scales an RC via ns/label lookup. If replicas == 0 it waits till none are running, otherwise it does what a synchronous scale operation would do.

func ServerVersionGTE ¶

func ServerVersionGTE(v semver.Version, c discovery.ServerVersionInterface) (bool, error)

ServerVersionGTE returns true if v is greater than or equal to the server version.

TODO(18726): This should be incorporated into client.VersionInterface.

func ServiceResponding ¶

func ServiceResponding(c *client.Client, ns, name string) error

func SetTestContext ¶

func SetTestContext(t TestContextType)

func SkipIfProviderIs ¶

func SkipIfProviderIs(unsupportedProviders ...string)

func SkipUnlessAtLeast ¶

func SkipUnlessAtLeast(value int, minValue int, message string)

func SkipUnlessNodeCountIsAtLeast ¶

func SkipUnlessNodeCountIsAtLeast(minNodeCount int)

func SkipUnlessProviderIs ¶

func SkipUnlessProviderIs(supportedProviders ...string)

func SkipUnlessServerVersionGTE ¶

func SkipUnlessServerVersionGTE(v semver.Version, c discovery.ServerVersionInterface)

func Skipf ¶

func Skipf(format string, args ...interface{})

func StartCmdAndStreamOutput ¶

func StartCmdAndStreamOutput(cmd *exec.Cmd) (stdout, stderr io.ReadCloser, err error)

func StartPods ¶

func StartPods(c *client.Client, replicas int, namespace string, podNamePrefix string, pod api.Pod, waitForRunning bool)

Simplified version of RunRC, that does not create RC, but creates plain Pods. optionally waits for pods to start running (if waitForRunning == true)

func TargetContainers ¶

func TargetContainers() []string

A list of containers for which we want to collect resource usage.

func TestContainerOutput ¶

func TestContainerOutput(scenarioName string, c *client.Client, pod *api.Pod, containerIndex int, expectedOutput []string, ns string)

TestContainerOutput runs the given pod in the given namespace and waits for all of the containers in the podSpec to move into the 'Success' status, and tests the specified container log against the given expected output using a substring matcher.

func TryKill ¶

func TryKill(cmd *exec.Cmd)

Rough equivalent of ctrl+c for cleaning up processes. Intended to be run in defer.

func UnblockNetwork ¶

func UnblockNetwork(from string, to string)

func UpdateDeploymentWithRetries ¶

func UpdateDeploymentWithRetries(c *clientset.Clientset, namespace, name string, applyUpdate updateDeploymentFunc) (deployment *extensions.Deployment, err error)

func UpdatePodWithRetries ¶

func UpdatePodWithRetries(client *client.Client, ns, name string, update func(*api.Pod)) (*api.Pod, error)

func ValidateController ¶

func ValidateController(c *client.Client, containerImage string, replicas int, containername string, testname string, validator validatorFn, ns string)

ValidateController is a generic mechanism for testing RC's that are running. It takes a container name, a test name, and a validator function which is plugged in by a specific test. "containername": this is grepped for. "containerImage" : this is the name of the image we expect to be launched. Not to confuse w/ images (kitten.jpg) which are validated. "testname": which gets bubbled up to the logging/failure messages if errors happen. "validator" function: This function is given a podID and a client, and it can do some specific validations that way.

func VerifyPodStartupLatency ¶

func VerifyPodStartupLatency(latency PodStartupLatency) error

Verifies whether 50, 90 and 99th percentiles of PodStartupLatency are within the threshold.

func VerifyPods ¶

func VerifyPods(c *client.Client, ns, name string, wantName bool, replicas int32) error

func VerifySchedulerLatency ¶

func VerifySchedulerLatency(c *client.Client) error

Verifies (currently just by logging them) the scheduling latencies.

func WaitForApiserverUp ¶

func WaitForApiserverUp(c *client.Client) error

func WaitForClusterSize ¶

func WaitForClusterSize(c *client.Client, size int, timeout time.Duration) error

WaitForClusterSize waits until the cluster has desired size and there is no not-ready nodes in it. By cluster size we mean number of Nodes excluding Master Node.

func WaitForDefaultServiceAccountInNamespace ¶

func WaitForDefaultServiceAccountInNamespace(c *client.Client, namespace string) error

WaitForDefaultServiceAccountInNamespace waits for the default service account to be provisioned the default service account is what is associated with pods when they do not specify a service account as a result, pods are not able to be provisioned in a namespace until the service account is provisioned

func WaitForDeploymentOldRSsNum ¶

func WaitForDeploymentOldRSsNum(c *clientset.Clientset, ns, deploymentName string, desiredRSNum int) error

Waits for the deployment to clean up old rcs.

func WaitForDeploymentRevisionAndImage ¶

func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName string, revision, image string) error

WaitForDeploymentRevisionAndImage waits for the deployment's and its new RS's revision and container image to match the given revision and image. Note that deployment revision and its new RS revision should be updated shortly, so we only wait for 1 minute here to fail early.

func WaitForDeploymentRollbackCleared ¶

func WaitForDeploymentRollbackCleared(c clientset.Interface, ns, deploymentName string) error

WaitForDeploymentRollbackCleared waits for given deployment either started rolling back or doesn't need to rollback. Note that rollback should be cleared shortly, so we only wait for 1 minute here to fail early.

func WaitForDeploymentStatus ¶

func WaitForDeploymentStatus(c clientset.Interface, ns, deploymentName string, desiredUpdatedReplicas, minAvailable, maxCreated, minReadySeconds int32) error

Waits for the deployment to reach desired state. Returns an error if minAvailable or maxCreated is broken at any times.

func WaitForDeploymentUpdatedReplicasLTE ¶

func WaitForDeploymentUpdatedReplicasLTE(c clientset.Interface, ns, deploymentName string, minUpdatedReplicas int, desiredGeneration int64) error

WaitForDeploymentUpdatedReplicasLTE waits for given deployment to be observed by the controller and has at least a number of updatedReplicas

func WaitForEndpoint ¶

func WaitForEndpoint(c *client.Client, ns, name string) error

func WaitForEvents ¶

func WaitForEvents(c *client.Client, ns string, objOrRef runtime.Object, desiredEventsCount int) error

Waits for the number of events on the given object to reach a desired count.

func WaitForIngressAddress ¶

func WaitForIngressAddress(c *client.Client, ns, ingName string, timeout time.Duration) (string, error)

WaitForIngressAddress waits for the Ingress to acquire an address.

func WaitForMatchPodsCondition ¶

func WaitForMatchPodsCondition(c *client.Client, opts api.ListOptions, desc string, timeout time.Duration, condition podCondition) error

WaitForMatchPodsCondition finds match pods based on the input ListOptions. waits and checks if all match pods are in the given podCondition

func WaitForNamespacesDeleted ¶

func WaitForNamespacesDeleted(c *client.Client, namespaces []string, timeout time.Duration) error

func WaitForNodeToBe ¶

func WaitForNodeToBe(c *client.Client, name string, conditionType api.NodeConditionType, wantTrue bool, timeout time.Duration) bool

WaitForNodeToBe returns whether node "name's" condition state matches wantTrue within timeout. If wantTrue is true, it will ensure the node condition status is ConditionTrue; if it's false, it ensures the node condition is in any state other than ConditionTrue (e.g. not true or unknown).

func WaitForNodeToBeNotReady ¶

func WaitForNodeToBeNotReady(c *client.Client, name string, timeout time.Duration) bool

WaitForNodeToBeNotReady returns whether node name is not ready (i.e. the readiness condition is anything but ready, e.g false or unknown) within timeout.

func WaitForNodeToBeReady ¶

func WaitForNodeToBeReady(c *client.Client, name string, timeout time.Duration) bool

WaitForNodeToBeReady returns whether node name is ready within timeout.

func WaitForObservedDeployment ¶

func WaitForObservedDeployment(c *clientset.Clientset, ns, deploymentName string, desiredGeneration int64) error

func WaitForPartialEvents ¶

func WaitForPartialEvents(c *client.Client, ns string, objOrRef runtime.Object, atLeastEventsCount int) error

Waits for the number of events on the given object to be at least a desired count.

func WaitForPersistentVolumeClaimPhase ¶

func WaitForPersistentVolumeClaimPhase(phase api.PersistentVolumeClaimPhase, c *client.Client, ns string, pvcName string, Poll, timeout time.Duration) error

WaitForPersistentVolumeClaimPhase waits for a PersistentVolumeClaim to be in a specific phase or until timeout occurs, whichever comes first.

func WaitForPersistentVolumeDeleted ¶

func WaitForPersistentVolumeDeleted(c *client.Client, pvName string, Poll, timeout time.Duration) error

WaitForPersistentVolumeDeleted waits for a PersistentVolume to get deleted or until timeout occurs, whichever comes first.

func WaitForPersistentVolumePhase ¶

func WaitForPersistentVolumePhase(phase api.PersistentVolumePhase, c *client.Client, pvName string, Poll, timeout time.Duration) error

WaitForPersistentVolumePhase waits for a PersistentVolume to be in a specific phase or until timeout occurs, whichever comes first.

func WaitForPodNoLongerRunningInNamespace ¶

func WaitForPodNoLongerRunningInNamespace(c *client.Client, podName string, namespace string) error

Waits default amount of time (podNoLongerRunningTimeout) for the specified pod to stop running. Returns an error if timeout occurs first.

func WaitForPodNotPending ¶

func WaitForPodNotPending(c *client.Client, ns, podName string) error

WaitForPodNotPending returns an error if it took too long for the pod to go out of pending state.

func WaitForPodRunningInNamespace ¶

func WaitForPodRunningInNamespace(c *client.Client, podName string, namespace string) error

Waits default amount of time (PodStartTimeout) for the specified pod to become running. Returns an error if timeout occurs first, or pod goes in to failed state.

func WaitForPodSuccessInNamespace ¶

func WaitForPodSuccessInNamespace(c *client.Client, podName string, contName string, namespace string) error

WaitForPodSuccessInNamespace returns nil if the pod reached state success, or an error if it reached failure or until podStartupTimeout.

func WaitForPodSuccessInNamespaceSlow ¶

func WaitForPodSuccessInNamespaceSlow(c *client.Client, podName string, contName string, namespace string) error

WaitForPodSuccessInNamespaceSlow returns nil if the pod reached state success, or an error if it reached failure or until slowPodStartupTimeout.

func WaitForPodToDisappear ¶

func WaitForPodToDisappear(c *client.Client, ns, podName string, label labels.Selector, interval, timeout time.Duration) error

func WaitForPodsReady ¶

func WaitForPodsReady(c *clientset.Clientset, ns, name string, minReadySeconds int) error

func WaitForPodsRunningReady ¶

func WaitForPodsRunningReady(ns string, minPods int32, timeout time.Duration) error

WaitForPodsRunningReady waits up to timeout to ensure that all pods in namespace ns are either running and ready, or failed but controlled by a replication controller. Also, it ensures that at least minPods are running and ready. It has separate behavior from other 'wait for' pods functions in that it requires the list of pods on every iteration. This is useful, for example, in cluster startup, because the number of pods increases while waiting.

func WaitForPodsWithLabel ¶

func WaitForPodsWithLabel(c *client.Client, ns string, label labels.Selector) (pods *api.PodList, err error)

Wait up to PodListTimeout for getting pods with certain label

func WaitForPodsWithLabelRunning ¶

func WaitForPodsWithLabelRunning(c *client.Client, ns string, label labels.Selector) error

Wait up to 10 minutes for all matching pods to become Running and at least one matching pod exists.

func WaitForPodsWithLabelScheduled ¶

func WaitForPodsWithLabelScheduled(c *client.Client, ns string, label labels.Selector) (pods *api.PodList, err error)

Wait for all matching pods to become scheduled and at least one matching pod exists. Return the list of matching pods.

func WaitForRCPodToDisappear ¶

func WaitForRCPodToDisappear(c *client.Client, ns, rcName, podName string) error

WaitForRCPodToDisappear returns nil if the pod from the given replication controller (described by rcName) no longer exists. In case of failure or too long waiting time, an error is returned.

func WaitForRCPodsRunning ¶

func WaitForRCPodsRunning(c *client.Client, ns, rcName string) error

Wait up to 10 minutes for pods to become Running. Assume that the pods of the rc are labels with {"name":rcName}.

func WaitForReplicationController ¶

func WaitForReplicationController(c *client.Client, namespace, name string, exist bool, interval, timeout time.Duration) error

WaitForReplicationController waits until the RC appears (exist == true), or disappears (exist == false)

func WaitForService ¶

func WaitForService(c *client.Client, namespace, name string, exist bool, interval, timeout time.Duration) error

WaitForService waits until the service appears (exist == true), or disappears (exist == false)

func WaitForServiceEndpointsNum ¶

func WaitForServiceEndpointsNum(c *client.Client, namespace, serviceName string, expectNum int, interval, timeout time.Duration) error

WaitForServiceEndpointsNum waits until the amount of endpoints that implement service to expectNum.

Types ¶

type APICall ¶

type APICall struct {
	Resource string        `json:"resource"`
	Verb     string        `json:"verb"`
	Latency  LatencyMetric `json:"latency"`
}

type APIResponsiveness ¶

type APIResponsiveness struct {
	APICalls []APICall `json:"apicalls"`
}

func (APIResponsiveness) Len ¶

func (a APIResponsiveness) Len() int

func (APIResponsiveness) Less ¶

func (a APIResponsiveness) Less(i, j int) bool

func (APIResponsiveness) Swap ¶

func (a APIResponsiveness) Swap(i, j int)

type CleanupActionHandle ¶

type CleanupActionHandle *int

func AddCleanupAction ¶

func AddCleanupAction(fn func()) CleanupActionHandle

AddCleanupAction installs a function that will be called in the event of the whole test being terminated. This allows arbitrary pieces of the overall test to hook into SynchronizedAfterSuite().

type CloudConfig ¶

type CloudConfig struct {
	ProjectID         string
	Zone              string
	Cluster           string
	MasterName        string
	NodeInstanceGroup string
	NumNodes          int
	ClusterTag        string
	ServiceAccount    string

	Provider cloudprovider.Interface
}

type ClusterVerification ¶

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

func (*ClusterVerification) ForEach ¶

func (cl *ClusterVerification) ForEach(podFunc func(api.Pod)) error

ForEach runs a function against every verifiable pod. Be warned that this doesn't wait for "n" pods to verifiy, so it may return very quickly if you have strict pod state requirements.

For example, if you require at least 5 pods to be running before your test will pass, its smart to first call "clusterVerification.WaitFor(5)" before you call clusterVerification.ForEach.

func (*ClusterVerification) WaitFor ¶

func (cl *ClusterVerification) WaitFor(atLeast int, timeout time.Duration) ([]api.Pod, error)

WaitFor waits for some minimum number of pods to be verified, according to the PodStateVerification definition.

func (*ClusterVerification) WaitForOrFail ¶

func (cl *ClusterVerification) WaitForOrFail(atLeast int, timeout time.Duration)

WaitForOrFail provides a shorthand WaitFor with failure as an option if anything goes wrong.

type ContainerFailures ¶

type ContainerFailures struct {
	Restarts int
	// contains filtered or unexported fields
}

type ContainerResourceUsage ¶

type ContainerResourceUsage struct {
	Name                    string
	Timestamp               time.Time
	CPUUsageInCores         float64
	MemoryUsageInBytes      uint64
	MemoryWorkingSetInBytes uint64
	MemoryRSSInBytes        uint64
	// The interval used to calculate CPUUsageInCores.
	CPUInterval time.Duration
}

type ContainersCPUSummary ¶

type ContainersCPUSummary map[string]map[float64]float64

ContainersCPUSummary is indexed by the container name with each entry a (percentile, value) map.

type CreateTestingNSFn ¶

type CreateTestingNSFn func(baseName string, c *client.Client, labels map[string]string) (*api.Namespace, error)

type DeploymentConfig ¶

type DeploymentConfig struct {
	RCConfig
}

type Framework ¶

type Framework struct {
	BaseName string

	Client        *client.Client
	Clientset_1_2 *release_1_2.Clientset
	Clientset_1_3 *release_1_3.Clientset

	Namespace *api.Namespace // Every test has at least one namespace

	NamespaceDeletionTimeout time.Duration

	// Constraints that passed to a check which is executed after data is gathered to
	// see if 99% of results are within acceptable bounds. It as to be injected in the test,
	// as expectations vary greatly. Constraints are groupped by the container names.
	AddonResourceConstraints map[string]ResourceConstraint
	// contains filtered or unexported fields
}

Framework supports common operations used by e2e tests; it will keep a client & a namespace for you. Eventual goal is to merge this with integration test framework.

func NewDefaultFramework ¶

func NewDefaultFramework(baseName string) *Framework

NewFramework makes a new framework and sets up a BeforeEach/AfterEach for you (you can write additional before/after each functions).

func NewFramework ¶

func NewFramework(baseName string, options FrameworkOptions, client *client.Client) *Framework

func (*Framework) AfterEach ¶

func (f *Framework) AfterEach()

AfterEach deletes the namespace, after reading its events.

func (*Framework) BeforeEach ¶

func (f *Framework) BeforeEach()

BeforeEach gets a client and makes a namespace.

func (*Framework) CreateNamespace ¶

func (f *Framework) CreateNamespace(baseName string, labels map[string]string) (*api.Namespace, error)

func (*Framework) CreatePodsPerNodeForSimpleApp ¶

func (f *Framework) CreatePodsPerNodeForSimpleApp(appName string, podSpec func(n api.Node) api.PodSpec, maxCount int) map[string]string

CreatePodsPerNodeForSimpleApp Creates pods w/ labels. Useful for tests which make a bunch of pods w/o any networking.

func (*Framework) CreateServiceForSimpleApp ¶

func (f *Framework) CreateServiceForSimpleApp(contPort, svcPort int, appName string) *api.Service

CreateServiceForSimpleApp returns a service that selects/exposes pods (send -1 ports if no exposure needed) with an app label.

func (*Framework) CreateServiceForSimpleAppWithPods ¶

func (f *Framework) CreateServiceForSimpleAppWithPods(contPort int, svcPort int, appName string, podSpec func(n api.Node) api.PodSpec, count int, block bool) (error, *api.Service)

CreateServiceForSimpleAppWithPods is a convenience wrapper to create a service and its matching pods all at once.

func (*Framework) NewClusterVerification ¶

func (f *Framework) NewClusterVerification(filter PodStateVerification) *ClusterVerification

func (*Framework) ReadFileViaContainer ¶

func (f *Framework) ReadFileViaContainer(podName, containerName string, path string) (string, error)

Read a file using kubectl exec cat <path>

func (*Framework) TestContainerOutput ¶

func (f *Framework) TestContainerOutput(scenarioName string, pod *api.Pod, containerIndex int, expectedOutput []string)

Runs the given pod and verifies that the output of exact container matches the desired output.

func (*Framework) TestContainerOutputRegexp ¶

func (f *Framework) TestContainerOutputRegexp(scenarioName string, pod *api.Pod, containerIndex int, expectedOutput []string)

Runs the given pod and verifies that the output of exact container matches the desired regexps.

func (*Framework) WaitForAnEndpoint ¶

func (f *Framework) WaitForAnEndpoint(serviceName string) error

WaitForAnEndpoint waits for at least one endpoint to become available in the service's corresponding endpoints object.

func (*Framework) WaitForPodNoLongerRunning ¶

func (f *Framework) WaitForPodNoLongerRunning(podName string) error

WaitForPodNoLongerRunning waits for the pod to no longer be running in the namespace, for either success or failure.

func (*Framework) WaitForPodReady ¶

func (f *Framework) WaitForPodReady(podName string) error

WaitForPodReady waits for the pod to flip to ready in the namespace.

func (*Framework) WaitForPodRunning ¶

func (f *Framework) WaitForPodRunning(podName string) error

WaitForPodRunning waits for the pod to run in the namespace.

func (*Framework) WaitForPodRunningSlow ¶

func (f *Framework) WaitForPodRunningSlow(podName string) error

WaitForPodRunningSlow waits for the pod to run in the namespace. It has a longer timeout then WaitForPodRunning (util.slowPodStartTimeout).

func (*Framework) WaitForPodTerminated ¶

func (f *Framework) WaitForPodTerminated(podName, reason string) error

WaitForPodTerminated waits for the pod to be terminated with the given reason.

func (*Framework) WriteFileViaContainer ¶

func (f *Framework) WriteFileViaContainer(podName, containerName string, path string, contents string) error

Write a file using kubectl exec echo <contents> > <path> via specified container Because of the primitive technique we're using here, we only allow ASCII alphanumeric characters

type FrameworkOptions ¶

type FrameworkOptions struct {
	ClientQPS   float32
	ClientBurst int
}

type KubeletLatencyMetric ¶

type KubeletLatencyMetric struct {
	// eg: list, info, create
	Operation string
	// eg: sync_pods, pod_worker
	Method string
	// 0 <= quantile <=1, e.g. 0.95 is 95%tile, 0.5 is median.
	Quantile float64
	Latency  time.Duration
}

KubeletMetric stores metrics scraped from the kubelet server's /metric endpoint. TODO: Get some more structure around the metrics and this type

type KubeletLatencyMetrics ¶

type KubeletLatencyMetrics []KubeletLatencyMetric

KubeletMetricByLatency implements sort.Interface for []KubeletMetric based on the latency field.

func GetKubeletLatencyMetrics ¶

func GetKubeletLatencyMetrics(ms metrics.KubeletMetrics) KubeletLatencyMetrics

GetKubeletLatencyMetrics gets all latency related kubelet metrics. Note that the KubeletMetrcis passed in should not contain subsystem prefix.

func HighLatencyKubeletOperations ¶

func HighLatencyKubeletOperations(c *client.Client, threshold time.Duration, nodeName string) (KubeletLatencyMetrics, error)

HighLatencyKubeletOperations logs and counts the high latency metrics exported by the kubelet server via /metrics.

func (KubeletLatencyMetrics) Len ¶

func (a KubeletLatencyMetrics) Len() int

func (KubeletLatencyMetrics) Less ¶

func (a KubeletLatencyMetrics) Less(i, j int) bool

func (KubeletLatencyMetrics) Swap ¶

func (a KubeletLatencyMetrics) Swap(i, j int)

type LatencyMetric ¶

type LatencyMetric struct {
	Perc50 time.Duration `json:"Perc50"`
	Perc90 time.Duration `json:"Perc90"`
	Perc99 time.Duration `json:"Perc99"`
}

Dashboard metrics

func ExtractLatencyMetrics ¶

func ExtractLatencyMetrics(latencies []PodLatencyData) LatencyMetric

type LatencySlice ¶

type LatencySlice []PodLatencyData

func (LatencySlice) Len ¶

func (a LatencySlice) Len() int

func (LatencySlice) Less ¶

func (a LatencySlice) Less(i, j int) bool

func (LatencySlice) Swap ¶

func (a LatencySlice) Swap(i, j int)

type LogSizeDataTimeseries ¶

type LogSizeDataTimeseries map[string]map[string][]TimestampedSize

type LogSizeGatherer ¶

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

LogSizeGatherer is a worker which grabs a WorkItem from the channel and does assigned work.

func (*LogSizeGatherer) Run ¶

func (g *LogSizeGatherer) Run()

func (*LogSizeGatherer) Work ¶

func (g *LogSizeGatherer) Work() bool

Work does a single unit of work: tries to take out a WorkItem from the queue, ssh-es into a given machine, gathers data, writes it to the shared <data> map, and creates a gorouting which reinserts work item into the queue with a <pollingPeriod> delay. Returns false if worker should exit.

type LogsSizeData ¶

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

func (*LogsSizeData) AddNewData ¶

func (d *LogsSizeData) AddNewData(ip, path string, timestamp time.Time, size int)

type LogsSizeDataSummary ¶

type LogsSizeDataSummary map[string]map[string]SingleLogSummary

node -> file -> data

func (*LogsSizeDataSummary) PrintHumanReadable ¶

func (s *LogsSizeDataSummary) PrintHumanReadable() string

TODO: make sure that we don't need locking here

func (*LogsSizeDataSummary) PrintJSON ¶

func (s *LogsSizeDataSummary) PrintJSON() string

type LogsSizeVerifier ¶

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

LogsSizeVerifier gathers data about log files sizes from master and node machines. It oversees a <workersNo> workers which do the gathering.

func NewLogsVerifier ¶

func NewLogsVerifier(c *client.Client, stopChannel chan bool) *LogsSizeVerifier

NewLogsVerifier creates a new LogsSizeVerifier which will stop when stopChannel is closed

func (*LogsSizeVerifier) GetSummary ¶

func (s *LogsSizeVerifier) GetSummary() *LogsSizeDataSummary

GetSummary returns a summary (average generation rate and number of probes) of the data gathered by LogSizeVerifier

func (*LogsSizeVerifier) Run ¶

func (v *LogsSizeVerifier) Run()

Run starts log size gathering. It starts a gorouting for every worker and then blocks until stopChannel is closed

type MetricsForE2E ¶

type MetricsForE2E metrics.MetricsCollection

func (*MetricsForE2E) PrintHumanReadable ¶

func (m *MetricsForE2E) PrintHumanReadable() string

func (*MetricsForE2E) PrintJSON ¶

func (m *MetricsForE2E) PrintJSON() string

type NodeRuntimeOperationErrorRate ¶

type NodeRuntimeOperationErrorRate map[string]*RuntimeOperationErrorRate

NodeRuntimeOperationErrorRate is the runtime operation error rate on one node.

type NodesCPUSummary ¶

type NodesCPUSummary map[string]ContainersCPUSummary

NodesCPUSummary is indexed by the node name with each entry a ContainersCPUSummary map.

type PodDiff ¶

type PodDiff map[string]*podInfo

PodDiff is a map of pod name to podInfos

func Diff ¶

func Diff(oldPods []*api.Pod, curPods []*api.Pod) PodDiff

Diff computes a PodDiff given 2 lists of pods.

func (PodDiff) Print ¶

func (p PodDiff) Print(ignorePhases sets.String)

Print formats and prints the give PodDiff.

type PodLatencyData ¶

type PodLatencyData struct {
	// Name of the pod
	Name string
	// Node this pod was running on
	Node string
	// Latency information related to pod startuptime
	Latency time.Duration
}

PodLatencyData encapsulates pod startup latency information.

type PodStartupLatency ¶

type PodStartupLatency struct {
	Latency LatencyMetric `json:"latency"`
}

type PodStateVerification ¶

type PodStateVerification struct {
	// Optional: only pods that have k=v labels will pass this filter.
	Selectors map[string]string

	// Required: The phases which are valid for your pod.
	ValidPhases []api.PodPhase

	// Optional: only pods passing this function will pass the filter
	// Verify a pod.
	// As an optimization, in addition to specfying filter (boolean),
	// this function allows specifying an error as well.
	// The error indicates that the polling of the pod spectrum should stop.
	Verify func(api.Pod) (bool, error)

	// Optional: only pods with this name will pass the filter.
	PodName string
}

PodStateVerification represents a verification of pod state. Any time you have a set of pods that you want to operate against or query, this struct can be used to declaratively identify those pods.

type PodStore ¶

type PodStore struct {
	cache.Store
	// contains filtered or unexported fields
}

Convenient wrapper around cache.Store that returns list of api.Pod instead of interface{}.

func NewPodStore ¶

func NewPodStore(c *client.Client, namespace string, label labels.Selector, field fields.Selector) *PodStore

func (*PodStore) List ¶

func (s *PodStore) List() []*api.Pod

func (*PodStore) Stop ¶

func (s *PodStore) Stop()

type RCConfig ¶

type RCConfig struct {
	Client         *client.Client
	Image          string
	Command        []string
	Name           string
	Namespace      string
	PollInterval   time.Duration
	Timeout        time.Duration
	PodStatusFile  *os.File
	Replicas       int
	CpuRequest     int64 // millicores
	CpuLimit       int64 // millicores
	MemRequest     int64 // bytes
	MemLimit       int64 // bytes
	ReadinessProbe *api.Probe

	// Env vars, set the same for every pod.
	Env map[string]string

	// Extra labels added to every pod.
	Labels map[string]string

	// Ports to declare in the container (map of name to containerPort).
	Ports map[string]int
	// Ports to declare in the container as host and container ports.
	HostPorts map[string]int

	Volumes      []api.Volume
	VolumeMounts []api.VolumeMount

	// Pointer to a list of pods; if non-nil, will be set to a list of pods
	// created by this RC by RunRC.
	CreatedPods *[]*api.Pod

	// Maximum allowable container failures. If exceeded, RunRC returns an error.
	// Defaults to replicas*0.1 if unspecified.
	MaxContainerFailures *int

	// If set to false starting RC will print progress, otherwise only errors will be printed.
	Silent bool
}

type RCStartupStatus ¶

type RCStartupStatus struct {
	Expected              int
	Terminating           int
	Running               int
	RunningButNotReady    int
	Waiting               int
	Pending               int
	Unknown               int
	Inactive              int
	FailedContainers      int
	Created               []*api.Pod
	ContainerRestartNodes sets.String
}

func ComputeRCStartupStatus ¶

func ComputeRCStartupStatus(pods []*api.Pod, expected int) RCStartupStatus

func (*RCStartupStatus) Print ¶

func (s *RCStartupStatus) Print(name string)

type ReplicaSetConfig ¶

type ReplicaSetConfig struct {
	RCConfig
}

type ResourceConstraint ¶

type ResourceConstraint struct {
	CPUConstraint    float64
	MemoryConstraint uint64
}

type ResourceGathererOptions ¶

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

type ResourceMonitor ¶

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

ResourceMonitor manages a resourceCollector per node.

func NewResourceMonitor ¶

func NewResourceMonitor(c *client.Client, containerNames []string, pollingInterval time.Duration) *ResourceMonitor

func (*ResourceMonitor) FormatCPUSummary ¶

func (r *ResourceMonitor) FormatCPUSummary(summary NodesCPUSummary) string

func (*ResourceMonitor) FormatResourceUsage ¶

func (r *ResourceMonitor) FormatResourceUsage(s ResourceUsagePerNode) string

func (*ResourceMonitor) GetCPUSummary ¶

func (r *ResourceMonitor) GetCPUSummary() NodesCPUSummary

func (*ResourceMonitor) GetLatest ¶

func (r *ResourceMonitor) GetLatest() (ResourceUsagePerNode, error)

func (*ResourceMonitor) GetMasterNodeCPUSummary ¶

func (r *ResourceMonitor) GetMasterNodeCPUSummary(summaryPerNode NodesCPUSummary) NodesCPUSummary

func (*ResourceMonitor) GetMasterNodeLatest ¶

func (r *ResourceMonitor) GetMasterNodeLatest(usagePerNode ResourceUsagePerNode) ResourceUsagePerNode

func (*ResourceMonitor) LogCPUSummary ¶

func (r *ResourceMonitor) LogCPUSummary()

func (*ResourceMonitor) LogLatest ¶

func (r *ResourceMonitor) LogLatest()

func (*ResourceMonitor) Reset ¶

func (r *ResourceMonitor) Reset()

func (*ResourceMonitor) Start ¶

func (r *ResourceMonitor) Start()

func (*ResourceMonitor) Stop ¶

func (r *ResourceMonitor) Stop()

type ResourceUsagePerContainer ¶

type ResourceUsagePerContainer map[string]*ContainerResourceUsage

type ResourceUsagePerNode ¶

type ResourceUsagePerNode map[string]ResourceUsagePerContainer

type ResourceUsageSummary ¶

type ResourceUsageSummary map[string][]SingleContainerSummary

we can't have int here, as JSON does not accept integer keys.

func (*ResourceUsageSummary) PrintHumanReadable ¶

func (s *ResourceUsageSummary) PrintHumanReadable() string

func (*ResourceUsageSummary) PrintJSON ¶

func (s *ResourceUsageSummary) PrintJSON() string

type RuntimeOperationErrorRate ¶

type RuntimeOperationErrorRate struct {
	TotalNumber float64
	ErrorRate   float64
	TimeoutRate float64
}

RuntimeOperationErrorRate is the error rate of a specified runtime operation.

type RuntimeOperationMonitor ¶

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

RuntimeOperationMonitor is the tool getting and parsing docker operation metrics.

func NewRuntimeOperationMonitor ¶

func NewRuntimeOperationMonitor(c *client.Client) *RuntimeOperationMonitor

func (*RuntimeOperationMonitor) GetLatestRuntimeOperationErrorRate ¶

func (m *RuntimeOperationMonitor) GetLatestRuntimeOperationErrorRate() map[string]NodeRuntimeOperationErrorRate

GetLatestRuntimeOperationErrorRate gets latest error rate and timeout rate from last observed RuntimeOperationErrorRate.

func (*RuntimeOperationMonitor) GetRuntimeOperationErrorRate ¶

func (m *RuntimeOperationMonitor) GetRuntimeOperationErrorRate() map[string]NodeRuntimeOperationErrorRate

GetRuntimeOperationErrorRate gets runtime operation records from kubelet metrics and calculate error rates of all runtime operations.

type SSHResult ¶

type SSHResult struct {
	User   string
	Host   string
	Cmd    string
	Stdout string
	Stderr string
	Code   int
}

func SSH ¶

func SSH(cmd, host, provider string) (SSHResult, error)

SSH synchronously SSHs to a node running on provider and runs cmd. If there is no error performing the SSH, the stdout, stderr, and exit code are returned.

type SaturationTime ¶

type SaturationTime struct {
	TimeToSaturate time.Duration `json:"timeToStaturate"`
	NumberOfNodes  int           `json:"numberOfNodes"`
	NumberOfPods   int           `json:"numberOfPods"`
	Throughput     float32       `json:"throughput"`
}

type SchedulingLatency ¶

type SchedulingLatency struct {
	Scheduling LatencyMetric `json:"scheduling"`
	Binding    LatencyMetric `json:"binding"`
	Total      LatencyMetric `json:"total"`
}

type SingleContainerSummary ¶

type SingleContainerSummary struct {
	Name string
	Cpu  float64
	Mem  uint64
}

type SingleLogSummary ¶

type SingleLogSummary struct {
	AverageGenerationRate int
	NumberOfProbes        int
}

type TestContextType ¶

type TestContextType struct {
	KubeConfig            string
	KubeContext           string
	KubeAPIContentType    string
	KubeVolumeDir         string
	CertDir               string
	Host                  string
	RepoRoot              string
	Provider              string
	CloudConfig           CloudConfig
	KubectlPath           string
	OutputDir             string
	ReportDir             string
	ReportPrefix          string
	Prefix                string
	MinStartupPods        int
	UpgradeTarget         string
	PrometheusPushGateway string
	OSDistro              string
	VerifyServiceAccount  bool
	DeleteNamespace       bool
	CleanStart            bool
	// If set to 'true' or 'all' framework will start a goroutine monitoring resource usage of system add-ons.
	// It will read the data every 30 seconds from all Nodes and print summary during afterEach. If set to 'master'
	// only master Node will be monitored.
	GatherKubeSystemResourceUsageData string
	GatherLogsSizes                   bool
	GatherMetricsAfterTest            bool
	// Currently supported values are 'hr' for human-readable and 'json'. It's a comma separated list.
	OutputPrintType string
	// CreateTestingNS is responsible for creating namespace used for executing e2e tests.
	// It accepts namespace base name, which will be prepended with e2e prefix, kube client
	// and labels to be applied to a namespace.
	CreateTestingNS CreateTestingNSFn
	// If set to true test will dump data about the namespace in which test was running.
	DumpLogsOnFailure bool
}
var TestContext TestContextType

type TestDataSummary ¶

type TestDataSummary interface {
	PrintHumanReadable() string
	PrintJSON() string
}

type TimestampedSize ¶

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

TimestampedSize contains a size together with a time of measurement.

type WorkItem ¶

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

WorkItem is a command for a worker that contains an IP of machine from which we want to gather data and paths to all files we're interested in.

Jump to

Keyboard shortcuts

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