framework

package
v1.7.10-beta.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	FirewallTimeoutDefault = 3 * time.Minute
	FirewallTestTcpTimeout = time.Duration(1 * time.Second)
	// Set ports outside of 30000-32767, 80 and 8080 to avoid being whitelisted by the e2e cluster
	FirewallTestHttpPort = int32(29999)
	FirewallTestUdpPort  = int32(29998)
)
View Source
const (

	// IngressManifestPath is the parent path to yaml test manifests.
	IngressManifestPath = "test/e2e/testing-manifests/ingress"

	// IngressReqTimeout is the timeout on a single http request.
	IngressReqTimeout = 10 * time.Second
)
View Source
const (
	// How long to wait for a job to finish.
	JobTimeout = 15 * time.Minute

	// Job selector name
	JobSelectorKey = "job"
)
View Source
const (
	EndpointHttpPort      = 8080
	EndpointUdpPort       = 8081
	TestContainerHttpPort = 8080
	ClusterHttpPort       = 80
	ClusterUdpPort        = 90
	NetexecImageName      = "gcr.io/google_containers/netexec:1.7"
	HostexecImageName     = "gcr.io/google_containers/hostexec:1.2"
)
View Source
const (
	PDRetryTimeout    = 5 * time.Minute
	PDRetryPollTime   = 5 * time.Second
	VolumeSelectorKey = "e2e-pv-pool"
)
View Source
const (
	// KubeProxyLagTimeout is the maximum time a kube-proxy daemon on a node is allowed
	// to not notice a Service update, such as type=NodePort.
	// TODO: This timeout should be O(10s), observed values are O(1m), 5m is very
	// liberal. Fix tracked in #20567.
	KubeProxyLagTimeout = 5 * time.Minute

	// KubeProxyEndpointLagTimeout is the maximum time a kube-proxy daemon on a node is allowed
	// to not notice an Endpoint update.
	KubeProxyEndpointLagTimeout = 30 * time.Second

	// LoadBalancerLagTimeoutDefault is the maximum time a load balancer is allowed to
	// not respond after creation.
	LoadBalancerLagTimeoutDefault = 2 * time.Minute

	// LoadBalancerLagTimeoutAWS is the delay between ELB creation and serving traffic
	// on AWS. A few minutes is typical, so use 10m.
	LoadBalancerLagTimeoutAWS = 10 * time.Minute

	// How long to wait for a load balancer to be created/modified.
	//TODO: once support ticket 21807001 is resolved, reduce this timeout back to something reasonable
	LoadBalancerCreateTimeoutDefault = 20 * time.Minute
	LoadBalancerCreateTimeoutLarge   = 2 * time.Hour

	// Time required by the loadbalancer to cleanup, proportional to numApps/Ing.
	// Bring the cleanup timeout back down to 5m once b/33588344 is resolved.
	LoadBalancerCleanupTimeout = 15 * time.Minute

	// On average it takes ~6 minutes for a single backend to come online in GCE.
	LoadBalancerPollTimeout  = 15 * time.Minute
	LoadBalancerPollInterval = 30 * time.Second

	LargeClusterMinNodesNumber = 100

	// Don't test with more than 3 nodes.
	// Many tests create an endpoint per node, in large clusters, this is
	// resource and time intensive.
	MaxNodesForEndpointsTests = 3

	// ServiceTestTimeout is used for most polling/waiting activities
	ServiceTestTimeout = 60 * time.Second
)
View Source
const (
	// Poll interval for StatefulSet tests
	StatefulSetPoll = 10 * time.Second
	// Timeout interval for StatefulSet operations
	StatefulSetTimeout = 10 * time.Minute
	// Timeout for stateful pods to change state
	StatefulPodTimeout = 5 * time.Minute
)
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 = 5 * time.Minute

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

	// How long claims have to become dynamically provisioned
	ClaimProvisionTimeout = 5 * time.Minute

	// How long each node is given during a process that restarts all nodes
	// before the test is considered failed. (Note that the total time to
	// restart all nodes will be this number times the number of nodes.)
	RestartPerNodeTimeout = 5 * time.Minute

	// How often to Poll the statues of a restart.
	RestartPoll = 20 * time.Second

	// How long a node is allowed to become "Ready" after it is restarted before
	// the test is considered failed.
	RestartNodeReadyAgainTimeout = 5 * time.Minute

	// How long a pod is allowed to become "running" and "ready" after a node
	// restart before test is considered failed.
	RestartPodReadyAgainTimeout = 5 * time.Minute

	// Serve hostname image name
	ServeHostnameImage = "gcr.io/google_containers/serve_hostname:v1.4"
)
View Source
const (
	NfsServerImage       string = "gcr.io/google_containers/volume-nfs:0.8"
	IscsiServerImage     string = "gcr.io/google_containers/volume-iscsi:0.1"
	GlusterfsServerImage string = "gcr.io/google_containers/volume-gluster:0.2"
	CephServerImage      string = "gcr.io/google_containers/volume-ceph:0.1"
	RbdServerImage       string = "gcr.io/google_containers/volume-rbd:0.1"
	BusyBoxImage         string = "gcr.io/google_containers/busybox:1.24"
)

Current supported images for e2e volume testing to be assigned to VolumeTestConfig.serverImage

View Source
const CurrentKubeletPerfMetricsVersion = "v2"

CurrentKubeletPerfMetricsVersion is the current kubelet performance metrics version. This is used by mutiple perf related data structures. We should bump up the version each time we make an incompatible change to the metrics.

View Source
const (

	// TODO(mikedanese): reset this to 5 minutes once #47135 is resolved.
	// ref https://github.com/kubernetes/kubernetes/issues/47135
	DefaultNamespaceDeletionTimeout = 10 * time.Minute
)
View Source
const DefaultPodDeletionTimeout = 3 * 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 (
	// Label allocated to the image puller static pod that runs on each node
	// before e2es.
	ImagePullerLabels = map[string]string{"name": "e2e-image-puller"}
)
View Source
var ImageWhiteList sets.String

ImageWhiteList is the images used in the current test suite. It should be initialized in test suite and the images in the white list should be pre-pulled in the test suite. Currently, this is only used by node e2e test.

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 InterestingControllerManagerMetrics = []string{
	"garbage_collector_attempt_to_delete_queue_latency",
	"garbage_collector_attempt_to_delete_work_duration",
	"garbage_collector_attempt_to_orphan_queue_latency",
	"garbage_collector_attempt_to_orphan_work_duration",
	"garbage_collector_dirty_processing_latency_microseconds",
	"garbage_collector_event_processing_latency_microseconds",
	"garbage_collector_graph_changes_queue_latency",
	"garbage_collector_graph_changes_work_duration",
	"garbage_collector_orphan_processing_latency_microseconds",

	"namespace_queue_latency",
	"namespace_queue_latency_sum",
	"namespace_queue_latency_count",
	"namespace_retries",
	"namespace_work_duration",
	"namespace_work_duration_sum",
	"namespace_work_duration_count",
}
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", "local"}

ProvidersWithSSH are those providers where each node is accessible with SSH

View Source
var RunId = uuid.NewUUID()

unique identifier of the e2e run

View Source
var ServiceNodePortRange = utilnet.PortRange{Base: 30000, Size: 2768}

This should match whatever the default/configured range is

View Source
var SubResourcePodProxyVersion = utilversion.MustParseSemantic("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).

View Source
var SubResourceServiceAndNodeProxyVersion = utilversion.MustParseSemantic("v1.2.0")

Functions

func AddOrUpdateAvoidPodOnNode added in v1.7.0

func AddOrUpdateAvoidPodOnNode(c clientset.Interface, nodeName string, avoidPods v1.AvoidPods)

AddOrUpdateAvoidPodOnNode adds avoidPods annotations to node, will override if it exists

func AddOrUpdateLabelOnNode added in v1.4.0

func AddOrUpdateLabelOnNode(c clientset.Interface, nodeName string, labelKey, labelValue string)

func AddOrUpdateTaintOnNode added in v1.4.0

func AddOrUpdateTaintOnNode(c clientset.Interface, nodeName string, taint v1.Taint)

func AfterReadingAllFlags added in v1.7.0

func AfterReadingAllFlags(t *TestContextType)

AfterReadingAllFlags makes changes to the context after all flags have been read.

func AllNodesReady

func AllNodesReady(c clientset.Interface, timeout time.Duration) error

Checks whether all registered nodes are ready. TODO: we should change the AllNodesReady call in AfterEach to WaitForAllNodesHealthy, and figure out how to do it in a configurable way, as we can't expect all setups to run default test add-ons.

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 occurred.

func BindClusterRole added in v1.6.0

func BindClusterRole(c v1beta1rbac.ClusterRoleBindingsGetter, clusterRole, ns string, subjects ...rbacv1beta1.Subject)

BindClusterRole binds the cluster role at the cluster scope

func BindClusterRoleInNamespace added in v1.6.0

func BindClusterRoleInNamespace(c v1beta1rbac.RoleBindingsGetter, clusterRole, ns string, subjects ...rbacv1beta1.Subject)

BindClusterRoleInNamespace binds the cluster role at the namespace scope

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 BuildInsecureClient added in v1.6.0

func BuildInsecureClient(timeout time.Duration) *http.Client

BuildInsecureClient returns an insecure http client. Can be used for "curl -k".

func CPUUsageToPerfData

func CPUUsageToPerfData(usagePerNode NodesCPUSummary) *perftype.PerfData

CPUUsageToPerfData transforms NodesCPUSummary to PerfData.

func CPUUsageToPerfDataWithLabels added in v1.4.0

func CPUUsageToPerfDataWithLabels(usagePerNode NodesCPUSummary, labels map[string]string) *perftype.PerfData

CPUUsageToPerfDataWithLabels transforms NodesCPUSummary to PerfData with additional labels.

func CheckConnectivityToHost

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

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

An empty nodeName will use the schedule to choose where the pod is executed.

func CheckForAllJobPodsRunning added in v1.6.0

func CheckForAllJobPodsRunning(c clientset.Interface, ns, jobName string, parallelism int32) (bool, error)

CheckForAllJobPodsRunning uses c to check in the Job named jobName in ns is running. If the returned error is not nil the returned bool is true if the Job is running.

func CheckInvariants

func CheckInvariants(events []watch.Event, fns ...InvariantFunc) error

func CheckMasterVersion added in v1.6.0

func CheckMasterVersion(c clientset.Interface, want string) error

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 CheckNodesReady

func CheckNodesReady(c clientset.Interface, nt time.Duration, expect int) ([]string, error)

CheckNodesReady waits up to nt for expect nodes accessed by c to be ready, returning an error if this doesn't happen in time. It returns the names of nodes it finds.

func CheckNodesVersions added in v1.6.0

func CheckNodesVersions(cs clientset.Interface, want string) error

func CheckPodHashLabel

func CheckPodHashLabel(pods *v1.PodList) error

func CheckPodsCondition

func CheckPodsCondition(c clientset.Interface, ns string, podNames []string, timeout time.Duration, condition podCondition, desc string) bool

CheckPodsCondition returns whether all pods whose names are listed in podNames in namespace ns are in the condition, using c and waiting at most timeout.

func CheckPodsRunningReady

func CheckPodsRunningReady(c clientset.Interface, ns string, podNames []string, timeout time.Duration) bool

CheckPodsRunningReady 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 CheckPodsRunningReadyOrSucceeded

func CheckPodsRunningReadyOrSucceeded(c clientset.Interface, ns string, podNames []string, timeout time.Duration) bool

CheckPodsRunningReadyOrSucceeded returns whether all pods whose names are listed in podNames in namespace ns are running and ready, or succeeded; use c and waiting at most timeout.

func CheckRSHashLabel

func CheckRSHashLabel(rs *extensions.ReplicaSet) error

func CheckReachabilityFromPod added in v1.6.0

func CheckReachabilityFromPod(expectToBeReachable bool, timeout time.Duration, namespace, pod, target string)

func CheckTestingNSDeletedExcept

func CheckTestingNSDeletedExcept(c clientset.Interface, 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 CleanupGCEIngressController added in v1.6.0

func CleanupGCEIngressController(gceController *GCEIngressController)

CleanupGCEIngressController calls the GCEIngressController.Cleanup(false) followed with deleting the static ip, and then a final GCEIngressController.Cleanup(true)

func CleanupGCEResources added in v1.5.0

func CleanupGCEResources(loadBalancerName, zone string) (retErr error)

CleanupGCEResources cleans up GCE Service Type=LoadBalancer resources with the given name. The name is usually the UUID of the Service prefixed with an alpha-numeric character ('a') to work around cloudprovider rules.

func CleanupServiceGCEResources added in v1.6.0

func CleanupServiceGCEResources(loadBalancerName, zone string)

func CleanupServiceResources added in v1.7.0

func CleanupServiceResources(loadBalancerName, zone string)

func CollectAddresses added in v1.6.0

func CollectAddresses(nodes *v1.NodeList, addressType v1.NodeAddressType) []string

func ConstructFirewallForLBService added in v1.6.0

func ConstructFirewallForLBService(svc *v1.Service, nodesTags []string) *compute.Firewall

ConstructFirewallForLBService returns the expected GCE firewall rule for a loadbalancer type service

func ConstructHealthCheckFirewallForLBService added in v1.7.0

func ConstructHealthCheckFirewallForLBService(clusterID string, svc *v1.Service, nodesTags []string, isNodesHealthCheck bool) *compute.Firewall

ConstructHealthCheckFirewallForLBService returns the expected GCE firewall rule for a loadbalancer type service

func ContainerInitInvariant

func ContainerInitInvariant(older, newer runtime.Object) error

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/log-dump.sh to accomplish this.

func CreateClientPod added in v1.6.0

func CreateClientPod(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (*v1.Pod, error)

Define and create a pod with a mounted PV. Pod runs infinite loop until killed.

func CreateEmptyFileOnPod added in v1.7.0

func CreateEmptyFileOnPod(namespace string, podName string, filePath string) error

create empty file at given path on the pod.

func CreateExecPodOrFail added in v1.6.0

func CreateExecPodOrFail(client clientset.Interface, ns, generateName string, tweak func(*v1.Pod)) string

CreateExecPodOrFail creates a simple busybox pod in a sleep loop used as a vessel for kubectl exec commands. Returns the name of the created pod.

func CreateGCEStaticIP added in v1.6.0

func CreateGCEStaticIP(name string) (string, error)

func CreateJob added in v1.6.0

func CreateJob(c clientset.Interface, ns string, job *batch.Job) (*batch.Job, error)

CreateJob uses c to create job in namespace ns. If the returned error is nil, the returned Job is valid and has been created.

func CreatePDWithRetry added in v1.6.0

func CreatePDWithRetry() (string, error)

func CreatePDWithRetryAndZone added in v1.7.0

func CreatePDWithRetryAndZone(zone string) (string, error)

func CreatePVC added in v1.6.0

create the PVC resource. Fails test on error.

func CreatePVCPV added in v1.6.0

Create a PVC followed by the PV based on the passed in nfs-server ip and namespace. If the "preBind" bool is true then pre-bind the PV to the PVC via the PV's ClaimRef. Return the pv and pvc to reflect the created objects. Note: in the pre-bind case the real PVC name, which is generated, is not

known until after the PVC is instantiated. This is why the pvc is created
before the pv.

func CreatePVPVC added in v1.6.0

Create a PV followed by the PVC based on the passed in nfs-server ip and namespace. If the "preBind" bool is true then pre-bind the PVC to the PV via the PVC's VolumeName. Return the pv and pvc to reflect the created objects. Note: in the pre-bind case the real PV name, which is generated, is not

known until after the PV is instantiated. This is why the pv is created
before the pvc.

func CreatePVSource added in v1.7.0

func CreatePVSource(zone string) (*v1.PersistentVolumeSource, error)

func CreatePVsPVCs added in v1.6.0

func CreatePVsPVCs(numpvs, numpvcs int, c clientset.Interface, ns string, pvConfig PersistentVolumeConfig, pvcConfig PersistentVolumeClaimConfig) (PVMap, PVCMap, error)

Create the desired number of PVs and PVCs and return them in separate maps. If the number of PVs != the number of PVCs then the min of those two counts is the number of PVs expected to bind. If a Create error occurs, the returned maps may contain pv and pvc entries for the resources that were successfully created. In other words, when the caller sees an error returned, it needs to decide what to do about entries in the maps. Note: when the test suite deletes the namespace orphaned pvcs and pods are deleted. However,

orphaned pvs are not deleted and will remain after the suite completes.

func CreatePod added in v1.7.0

func CreatePod(client clientset.Interface, namespace string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string) (*v1.Pod, error)

create pod with given claims

func CreatePodOrFail added in v1.6.0

func CreatePodOrFail(c clientset.Interface, ns, name string, labels map[string]string, containerPorts []v1.ContainerPort)

func CreateStatefulSetService added in v1.6.0

func CreateStatefulSetService(name string, labels map[string]string) *v1.Service

CreateStatefulSetService creates a Headless Service with Name name and Selector set to match labels.

func CreateTestingNS

func CreateTestingNS(baseName string, c clientset.Interface, labels map[string]string) (*v1.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 CreateWaitAndDeletePod added in v1.6.0

func CreateWaitAndDeletePod(f *Framework, c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (err error)

Create the test pod, wait for (hopefully) success, and then delete the pod. Note: need named return value so that the err assignment in the defer sets the returned error.

Has been shown to be necessary using Go 1.7.

func DeleteAllStatefulSets added in v1.6.0

func DeleteAllStatefulSets(c clientset.Interface, ns string)

DeleteAllStatefulSets deletes all StatefulSet API Objects in Namespace ns.

func DeleteGCEStaticIP added in v1.6.0

func DeleteGCEStaticIP(name string) error

func DeleteJob added in v1.6.0

func DeleteJob(c clientset.Interface, ns, name string) error

DeleteJob uses c to delete the Job named name in namespace ns. If the returned error is nil, the Job has been deleted.

func DeleteNamespaces

func DeleteNamespaces(c clientset.Interface, 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 DeletePDWithRetry added in v1.6.0

func DeletePDWithRetry(diskName string) error

func DeletePVCandValidatePV added in v1.6.0

func DeletePVCandValidatePV(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim, pv *v1.PersistentVolume, expectPVPhase v1.PersistentVolumePhase) error

Delete the PVC and wait for the PV to enter its expected phase. Validate that the PV has been reclaimed (assumption here about reclaimPolicy). Caller tells this func which phase value to expect for the pv bound to the to-be-deleted claim.

func DeletePVCandValidatePVGroup added in v1.6.0

func DeletePVCandValidatePVGroup(c clientset.Interface, ns string, pvols PVMap, claims PVCMap, expectPVPhase v1.PersistentVolumePhase) error

Wraps deletePVCandValidatePV() by calling the function in a loop over the PV map. Only bound PVs are deleted. Validates that the claim was deleted and the PV is in the expected Phase (Released, Available, Bound). Note: if there are more claims than pvs then some of the remaining claims may bind to just made

available pvs.

func DeletePVSource added in v1.7.0

func DeletePVSource(pvSource *v1.PersistentVolumeSource) error

func DeletePersistentVolume added in v1.6.0

func DeletePersistentVolume(c clientset.Interface, pvName string) error

Delete the PV.

func DeletePersistentVolumeClaim added in v1.6.0

func DeletePersistentVolumeClaim(c clientset.Interface, pvcName string, ns string) error

Delete the Claim

func DeletePodOrFail added in v1.6.0

func DeletePodOrFail(c clientset.Interface, ns, name string)

func DeletePodWithWait added in v1.6.0

func DeletePodWithWait(f *Framework, c clientset.Interface, pod *v1.Pod) error

Deletes the passed-in pod and waits for the pod to be terminated. Resilient to the pod not existing.

func DeleteRCAndPods added in v1.4.0

func DeleteRCAndPods(clientset clientset.Interface, internalClientset internalclientset.Interface, ns, name string) error

func DeleteRCAndWaitForGC added in v1.4.0

func DeleteRCAndWaitForGC(c clientset.Interface, ns, name string) error

DeleteRCAndWaitForGC deletes only the Replication Controller and waits for GC to delete the pods.

func DeleteReplicaSet

func DeleteReplicaSet(clientset clientset.Interface, internalClientset internalclientset.Interface, ns, name string) error

Delete a ReplicaSet and all pods it spawned

func DeleteResourceAndPods added in v1.6.0

func DeleteResourceAndPods(clientset clientset.Interface, internalClientset internalclientset.Interface, kind schema.GroupKind, ns, name string) error

DeleteResourceAndPods deletes a given resource and all pods it spawned

func DeleteResourceAndWaitForGC added in v1.6.0

func DeleteResourceAndWaitForGC(c clientset.Interface, kind schema.GroupKind, ns, name string) error

DeleteResourceAndWaitForGC deletes only given resource and waits for GC to delete the pods.

func DescribeIng added in v1.6.0

func DescribeIng(ns string)

func DescribeSvc added in v1.6.0

func DescribeSvc(ns string)

func DumpAllNamespaceInfo

func DumpAllNamespaceInfo(c clientset.Interface, namespace string)

func DumpEventsInNamespace added in v1.5.0

func DumpEventsInNamespace(eventsLister EventsLister, namespace string)

func DumpNodeDebugInfo

func DumpNodeDebugInfo(c clientset.Interface, nodeNames []string, logFunc func(fmt string, args ...interface{}))

func EnableAndDisableInternalLB added in v1.7.3

func EnableAndDisableInternalLB() (enable func(svc *v1.Service), disable func(svc *v1.Service))

EnableAndDisableInternalLB returns two functions for enabling and disabling the internal load balancer setting for the supported cloud providers: GCE/GKE and Azure

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 EtcdUpgrade added in v1.5.4

func EtcdUpgrade(target_storage, target_version string) error

func ExpectNoError

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

func ExpectNoErrorWithOffset added in v1.7.0

func ExpectNoErrorWithOffset(offset int, err error, explain ...interface{})

ExpectNoErrorWithOffset checks if "err" is set, and if so, fails assertion while logging the error at "offset" levels above its caller (for example, for call chain f -> g -> ExpectNoErrorWithOffset(1, ...) error would be logged for "f").

func ExpectNoErrorWithRetries added in v1.4.0

func ExpectNoErrorWithRetries(fn func() error, maxRetries int, explain ...interface{})

func ExpectNodeHasLabel added in v1.4.0

func ExpectNodeHasLabel(c clientset.Interface, nodeName string, labelKey string, labelValue string)

func ExpectNodeHasTaint added in v1.4.0

func ExpectNodeHasTaint(c clientset.Interface, nodeName string, taint *v1.Taint)

func Failf

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

func FailfWithOffset added in v1.7.0

func FailfWithOffset(offset int, format string, args ...interface{})

FailfWithOffset calls "Fail" and logs the error at "offset" levels above its caller (for example, for call chain f -> g -> FailfWithOffset(1, ...) error would be logged for "f").

func FederationSystemNamespace added in v1.7.0

func FederationSystemNamespace() string

FederationSystemNamespace returns the namespace in which the federation system components are hosted.

func FilterNodes

func FilterNodes(nodeList *v1.NodeList, fn func(node v1.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 GcloudComputeResourceCreate added in v1.6.0

func GcloudComputeResourceCreate(resource, name, project string, args ...string) error

GcloudComputeResourceCreate creates a compute resource with a name and arguments.

func GcloudComputeResourceDelete added in v1.6.0

func GcloudComputeResourceDelete(resource, name, project string, args ...string) error

GcloudComputeResourceDelete deletes the specified compute resource by name and project.

func GenerateMasterRegexp added in v1.5.0

func GenerateMasterRegexp(prefix string) string

func GetAzureCloud added in v1.7.0

func GetAzureCloud() (*azure.Cloud, error)

GetAzureCloud returns azure cloud provider

func GetClusterID added in v1.7.0

func GetClusterID(c clientset.Interface) (string, error)

func GetClusterIpRange added in v1.6.0

func GetClusterIpRange() string

GetClusterIpRange returns the CLUSTER_IP_RANGE env we set for e2e cluster.

Warning: this MUST be consistent with the CLUSTER_IP_RANGE set in gce/config-test.sh.

func GetClusterName added in v1.6.0

func GetClusterName(instancePrefix string) string

GetClusterName returns the CLUSTER_NAME env we set for e2e cluster. From cluster/gce/config-test.sh, cluster name is set up using below format: CLUSTER_NAME="${CLUSTER_NAME:-${INSTANCE_PREFIX}}"

func GetE2eFirewalls added in v1.6.0

func GetE2eFirewalls(masterName, masterTag, nodeTag, network string) []*compute.Firewall

GetE2eFirewalls returns all firewall rules we create for an e2e cluster. From cluster/gce/util.sh, all firewall rules should be consistent with the ones created by startup scripts.

func GetGCECloud added in v1.6.0

func GetGCECloud() (*gcecloud.GCECloud, error)

func GetGroupNodes added in v1.7.0

func GetGroupNodes(group string) ([]string, error)

func GetHostExternalAddress

func GetHostExternalAddress(client clientset.Interface, p *v1.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 GetIngressPoint added in v1.6.0

func GetIngressPoint(ing *v1.LoadBalancerIngress) string

func GetInstancePrefix added in v1.6.0

func GetInstancePrefix(masterName string) (string, error)

GetInstancePrefix returns the INSTANCE_PREFIX env we set for e2e cluster. From cluster/gce/config-test.sh, master name is set up using below format: MASTER_NAME="${INSTANCE_PREFIX}-master"

func GetInstanceTags added in v1.6.0

func GetInstanceTags(cloudConfig CloudConfig, instanceName string) *compute.Tags

GetInstanceTags gets tags from GCE instance with given name.

func GetJob added in v1.6.0

func GetJob(c clientset.Interface, ns, name string) (*batch.Job, error)

GetJob uses c to get the Job in namespace ns named name. If the returned error is nil, the returned Job is valid.

func GetJobPods added in v1.7.0

func GetJobPods(c clientset.Interface, ns, jobName string) (*v1.PodList, error)

GetJobPods returns a list of Pods belonging to a Job.

func GetKubeletHeapStats

func GetKubeletHeapStats(c clientset.Interface, nodeName string) (string, error)

func GetKubeletPods

func GetKubeletPods(c clientset.Interface, node string) (*v1.PodList, error)

GetKubeletPods retrieves the list of pods on the kubelet

func GetKubeletRunningPods

func GetKubeletRunningPods(c clientset.Interface, node string) (*v1.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 GetKubemarkMasterComponentsResourceUsage added in v1.6.0

func GetKubemarkMasterComponentsResourceUsage() map[string]*KubemarkResourceUsage

TODO: figure out how to move this to kubemark directory (need to factor test SSH out of e2e framework)

func GetLogToFileFunc added in v1.7.0

func GetLogToFileFunc(file *os.File) func(format string, args ...interface{})

GetLogToFileFunc is a convenience function that returns a function that have the same interface as Logf, but writes to a specified file.

func GetMasterAddress added in v1.5.0

func GetMasterAddress(c clientset.Interface) string

GetMasterAddress returns the hostname/external IP/internal IP as appropriate for e2e tests on a particular provider which is the address of the interface used for communication with the kubelet.

func GetMasterAndWorkerNodesOrDie added in v1.4.0

func GetMasterAndWorkerNodesOrDie(c clientset.Interface) (sets.String, *v1.NodeList)

GetMasterAndWorkerNodesOrDie will return a list masters and schedulable worker nodes

func GetMasterHost

func GetMasterHost() string

func GetNodeAddresses added in v1.6.0

func GetNodeAddresses(node *v1.Node, addressType v1.NodeAddressType) (ips []string)

func GetNodeExternalIP added in v1.5.0

func GetNodeExternalIP(node *v1.Node) string

GetNodeExternalIP returns node external IP concatenated with port 22 for ssh e.g. 1.2.3.4:22

func GetNodePortURL

func GetNodePortURL(client clientset.Interface, ns, name string, svcPort int) (string, error)

GetNodePortURL returns the url to a nodeport Service.

func GetNodePublicIps added in v1.6.0

func GetNodePublicIps(c clientset.Interface) ([]string, error)

func GetNodeTags added in v1.6.0

func GetNodeTags(c clientset.Interface, cloudConfig CloudConfig) *compute.Tags

GetNodeTags gets tags from one of the Kubernetes nodes

func GetPauseImageName

func GetPauseImageName(c clientset.Interface) string

GetPauseImageName fetches the pause image name for the same architecture as the apiserver.

func GetPauseImageNameForHostArch

func GetPauseImageNameForHostArch() string

GetPauseImageNameForHostArch fetches the pause image name for the same architecture the test is running on. TODO: move this function to the test/utils

func GetPodLogs

func GetPodLogs(c clientset.Interface, namespace, podName, containerName string) (string, error)

TODO(random-liu): Change this to be a member function of the framework.

func GetPodsInNamespace

func GetPodsInNamespace(c clientset.Interface, ns string, ignoreLabels map[string]string) ([]*v1.Pod, error)

func GetPodsScheduled added in v1.4.0

func GetPodsScheduled(masterNodes sets.String, pods *v1.PodList) (scheduledPods, notScheduledPods []v1.Pod)

GetPodsScheduled returns a number of currently scheduled and not scheduled Pods.

func GetReadySchedulableNodesOrDie

func GetReadySchedulableNodesOrDie(c clientset.Interface) (nodes *v1.NodeList)

GetReadySchedulableNodesOrDie addresses the common use case of getting nodes you can do work on. 1) Needs to be schedulable. 2) Needs to be ready. If EITHER 1 or 2 is not true, most tests will want to ignore the node entirely.

func GetServerArchitecture

func GetServerArchitecture(c clientset.Interface) string

GetServerArchitecture fetches the architecture of the cluster's apiserver.

func GetServicesProxyRequest

func GetServicesProxyRequest(c clientset.Interface, 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 GetTTLAnnotationFromNode added in v1.6.0

func GetTTLAnnotationFromNode(node *v1.Node) (time.Duration, bool)

func GroupSize added in v1.7.0

func GroupSize(group string) (int, error)

func InjectHtml added in v1.7.0

func InjectHtml(client clientset.Interface, config VolumeTestConfig, volume v1.VolumeSource, content string)

Insert index.html with given content into given volume. It does so by starting and auxiliary pod which writes the file there. The volume must be writable.

func IsGoogleAPIHTTPErrorCode added in v1.6.0

func IsGoogleAPIHTTPErrorCode(err error, code int) bool

IsHTTPErrorCode returns true if the error is a google api error matching the corresponding HTTP error code.

func IsNodeConditionSetAsExpected

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

func IsNodeConditionSetAsExpectedSilent

func IsNodeConditionSetAsExpectedSilent(node *v1.Node, conditionType v1.NodeConditionType, wantTrue bool) bool

func IsNodeConditionUnset

func IsNodeConditionUnset(node *v1.Node, conditionType v1.NodeConditionType) bool

func IssueSSHCommand

func IssueSSHCommand(cmd, provider string, node *v1.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 KubectlVersion

func KubectlVersion() (*utilversion.Version, error)

KubectlVersion gets the version of kubectl that's currently being used (see --kubectl-path in e2e.go to use an alternate kubectl).

func KubectlVersionGTE

func KubectlVersionGTE(v *utilversion.Version) (bool, error)

KubectlVersionGTE returns true if the kubectl version is greater than or equal to v.

func LaunchHostExecPod

func LaunchHostExecPod(client clientset.Interface, ns, name string) *v1.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 ListNamespaceEvents added in v1.4.0

func ListNamespaceEvents(c clientset.Interface, ns string) error

func LoadClientset added in v1.5.0

func LoadClientset() (*clientset.Clientset, error)

func LoadConfig

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

func LoadInternalClientset added in v1.5.0

func LoadInternalClientset() (*internalclientset.Clientset, error)

func LogClusterImageSources added in v1.5.8

func LogClusterImageSources()

func LogContainersInPodsWithLabels

func LogContainersInPodsWithLabels(c clientset.Interface, ns string, match map[string]string, containerSubstr string, logFunc func(ftm string, args ...interface{}))

func LogFailedContainers

func LogFailedContainers(c clientset.Interface, ns string, logFunc func(ftm string, args ...interface{}))

func LogPodsWithLabels

func LogPodsWithLabels(c clientset.Interface, ns string, match map[string]string, logFunc func(ftm string, args ...interface{}))

func LogSSHResult

func LogSSHResult(result SSHResult)

func LogSuspiciousLatency

func LogSuspiciousLatency(latencyData []PodLatencyData, latencyDataLag []PodLatencyData, nodeCount int, c clientset.Interface)

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 MakeFirewallNameForLBService added in v1.6.0

func MakeFirewallNameForLBService(name string) string

MakeFirewallNameForLBService return the expected firewall name for a LB service. This should match the formatting of makeFirewallName() in pkg/cloudprovider/providers/gce/gce_loadbalancer.go

func MakeHealthCheckFirewallNameForLBService added in v1.7.0

func MakeHealthCheckFirewallNameForLBService(clusterID, name string, isNodesHealthCheck bool) string

func MakePersistentVolume added in v1.7.0

func MakePersistentVolume(pvConfig PersistentVolumeConfig) *v1.PersistentVolume

Returns a PV definition based on the nfs server IP. If the PVC is not nil then the PV is defined with a ClaimRef which includes the PVC's namespace. If the PVC is nil then the PV is not defined with a ClaimRef. If no reclaimPolicy is assigned, assumes "Retain". Specs are expected to match the test's PVC. Note: the passed-in claim does not have a name until it is created and thus the PV's

ClaimRef cannot be completely filled-in in this func. Therefore, the ClaimRef's name
is added later in CreatePVCPV.

func MakePersistentVolumeClaim added in v1.6.0

func MakePersistentVolumeClaim(cfg PersistentVolumeClaimConfig, ns string) *v1.PersistentVolumeClaim

Returns a PVC definition based on the namespace. Note: if this PVC is intended to be pre-bound to a PV, whose name is not

known until the PV is instantiated, then the func CreatePVPVC will add
pvc.Spec.VolumeName to this claim.

func MakePod added in v1.6.0

func MakePod(ns string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string) *v1.Pod

Returns a pod definition based on the namespace. The pod references the PVC's name. A slice of BASH commands can be supplied as args to be run by the pod

func MakeWritePod added in v1.6.0

func MakeWritePod(ns string, pvc *v1.PersistentVolumeClaim) *v1.Pod

Returns a pod definition based on the namespace. The pod references the PVC's name.

func MasterUpgrade

func MasterUpgrade(v string) error

func MigTemplate

func MigTemplate() (string, error)

MigTemplate (GCE-only) returns the name of the MIG template that the nodes of the cluster use.

func NewDeployment added in v1.6.0

func NewDeployment(deploymentName string, replicas int32, podLabels map[string]string, imageName, image string, strategyType extensions.DeploymentStrategyType) *extensions.Deployment

func NewE2ETestNodePreparer added in v1.5.0

func NewE2ETestNodePreparer(client clientset.Interface, countToStrategy []testutil.CountToStrategy) testutil.TestNodePreparer

func NewHostExecPodSpec

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

NewHostExecPodSpec returns the pod spec of hostexec pod

func NewKubectlCommand

func NewKubectlCommand(args ...string) *kubectlBuilder

func NewResourceUsageGatherer

func NewResourceUsageGatherer(c clientset.Interface, options ResourceGathererOptions) (*containerResourceGatherer, error)

func NewStatefulSet added in v1.6.0

func NewStatefulSet(name, ns, governingSvcName string, replicas int32, statefulPodMounts []v1.VolumeMount, podMounts []v1.VolumeMount, labels map[string]string) *apps.StatefulSet

NewStatefulSet creates a new NGINX StatefulSet for testing. The StatefulSet is named name, is in namespace ns, statefulPodsMounts are the mounts that will be backed by PVs. podsMounts are the mounts that are mounted directly to the Pod. labels are the labels that will be usd for the StatefulSet selector.

func NewStatefulSetPVC added in v1.6.0

func NewStatefulSetPVC(name string) v1.PersistentVolumeClaim

NewStatefulSetPVC returns a PersistentVolumeClaim named name, for testing StatefulSets.

func NewTestJob added in v1.6.0

func NewTestJob(behavior, name string, rPol v1.RestartPolicy, parallelism, completions int32) *batch.Job

NewTestJob returns a Job which does one of several testing behaviors. notTerminate starts a Job that will run effectively forever. fail starts a Job that will fail immediately. succeed starts a Job that will succeed immediately. randomlySucceedOrFail starts a Job that will succeed or fail randomly. failOnce fails the Job the first time it is run and succeeds subsequently. name is the Name of the Job. RestartPolicy indicates the restart policy of the containers in which the Pod is running. Parallelism is the Job's parallelism, and completions is the Job's required number of completions.

func NodeAddresses

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

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

func NodeHasTaint added in v1.6.0

func NodeHasTaint(c clientset.Interface, nodeName string, taint *v1.Taint) (bool, error)

func NodeOSDistroIs added in v1.6.0

func NodeOSDistroIs(supportedNodeOsDistros ...string) bool

func NodeProxyRequest

func NodeProxyRequest(c clientset.Interface, 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 clientset.Interface) ([]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 NodeUpgrade

func NodeUpgrade(f *Framework, v string, img string) error

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 PVPVCCleanup added in v1.6.0

func PVPVCCleanup(c clientset.Interface, ns string, pv *v1.PersistentVolume, pvc *v1.PersistentVolumeClaim) []error

Clean up a pv and pvc in a single pv/pvc test case. Note: delete errors are appended to []error so that we can attempt to delete both the pvc and pv.

func PVPVCMapCleanup added in v1.6.0

func PVPVCMapCleanup(c clientset.Interface, ns string, pvols PVMap, claims PVCMap) []error

Clean up pvs and pvcs in multi-pv-pvc test cases. Entries found in the pv and claim maps are deleted as long as the Delete api call succeeds. Note: delete errors are appended to []error so that as many pvcs and pvs as possible are deleted.

func PackProtocolsPortsFromFirewall added in v1.6.0

func PackProtocolsPortsFromFirewall(alloweds []*compute.FirewallAllowed) []string

PackProtocolsPortsFromFirewall packs protocols and ports in an unified way for verification.

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 PickNodeIP added in v1.6.0

func PickNodeIP(c clientset.Interface) string

func PodProxyResponseChecker

func PodProxyResponseChecker(c clientset.Interface, ns string, label labels.Selector, controllerName string, respondName bool, pods *v1.PodList) podProxyResponseChecker

func PodStartupLatencyToPerfData added in v1.7.0

func PodStartupLatencyToPerfData(latency *PodStartupLatency) *perftype.PerfData

PodStartupLatencyToPerfData transforms PodStartupLatency to PerfData.

func PodsCreated

func PodsCreated(c clientset.Interface, ns, name string, replicas int32) (*v1.PodList, error)

func PodsCreatedByLabel added in v1.5.0

func PodsCreatedByLabel(c clientset.Interface, ns, name string, replicas int32, label labels.Selector) (*v1.PodList, error)

func PodsResponding

func PodsResponding(c clientset.Interface, ns, name string, wantName bool, pods *v1.PodList) error

func PollURL added in v1.6.0

func PollURL(route, host string, timeout time.Duration, interval time.Duration, httpClient *http.Client, expectUnreachable bool) error

PollURL polls till the url responds with a healthy http code. If expectUnreachable is true, it breaks on first non-healthy http code instead.

func PrettyPrintJSON

func PrettyPrintJSON(metrics interface{}) string

func PrintAllKubeletPods

func PrintAllKubeletPods(c clientset.Interface, 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 PrintSummaries added in v1.7.0

func PrintSummaries(summaries []TestDataSummary, testBaseName string)

func ProviderIs

func ProviderIs(providers ...string) bool

func ProxyMode added in v1.7.0

func ProxyMode(f *Framework) (string, error)

func RcByNameContainer added in v1.6.0

func RcByNameContainer(name string, replicas int32, image string, labels map[string]string, c v1.Container,
	gracePeriod *int64) *v1.ReplicationController

RcByNameContainer returns a ReplicationControoler with specified name and container

func RcByNamePort added in v1.6.0

func RcByNamePort(name string, replicas int32, image string, port int, protocol v1.Protocol,
	labels map[string]string, gracePeriod *int64) *v1.ReplicationController

RcByNamePort returns a ReplicationController with specified name and port

func RealVersion added in v1.6.0

func RealVersion(s string) (string, error)

RealVersion turns a version constants into a version string deployable on GKE. See hack/get-build.sh for more information.

func RegisterClusterFlags added in v1.4.0

func RegisterClusterFlags()

Register flags specific to the cluster e2e test suite.

func RegisterCommonFlags added in v1.4.0

func RegisterCommonFlags()

Register flags common to all e2e test suites.

func RegisterNodeFlags added in v1.4.0

func RegisterNodeFlags()

Register flags specific to the node e2e test suite.

func RemoveAvoidPodsOffNode added in v1.7.0

func RemoveAvoidPodsOffNode(c clientset.Interface, nodeName string)

RemoveAnnotationOffNode removes AvoidPods annotations from the node. It does not fail if no such annotation exists.

func RemoveCleanupAction

func RemoveCleanupAction(p CleanupActionHandle)

RemoveCleanupAction removes a function that was installed by AddCleanupAction.

func RemoveLabelOffNode added in v1.4.0

func RemoveLabelOffNode(c clientset.Interface, nodeName string, labelKey string)

RemoveLabelOffNode is for cleaning up labels temporarily added to node, won't fail if target label doesn't exist or has been removed.

func RemoveTaintOffNode added in v1.4.0

func RemoveTaintOffNode(c clientset.Interface, nodeName string, taint v1.Taint)

func ResetMetrics

func ResetMetrics(c clientset.Interface) error

Resets latency metrics in apiserver.

func ResizeGroup added in v1.7.0

func ResizeGroup(group string, size int32) error

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 ResourceUsageToPerfDataWithLabels added in v1.4.0

func ResourceUsageToPerfDataWithLabels(usagePerNode ResourceUsagePerNode, labels map[string]string) *perftype.PerfData

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

func RestartApiserver

func RestartApiserver(c discovery.ServerVersionInterface) error

func RestartKubeProxy

func RestartKubeProxy(host string) error

func RestclientConfig added in v1.6.0

func RestclientConfig(kubeContext string) (*clientcmdapi.Config, 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 RunCmd

func RunCmd(command string, args ...string) (string, string, error)

RunCmd runs cmd using args and returns its stdout and stderr. It also outputs cmd's stdout and stderr to their respective OS streams.

func RunCmdEnv added in v1.5.4

func RunCmdEnv(env []string, command string, args ...string) (string, string, error)

RunCmdEnv runs cmd with the provided environment and args and returns its stdout and stderr. It also outputs cmd's stdout and stderr to their respective OS streams.

func RunDeployment

func RunDeployment(config testutil.DeploymentConfig) error

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 RunHostCmdWithRetries added in v1.7.6

func RunHostCmdWithRetries(ns, name, cmd string, interval, timeout time.Duration) (string, error)

RunHostCmdWithRetries calls RunHostCmd and retries errors it thinks may be transient until it succeeds or the specified timeout expires. This can be used with idempotent commands to deflake transient Node issues.

func RunIfContainerRuntimeIs added in v1.6.8

func RunIfContainerRuntimeIs(runtimes ...string)

func RunIfSystemSpecNameIs added in v1.6.8

func RunIfSystemSpecNameIs(names ...string)

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 RunRC

func RunRC(config testutil.RCConfig) error

func RunReplicaSet

func RunReplicaSet(config testutil.ReplicaSetConfig) error

func SameStringArray added in v1.6.0

func SameStringArray(result, expected []string, include bool) error

SameStringArray verifies whether two string arrays have the same strings, return error if not. Order does not matter. When `include` is set to true, verifies whether result includes all elements from expected.

func ScaleDeployment added in v1.5.0

func ScaleDeployment(clientset clientset.Interface, internalClientset internalclientset.Interface, ns, name string, size uint, wait bool) error

func ScaleRC

func ScaleRC(clientset clientset.Interface, internalClientset internalclientset.Interface, ns, name string, size uint, wait bool) error

func ScaleRCByLabels

func ScaleRCByLabels(clientset clientset.Interface, internalClientset internalclientset.Interface, 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 ScaleResource added in v1.6.0

func ScaleResource(
	clientset clientset.Interface,
	internalClientset internalclientset.Interface,
	ns, name string,
	size uint,
	wait bool,
	kind schema.GroupKind,
) error

func ServerVersionGTE

func ServerVersionGTE(v *utilversion.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 clientset.Interface, ns, name string) error

func SetInstanceTags added in v1.6.0

func SetInstanceTags(cloudConfig CloudConfig, instanceName string, tags []string) []string

SetInstanceTags sets tags on GCE instance with given name.

func SimpleGET added in v1.6.0

func SimpleGET(c *http.Client, url, host string) (string, error)

SimpleGET executes a get on the given url, returns error if non-200 returned.

func SkipIfContainerRuntimeIs added in v1.4.0

func SkipIfContainerRuntimeIs(runtimes ...string)

func SkipIfMissingResource added in v1.4.1

func SkipIfMissingResource(clientPool dynamic.ClientPool, gvr schema.GroupVersionResource, namespace string)

func SkipIfProviderIs

func SkipIfProviderIs(unsupportedProviders ...string)

func SkipUnlessAtLeast

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

func SkipUnlessKubectlVersionGTE added in v1.3.8

func SkipUnlessKubectlVersionGTE(v *utilversion.Version)

func SkipUnlessNodeCountIsAtLeast

func SkipUnlessNodeCountIsAtLeast(minNodeCount int)

func SkipUnlessNodeCountIsAtMost added in v1.6.0

func SkipUnlessNodeCountIsAtMost(maxNodeCount int)

func SkipUnlessNodeOSDistroIs added in v1.6.0

func SkipUnlessNodeOSDistroIs(supportedNodeOsDistros ...string)

func SkipUnlessProviderIs

func SkipUnlessProviderIs(supportedProviders ...string)

func SkipUnlessSSHKeyPresent added in v1.6.4

func SkipUnlessSSHKeyPresent()

func SkipUnlessServerVersionLT added in v1.3.8

func SkipUnlessServerVersionLT(v *utilversion.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 StartServeHostnameService added in v1.6.0

func StartServeHostnameService(c clientset.Interface, internalClient internalclientset.Interface, ns, name string, port, replicas int) ([]string, string, error)

StartServeHostnameService creates a replication controller that serves its hostname and a service on top of it.

func StartVolumeServer added in v1.7.0

func StartVolumeServer(client clientset.Interface, config VolumeTestConfig) *v1.Pod

Starts a container specified by config.serverImage and exports all config.serverPorts from it. The returned pod should be used to get the server IP address and create appropriate VolumeSource.

func StatefulSetFromManifest added in v1.6.0

func StatefulSetFromManifest(fileName, ns string) *apps.StatefulSet

StatefulSetFromManifest returns a StatefulSet from a manifest stored in fileName in the Namespace indicated by ns.

func StopServeHostnameService added in v1.6.0

func StopServeHostnameService(clientset clientset.Interface, internalClientset internalclientset.Interface, ns, name string) error

func TargetContainers

func TargetContainers() []string

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

func TestHitNodesFromOutside added in v1.6.0

func TestHitNodesFromOutside(externalIP string, httpPort int32, timeout time.Duration, expectedHosts sets.String) error

func TestHitNodesFromOutsideWithCount added in v1.6.0

func TestHitNodesFromOutsideWithCount(externalIP string, httpPort int32, timeout time.Duration, expectedHosts sets.String,
	countToSucceed int) error

func TestNotReachableHTTP added in v1.6.0

func TestNotReachableHTTP(ip string, port int) (bool, error)

func TestNotReachableHTTPTimeout added in v1.6.0

func TestNotReachableHTTPTimeout(ip string, port int, timeout time.Duration) (bool, error)

func TestNotReachableUDP added in v1.6.0

func TestNotReachableUDP(ip string, port int, request string) (bool, error)

func TestReachableHTTP added in v1.6.0

func TestReachableHTTP(ip string, port int, request string, expect string) (bool, error)

func TestReachableHTTPWithContent added in v1.6.0

func TestReachableHTTPWithContent(ip string, port int, request string, expect string, content *bytes.Buffer) (bool, error)

func TestReachableHTTPWithContentTimeout added in v1.6.0

func TestReachableHTTPWithContentTimeout(ip string, port int, request string, expect string, content *bytes.Buffer, timeout time.Duration) (bool, error)

func TestReachableUDP added in v1.6.0

func TestReachableUDP(ip string, port int, request string, expect string) (bool, error)

func TestUnderTemporaryNetworkFailure added in v1.7.0

func TestUnderTemporaryNetworkFailure(c clientset.Interface, ns string, node *v1.Node, testFunc func())

Blocks outgoing network traffic on 'node'. Then runs testFunc and returns its status. At the end (even in case of errors), the network traffic is brought back to normal. This function executes commands on a node so it will work only for some environments.

func TestVolumeClient added in v1.7.0

func TestVolumeClient(client clientset.Interface, config VolumeTestConfig, fsGroup *int64, tests []VolumeTest)

Start a client pod using given VolumeSource (exported by startVolumeServer()) and check that the pod sees expected data, e.g. from the server pod. Multiple VolumeTests can be specified to mount multiple volumes to a single pod.

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 UpdateDaemonSetWithRetries added in v1.7.0

func UpdateDaemonSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateDSFunc) (ds *extensions.DaemonSet, err error)

func UpdateDeploymentWithRetries

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

func UpdateJob added in v1.6.0

func UpdateJob(c clientset.Interface, ns string, job *batch.Job) (*batch.Job, error)

UpdateJob uses c to updated job in namespace ns. If the returned error is nil, the returned Job is valid and has been updated.

func UpdateJobFunc added in v1.7.0

func UpdateJobFunc(c clientset.Interface, ns, name string, updateFn func(job *batch.Job))

UpdateJobFunc updates the job object. It retries if there is a conflict, throw out error if there is any other errors. name is the job name, updateFn is the function updating the job object.

func UpdateJobWithRetries added in v1.5.0

func UpdateJobWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateJobFunc) (job *batch.Job, err error)

func UpdatePodWithRetries

func UpdatePodWithRetries(client clientset.Interface, ns, name string, update func(*v1.Pod)) (*v1.Pod, error)

func UpdateReplicaSetWithRetries added in v1.5.0

func UpdateReplicaSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateRsFunc) (*extensions.ReplicaSet, error)

func UpdateReplicationControllerWithRetries added in v1.5.0

func UpdateReplicationControllerWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateRcFunc) (*v1.ReplicationController, error)

func UpdateService added in v1.6.0

func UpdateService(c clientset.Interface, namespace, serviceName string, update func(*v1.Service)) (*v1.Service, error)

UpdateService fetches a service, calls the update function on it, and then attempts to send the updated service. It retries up to 2 times in the face of timeouts and conflicts.

func UpdateStatefulSetWithRetries added in v1.5.0

func UpdateStatefulSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateStatefulSetFunc) (statefulSet *apps.StatefulSet, err error)

func ValidateController

func ValidateController(c clientset.Interface, 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 ValidateEndpointsOrFail added in v1.6.0

func ValidateEndpointsOrFail(c clientset.Interface, namespace, serviceName string, expectedEndpoints PortsByPodName)

func VerifyFirewallRule added in v1.6.0

func VerifyFirewallRule(res, exp *compute.Firewall, network string, portsSubset bool) error

VerifyFirewallRule verifies whether the result firewall is consistent with the expected firewall. When `portsSubset` is false, match given ports exactly. Otherwise, only check ports are included.

func VerifyGCEDiskAttached added in v1.6.0

func VerifyGCEDiskAttached(diskName string, nodeName types.NodeName) (bool, error)

Sanity check for GCE testing. Verify the persistent disk attached to the node.

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 clientset.Interface, ns, name string, wantName bool, replicas int32) error

func VerifyPodsRunning added in v1.6.0

func VerifyPodsRunning(c clientset.Interface, ns, name string, wantName bool, replicas int32) error

func VerifyServeHostnameServiceDown added in v1.6.0

func VerifyServeHostnameServiceDown(c clientset.Interface, host string, serviceIP string, servicePort int) error

func VerifyServeHostnameServiceUp added in v1.6.0

func VerifyServeHostnameServiceUp(c clientset.Interface, ns, host string, expectedPods []string, serviceIP string, servicePort int) error

VerifyServeHostnameServiceUp wgets the given serviceIP:servicePort from the given host and from within a pod. The host is expected to be an SSH-able node in the cluster. Each pod in the service is expected to echo its name. These names are compared with the given expectedPods list after a sort | uniq.

func VerifyThatTaintIsGone added in v1.6.0

func VerifyThatTaintIsGone(c clientset.Interface, nodeName string, taint *v1.Taint)

func ViperizeFlags added in v1.5.0

func ViperizeFlags()

ViperizeFlags sets up all flag and config processing. Future configuration info should be added to viper, not to flags.

func VolumeTestCleanup added in v1.7.0

func VolumeTestCleanup(f *Framework, config VolumeTestConfig)

Clean both server and client pods.

func WaitAndVerifyBinds added in v1.6.0

func WaitAndVerifyBinds(c clientset.Interface, ns string, pvols PVMap, claims PVCMap, testExpected bool) error

Search for bound PVs and PVCs by examining pvols for non-nil claimRefs. NOTE: Each iteration waits for a maximum of 3 minutes per PV and, if the PV is bound,

up to 3 minutes for the PVC. When the number of PVs != number of PVCs, this can lead
to situations where the maximum wait times are reached several times in succession,
extending test time. Thus, it is recommended to keep the delta between PVs and PVCs
small.

func WaitForAllJobPodsRunning added in v1.6.0

func WaitForAllJobPodsRunning(c clientset.Interface, ns, jobName string, parallelism int32) error

WaitForAllJobPodsRunning wait for all pods for the Job named JobName in namespace ns to become Running. Only use when pods will run for a long time, or it will be racy.

func WaitForAllNodesHealthy added in v1.4.0

func WaitForAllNodesHealthy(c clientset.Interface, timeout time.Duration) error

checks whether all registered nodes are ready and all required Pods are running on them.

func WaitForAllNodesSchedulable

func WaitForAllNodesSchedulable(c clientset.Interface, timeout time.Duration) error

func WaitForApiserverUp

func WaitForApiserverUp(c clientset.Interface) error

func WaitForAuthorizationUpdate added in v1.6.0

func WaitForAuthorizationUpdate(c v1beta1authorization.SubjectAccessReviewsGetter, user, namespace, verb string, resource schema.GroupResource, allowed bool) error

WaitForAuthorizationUpdate checks if the given user can perform the named verb and action. If policyCachePollTimeout is reached without the expected condition matching, an error is returned

func WaitForClusterSize

func WaitForClusterSize(c clientset.Interface, 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 WaitForControlledPodsRunning added in v1.6.0

func WaitForControlledPodsRunning(c clientset.Interface, ns, name string, kind schema.GroupKind) error

Wait up to 10 minutes for pods to become Running.

func WaitForDefaultServiceAccountInNamespace

func WaitForDefaultServiceAccountInNamespace(c clientset.Interface, 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.Interface, 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 most of the time, but an overwhelmed RS controller may result in taking longer to relabel a RS.

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, d *extensions.Deployment) error

Waits for the deployment to reach desired state. Returns an error if the deployment's rolling update strategy (max unavailable or max surge) is broken at any times.

func WaitForDeploymentStatusValid added in v1.4.0

func WaitForDeploymentStatusValid(c clientset.Interface, d *extensions.Deployment) error

Waits for the deployment status to become valid (i.e. max unavailable and max surge aren't violated anymore). Note that the status should stay valid at all times unless shortly after a scaling event or the deployment is just created. To verify that the deployment status is valid and wait for the rollout to finish, use WaitForDeploymentStatus instead.

func WaitForDeploymentUpdatedReplicasLTE

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

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

func WaitForDeploymentWithCondition added in v1.5.0

func WaitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, reason string, condType extensions.DeploymentConditionType) error

func WaitForEndpoint

func WaitForEndpoint(c clientset.Interface, ns, name string) error

func WaitForEvents

func WaitForEvents(c clientset.Interface, ns string, objOrRef runtime.Object, desiredEventsCount int) error

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

func WaitForFirewallRule added in v1.7.0

func WaitForFirewallRule(gceCloud *gcecloud.GCECloud, fwName string, exist bool, timeout time.Duration) (*compute.Firewall, error)

func WaitForGroupSize added in v1.7.0

func WaitForGroupSize(group string, size int32) error

func WaitForIngressAddress

func WaitForIngressAddress(c clientset.Interface, ns, ingName string, timeout time.Duration) (string, error)

WaitForIngressAddress waits for the Ingress to acquire an address.

func WaitForJobFailure added in v1.6.0

func WaitForJobFailure(c clientset.Interface, ns, jobName string, timeout time.Duration) error

WaitForJobFailure uses c to wait for up to timeout for the Job named jobName in namespace ns to fail.

func WaitForJobFinish added in v1.6.0

func WaitForJobFinish(c clientset.Interface, ns, jobName string, completions int32) error

WaitForJobFinish uses c to wait for compeletions to complete for the Job jobName in namespace ns.

func WaitForMasters added in v1.5.0

func WaitForMasters(masterPrefix string, c clientset.Interface, size int, timeout time.Duration) error

waitForMasters waits until the cluster has the desired number of ready masters in it.

func WaitForMatchPodsCondition

func WaitForMatchPodsCondition(c clientset.Interface, opts metav1.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 clientset.Interface, namespaces []string, timeout time.Duration) error

func WaitForNodeToBe

func WaitForNodeToBe(c clientset.Interface, name string, conditionType v1.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 clientset.Interface, 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 clientset.Interface, name string, timeout time.Duration) bool

WaitForNodeToBeReady returns whether node name is ready within timeout.

func WaitForObservedDeployment

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

func WaitForPVClaimBoundPhase added in v1.7.0

func WaitForPVClaimBoundPhase(client clientset.Interface, pvclaims []*v1.PersistentVolumeClaim) ([]*v1.PersistentVolume, error)

wait until all pvcs phase set to bound

func WaitForPartialEvents

func WaitForPartialEvents(c clientset.Interface, 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 v1.PersistentVolumeClaimPhase, c clientset.Interface, 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 clientset.Interface, 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 v1.PersistentVolumePhase, c clientset.Interface, 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 WaitForPodCondition added in v1.6.0

func WaitForPodCondition(c clientset.Interface, ns, podName, desc string, timeout time.Duration, condition podCondition) error

func WaitForPodNameRunningInNamespace added in v1.4.0

func WaitForPodNameRunningInNamespace(c clientset.Interface, podName, 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 WaitForPodNoLongerRunningInNamespace

func WaitForPodNoLongerRunningInNamespace(c clientset.Interface, podName, namespace string) error

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

func WaitForPodNotPending

func WaitForPodNotPending(c clientset.Interface, ns, podName string) error

WaitForPodNotPending returns an error if it took too long for the pod to go out of pending state. The resourceVersion is used when Watching object changes, it tells since when we care about changes to the pod.

func WaitForPodRunningInNamespace

func WaitForPodRunningInNamespace(c clientset.Interface, pod *v1.Pod) 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 clientset.Interface, podName 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 clientset.Interface, podName 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 clientset.Interface, ns, podName string, label labels.Selector, interval, timeout time.Duration) error

func WaitForPodsReady

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

func WaitForPodsRunningReady

func WaitForPodsRunningReady(c clientset.Interface, ns string, minPods, allowedNotReadyPods int32, timeout time.Duration, ignoreLabels map[string]string) 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 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 requests the list of pods on every iteration. This is useful, for example, in cluster startup, because the number of pods increases while waiting. All pods that are in SUCCESS state are not counted.

If ignoreLabels is not empty, pods matching this selector are ignored.

func WaitForPodsSuccess

func WaitForPodsSuccess(c clientset.Interface, ns string, successPodLabels map[string]string, timeout time.Duration) error

WaitForPodsSuccess waits till all labels matching the given selector enter the Success state. The caller is expected to only invoke this method once the pods have been created.

func WaitForPodsWithLabel

func WaitForPodsWithLabel(c clientset.Interface, ns string, label labels.Selector) (pods *v1.PodList, err error)

Wait up to PodListTimeout for getting pods with certain label

func WaitForPodsWithLabelRunningReady added in v1.6.0

func WaitForPodsWithLabelRunningReady(c clientset.Interface, ns string, label labels.Selector, num int, timeout time.Duration) (pods *v1.PodList, err error)

Wait for exact amount of matching pods to become running and ready. Return the list of matching pods.

func WaitForPodsWithLabelScheduled

func WaitForPodsWithLabelScheduled(c clientset.Interface, ns string, label labels.Selector) (pods *v1.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 clientset.Interface, 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 WaitForRCToStabilize

func WaitForRCToStabilize(c clientset.Interface, ns, name string, timeout time.Duration) error

WaitForRCToStabilize waits till the RC has a matching generation/replica count between spec and status.

func WaitForReadyReplicaSet added in v1.6.0

func WaitForReadyReplicaSet(c clientset.Interface, ns, name string) error

WaitForReadyReplicaSet waits until the replica set has all of its replicas ready.

func WaitForReplicationController

func WaitForReplicationController(c clientset.Interface, namespace, name string, exist bool, interval, timeout time.Duration) error

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

func WaitForReplicationControllerwithSelector added in v1.6.0

func WaitForReplicationControllerwithSelector(c clientset.Interface, namespace string, selector labels.Selector, exist bool, interval,
	timeout time.Duration) error

WaitForReplicationControllerwithSelector waits until any RC with given selector appears (exist == true), or disappears (exist == false)

func WaitForService

func WaitForService(c clientset.Interface, 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 clientset.Interface, namespace, serviceName string, expectNum int, interval, timeout time.Duration) error

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

func WaitForServiceWithSelector added in v1.6.0

func WaitForServiceWithSelector(c clientset.Interface, namespace string, selector labels.Selector, exist bool, interval,
	timeout time.Duration) error

WaitForServiceWithSelector waits until any service with given selector appears (exist == true), or disappears (exist == false)

func WaitForStableCluster added in v1.4.0

func WaitForStableCluster(c clientset.Interface, masterNodes sets.String) int

WaitForStableCluster waits until all existing pods are scheduled and returns their amount.

func WaitOnPVandPVC added in v1.6.0

func WaitOnPVandPVC(c clientset.Interface, ns string, pv *v1.PersistentVolume, pvc *v1.PersistentVolumeClaim) error

Wait for the pv and pvc to bind to each other.

func WaitTimeoutForPodNoLongerRunningInNamespace added in v1.4.0

func WaitTimeoutForPodNoLongerRunningInNamespace(c clientset.Interface, podName, namespace string, timeout time.Duration) error

func WatchRecreateDeployment added in v1.6.0

func WatchRecreateDeployment(c clientset.Interface, d *extensions.Deployment) error

WatchRecreateDeployment watches Recreate deployments and ensures no new pods will run at the same time with old pods.

Types

type APICall

type APICall struct {
	Resource    string        `json:"resource"`
	Subresource string        `json:"subresource"`
	Verb        string        `json:"verb"`
	Latency     LatencyMetric `json:"latency"`
	Count       int           `json:"count"`
}

type APIResponsiveness

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

func HighLatencyRequests

func HighLatencyRequests(c clientset.Interface) (int, *APIResponsiveness, error)

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

func (*APIResponsiveness) Len

func (a *APIResponsiveness) Len() int

func (*APIResponsiveness) Less

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

func (*APIResponsiveness) PrintHumanReadable added in v1.7.0

func (a *APIResponsiveness) PrintHumanReadable() string

func (*APIResponsiveness) PrintJSON added in v1.7.0

func (a *APIResponsiveness) PrintJSON() string

func (*APIResponsiveness) SummaryKind added in v1.7.0

func (a *APIResponsiveness) SummaryKind() string

func (*APIResponsiveness) Swap

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

type Address added in v1.5.0

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

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 ClientConfigGetter

type ClientConfigGetter func() (*restclient.Config, error)

type CloudConfig

type CloudConfig struct {
	ProjectID         string
	Zone              string
	MultiZone         bool
	Cluster           string
	MasterName        string
	NodeInstanceGroup string // comma-delimited list of groups' names
	NumNodes          int
	ClusterTag        string
	Network           string
	ConfigFile        string // for azure and openstack

	Provider cloudprovider.Interface
}

type ClusterVerification

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

func (*ClusterVerification) ForEach

func (cl *ClusterVerification) ForEach(podFunc func(v1.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) ([]v1.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 clientset.Interface, labels map[string]string) (*v1.Namespace, error)

type E2ETestNodePreparer added in v1.5.0

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

E2ETestNodePreparer implements testutil.TestNodePreparer interface, which is used to create/modify Nodes before running a test.

func (*E2ETestNodePreparer) CleanupNodes added in v1.5.0

func (p *E2ETestNodePreparer) CleanupNodes() error

func (*E2ETestNodePreparer) PrepareNodes added in v1.5.0

func (p *E2ETestNodePreparer) PrepareNodes() error

type EventsLister added in v1.5.0

type EventsLister func(opts metav1.ListOptions, ns string) (*v1.EventList, error)

type ExecOptions added in v1.5.0

type ExecOptions struct {
	Command []string

	Namespace     string
	PodName       string
	ContainerName string

	Stdin         io.Reader
	CaptureStdout bool
	CaptureStderr bool
	// If false, whitespace in std{err,out} will be removed.
	PreserveWhitespace bool
}

ExecOptions passed to ExecWithOptions

type Framework

type Framework struct {
	BaseName string

	// ClientSet uses internal objects, you should use ClientSet where possible.
	ClientSet clientset.Interface

	InternalClientset *internalclientset.Clientset
	StagingClient     *staging.Clientset
	ClientPool        dynamic.ClientPool

	SkipNamespaceCreation bool          // Whether to skip creating a namespace
	Namespace             *v1.Namespace // Every test has at least one namespace unless creation is skipped

	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 has to be injected in the test,
	// as expectations vary greatly. Constraints are grouped by the container names.
	AddonResourceConstraints map[string]ResourceConstraint

	// configuration for framework's client
	Options FrameworkOptions

	// Place where various additional data is stored during test run to be printed to ReportDir,
	// or stdout if ReportDir is not set once test ends.
	TestSummaries []TestDataSummary
	// 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 clientset.Interface) *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) CheckFileSizeViaContainer added in v1.4.6

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

func (*Framework) CreateNamespace

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

func (*Framework) CreatePodsPerNodeForSimpleApp

func (f *Framework) CreatePodsPerNodeForSimpleApp(appName string, podSpec func(n v1.Node) v1.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) *v1.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 v1.Node) v1.PodSpec, count int, block bool) (error, *v1.Service)

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

func (*Framework) ExecCommandInContainer added in v1.4.0

func (f *Framework) ExecCommandInContainer(podName, containerName string, cmd ...string) string

ExecCommandInContainer executes a command in the specified container.

func (*Framework) ExecCommandInContainerWithFullOutput added in v1.5.0

func (f *Framework) ExecCommandInContainerWithFullOutput(podName, containerName string, cmd ...string) (string, string, error)

ExecCommandInContainerWithFullOutput executes a command in the specified container and return stdout, stderr and error

func (*Framework) ExecCommandInPod added in v1.4.0

func (f *Framework) ExecCommandInPod(podName string, cmd ...string) string

func (*Framework) ExecCommandInPodWithFullOutput added in v1.5.0

func (f *Framework) ExecCommandInPodWithFullOutput(podName string, cmd ...string) (string, string, error)

func (*Framework) ExecShellInContainer added in v1.4.0

func (f *Framework) ExecShellInContainer(podName, containerName string, cmd string) string

func (*Framework) ExecShellInPod added in v1.4.0

func (f *Framework) ExecShellInPod(podName string, cmd string) string

func (*Framework) ExecShellInPodWithFullOutput added in v1.5.0

func (f *Framework) ExecShellInPodWithFullOutput(podName string, cmd string) (string, string, error)

func (*Framework) ExecWithOptions added in v1.5.0

func (f *Framework) ExecWithOptions(options ExecOptions) (string, string, error)

ExecWithOptions executes a command in the specified container, returning stdout, stderr and error. `options` allowed for additional parameters to be passed.

func (*Framework) MatchContainerOutput added in v1.4.0

func (f *Framework) MatchContainerOutput(
	pod *v1.Pod,
	containerName string,
	expectedOutput []string,
	matcher func(string, ...interface{}) gomegatypes.GomegaMatcher) error

MatchContainerOutput creates a pod and waits for all it's containers to exit with success. It then tests that the matcher with each expectedOutput matches the output of the specified container.

func (*Framework) NewClusterVerification

func (f *Framework) NewClusterVerification(namespace *v1.Namespace, filter PodStateVerification) *ClusterVerification

func (*Framework) NewTestPod added in v1.6.0

func (f *Framework) NewTestPod(name string, requests v1.ResourceList, limits v1.ResourceList) *v1.Pod

NewTestPod returns a pod that has the specified requests and limits

func (*Framework) PodClient added in v1.4.0

func (f *Framework) PodClient() *PodClient

Convenience method for getting a pod client interface in the framework's namespace, possibly applying test-suite specific transformations to the pod spec, e.g. for node e2e pod scheduling.

func (*Framework) PodClientNS added in v1.6.0

func (f *Framework) PodClientNS(namespace string) *PodClient

Convenience method for getting a pod client interface in an alternative namespace, possibly applying test-suite specific transformations to the pod spec, e.g. for node e2e pod scheduling.

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 *v1.Pod, containerIndex int, expectedOutput []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 (*Framework) TestContainerOutputRegexp

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

TestContainerOutputRegexp 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 regexp matcher.

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
	GroupVersion *schema.GroupVersion
}

type GCEIngressController added in v1.6.0

type GCEIngressController struct {
	Ns string

	UID string

	Client clientset.Interface
	Cloud  CloudConfig
	// contains filtered or unexported fields
}

GCEIngressController manages implementation details of Ingress on GCE/GKE.

func (*GCEIngressController) Cleanup added in v1.6.0

func (cont *GCEIngressController) Cleanup(del bool) error

Cleanup cleans up cloud resources. If del is false, it simply reports existing resources without deleting them. If dle is true, it deletes resources it finds acceptable (see canDelete func).

func (*GCEIngressController) CreateStaticIP added in v1.6.0

func (cont *GCEIngressController) CreateStaticIP(name string) string

CreateStaticIP allocates a random static ip with the given name. Returns a string representation of the ip. Caller is expected to manage cleanup of the ip by invoking deleteStaticIPs.

func (*GCEIngressController) GetFirewallRule added in v1.6.0

func (cont *GCEIngressController) GetFirewallRule() *compute.Firewall

GetFirewallRule returns the firewall used by the GCEIngressController.

func (*GCEIngressController) GetFirewallRuleName added in v1.6.0

func (cont *GCEIngressController) GetFirewallRuleName() string

GetFirewallRuleName returns the name of the firewall used for the GCEIngressController.

func (*GCEIngressController) Init added in v1.6.0

func (cont *GCEIngressController) Init()

Init initializes the GCEIngressController with an UID

type IngressConformanceTests added in v1.6.0

type IngressConformanceTests struct {
	EntryLog string
	Execute  func()
	ExitLog  string
}

IngressConformanceTests contains a closure with an entry and exit log line.

func CreateIngressComformanceTests added in v1.6.0

func CreateIngressComformanceTests(jig *IngressTestJig, ns string) []IngressConformanceTests

CreateIngressComformanceTests generates an slice of sequential test cases: a simple http ingress, ingress with HTTPS, ingress HTTPS with a modified hostname, ingress https with a modified URLMap

type IngressTestJig added in v1.6.0

type IngressTestJig struct {
	Client  clientset.Interface
	RootCAs map[string][]byte
	Address string
	Ingress *extensions.Ingress
	// class is the value of the annotation keyed under
	// `kubernetes.io/ingress.class`. It's added to all ingresses created by
	// this jig.
	Class string

	// The interval used to poll urls
	PollInterval time.Duration
}

IngressTestJig holds the relevant state and parameters of the ingress test.

func NewIngressTestJig added in v1.6.0

func NewIngressTestJig(c clientset.Interface) *IngressTestJig

NewIngressTestJig instantiates struct with client

func (*IngressTestJig) AddHTTPS added in v1.6.0

func (j *IngressTestJig) AddHTTPS(secretName string, hosts ...string)

AddHTTPS updates the ingress to use this secret for these hosts.

func (*IngressTestJig) ConstructFirewallForIngress added in v1.6.0

func (j *IngressTestJig) ConstructFirewallForIngress(gceController *GCEIngressController) *compute.Firewall

ConstructFirewallForIngress returns the expected GCE firewall rule for the ingress resource

func (*IngressTestJig) CreateIngress added in v1.6.0

func (j *IngressTestJig) CreateIngress(manifestPath, ns string, ingAnnotations map[string]string)

CreateIngress creates the Ingress and associated service/rc. Required: ing.yaml, rc.yaml, svc.yaml must exist in manifestPath Optional: secret.yaml, ingAnnotations If ingAnnotations is specified it will overwrite any annotations in ing.yaml

func (*IngressTestJig) GetIngressNodePorts added in v1.6.0

func (j *IngressTestJig) GetIngressNodePorts() []string

GetIngressNodePorts returns all related backend services' nodePorts. Current GCE ingress controller allows traffic to the default HTTP backend by default, so retrieve its nodePort as well.

func (*IngressTestJig) GetRootCA added in v1.6.0

func (j *IngressTestJig) GetRootCA(secretName string) (rootCA []byte)

GetRootCA returns a rootCA from the ingress test jig.

func (*IngressTestJig) TryDeleteIngress added in v1.7.1

func (j *IngressTestJig) TryDeleteIngress()

TryDeleteIngress attempts to delete the ingress resource and logs errors if they occur.

func (*IngressTestJig) Update added in v1.6.0

func (j *IngressTestJig) Update(update func(ing *extensions.Ingress))

Update retrieves the ingress, performs the passed function, and then updates it.

func (*IngressTestJig) VerifyURL added in v1.6.0

func (j *IngressTestJig) VerifyURL(route, host string, iterations int, interval time.Duration, httpClient *http.Client) error

VerifyURL polls for the given iterations, in intervals, and fails if the given url returns a non-healthy http code even once.

func (*IngressTestJig) WaitForIngress added in v1.6.0

func (j *IngressTestJig) WaitForIngress(waitForNodePort bool)

WaitForIngress waits till the ingress acquires an IP, then waits for its hosts/urls to respond to a protocol check (either http or https). If waitForNodePort is true, the NodePort of the Service is verified before verifying the Ingress. NodePort is currently a requirement for cloudprovider Ingress.

type InvariantFunc

type InvariantFunc func(older, newer runtime.Object) error

type KubeCluster

type KubeCluster struct {
	Name    string `yaml:"name"`
	Cluster struct {
		CertificateAuthorityData string `yaml:"certificate-authority-data"`
		Server                   string `yaml:"server"`
	} `yaml:"cluster"`
}

type KubeConfig

type KubeConfig struct {
	Contexts []struct {
		Name    string `yaml:"name"`
		Context struct {
			Cluster string `yaml:"cluster"`
			User    string
		} `yaml:"context"`
	} `yaml:"contexts"`

	Clusters []KubeCluster `yaml:"clusters"`

	Users []KubeUser `yaml:"users"`
}

func (*KubeConfig) FindCluster added in v1.6.0

func (kc *KubeConfig) FindCluster(name string) *KubeCluster

func (*KubeConfig) FindUser added in v1.6.0

func (kc *KubeConfig) FindUser(name string) *KubeUser

type KubeUser

type KubeUser struct {
	Name string `yaml:"name"`
	User struct {
		Username string `yaml:"username"`
		Password string `yaml:"password"`
		Token    string `yaml:"token"`
	} `yaml:"user"`
}

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 GetKubeletMetrics added in v1.7.0

func GetKubeletMetrics(ms metrics.KubeletMetrics, methods sets.String) KubeletLatencyMetrics

func HighLatencyKubeletOperations

func HighLatencyKubeletOperations(c clientset.Interface, threshold time.Duration, nodeName string, logFunc func(fmt string, args ...interface{})) (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 KubemarkResourceUsage added in v1.6.0

type KubemarkResourceUsage struct {
	Name                    string
	MemoryWorkingSetInBytes uint64
	CPUUsageInCores         float64
}

type LatencyMetric

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

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

func (*LogsSizeDataSummary) SummaryKind added in v1.7.0

func (s *LogsSizeDataSummary) SummaryKind() 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 clientset.Interface, 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

func (*MetricsForE2E) SummaryKind added in v1.7.0

func (m *MetricsForE2E) SummaryKind() string

type NetworkingTestConfig added in v1.5.0

type NetworkingTestConfig struct {
	// TestContaienrPod is a test pod running the netexec image. It is capable
	// of executing tcp/udp requests against ip:port.
	TestContainerPod *v1.Pod
	// HostTestContainerPod is a pod running with hostNetworking=true, and the
	// hostexec image.
	HostTestContainerPod *v1.Pod
	// EndpointPods are the pods belonging to the Service created by this
	// test config. Each invocation of `setup` creates a service with
	// 1 pod per node running the netexecImage.
	EndpointPods []*v1.Pod

	// NodePortService is a Service with Type=NodePort spanning over all
	// endpointPods.
	NodePortService *v1.Service
	// ExternalAddrs is a list of external IPs of nodes in the cluster.
	ExternalAddrs []string
	// Nodes is a list of nodes in the cluster.
	Nodes []v1.Node
	// MaxTries is the number of retries tolerated for tests run against
	// endpoints and services created by this config.
	MaxTries int
	// The ClusterIP of the Service reated by this test config.
	ClusterIP string
	// External ip of first node for use in nodePort testing.
	NodeIP string
	// The http/udp nodePorts of the Service.
	NodeHttpPort int
	NodeUdpPort  int
	// The kubernetes namespace within which all resources for this
	// config are created
	Namespace string
	// contains filtered or unexported fields
}

NetworkingTestConfig is a convenience class around some utility methods for testing kubeproxy/networking/services/endpoints.

func NewCoreNetworkingTestConfig added in v1.5.0

func NewCoreNetworkingTestConfig(f *Framework) *NetworkingTestConfig

NewNetworkingTestNodeE2EConfig creates and sets up a new test config helper for Node E2E.

func NewNetworkingTestConfig added in v1.5.0

func NewNetworkingTestConfig(f *Framework) *NetworkingTestConfig

NewNetworkingTestConfig creates and sets up a new test config helper.

func (*NetworkingTestConfig) DeleteNetProxyPod added in v1.5.0

func (config *NetworkingTestConfig) DeleteNetProxyPod()

func (*NetworkingTestConfig) DeleteNodePortService added in v1.5.0

func (config *NetworkingTestConfig) DeleteNodePortService()

func (*NetworkingTestConfig) DialFromContainer added in v1.5.0

func (config *NetworkingTestConfig) DialFromContainer(protocol, containerIP, targetIP string, containerHttpPort, targetPort, maxTries, minTries int, expectedEps sets.String)

DialFromContainers executes a curl via kubectl exec in a test container, which might then translate to a tcp or udp request based on the protocol argument in the url.

  • minTries is the minimum number of curl attempts required before declaring success. Set to 0 if you'd like to return as soon as all endpoints respond at least once.
  • maxTries is the maximum number of curl attempts. If this many attempts pass and we don't see all expected endpoints, the test fails.
  • expectedEps is the set of endpointnames to wait for. Typically this is also the hostname reported by each pod in the service through /hostName.

maxTries == minTries will confirm that we see the expected endpoints and no more for maxTries. Use this if you want to eg: fail a readiness check on a pod and confirm it doesn't show up as an endpoint.

func (*NetworkingTestConfig) DialFromEndpointContainer added in v1.5.0

func (config *NetworkingTestConfig) DialFromEndpointContainer(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String)

func (*NetworkingTestConfig) DialFromNode added in v1.5.0

func (config *NetworkingTestConfig) DialFromNode(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String)

DialFromNode executes a tcp or udp request based on protocol via kubectl exec in a test container running with host networking.

  • minTries is the minimum number of curl attempts required before declaring success. Set to 0 if you'd like to return as soon as all endpoints respond at least once.
  • maxTries is the maximum number of curl attempts. If this many attempts pass and we don't see all expected endpoints, the test fails.

maxTries == minTries will confirm that we see the expected endpoints and no more for maxTries. Use this if you want to eg: fail a readiness check on a pod and confirm it doesn't show up as an endpoint.

func (*NetworkingTestConfig) DialFromTestContainer added in v1.5.0

func (config *NetworkingTestConfig) DialFromTestContainer(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String)

func (*NetworkingTestConfig) EndpointHostnames added in v1.5.0

func (config *NetworkingTestConfig) EndpointHostnames() sets.String

EndpointHostnames returns a set of hostnames for existing endpoints.

func (*NetworkingTestConfig) GetSelfURL added in v1.5.0

func (config *NetworkingTestConfig) GetSelfURL(port int32, path string, expected string)

GetSelfURL executes a curl against the given path via kubectl exec into a test container running with host networking, and fails if the output doesn't match the expected string.

type NginxIngressController added in v1.6.0

type NginxIngressController struct {
	Ns string

	Client clientset.Interface
	// contains filtered or unexported fields
}

NginxIngressController manages implementation details of Ingress on Nginx.

func (*NginxIngressController) Init added in v1.6.0

func (cont *NginxIngressController) Init()

Init initializes the NginxIngressController

type NodeRuntimeOperationErrorRate

type NodeRuntimeOperationErrorRate map[string]*RuntimeOperationErrorRate

NodeRuntimeOperationErrorRate is the runtime operation error rate on one node.

type NodeTestContextType added in v1.4.0

type NodeTestContextType struct {
	// NodeE2E indicates whether it is running node e2e.
	NodeE2E bool
	// Name of the node to run tests on.
	NodeName string
	// NodeConformance indicates whether the test is running in node conformance mode.
	NodeConformance bool
	// PrepullImages indicates whether node e2e framework should prepull images.
	PrepullImages bool
	// KubeletConfig is the kubelet configuration the test is running against.
	KubeletConfig componentconfig.KubeletConfiguration
	// SystemSpecName is the name of the system spec (e.g., gke) that's used in
	// the node e2e test. If empty, the default one (system.DefaultSpec) is
	// used. The system specs are in test/e2e_node/system/specs/.
	SystemSpecName string
}

NodeTestContextType is part of TestContextType, it is shared by all node e2e test.

type NodesCPUSummary

type NodesCPUSummary map[string]ContainersCPUSummary

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

type PVCMap added in v1.6.0

type PVCMap map[types.NamespacedName]pvcval

type PVMap added in v1.6.0

type PVMap map[string]pvval

type PersistentVolumeClaimConfig added in v1.7.0

type PersistentVolumeClaimConfig struct {
	AccessModes      []v1.PersistentVolumeAccessMode
	Annotations      map[string]string
	Selector         *metav1.LabelSelector
	StorageClassName *string
}

type PersistentVolumeConfig added in v1.6.0

type PersistentVolumeConfig struct {
	PVSource         v1.PersistentVolumeSource
	Prebind          *v1.PersistentVolumeClaim
	ReclaimPolicy    v1.PersistentVolumeReclaimPolicy
	NamePrefix       string
	Labels           labels.Set
	StorageClassName string
	NodeAffinity     *v1.NodeAffinity
}

PersistentVolumeConfig is consumed by MakePersistentVolume() to generate a PV object for varying storage options (NFS, ceph, glusterFS, etc.). (+optional) prebind holds a pre-bound PVC Example pvSource:

pvSource: api.PersistentVolumeSource{
	NFS: &api.NFSVolumeSource{
 		...
 	},
 }

type PodClient added in v1.4.0

type PodClient struct {
	v1core.PodInterface
	// contains filtered or unexported fields
}

func (*PodClient) Create added in v1.4.0

func (c *PodClient) Create(pod *v1.Pod) *v1.Pod

Create creates a new pod according to the framework specifications (don't wait for it to start).

func (*PodClient) CreateBatch added in v1.4.0

func (c *PodClient) CreateBatch(pods []*v1.Pod) []*v1.Pod

CreateBatch create a batch of pods. All pods are created before waiting.

func (*PodClient) CreateSync added in v1.4.0

func (c *PodClient) CreateSync(pod *v1.Pod) *v1.Pod

CreateSync creates a new pod according to the framework specifications, and wait for it to start.

func (*PodClient) CreateSyncInNamespace added in v1.6.0

func (c *PodClient) CreateSyncInNamespace(pod *v1.Pod, namespace string) *v1.Pod

CreateSync creates a new pod according to the framework specifications in the given namespace, and waits for it to start.

func (*PodClient) DeleteSync added in v1.5.0

func (c *PodClient) DeleteSync(name string, options *metav1.DeleteOptions, timeout time.Duration)

DeleteSync deletes the pod and wait for the pod to disappear for `timeout`. If the pod doesn't disappear before the timeout, it will fail the test.

func (*PodClient) DeleteSyncInNamespace added in v1.6.0

func (c *PodClient) DeleteSyncInNamespace(name string, namespace string, options *metav1.DeleteOptions, timeout time.Duration)

DeleteSyncInNamespace deletes the pod from the namespace and wait for the pod to disappear for `timeout`. If the pod doesn't disappear before the timeout, it will fail the test.

func (*PodClient) MatchContainerOutput added in v1.5.0

func (c *PodClient) MatchContainerOutput(name string, containerName string, expectedRegexp string) error

MatchContainerOutput gets output of a container and match expected regexp in the output.

func (*PodClient) Update added in v1.4.0

func (c *PodClient) Update(name string, updateFn func(pod *v1.Pod))

Update updates the pod object. It retries if there is a conflict, throw out error if there is any other errors. name is the pod name, updateFn is the function updating the pod object.

func (*PodClient) WaitForErrorEventOrSuccess added in v1.6.0

func (c *PodClient) WaitForErrorEventOrSuccess(pod *v1.Pod) (*v1.Event, error)

WaitForSuccess waits for pod to succeed or an error event for that pod.

func (*PodClient) WaitForSuccess added in v1.5.0

func (c *PodClient) WaitForSuccess(name string, timeout time.Duration)

TODO(random-liu): Move pod wait function into this file WaitForSuccess waits for pod to succeed.

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"`
}

func (*PodStartupLatency) PrintHumanReadable added in v1.7.0

func (l *PodStartupLatency) PrintHumanReadable() string

func (*PodStartupLatency) PrintJSON added in v1.7.0

func (l *PodStartupLatency) PrintJSON() string

func (*PodStartupLatency) SummaryKind added in v1.7.0

func (l *PodStartupLatency) SummaryKind() string

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 []v1.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(v1.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 PortsByPodName added in v1.6.0

type PortsByPodName map[string][]int

type PortsByPodUID added in v1.6.0

type PortsByPodUID map[types.UID][]int

func GetContainerPortsByPodUID added in v1.6.0

func GetContainerPortsByPodUID(endpoints *v1.Endpoints) PortsByPodUID

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 clientset.Interface, 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

func (*ResourceUsageSummary) SummaryKind added in v1.7.0

func (s *ResourceUsageSummary) SummaryKind() 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 clientset.Interface) *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 IssueSSHCommandWithResult added in v1.4.6

func IssueSSHCommandWithResult(cmd, provider string, node *v1.Node) (*SSHResult, error)

func NodeExec added in v1.7.0

func NodeExec(nodeName, cmd string) (SSHResult, error)

NodeExec execs the given cmd on node via SSH. Note that the nodeName is an sshable name, eg: the name returned by framework.GetMasterHost(). This is also not guaranteed to work across cloud providers since it involves ssh.

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"`
}

func VerifySchedulerLatency

func VerifySchedulerLatency(c clientset.Interface) (*SchedulingLatency, error)

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

func (*SchedulingLatency) PrintHumanReadable added in v1.7.0

func (l *SchedulingLatency) PrintHumanReadable() string

func (*SchedulingLatency) PrintJSON added in v1.7.0

func (l *SchedulingLatency) PrintJSON() string

func (*SchedulingLatency) SummaryKind added in v1.7.0

func (l *SchedulingLatency) SummaryKind() string

type ServiceTestFixture added in v1.6.0

type ServiceTestFixture struct {
	ServiceName string
	Namespace   string
	Client      clientset.Interface

	TestId string
	Labels map[string]string

	Name  string
	Image string
	// contains filtered or unexported fields
}

Simple helper class to avoid too much boilerplate in tests

func NewServerTest added in v1.6.0

func NewServerTest(client clientset.Interface, namespace string, serviceName string) *ServiceTestFixture

func (*ServiceTestFixture) BuildServiceSpec added in v1.6.0

func (t *ServiceTestFixture) BuildServiceSpec() *v1.Service

Build default config for a service (which can then be changed)

func (*ServiceTestFixture) Cleanup added in v1.6.0

func (t *ServiceTestFixture) Cleanup() []error

func (*ServiceTestFixture) CreateRC added in v1.6.0

CreateRC creates a replication controller and records it for cleanup.

func (*ServiceTestFixture) CreateService added in v1.6.0

func (t *ServiceTestFixture) CreateService(service *v1.Service) (*v1.Service, error)

Create a service, and record it for cleanup

func (*ServiceTestFixture) CreateWebserverRC added in v1.6.0

func (t *ServiceTestFixture) CreateWebserverRC(replicas int32) *v1.ReplicationController

CreateWebserverRC creates rc-backed pods with the well-known webserver configuration and records it for cleanup.

func (*ServiceTestFixture) DeleteService added in v1.6.0

func (t *ServiceTestFixture) DeleteService(serviceName string) error

Delete a service, and remove it from the cleanup list

type ServiceTestJig added in v1.6.0

type ServiceTestJig struct {
	ID     string
	Name   string
	Client clientset.Interface
	Labels map[string]string
}

A test jig to help service testing.

func NewServiceTestJig added in v1.6.0

func NewServiceTestJig(client clientset.Interface, name string) *ServiceTestJig

NewServiceTestJig allocates and inits a new ServiceTestJig.

func (*ServiceTestJig) AddRCAntiAffinity added in v1.7.0

func (j *ServiceTestJig) AddRCAntiAffinity(rc *v1.ReplicationController)

func (*ServiceTestJig) ChangeServiceNodePortOrFail added in v1.6.0

func (j *ServiceTestJig) ChangeServiceNodePortOrFail(namespace, name string, initial int) *v1.Service

func (*ServiceTestJig) ChangeServiceType added in v1.6.0

func (j *ServiceTestJig) ChangeServiceType(namespace, name string, newType v1.ServiceType, timeout time.Duration)

func (*ServiceTestJig) CreateLoadBalancerService added in v1.7.0

func (j *ServiceTestJig) CreateLoadBalancerService(namespace, serviceName string, timeout time.Duration, tweak func(svc *v1.Service)) *v1.Service

CreateLoadBalancerService creates a loadbalancer service and waits for it to acquire an ingress IP.

func (*ServiceTestJig) CreateOnlyLocalLoadBalancerService added in v1.6.0

func (j *ServiceTestJig) CreateOnlyLocalLoadBalancerService(namespace, serviceName string, timeout time.Duration, createPod bool,
	tweak func(svc *v1.Service)) *v1.Service

CreateOnlyLocalLoadBalancerService creates a loadbalancer service with ExternalTrafficPolicy set to Local and waits for it to acquire an ingress IP. If createPod is true, it also creates an RC with 1 replica of the standard netexec container used everywhere in this test.

func (*ServiceTestJig) CreateOnlyLocalNodePortService added in v1.6.0

func (j *ServiceTestJig) CreateOnlyLocalNodePortService(namespace, serviceName string, createPod bool) *v1.Service

CreateOnlyLocalNodePortService creates a NodePort service with ExternalTrafficPolicy set to Local and sanity checks its nodePort. If createPod is true, it also creates an RC with 1 replica of the standard netexec container used everywhere in this test.

func (*ServiceTestJig) CreatePDBOrFail added in v1.7.0

func (j *ServiceTestJig) CreatePDBOrFail(namespace string, rc *v1.ReplicationController) *policyv1beta1.PodDisruptionBudget

func (*ServiceTestJig) CreateTCPServiceOrFail added in v1.6.0

func (j *ServiceTestJig) CreateTCPServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service

CreateTCPServiceOrFail creates a new TCP Service based on the jig's defaults. Callers can provide a function to tweak the Service object before it is created.

func (*ServiceTestJig) CreateTCPServiceWithPort added in v1.6.0

func (j *ServiceTestJig) CreateTCPServiceWithPort(namespace string, tweak func(svc *v1.Service), port int32) *v1.Service

CreateTCPServiceWithPort creates a new TCP Service with given port based on the jig's defaults. Callers can provide a function to tweak the Service object before it is created.

func (*ServiceTestJig) CreateUDPServiceOrFail added in v1.6.0

func (j *ServiceTestJig) CreateUDPServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service

CreateUDPServiceOrFail creates a new UDP Service based on the jig's defaults. Callers can provide a function to tweak the Service object before it is created.

func (*ServiceTestJig) GetEndpointNodes added in v1.6.0

func (j *ServiceTestJig) GetEndpointNodes(svc *v1.Service) map[string][]string

GetEndpointNodes returns a map of nodenames:external-ip on which the endpoints of the given Service are running.

func (*ServiceTestJig) GetHTTPContent added in v1.6.0

func (j *ServiceTestJig) GetHTTPContent(host string, port int, timeout time.Duration, url string) bytes.Buffer

func (*ServiceTestJig) GetNodes added in v1.6.0

func (j *ServiceTestJig) GetNodes(maxNodesForTest int) (nodes *v1.NodeList)

getNodes returns the first maxNodesForTest nodes. Useful in large clusters where we don't eg: want to create an endpoint per node.

func (*ServiceTestJig) GetNodesNames added in v1.6.0

func (j *ServiceTestJig) GetNodesNames(maxNodesForTest int) []string

func (*ServiceTestJig) LaunchEchoserverPodOnNode added in v1.6.0

func (j *ServiceTestJig) LaunchEchoserverPodOnNode(f *Framework, nodeName, podName string)

LaunchEchoserverPodOnNode launches a pod serving http on port 8080 to act as the target for source IP preservation test. The client's source ip would be echoed back by the web server.

func (*ServiceTestJig) LaunchNetexecPodOnNode added in v1.6.0

func (j *ServiceTestJig) LaunchNetexecPodOnNode(f *Framework, nodeName, podName string, httpPort, udpPort int32, hostNetwork bool)

func (*ServiceTestJig) RunOrFail added in v1.6.0

func (j *ServiceTestJig) RunOrFail(namespace string, tweak func(rc *v1.ReplicationController)) *v1.ReplicationController

RunOrFail creates a ReplicationController and Pod(s) and waits for the Pod(s) to be running. Callers can provide a function to tweak the RC object before it is created.

func (*ServiceTestJig) SanityCheckService added in v1.6.0

func (j *ServiceTestJig) SanityCheckService(svc *v1.Service, svcType v1.ServiceType)

func (*ServiceTestJig) TestHTTPHealthCheckNodePort added in v1.6.0

func (j *ServiceTestJig) TestHTTPHealthCheckNodePort(host string, port int, request string, timeout time.Duration, expectSucceed bool, threshold int) error

func (*ServiceTestJig) TestNotReachableHTTP added in v1.6.0

func (j *ServiceTestJig) TestNotReachableHTTP(host string, port int, timeout time.Duration)

func (*ServiceTestJig) TestNotReachableUDP added in v1.6.0

func (j *ServiceTestJig) TestNotReachableUDP(host string, port int, timeout time.Duration)

func (*ServiceTestJig) TestReachableHTTP added in v1.6.0

func (j *ServiceTestJig) TestReachableHTTP(host string, port int, timeout time.Duration)

func (*ServiceTestJig) TestReachableUDP added in v1.6.0

func (j *ServiceTestJig) TestReachableUDP(host string, port int, timeout time.Duration)

func (*ServiceTestJig) UpdateService added in v1.6.0

func (j *ServiceTestJig) UpdateService(namespace, name string, update func(*v1.Service)) (*v1.Service, error)

UpdateService fetches a service, calls the update function on it, and then attempts to send the updated service. It tries up to 3 times in the face of timeouts and conflicts.

func (*ServiceTestJig) UpdateServiceOrFail added in v1.6.0

func (j *ServiceTestJig) UpdateServiceOrFail(namespace, name string, update func(*v1.Service)) *v1.Service

UpdateServiceOrFail fetches a service, calls the update function on it, and then attempts to send the updated service. It tries up to 3 times in the face of timeouts and conflicts.

func (*ServiceTestJig) WaitForEndpointOnNode added in v1.6.0

func (j *ServiceTestJig) WaitForEndpointOnNode(namespace, serviceName, nodeName string)

func (*ServiceTestJig) WaitForLoadBalancerDestroyOrFail added in v1.6.0

func (j *ServiceTestJig) WaitForLoadBalancerDestroyOrFail(namespace, name string, ip string, port int, timeout time.Duration) *v1.Service

func (*ServiceTestJig) WaitForLoadBalancerOrFail added in v1.6.0

func (j *ServiceTestJig) WaitForLoadBalancerOrFail(namespace, name string, timeout time.Duration) *v1.Service

type SingleContainerSummary

type SingleContainerSummary struct {
	Name string
	Cpu  float64
	Mem  uint64
}

type SingleLogSummary

type SingleLogSummary struct {
	AverageGenerationRate int
	NumberOfProbes        int
}

type StatefulSetTester added in v1.6.0

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

StatefulSetTester is a struct that contains utility methods for testing StatefulSet related functionality. It uses a clientset.Interface to communicate with the API server.

func NewStatefulSetTester added in v1.6.0

func NewStatefulSetTester(c clientset.Interface) *StatefulSetTester

NewStatefulSetTester creates a StatefulSetTester that uses c to interact with the API server.

func (*StatefulSetTester) BreakHttpProbe added in v1.7.3

func (s *StatefulSetTester) BreakHttpProbe(ss *apps.StatefulSet) error

BreakHttpProbe breaks the readiness probe for Nginx StatefulSet containers in ss.

func (*StatefulSetTester) BreakPodHttpProbe added in v1.7.3

func (s *StatefulSetTester) BreakPodHttpProbe(ss *apps.StatefulSet, pod *v1.Pod) error

BreakPodHttpProbe breaks the readiness probe for Nginx StatefulSet containers in one pod.

func (*StatefulSetTester) CheckHostname added in v1.6.0

func (s *StatefulSetTester) CheckHostname(ss *apps.StatefulSet) error

CheckHostname verifies that all Pods in ss have the correct Hostname. If the returned error is not nil than verification failed.

func (*StatefulSetTester) CheckMount added in v1.6.0

func (s *StatefulSetTester) CheckMount(ss *apps.StatefulSet, mountPath string) error

CheckMount checks that the mount at mountPath is valid for all Pods in ss.

func (*StatefulSetTester) CheckServiceName added in v1.6.0

func (p *StatefulSetTester) CheckServiceName(ss *apps.StatefulSet, expectedServiceName string) error

CheckServiceName asserts that the ServiceName for ss is equivalent to expectedServiceName.

func (*StatefulSetTester) ConfirmStatefulPodCount added in v1.6.0

func (s *StatefulSetTester) ConfirmStatefulPodCount(count int, ss *apps.StatefulSet, timeout time.Duration, hard bool)

ConfirmStatefulPodCount asserts that the current number of Pods in ss is count waiting up to timeout for ss to to scale to count.

func (*StatefulSetTester) CreateStatefulSet added in v1.6.0

func (s *StatefulSetTester) CreateStatefulSet(manifestPath, ns string) *apps.StatefulSet

CreateStatefulSet creates a StatefulSet from the manifest at manifestPath in the Namespace ns using kubectl create.

func (*StatefulSetTester) DeleteStatefulPodAtIndex added in v1.6.0

func (s *StatefulSetTester) DeleteStatefulPodAtIndex(index int, ss *apps.StatefulSet)

DeleteStatefulPodAtIndex deletes the Pod with ordinal index in ss.

func (*StatefulSetTester) ExecInStatefulPods added in v1.6.0

func (s *StatefulSetTester) ExecInStatefulPods(ss *apps.StatefulSet, cmd string) error

ExecInStatefulPods executes cmd in all Pods in ss. If a error occurs it is returned and cmd is not execute in any subsequent Pods.

func (*StatefulSetTester) GetPodList added in v1.6.0

func (s *StatefulSetTester) GetPodList(ss *apps.StatefulSet) *v1.PodList

GetPodList gets the current Pods in ss.

func (*StatefulSetTester) GetStatefulSet added in v1.7.0

func (s *StatefulSetTester) GetStatefulSet(namespace, name string) *apps.StatefulSet

GetStatefulSet gets the StatefulSet named name in namespace.

func (*StatefulSetTester) PauseNewPods added in v1.7.3

func (s *StatefulSetTester) PauseNewPods(ss *apps.StatefulSet)

PauseNewPods adds an always-failing ReadinessProbe to the StatefulSet PodTemplate. This causes all newly-created Pods to stay Unready until they are manually resumed with ResumeNextPod(). Note that this cannot be used together with SetHttpProbe().

func (*StatefulSetTester) Restart added in v1.6.0

func (s *StatefulSetTester) Restart(ss *apps.StatefulSet)

Restart scales ss to 0 and then back to its previous number of replicas.

func (*StatefulSetTester) RestoreHttpProbe added in v1.7.3

func (s *StatefulSetTester) RestoreHttpProbe(ss *apps.StatefulSet) error

RestoreHttpProbe restores the readiness probe for Nginx StatefulSet containers in ss.

func (*StatefulSetTester) RestorePodHttpProbe added in v1.7.3

func (s *StatefulSetTester) RestorePodHttpProbe(ss *apps.StatefulSet, pod *v1.Pod) error

RestorePodHttpProbe restores the readiness probe for Nginx StatefulSet containers in pod.

func (*StatefulSetTester) ResumeNextPod added in v1.7.3

func (s *StatefulSetTester) ResumeNextPod(ss *apps.StatefulSet)

ResumeNextPod allows the next Pod in the StatefulSet to continue by removing the ReadinessProbe added by PauseNewPods(), if it's still there. It fails the test if it finds any pods that are not in phase Running, or if it finds more than one paused Pod existing at the same time. This is a no-op if there are no paused pods.

func (*StatefulSetTester) Saturate added in v1.6.0

func (s *StatefulSetTester) Saturate(ss *apps.StatefulSet)

Saturate waits for all Pods in ss to become Running and Ready.

func (*StatefulSetTester) Scale added in v1.6.0

func (s *StatefulSetTester) Scale(ss *apps.StatefulSet, count int32) (*apps.StatefulSet, error)

Scale scales ss to count replicas.

func (*StatefulSetTester) SetHttpProbe added in v1.7.3

func (s *StatefulSetTester) SetHttpProbe(ss *apps.StatefulSet)

SetHttpProbe sets the pod template's ReadinessProbe for Nginx StatefulSet containers. This probe can then be controlled with BreakHttpProbe() and RestoreHttpProbe(). Note that this cannot be used together with PauseNewPods().

func (*StatefulSetTester) SortStatefulPods added in v1.7.0

func (s *StatefulSetTester) SortStatefulPods(pods *v1.PodList)

SortStatefulPods sorts pods by their ordinals

func (*StatefulSetTester) UpdateReplicas added in v1.6.0

func (s *StatefulSetTester) UpdateReplicas(ss *apps.StatefulSet, count int32)

UpdateReplicas updates the replicas of ss to count.

func (*StatefulSetTester) VerifyPodAtIndex added in v1.6.0

func (s *StatefulSetTester) VerifyPodAtIndex(index int, ss *apps.StatefulSet, verify VerifyStatefulPodFunc)

VerifyPodAtIndex applies a visitor patter to the Pod at index in ss. verify is is applied to the Pod to "visit" it.

func (*StatefulSetTester) WaitForPartitionedRollingUpdate added in v1.7.0

func (s *StatefulSetTester) WaitForPartitionedRollingUpdate(set *apps.StatefulSet) (*apps.StatefulSet, *v1.PodList)

WaitForPartitionedRollingUpdate waits for all Pods in set to exist and have the correct revision. set must have a RollingUpdateStatefulSetStrategyType with a non-nil RollingUpdate and Partition. All Pods with ordinals less than or equal to the Partition are expected to be at set's current revision. All other Pods are expected to be at its update revision.

func (*StatefulSetTester) WaitForPodNotReady added in v1.7.0

func (s *StatefulSetTester) WaitForPodNotReady(set *apps.StatefulSet, podName string) (*apps.StatefulSet, *v1.PodList)

WaitForPodNotReady waist for the Pod named podName in set to exist and to not have a Ready condition.

func (*StatefulSetTester) WaitForPodReady added in v1.7.0

func (s *StatefulSetTester) WaitForPodReady(set *apps.StatefulSet, podName string) (*apps.StatefulSet, *v1.PodList)

WaitForPodReady waits for the Pod named podName in set to exist and have a Ready condition.

func (*StatefulSetTester) WaitForRollingUpdate added in v1.7.0

func (s *StatefulSetTester) WaitForRollingUpdate(set *apps.StatefulSet) (*apps.StatefulSet, *v1.PodList)

WaitForRollingUpdate waits for all Pods in set to exist and have the correct revision and for the RollingUpdate to complete. set must have a RollingUpdateStatefulSetStrategyType.

func (*StatefulSetTester) WaitForRunning added in v1.7.3

func (s *StatefulSetTester) WaitForRunning(numPodsRunning, numPodsReady int32, ss *apps.StatefulSet)

WaitForRunning waits for numPodsRunning in ss to be Running and for the first numPodsReady ordinals to be Ready.

func (*StatefulSetTester) WaitForRunningAndNotReady added in v1.6.0

func (s *StatefulSetTester) WaitForRunningAndNotReady(numStatefulPods int32, ss *apps.StatefulSet)

WaitForRunningAndReady waits for numStatefulPods in ss to be Running and not Ready.

func (*StatefulSetTester) WaitForRunningAndReady added in v1.6.0

func (s *StatefulSetTester) WaitForRunningAndReady(numStatefulPods int32, ss *apps.StatefulSet)

WaitForRunningAndReady waits for numStatefulPods in ss to be Running and Ready.

func (*StatefulSetTester) WaitForState added in v1.7.0

func (s *StatefulSetTester) WaitForState(ss *apps.StatefulSet, until func(*apps.StatefulSet, *v1.PodList) (bool, error))

WaitForState periodically polls for the ss and its pods until the until function returns either true or an error

func (*StatefulSetTester) WaitForStatus added in v1.6.0

func (s *StatefulSetTester) WaitForStatus(set *apps.StatefulSet) *apps.StatefulSet

WaitForStatus waits for the StatefulSetStatus's ObservedGeneration to be greater than or equal to set's Generation. The returned StatefulSet contains such a StatefulSetStatus

func (*StatefulSetTester) WaitForStatusReadyReplicas added in v1.7.0

func (s *StatefulSetTester) WaitForStatusReadyReplicas(ss *apps.StatefulSet, expectedReplicas int32)

WaitForStatusReadyReplicas waits for the ss.Status.ReadyReplicas to be equal to expectedReplicas

func (*StatefulSetTester) WaitForStatusReplicas added in v1.7.0

func (s *StatefulSetTester) WaitForStatusReplicas(ss *apps.StatefulSet, expectedReplicas int32)

WaitForStatusReplicas waits for the ss.Status.Replicas to be equal to expectedReplicas

type TestContextType

type TestContextType struct {
	KubeConfig         string
	KubeContext        string
	KubeAPIContentType string
	KubeVolumeDir      string
	CertDir            string
	Host               string
	// TODO: Deprecating this over time... instead just use gobindata_util.go , see #23987.
	RepoRoot string

	Provider       string
	CloudConfig    CloudConfig
	KubectlPath    string
	OutputDir      string
	ReportDir      string
	ReportPrefix   string
	Prefix         string
	MinStartupPods int
	// Timeout for waiting for system pods to be running
	SystemPodsStartupTimeout time.Duration
	UpgradeTarget            string
	EtcdUpgradeStorage       string
	EtcdUpgradeVersion       string
	UpgradeImage             string
	GCEUpgradeScript         string
	PrometheusPushGateway    string
	ContainerRuntime         string
	ContainerRuntimeEndpoint string
	ImageServiceEndpoint     string
	MasterOSDistro           string
	NodeOSDistro             string
	VerifyServiceAccount     bool
	DeleteNamespace          bool
	DeleteNamespaceOnFailure bool
	AllowedNotReadyNodes     int
	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
	GatherSuiteMetricsAfterTest       bool
	// Currently supported values are 'hr' for human-readable and 'json'. It's a comma separated list.
	OutputPrintType string
	// NodeSchedulableTimeout is the timeout for waiting for all nodes to be schedulable.
	NodeSchedulableTimeout time.Duration
	// 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
	// Disables dumping cluster log from master and nodes after all tests.
	DisableLogDump bool
	// If the garbage collector is enabled in the kube-apiserver and kube-controller-manager.
	GarbageCollectorEnabled bool
	// FeatureGates is a set of key=value pairs that describe feature gates for alpha/experimental features.
	FeatureGates string
	// Node e2e specific test context
	NodeTestContextType
	// Federation e2e context
	FederatedKubeContext string
	// Federation control plane version to upgrade to while doing upgrade tests
	FederationUpgradeTarget string
	// Whether configuration for accessing federation member clusters should be sourced from the host cluster
	FederationConfigFromCluster bool

	Viper    string
	Cadvisor struct {
		MaxRetries      int
		SleepDurationMS int
	}

	LoggingSoak struct {
		Scale                    int
		MilliSecondsBetweenWaves int
	}
}
var TestContext TestContextType

type TestDataSummary

type TestDataSummary interface {
	SummaryKind() string
	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 VerifyStatefulPodFunc added in v1.6.0

type VerifyStatefulPodFunc func(*v1.Pod)

VerifyStatefulPodFunc is a func that examines a StatefulSetPod.

type VolumeTest added in v1.7.0

type VolumeTest struct {
	Volume          v1.VolumeSource
	File            string
	ExpectedContent string
}

VolumeTest contains a volume to mount into a client pod and its expected content.

type VolumeTestConfig added in v1.7.0

type VolumeTestConfig struct {
	Namespace string
	// Prefix of all pods. Typically the test name.
	Prefix string
	// Name of container image for the server pod.
	ServerImage string
	// Ports to export from the server pod. TCP only.
	ServerPorts []int
	// Commands to run in the container image.
	ServerCmds []string
	// Arguments to pass to the container image.
	ServerArgs []string
	// Volumes needed to be mounted to the server container from the host
	// map <host (source) path> -> <container (dst.) path>
	ServerVolumes map[string]string
	// Wait for the pod to terminate successfully
	// False indicates that the pod is long running
	WaitForCompletion bool
	// NodeName to run pod on.  Default is any node.
	NodeName string
}

Configuration of one tests. The test consist of: - server pod - runs serverImage, exports ports[] - client pod - does not need any special configuration

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.

Directories

Path Synopsis
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string.
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string.

Jump to

Keyboard shortcuts

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