Documentation ¶
Overview ¶
This is a utility for prometheus pushing functionality.
Index ¶
- Constants
- Variables
- func AddOrUpdateLabelOnNode(c *client.Client, nodeName string, labelKey string, labelValue string)
- func AddOrUpdateTaintOnNode(c *client.Client, nodeName string, taint api.Taint)
- func AllNodesReady(c *client.Client, timeout time.Duration) error
- func ApiCallToPerfData(apicalls APIResponsiveness) *perftype.PerfData
- func AssertCleanup(ns string, selectors ...string)
- func BadEvents(events []*api.Event) int
- func BlockNetwork(from string, to string)
- func CPUUsageToPerfData(usagePerNode NodesCPUSummary) *perftype.PerfData
- func CheckConnectivityToHost(f *Framework, nodeName, podName, host string, timeout int) error
- func CheckInvariants(events []watch.Event, fns ...InvariantFunc) error
- func CheckNewRSAnnotations(c clientset.Interface, ns, deploymentName string, ...) error
- func CheckNodesReady(c *client.Client, nt time.Duration, expect int) ([]string, error)
- func CheckPodHashLabel(pods *api.PodList) error
- func CheckPodsCondition(c *client.Client, ns string, podNames []string, timeout time.Duration, ...) bool
- func CheckPodsRunningReady(c *client.Client, ns string, podNames []string, timeout time.Duration) bool
- func CheckPodsRunningReadyOrSucceeded(c *client.Client, ns string, podNames []string, timeout time.Duration) bool
- func CheckRSHashLabel(rs *extensions.ReplicaSet) error
- func CheckTestingNSDeletedExcept(c *client.Client, skip string) error
- func Cleanup(filePath, ns string, selectors ...string)
- func ContainerInitInvariant(older, newer runtime.Object) error
- func CoreDump(dir string)
- func CreateTestingNS(baseName string, c *client.Client, labels map[string]string) (*api.Namespace, error)
- func DeleteNamespaces(c *client.Client, deleteFilter, skipFilter []string) ([]string, error)
- func DeleteRC(c *client.Client, ns, name string) error
- func DeleteReplicaSet(c *client.Client, ns, name string) error
- func DumpAllNamespaceInfo(c *client.Client, namespace string)
- func DumpNodeDebugInfo(c *client.Client, nodeNames []string)
- func EnsureLoadBalancerResourcesDeleted(ip, portRange string) error
- func ExpectNoError(err error, explain ...interface{})
- func ExpectNodeHasLabel(c *client.Client, nodeName string, labelKey string, labelValue string)
- func ExpectNodeHasTaint(c *client.Client, nodeName string, taintKey string)
- func FailedContainers(pod *api.Pod) map[string]ContainerFailures
- func Failf(format string, args ...interface{})
- func FilterNodes(nodeList *api.NodeList, fn func(node api.Node) bool)
- func FormatRuntimeOperationErrorRate(nodesResult map[string]NodeRuntimeOperationErrorRate) string
- func GetHostExternalAddress(client *client.Client, p *api.Pod) (externalAddress string, err error)
- func GetKubeletHeapStats(c *client.Client, nodeName string) (string, error)
- func GetKubeletPods(c *client.Client, node string) (*api.PodList, error)
- func GetKubeletRunningPods(c *client.Client, node string) (*api.PodList, error)
- func GetMasterHost() string
- func GetNodePortURL(client *client.Client, ns, name string, svcPort int) (string, error)
- func GetPauseImageName(c *client.Client) string
- func GetPauseImageNameForHostArch() string
- func GetPodLogs(c *client.Client, namespace, podName, containerName string) (string, error)
- func GetPodsInNamespace(c *client.Client, ns string, ignoreLabels map[string]string) ([]*api.Pod, error)
- func GetReadySchedulableNodesOrDie(c *client.Client) (nodes *api.NodeList)
- func GetServerArchitecture(c *client.Client) string
- func GetServicesProxyRequest(c *client.Client, request *restclient.Request) (*restclient.Request, error)
- func GetSigner(provider string) (ssh.Signer, error)
- func GetValidDNSSubdomainName(name string) (string, error)
- func HighLatencyRequests(c *client.Client) (int, error)
- func IsNodeConditionSetAsExpected(node *api.Node, conditionType api.NodeConditionType, wantTrue bool) bool
- func IsNodeConditionSetAsExpectedSilent(node *api.Node, conditionType api.NodeConditionType, wantTrue bool) bool
- func IsNodeConditionUnset(node *api.Node, conditionType api.NodeConditionType) bool
- func IssueSSHCommand(cmd, provider string, node *api.Node) error
- func KubeDescribe(text string, body func()) bool
- func KubectlCmd(args ...string) *exec.Cmd
- func KubectlVersion() (semver.Version, error)
- func KubectlVersionGTE(v semver.Version) (bool, error)
- func LaunchHostExecPod(client *client.Client, ns, name string) *api.Pod
- func LaunchWebserverPod(f *Framework, podName, nodeName string) (ip string)
- func LoadClient() (*client.Client, error)
- func LoadConfig() (*restclient.Config, error)
- func LoadFederatedConfig() (*restclient.Config, error)
- func LoadFederationClient() (*unversionedfederation.FederationClient, error)
- func LoadFederationClientset() (*federation_internalclientset.Clientset, error)
- func LoadFederationClientset_1_3() (*federation_release_1_3.Clientset, error)
- func LogContainersInPodsWithLabels(c *client.Client, ns string, match map[string]string, containerSubstr string)
- func LogFailedContainers(c *client.Client, ns string)
- func LogPodsWithLabels(c *client.Client, ns string, match map[string]string)
- func LogSSHResult(result SSHResult)
- func LogSuspiciousLatency(latencyData []PodLatencyData, latencyDataLag []PodLatencyData, nodeCount int, ...)
- func Logf(format string, args ...interface{})
- func LookForString(expectedString string, timeout time.Duration, fn func() string) (result string, err error)
- func LookForStringInFile(ns, podName, container, file, expectedString string, timeout time.Duration) (result string, err error)
- func LookForStringInLog(ns, podName, container, expectedString string, timeout time.Duration) (result string, err error)
- func LookForStringInPodExec(ns, podName string, command []string, expectedString string, ...) (result string, err error)
- func MigRollingUpdate(tmpl string, nt time.Duration) error
- func MigTemplate() (string, error)
- func NewHostExecPodSpec(ns, name string) *api.Pod
- func NewKubectlCommand(args ...string) *kubectlBuilder
- func NewResourceUsageGatherer(c *client.Client, options ResourceGathererOptions) (*containerResourceGatherer, error)
- func NodeAddresses(nodelist *api.NodeList, addrType api.NodeAddressType) []string
- func NodeProxyRequest(c *client.Client, node, endpoint string) (restclient.Result, error)
- func NodeSSHHosts(c *client.Client) ([]string, error)
- func OpenWebSocketForURL(url *url.URL, config *restclient.Config, protocols []string) (*websocket.Conn, error)
- func ParseKVLines(output, key string) string
- func PodNotReady(p *api.Pod) (bool, error)
- func PodProxyResponseChecker(c *client.Client, ns string, label labels.Selector, controllerName string, ...) podProxyResponseChecker
- func PodRunningReady(p *api.Pod) (bool, error)
- func PodRunningReadyOrSucceeded(p *api.Pod) (bool, error)
- func PodsCreated(c *client.Client, ns, name string, replicas int32) (*api.PodList, error)
- func PodsResponding(c *client.Client, ns, name string, wantName bool, pods *api.PodList) error
- func PrettyPrintJSON(metrics interface{}) string
- func PrintAllKubeletPods(c *client.Client, nodeName string)
- func PrintLatencies(latencies []PodLatencyData, header string)
- func PrintPerfData(p *perftype.PerfData)
- func ProviderIs(providers ...string) bool
- func ReadOrDie(filePath string) []byte
- func RegisterClusterFlags()
- func RegisterCommonFlags()
- func RegisterNodeFlags()
- func RemoveCleanupAction(p CleanupActionHandle)
- func RemoveLabelOffNode(c *client.Client, nodeName string, labelKey string)
- func RemoveTaintOffNode(c *client.Client, nodeName string, taintKey string)
- func ResetMetrics(c *client.Client) error
- func ResourceUsageToPerfData(usagePerNode ResourceUsagePerNode) *perftype.PerfData
- func RestartApiserver(c *client.Client) error
- func RestartKubeProxy(host string) error
- func RunCleanupActions()
- func RunCmd(command string, args ...string) (string, string, error)
- func RunDeployment(config DeploymentConfig) error
- func RunHostCmd(ns, name, cmd string) (string, error)
- func RunHostCmdOrDie(ns, name, cmd string) string
- func RunKubectl(args ...string) (string, error)
- func RunKubectlOrDie(args ...string) string
- func RunKubectlOrDieInput(data string, args ...string) string
- func RunKubernetesServiceTestContainer(c *client.Client, repoRoot string, ns string)
- func RunRC(config RCConfig) error
- func RunReplicaSet(config ReplicaSetConfig) error
- func ScaleRC(c *client.Client, ns, name string, size uint, wait bool) error
- func ScaleRCByLabels(client *client.Client, ns string, l map[string]string, replicas uint) error
- func ServerVersionGTE(v semver.Version, c discovery.ServerVersionInterface) (bool, error)
- func ServiceResponding(c *client.Client, ns, name string) error
- func SkipIfContainerRuntimeIs(runtimes ...string)
- func SkipIfProviderIs(unsupportedProviders ...string)
- func SkipUnlessAtLeast(value int, minValue int, message string)
- func SkipUnlessFederated(c *client.Client)
- func SkipUnlessNodeCountIsAtLeast(minNodeCount int)
- func SkipUnlessProviderIs(supportedProviders ...string)
- func SkipUnlessServerVersionGTE(v semver.Version, c discovery.ServerVersionInterface)
- func Skipf(format string, args ...interface{})
- func StartCmdAndStreamOutput(cmd *exec.Cmd) (stdout, stderr io.ReadCloser, err error)
- func StartPods(c *client.Client, replicas int, namespace string, podNamePrefix string, ...)
- func TargetContainers() []string
- func TestContainerOutput(scenarioName string, c *client.Client, pod *api.Pod, containerIndex int, ...)
- func TryKill(cmd *exec.Cmd)
- func UnblockNetwork(from string, to string)
- func UpdateDeploymentWithRetries(c *clientset.Clientset, namespace, name string, ...) (deployment *extensions.Deployment, err error)
- func UpdatePodWithRetries(client *client.Client, ns, name string, update func(*api.Pod)) (*api.Pod, error)
- func ValidateController(c *client.Client, containerImage string, replicas int, containername string, ...)
- func VerifyPodStartupLatency(latency PodStartupLatency) error
- func VerifyPods(c *client.Client, ns, name string, wantName bool, replicas int32) error
- func VerifySchedulerLatency(c *client.Client) error
- func WaitForAllNodesSchedulable(c *client.Client) error
- func WaitForApiserverUp(c *client.Client) error
- func WaitForClusterSize(c *client.Client, size int, timeout time.Duration) error
- func WaitForDefaultServiceAccountInNamespace(c *client.Client, namespace string) error
- func WaitForDeploymentOldRSsNum(c *clientset.Clientset, ns, deploymentName string, desiredRSNum int) error
- func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName string, revision, image string) error
- func WaitForDeploymentRollbackCleared(c clientset.Interface, ns, deploymentName string) error
- func WaitForDeploymentStatus(c clientset.Interface, d *extensions.Deployment, expectComplete bool) error
- func WaitForDeploymentUpdatedReplicasLTE(c clientset.Interface, ns, deploymentName string, minUpdatedReplicas int, ...) error
- func WaitForEndpoint(c *client.Client, ns, name string) error
- func WaitForEvents(c *client.Client, ns string, objOrRef runtime.Object, desiredEventsCount int) error
- func WaitForFederationApiserverReady(c *federation_internalclientset.Clientset) error
- func WaitForIngressAddress(c *client.Client, ns, ingName string, timeout time.Duration) (string, error)
- func WaitForMatchPodsCondition(c *client.Client, opts api.ListOptions, desc string, timeout time.Duration, ...) error
- func WaitForNamespacesDeleted(c *client.Client, namespaces []string, timeout time.Duration) error
- func WaitForNodeToBe(c *client.Client, name string, conditionType api.NodeConditionType, ...) bool
- func WaitForNodeToBeNotReady(c *client.Client, name string, timeout time.Duration) bool
- func WaitForNodeToBeReady(c *client.Client, name string, timeout time.Duration) bool
- func WaitForObservedDeployment(c *clientset.Clientset, ns, deploymentName string, desiredGeneration int64) error
- func WaitForPartialEvents(c *client.Client, ns string, objOrRef runtime.Object, atLeastEventsCount int) error
- func WaitForPersistentVolumeClaimPhase(phase api.PersistentVolumeClaimPhase, c *client.Client, ns string, ...) error
- func WaitForPersistentVolumeDeleted(c *client.Client, pvName string, Poll, timeout time.Duration) error
- func WaitForPersistentVolumePhase(phase api.PersistentVolumePhase, c *client.Client, pvName string, ...) error
- func WaitForPodNameRunningInNamespace(c *client.Client, podName, namespace string) error
- func WaitForPodNoLongerRunningInNamespace(c *client.Client, podName, namespace, resourceVersion string) error
- func WaitForPodNotPending(c *client.Client, ns, podName, resourceVersion string) error
- func WaitForPodRunningInNamespace(c *client.Client, pod *api.Pod) error
- func WaitForPodSuccessInNamespace(c *client.Client, podName string, contName string, namespace string) error
- func WaitForPodSuccessInNamespaceSlow(c *client.Client, podName string, contName string, namespace string) error
- func WaitForPodToDisappear(c *client.Client, ns, podName string, label labels.Selector, ...) error
- func WaitForPodsReady(c *clientset.Clientset, ns, name string, minReadySeconds int) error
- func WaitForPodsRunningReady(c *client.Client, ns string, minPods int32, timeout time.Duration, ...) error
- func WaitForPodsSuccess(c *client.Client, ns string, successPodLabels map[string]string, ...) error
- func WaitForPodsWithLabel(c *client.Client, ns string, label labels.Selector) (pods *api.PodList, err error)
- func WaitForPodsWithLabelRunning(c *client.Client, ns string, label labels.Selector) error
- func WaitForPodsWithLabelScheduled(c *client.Client, ns string, label labels.Selector) (pods *api.PodList, err error)
- func WaitForRCPodToDisappear(c *client.Client, ns, rcName, podName string) error
- func WaitForRCPodsRunning(c *client.Client, ns, rcName string) error
- func WaitForRCToStabilize(c *client.Client, ns, name string, timeout time.Duration) error
- func WaitForReplicationController(c *client.Client, namespace, name string, exist bool, ...) error
- func WaitForService(c *client.Client, namespace, name string, exist bool, ...) error
- func WaitForServiceEndpointsNum(c *client.Client, namespace, serviceName string, expectNum int, ...) error
- type APICall
- type APIResponsiveness
- type CleanupActionHandle
- type ClientConfigGetter
- type CloudConfig
- type ClusterVerification
- type ContainerFailures
- type ContainerResourceUsage
- type ContainersCPUSummary
- type CreateTestingNSFn
- type DeploymentConfig
- type E2EContext
- type Framework
- func (f *Framework) AfterEach()
- func (f *Framework) BeforeEach()
- func (f *Framework) CreateNamespace(baseName string, labels map[string]string) (*api.Namespace, error)
- func (f *Framework) CreatePodsPerNodeForSimpleApp(appName string, podSpec func(n api.Node) api.PodSpec, maxCount int) map[string]string
- func (f *Framework) CreateServiceForSimpleApp(contPort, svcPort int, appName string) *api.Service
- func (f *Framework) CreateServiceForSimpleAppWithPods(contPort int, svcPort int, appName string, ...) (error, *api.Service)
- func (f *Framework) GetUnderlyingFederatedContexts() []E2EContext
- func (f *Framework) NewClusterVerification(filter PodStateVerification) *ClusterVerification
- func (f *Framework) PodClient() *PodClient
- func (f *Framework) ReadFileViaContainer(podName, containerName string, path string) (string, error)
- func (f *Framework) TestContainerOutput(scenarioName string, pod *api.Pod, containerIndex int, expectedOutput []string)
- func (f *Framework) TestContainerOutputRegexp(scenarioName string, pod *api.Pod, containerIndex int, expectedOutput []string)
- func (f *Framework) WaitForAnEndpoint(serviceName string) error
- func (f *Framework) WaitForPodNoLongerRunning(podName string) error
- func (f *Framework) WaitForPodReady(podName string) error
- func (f *Framework) WaitForPodRunning(podName string) error
- func (f *Framework) WaitForPodRunningSlow(podName string) error
- func (f *Framework) WaitForPodTerminated(podName, reason string) error
- func (f *Framework) WriteFileViaContainer(podName, containerName string, path string, contents string) error
- type FrameworkOptions
- type InvariantFunc
- type KubeCluster
- type KubeConfig
- type KubeUser
- type KubeletLatencyMetric
- type KubeletLatencyMetrics
- type LatencyMetric
- type LatencySlice
- type LogSizeDataTimeseries
- type LogSizeGatherer
- type LogsSizeData
- type LogsSizeDataSummary
- type LogsSizeVerifier
- type MetricsForE2E
- type NodeRuntimeOperationErrorRate
- type NodesCPUSummary
- type PodClient
- type PodDiff
- type PodLatencyData
- type PodStartupLatency
- type PodStateVerification
- type PodStore
- type RCConfig
- type RCStartupStatus
- type ReplicaSetConfig
- type ResourceConstraint
- type ResourceGathererOptions
- type ResourceMonitor
- func (r *ResourceMonitor) FormatCPUSummary(summary NodesCPUSummary) string
- func (r *ResourceMonitor) FormatResourceUsage(s ResourceUsagePerNode) string
- func (r *ResourceMonitor) GetCPUSummary() NodesCPUSummary
- func (r *ResourceMonitor) GetLatest() (ResourceUsagePerNode, error)
- func (r *ResourceMonitor) GetMasterNodeCPUSummary(summaryPerNode NodesCPUSummary) NodesCPUSummary
- func (r *ResourceMonitor) GetMasterNodeLatest(usagePerNode ResourceUsagePerNode) ResourceUsagePerNode
- func (r *ResourceMonitor) LogCPUSummary()
- func (r *ResourceMonitor) LogLatest()
- func (r *ResourceMonitor) Reset()
- func (r *ResourceMonitor) Start()
- func (r *ResourceMonitor) Stop()
- type ResourceUsagePerContainer
- type ResourceUsagePerNode
- type ResourceUsageSummary
- type RuntimeOperationErrorRate
- type RuntimeOperationMonitor
- type SSHResult
- type SaturationTime
- type SchedulingLatency
- type SingleContainerSummary
- type SingleLogSummary
- type TestContextType
- type TestDataSummary
- type TimestampedSize
- type WorkItem
Constants ¶
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 )
const ( // NodeStartupThreshold is a rough estimate of the time allocated for a pod to start on a node. NodeStartupThreshold = 4 * time.Second )
Variables ¶
var ( // Label allocated to the image puller static pod that runs on each node // before e2es. ImagePullerLabels = map[string]string{"name": "e2e-image-puller"} )
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",
}
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",
}
var MasterUpgrade = func(v string) error { switch TestContext.Provider { case "gce": return masterUpgradeGCE(v) case "gke": return masterUpgradeGKE(v) default: return fmt.Errorf("MasterUpgrade() is not implemented for provider %s", TestContext.Provider) } }
The following upgrade functions are passed into the framework below and used to do the actual upgrades.
var NodeUpgrade = func(f *Framework, v string) error { // Perform the upgrade. var err error switch TestContext.Provider { case "gce": err = nodeUpgradeGCE(v) case "gke": err = nodeUpgradeGKE(v) default: err = fmt.Errorf("NodeUpgrade() is not implemented for provider %s", TestContext.Provider) } if err != nil { return err } Logf("Waiting up to %v for all nodes to be ready after the upgrade", RestartNodeReadyAgainTimeout) if _, err := CheckNodesReady(f.Client, RestartNodeReadyAgainTimeout, TestContext.CloudConfig.NumNodes); err != nil { return err } return nil }
var ProvidersWithSSH = []string{"gce", "gke", "aws"}
ProvidersWithSSH are those providers where each node is accessible with SSH
var RunId = util.NewUUID()
unique identifier of the e2e run
var SubResourcePodProxyVersion = version.MustParse("v1.1.0")
SubResource proxy should have been functional in v1.0.0, but SubResource proxy via tunneling is known to be broken in v1.0. See https://github.com/kubernetes/kubernetes/pull/15224#issuecomment-146769463
TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
Functions ¶
func AddOrUpdateLabelOnNode ¶ added in v1.4.1
func AddOrUpdateTaintOnNode ¶ added in v1.4.1
func AllNodesReady ¶
checks whether all registered nodes are ready
func ApiCallToPerfData ¶
func ApiCallToPerfData(apicalls APIResponsiveness) *perftype.PerfData
ApiCallToPerfData transforms APIResponsiveness to PerfData.
func AssertCleanup ¶
Asserts that cleanup of a namespace wrt selectors occurred.
func BlockNetwork ¶
The following helper functions can block/unblock network from source host to destination host by manipulating iptable rules. This function assumes it can ssh to the source host.
Caution: Recommend to input IP instead of hostnames. Using hostnames will cause iptables to do a DNS lookup to resolve the name to an IP address, which will slow down the test and cause it to fail if DNS is absent or broken.
Suggested usage pattern:
func foo() { ... defer UnblockNetwork(from, to) BlockNetwork(from, to) ... }
func CPUUsageToPerfData ¶
func CPUUsageToPerfData(usagePerNode NodesCPUSummary) *perftype.PerfData
CPUUsageToPerfData transforms NodesCPUSummary to PerfData.
func CheckConnectivityToHost ¶
CheckConnectivityToHost launches a pod running wget on the specified node to test connectivity to the specified host. An error will be returned if the host is not reachable from the pod.
func CheckInvariants ¶
func CheckInvariants(events []watch.Event, fns ...InvariantFunc) 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 ¶
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 CheckPodHashLabel ¶
func CheckPodsCondition ¶
func CheckPodsCondition(c *client.Client, 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 *client.Client, 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 *client.Client, 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 CheckTestingNSDeletedExcept ¶
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 ¶
Stops everything from filePath from namespace ns and checks if everything matching selectors from the given namespace is correctly stopped.
func ContainerInitInvariant ¶
func CoreDump ¶
func CoreDump(dir string)
CoreDump SSHs to the master and all nodes and dumps their logs into dir. It shells out to cluster/log-dump.sh to accomplish this.
func CreateTestingNS ¶
func CreateTestingNS(baseName string, c *client.Client, labels map[string]string) (*api.Namespace, error)
CreateTestingNS should be used by every test, note that we append a common prefix to the provided test name. Please see NewFramework instead of using this directly.
func DeleteNamespaces ¶
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 DeleteReplicaSet ¶
Delete a ReplicaSet and all pods it spawned
func DumpAllNamespaceInfo ¶
func DumpNodeDebugInfo ¶
func EnsureLoadBalancerResourcesDeleted ¶
EnsureLoadBalancerResourcesDeleted ensures that cloud load balancer resources that were created are actually cleaned up. Currently only implemented for GCE/GKE.
func ExpectNoError ¶
func ExpectNoError(err error, explain ...interface{})
func ExpectNodeHasLabel ¶ added in v1.4.1
func ExpectNodeHasTaint ¶ added in v1.4.1
func FailedContainers ¶
func FailedContainers(pod *api.Pod) map[string]ContainerFailures
FailedContainers inspects all containers in a pod and returns failure information for containers that have failed or been restarted. A map is returned where the key is the containerID and the value is a struct containing the restart and failure information
func FilterNodes ¶
Filters nodes in NodeList in place, removing nodes that do not satisfy the given condition TODO: consider merging with pkg/client/cache.NodeLister
func FormatRuntimeOperationErrorRate ¶
func FormatRuntimeOperationErrorRate(nodesResult map[string]NodeRuntimeOperationErrorRate) string
FormatRuntimeOperationErrorRate formats the runtime operation error rate to string.
func GetHostExternalAddress ¶
GetHostExternalAddress gets the node for a pod and returns the first External address. Returns an error if the node the pod is on doesn't have an External address.
func GetKubeletHeapStats ¶
func GetKubeletPods ¶
GetKubeletPods retrieves the list of pods on the kubelet
func GetKubeletRunningPods ¶
GetKubeletRunningPods retrieves the list of running pods on the kubelet. The pods includes necessary information (e.g., UID, name, namespace for pods/containers), but do not contain the full spec.
func GetMasterHost ¶
func GetMasterHost() string
func GetNodePortURL ¶
GetNodePortURL returns the url to a nodeport Service.
func GetPauseImageName ¶
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.
func GetPodLogs ¶
func GetPodsInNamespace ¶
func GetReadySchedulableNodesOrDie ¶
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 ¶
GetServerArchitecture fetches the architecture of the cluster's apiserver.
func GetServicesProxyRequest ¶
func GetServicesProxyRequest(c *client.Client, request *restclient.Request) (*restclient.Request, error)
func GetSigner ¶
GetSigner returns an ssh.Signer for the provider ("gce", etc.) that can be used to SSH to their nodes.
func GetValidDNSSubdomainName ¶
GetValidDNSSubdomainName massages the given name to be a valid dns subdomain name. Most resources (such as secrets, clusters) require the names to be valid dns subdomain. This is a generic function (not specific to federation). Should be moved to a more generic location if others want to use it.
func HighLatencyRequests ¶
Prints top five summary metrics for request types with latency and returns number of such request types above threshold.
func IsNodeConditionUnset ¶
func IsNodeConditionUnset(node *api.Node, conditionType api.NodeConditionType) bool
func KubeDescribe ¶
Wrapper function for ginkgo describe. Adds namespacing. TODO: Support type safe tagging as well https://github.com/kubernetes/kubernetes/pull/22401.
func KubectlCmd ¶
KubectlCmd runs the kubectl executable through the wrapper script.
func KubectlVersion ¶
KubectlVersion gets the version of kubectl that's currently being used (see --kubectl-path in e2e.go to use an alternate kubectl).
func KubectlVersionGTE ¶
KubectlVersionGTE returns true if the kubectl version is greater than or equal to v.
func LaunchHostExecPod ¶
LaunchHostExecPod launches a hostexec pod in the given namespace and waits until it's Running
func LaunchWebserverPod ¶
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 LoadClient ¶
func LoadConfig ¶
func LoadConfig() (*restclient.Config, error)
func LoadFederatedConfig ¶
func LoadFederatedConfig() (*restclient.Config, error)
func LoadFederationClient ¶
func LoadFederationClient() (*unversionedfederation.FederationClient, error)
func LoadFederationClientset ¶
func LoadFederationClientset() (*federation_internalclientset.Clientset, error)
func LoadFederationClientset_1_3 ¶
func LoadFederationClientset_1_3() (*federation_release_1_3.Clientset, error)
func LogFailedContainers ¶
func LogPodsWithLabels ¶
func LogSSHResult ¶
func LogSSHResult(result SSHResult)
func LogSuspiciousLatency ¶
func LogSuspiciousLatency(latencyData []PodLatencyData, latencyDataLag []PodLatencyData, nodeCount int, c *client.Client)
LogSuspiciousLatency logs metrics/docker errors from all nodes that had slow startup times If latencyDataLag is nil then it will be populated from latencyData
func 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 MigRollingUpdate ¶
MigRollingUpdate starts a MIG rolling update, upgrading the nodes to a new instance template named tmpl, and waits up to nt times the number of nodes for it to complete.
func MigTemplate ¶
MigTemplate (GCE-only) returns the name of the MIG template that the nodes of the cluster use.
func NewHostExecPodSpec ¶
NewHostExecPodSpec returns the pod spec of hostexec pod
func NewKubectlCommand ¶
func NewKubectlCommand(args ...string) *kubectlBuilder
func NewResourceUsageGatherer ¶
func NewResourceUsageGatherer(c *client.Client, options ResourceGathererOptions) (*containerResourceGatherer, error)
func NodeAddresses ¶
func NodeAddresses(nodelist *api.NodeList, addrType api.NodeAddressType) []string
NodeAddresses returns the first address of the given type of each node.
func NodeProxyRequest ¶
NodeProxyRequest performs a get on a node proxy endpoint given the nodename and rest client.
func NodeSSHHosts ¶
NodeSSHHosts returns SSH-able host names for all schedulable nodes - this excludes master node. It returns an error if it can't find an external IP for every node, though it still returns all hosts that it found in that case.
func OpenWebSocketForURL ¶
func OpenWebSocketForURL(url *url.URL, config *restclient.Config, protocols []string) (*websocket.Conn, error)
OpenWebSocketForURL constructs a websocket connection to the provided URL, using the client config, with the specified protocols.
func ParseKVLines ¶
ParseKVLines parses output that looks like lines containing "<key>: <val>" and returns <val> if <key> is found. Otherwise, it returns the empty string.
func PodNotReady ¶
PodNotReady checks whether pod p's has a ready condition of status false.
func PodProxyResponseChecker ¶
func PodRunningReady ¶
PodRunningReady checks whether pod p's phase is running and it has a ready condition of status true.
func PodsCreated ¶
func PodsResponding ¶
func PrettyPrintJSON ¶
func PrettyPrintJSON(metrics interface{}) string
func PrintAllKubeletPods ¶
func PrintLatencies ¶
func PrintLatencies(latencies []PodLatencyData, header string)
func PrintPerfData ¶
PrintPerfData prints the perfdata in json format with PerfResultTag prefix. If an error occurs, nothing will be printed.
func ProviderIs ¶
func ReadOrDie ¶
ReadOrDie reads a file from gobindata. To generate gobindata, run
# Install the program go get -u github.com/jteeuwen/go-bindata/...
Generate the bindata file. ¶
go-bindata \ -pkg generated -ignore .jpg -ignore .png -ignore .md \ ./examples/* ./docs/user-guide/* test/e2e/testing-manifests/kubectl/* test/images/*
# Copy it into the generated directory if the results are what you expected. cp bindata.go test/e2e/generated
# Don't forget to gofmt it gofmt -s -w test/e2e/generated/bindata.go
func RegisterClusterFlags ¶ added in v1.4.1
func RegisterClusterFlags()
Register flags specific to the cluster e2e test suite.
func RegisterCommonFlags ¶ added in v1.4.1
func RegisterCommonFlags()
Register flags common to all e2e test suites.
func RegisterNodeFlags ¶ added in v1.4.1
func RegisterNodeFlags()
Register flags specific to the node e2e test suite.
func RemoveCleanupAction ¶
func RemoveCleanupAction(p CleanupActionHandle)
RemoveCleanupAction removes a function that was installed by AddCleanupAction.
func RemoveLabelOffNode ¶ added in v1.4.1
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.1
RemoveTaintOffNode is for cleaning up taints temporarily added to node, won't fail if target taint doesn't exist or has been removed.
func ResourceUsageToPerfData ¶
func ResourceUsageToPerfData(usagePerNode ResourceUsagePerNode) *perftype.PerfData
ResourceUsageToPerfData transforms ResourceUsagePerNode to PerfData. Notice that this function only cares about memory usage, because cpu usage information will be extracted from NodesCPUSummary.
func RestartApiserver ¶
func RestartKubeProxy ¶
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 ¶
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 RunDeployment ¶
func RunDeployment(config DeploymentConfig) error
RunDeployment Launches (and verifies correctness) of a Deployment and will wait for all pods it spawns to become "Running". It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).
func RunHostCmd ¶
RunHostCmd runs the given cmd in the context of the given pod using `kubectl exec` inside of a shell.
func RunHostCmdOrDie ¶
RunHostCmdOrDie calls RunHostCmd and dies on error.
func RunKubectl ¶
RunKubectl is a convenience wrapper over kubectlBuilder
func RunKubectlOrDie ¶
RunKubectlOrDie is a convenience wrapper over kubectlBuilder
func RunKubectlOrDieInput ¶
RunKubectlOrDieInput is a convenience wrapper over kubectlBuilder that takes input to stdin
func RunKubernetesServiceTestContainer ¶
Run a test container to try and contact the Kubernetes api-server from a pod, wait for it to flip to Ready, log its output and delete it.
func RunRC ¶
RunRC Launches (and verifies correctness) of a Replication Controller and will wait for all pods it spawns to become "Running". It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).
func RunReplicaSet ¶
func RunReplicaSet(config ReplicaSetConfig) error
RunReplicaSet launches (and verifies correctness) of a ReplicaSet and waits until all the pods it launches to reach the "Running" state. It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).
func ScaleRCByLabels ¶
ScaleRCByLabels scales an RC via ns/label lookup. If replicas == 0 it waits till none are running, otherwise it does what a synchronous scale operation would do.
func ServerVersionGTE ¶
ServerVersionGTE returns true if v is greater than or equal to the server version.
TODO(18726): This should be incorporated into client.VersionInterface.
func SkipIfContainerRuntimeIs ¶ added in v1.4.1
func SkipIfContainerRuntimeIs(runtimes ...string)
func SkipIfProviderIs ¶
func SkipIfProviderIs(unsupportedProviders ...string)
func SkipUnlessAtLeast ¶
func SkipUnlessFederated ¶
Detects whether the federation namespace exists in the underlying cluster
func SkipUnlessNodeCountIsAtLeast ¶
func SkipUnlessNodeCountIsAtLeast(minNodeCount int)
func SkipUnlessProviderIs ¶
func SkipUnlessProviderIs(supportedProviders ...string)
func SkipUnlessServerVersionGTE ¶
func SkipUnlessServerVersionGTE(v semver.Version, c discovery.ServerVersionInterface)
func StartCmdAndStreamOutput ¶
func StartCmdAndStreamOutput(cmd *exec.Cmd) (stdout, stderr io.ReadCloser, err error)
func StartPods ¶
func StartPods(c *client.Client, replicas int, namespace string, podNamePrefix string, pod api.Pod, waitForRunning bool)
Simplified version of RunRC, that does not create RC, but creates plain Pods. Optionally waits for pods to start running (if waitForRunning == true). The number of replicas must be non-zero.
func TargetContainers ¶
func TargetContainers() []string
A list of containers for which we want to collect resource usage.
func TestContainerOutput ¶
func TestContainerOutput(scenarioName string, c *client.Client, pod *api.Pod, containerIndex int, expectedOutput []string, ns string)
TestContainerOutput runs the given pod in the given namespace and waits for all of the containers in the podSpec to move into the 'Success' status, and tests the specified container log against the given expected output using a substring matcher.
func UnblockNetwork ¶
func UpdateDeploymentWithRetries ¶
func UpdateDeploymentWithRetries(c *clientset.Clientset, namespace, name string, applyUpdate updateDeploymentFunc) (deployment *extensions.Deployment, err error)
func UpdatePodWithRetries ¶
func ValidateController ¶
func ValidateController(c *client.Client, containerImage string, replicas int, containername string, testname string, validator validatorFn, ns string)
ValidateController is a generic mechanism for testing RC's that are running. It takes a container name, a test name, and a validator function which is plugged in by a specific test. "containername": this is grepped for. "containerImage" : this is the name of the image we expect to be launched. Not to confuse w/ images (kitten.jpg) which are validated. "testname": which gets bubbled up to the logging/failure messages if errors happen. "validator" function: This function is given a podID and a client, and it can do some specific validations that way.
func VerifyPodStartupLatency ¶
func VerifyPodStartupLatency(latency PodStartupLatency) error
Verifies whether 50, 90 and 99th percentiles of PodStartupLatency are within the threshold.
func VerifyPods ¶
func VerifySchedulerLatency ¶
Verifies (currently just by logging them) the scheduling latencies.
func WaitForApiserverUp ¶
func WaitForClusterSize ¶
WaitForClusterSize waits until the cluster has desired size and there is no not-ready nodes in it. By cluster size we mean number of Nodes excluding Master Node.
func WaitForDefaultServiceAccountInNamespace ¶
WaitForDefaultServiceAccountInNamespace waits for the default service account to be provisioned the default service account is what is associated with pods when they do not specify a service account as a result, pods are not able to be provisioned in a namespace until the service account is provisioned
func WaitForDeploymentOldRSsNum ¶
func WaitForDeploymentOldRSsNum(c *clientset.Clientset, ns, deploymentName string, desiredRSNum int) error
Waits for the deployment to clean up old rcs.
func WaitForDeploymentRevisionAndImage ¶
func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName string, revision, image string) error
WaitForDeploymentRevisionAndImage waits for the deployment's and its new RS's revision and container image to match the given revision and image. Note that deployment revision and its new RS revision should be updated shortly, so we only wait for 1 minute here to fail early.
func WaitForDeploymentRollbackCleared ¶
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, expectComplete bool) error
Waits for the deployment to reach desired state. Returns an error if minAvailable or maxCreated is broken at any times.
func WaitForDeploymentUpdatedReplicasLTE ¶
func WaitForDeploymentUpdatedReplicasLTE(c clientset.Interface, ns, deploymentName string, minUpdatedReplicas int, desiredGeneration int64) error
WaitForDeploymentUpdatedReplicasLTE waits for given deployment to be observed by the controller and has at least a number of updatedReplicas
func WaitForEvents ¶
func WaitForEvents(c *client.Client, ns string, objOrRef runtime.Object, desiredEventsCount int) error
Waits for the number of events on the given object to reach a desired count.
func WaitForFederationApiserverReady ¶
func WaitForFederationApiserverReady(c *federation_internalclientset.Clientset) error
WaitForFederationApiserverReady waits for the federation apiserver to be ready. It tests the readiness by sending a GET request and expecting a non error response.
func WaitForIngressAddress ¶
func WaitForIngressAddress(c *client.Client, ns, ingName string, timeout time.Duration) (string, error)
WaitForIngressAddress waits for the Ingress to acquire an address.
func WaitForMatchPodsCondition ¶
func WaitForMatchPodsCondition(c *client.Client, opts api.ListOptions, desc string, timeout time.Duration, condition podCondition) error
WaitForMatchPodsCondition finds match pods based on the input ListOptions. waits and checks if all match pods are in the given podCondition
func WaitForNodeToBe ¶
func WaitForNodeToBe(c *client.Client, name string, conditionType api.NodeConditionType, wantTrue bool, timeout time.Duration) bool
WaitForNodeToBe returns whether node "name's" condition state matches wantTrue within timeout. If wantTrue is true, it will ensure the node condition status is ConditionTrue; if it's false, it ensures the node condition is in any state other than ConditionTrue (e.g. not true or unknown).
func WaitForNodeToBeNotReady ¶
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 ¶
WaitForNodeToBeReady returns whether node name is ready within timeout.
func WaitForPartialEvents ¶
func WaitForPartialEvents(c *client.Client, ns string, objOrRef runtime.Object, atLeastEventsCount int) error
Waits for the number of events on the given object to be at least a desired count.
func WaitForPersistentVolumeClaimPhase ¶
func WaitForPersistentVolumeClaimPhase(phase api.PersistentVolumeClaimPhase, c *client.Client, ns string, pvcName string, Poll, timeout time.Duration) error
WaitForPersistentVolumeClaimPhase waits for a PersistentVolumeClaim to be in a specific phase or until timeout occurs, whichever comes first.
func WaitForPersistentVolumeDeleted ¶
func WaitForPersistentVolumeDeleted(c *client.Client, pvName string, Poll, timeout time.Duration) error
WaitForPersistentVolumeDeleted waits for a PersistentVolume to get deleted or until timeout occurs, whichever comes first.
func WaitForPersistentVolumePhase ¶
func WaitForPersistentVolumePhase(phase api.PersistentVolumePhase, c *client.Client, pvName string, Poll, timeout time.Duration) error
WaitForPersistentVolumePhase waits for a PersistentVolume to be in a specific phase or until timeout occurs, whichever comes first.
func WaitForPodNameRunningInNamespace ¶ added in v1.4.1
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 *client.Client, podName, namespace, resourceVersion string) error
Waits default amount of time (podNoLongerRunningTimeout) for the specified pod to stop running. Returns an error if timeout occurs first.
func WaitForPodNotPending ¶
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 ¶
Waits default amount of time (PodStartTimeout) for the specified pod to become running. Returns an error if timeout occurs first, or pod goes in to failed state.
func WaitForPodSuccessInNamespace ¶
func WaitForPodSuccessInNamespace(c *client.Client, podName string, contName string, namespace string) error
WaitForPodSuccessInNamespace returns nil if the pod reached state success, or an error if it reached failure or until podStartupTimeout.
func WaitForPodSuccessInNamespaceSlow ¶
func WaitForPodSuccessInNamespaceSlow(c *client.Client, podName string, contName string, namespace string) error
WaitForPodSuccessInNamespaceSlow returns nil if the pod reached state success, or an error if it reached failure or until slowPodStartupTimeout.
func WaitForPodToDisappear ¶
func WaitForPodsReady ¶
func WaitForPodsRunningReady ¶
func WaitForPodsRunningReady(c *client.Client, ns string, minPods 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 replication controller. Also, it ensures that at least minPods are running and ready. It has separate behavior from other 'wait for' pods functions in that it requires the list of pods on every iteration. This is useful, for example, in cluster startup, because the number of pods increases while waiting. If ignoreLabels is not empty, pods matching this selector are ignored and this function waits for minPods to enter Running/Ready and for all pods matching ignoreLabels to enter Success phase. Otherwise an error is returned even if there are minPods pods, some of which are in Running/Ready and some in Success. This is to allow the client to decide if "Success" means "Ready" or not.
func WaitForPodsSuccess ¶
func WaitForPodsSuccess(c *client.Client, 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 *client.Client, ns string, label labels.Selector) (pods *api.PodList, err error)
Wait up to PodListTimeout for getting pods with certain label
func WaitForPodsWithLabelRunning ¶
Wait up to 10 minutes for all matching pods to become Running and at least one matching pod exists.
func WaitForPodsWithLabelScheduled ¶
func WaitForPodsWithLabelScheduled(c *client.Client, ns string, label labels.Selector) (pods *api.PodList, err error)
Wait for all matching pods to become scheduled and at least one matching pod exists. Return the list of matching pods.
func WaitForRCPodToDisappear ¶
WaitForRCPodToDisappear returns nil if the pod from the given replication controller (described by rcName) no longer exists. In case of failure or too long waiting time, an error is returned.
func WaitForRCPodsRunning ¶
Wait up to 10 minutes for pods to become Running. Assume that the pods of the rc are labels with {"name":rcName}.
func WaitForRCToStabilize ¶
WaitForRCToStabilize waits till the RC has a matching generation/replica count between spec and status.
func WaitForReplicationController ¶
func WaitForReplicationController(c *client.Client, namespace, name string, exist bool, interval, timeout time.Duration) error
WaitForReplicationController waits until the RC appears (exist == true), or disappears (exist == false)
Types ¶
type APICall ¶
type APICall struct { Resource string `json:"resource"` Verb string `json:"verb"` Latency LatencyMetric `json:"latency"` }
type APIResponsiveness ¶
type APIResponsiveness struct {
APICalls []APICall `json:"apicalls"`
}
func (APIResponsiveness) Len ¶
func (a APIResponsiveness) Len() int
func (APIResponsiveness) Less ¶
func (a APIResponsiveness) Less(i, j int) bool
func (APIResponsiveness) Swap ¶
func (a APIResponsiveness) Swap(i, j int)
type CleanupActionHandle ¶
type CleanupActionHandle *int
func AddCleanupAction ¶
func AddCleanupAction(fn func()) CleanupActionHandle
AddCleanupAction installs a function that will be called in the event of the whole test being terminated. This allows arbitrary pieces of the overall test to hook into SynchronizedAfterSuite().
type ClientConfigGetter ¶
type ClientConfigGetter func() (*restclient.Config, error)
type CloudConfig ¶
type ClusterVerification ¶
type ClusterVerification struct {
// contains filtered or unexported fields
}
func (*ClusterVerification) ForEach ¶
func (cl *ClusterVerification) ForEach(podFunc func(api.Pod)) error
ForEach runs a function against every verifiable pod. Be warned that this doesn't wait for "n" pods to verifiy, so it may return very quickly if you have strict pod state requirements.
For example, if you require at least 5 pods to be running before your test will pass, its smart to first call "clusterVerification.WaitFor(5)" before you call clusterVerification.ForEach.
func (*ClusterVerification) WaitFor ¶
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 ContainersCPUSummary ¶
ContainersCPUSummary is indexed by the container name with each entry a (percentile, value) map.
type CreateTestingNSFn ¶
type DeploymentConfig ¶
type DeploymentConfig struct {
RCConfig
}
type E2EContext ¶
type E2EContext struct { // Raw context name, RawName string `yaml:"rawName"` // A valid dns subdomain which can be used as the name of kubernetes resources. Name string `yaml:"name"` Cluster *KubeCluster `yaml:"cluster"` User *KubeUser `yaml:"user"` }
type Framework ¶
type Framework struct { BaseName string Client *client.Client Clientset_1_2 *release_1_2.Clientset Clientset_1_3 *release_1_3.Clientset // TODO(mml): Remove this. We should generally use the versioned clientset. FederationClientset *federation_internalclientset.Clientset FederationClientset_1_3 *federation_release_1_3.Clientset // TODO: remove FederationClient, all the client access must be through FederationClientset FederationClient *unversionedfederation.FederationClient Namespace *api.Namespace // Every test has at least one namespace NamespaceDeletionTimeout time.Duration // Constraints that passed to a check which is executed after data is gathered to // see if 99% of results are within acceptable bounds. It as to be injected in the test, // as expectations vary greatly. Constraints are groupped by the container names. AddonResourceConstraints map[string]ResourceConstraint // contains filtered or unexported fields }
Framework supports common operations used by e2e tests; it will keep a client & a namespace for you. Eventual goal is to merge this with integration test framework.
func NewDefaultFramework ¶
NewFramework makes a new framework and sets up a BeforeEach/AfterEach for you (you can write additional before/after each functions).
func NewFramework ¶
func NewFramework(baseName string, options FrameworkOptions, client *client.Client) *Framework
func (*Framework) AfterEach ¶
func (f *Framework) AfterEach()
AfterEach deletes the namespace, after reading its events.
func (*Framework) BeforeEach ¶
func (f *Framework) BeforeEach()
BeforeEach gets a client and makes a namespace.
func (*Framework) CreateNamespace ¶
func (*Framework) CreatePodsPerNodeForSimpleApp ¶
func (f *Framework) CreatePodsPerNodeForSimpleApp(appName string, podSpec func(n api.Node) api.PodSpec, maxCount int) map[string]string
CreatePodsPerNodeForSimpleApp Creates pods w/ labels. Useful for tests which make a bunch of pods w/o any networking.
func (*Framework) CreateServiceForSimpleApp ¶
CreateServiceForSimpleApp returns a service that selects/exposes pods (send -1 ports if no exposure needed) with an app label.
func (*Framework) CreateServiceForSimpleAppWithPods ¶
func (f *Framework) CreateServiceForSimpleAppWithPods(contPort int, svcPort int, appName string, podSpec func(n api.Node) api.PodSpec, count int, block bool) (error, *api.Service)
CreateServiceForSimpleAppWithPods is a convenience wrapper to create a service and its matching pods all at once.
func (*Framework) GetUnderlyingFederatedContexts ¶
func (f *Framework) GetUnderlyingFederatedContexts() []E2EContext
func (*Framework) NewClusterVerification ¶
func (f *Framework) NewClusterVerification(filter PodStateVerification) *ClusterVerification
func (*Framework) PodClient ¶ added in v1.4.1
Convenience method for getting a pod client interface in the framework's namespace.
func (*Framework) ReadFileViaContainer ¶
func (f *Framework) ReadFileViaContainer(podName, containerName string, path string) (string, error)
Read a file using kubectl exec cat <path>
func (*Framework) TestContainerOutput ¶
func (f *Framework) TestContainerOutput(scenarioName string, pod *api.Pod, containerIndex int, expectedOutput []string)
Runs the given pod and verifies that the output of exact container matches the desired output.
func (*Framework) TestContainerOutputRegexp ¶
func (f *Framework) TestContainerOutputRegexp(scenarioName string, pod *api.Pod, containerIndex int, expectedOutput []string)
Runs the given pod and verifies that the output of exact container matches the desired regexps.
func (*Framework) WaitForAnEndpoint ¶
WaitForAnEndpoint waits for at least one endpoint to become available in the service's corresponding endpoints object.
func (*Framework) WaitForPodNoLongerRunning ¶
WaitForPodNoLongerRunning waits for the pod to no longer be running in the namespace, for either success or failure.
func (*Framework) WaitForPodReady ¶
WaitForPodReady waits for the pod to flip to ready in the namespace.
func (*Framework) WaitForPodRunning ¶
WaitForPodRunning waits for the pod to run in the namespace.
func (*Framework) WaitForPodRunningSlow ¶
WaitForPodRunningSlow waits for the pod to run in the namespace. It has a longer timeout then WaitForPodRunning (util.slowPodStartTimeout).
func (*Framework) WaitForPodTerminated ¶
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 InvariantFunc ¶
type KubeCluster ¶
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"` }
type KubeletLatencyMetric ¶
type KubeletLatencyMetric struct { // eg: list, info, create Operation string // eg: sync_pods, pod_worker Method string // 0 <= quantile <=1, e.g. 0.95 is 95%tile, 0.5 is median. Quantile float64 Latency time.Duration }
KubeletMetric stores metrics scraped from the kubelet server's /metric endpoint. TODO: Get some more structure around the metrics and this type
type KubeletLatencyMetrics ¶
type KubeletLatencyMetrics []KubeletLatencyMetric
KubeletMetricByLatency implements sort.Interface for []KubeletMetric based on the latency field.
func GetKubeletLatencyMetrics ¶
func GetKubeletLatencyMetrics(ms metrics.KubeletMetrics) KubeletLatencyMetrics
GetKubeletLatencyMetrics gets all latency related kubelet metrics. Note that the KubeletMetrcis passed in should not contain subsystem prefix.
func HighLatencyKubeletOperations ¶
func HighLatencyKubeletOperations(c *client.Client, threshold time.Duration, nodeName string) (KubeletLatencyMetrics, error)
HighLatencyKubeletOperations logs and counts the high latency metrics exported by the kubelet server via /metrics.
func (KubeletLatencyMetrics) Len ¶
func (a KubeletLatencyMetrics) Len() int
func (KubeletLatencyMetrics) Less ¶
func (a KubeletLatencyMetrics) Less(i, j int) bool
func (KubeletLatencyMetrics) Swap ¶
func (a KubeletLatencyMetrics) Swap(i, j int)
type LatencyMetric ¶
type LatencyMetric struct { Perc50 time.Duration `json:"Perc50"` Perc90 time.Duration `json:"Perc90"` Perc99 time.Duration `json:"Perc99"` }
Dashboard metrics
func ExtractLatencyMetrics ¶
func ExtractLatencyMetrics(latencies []PodLatencyData) LatencyMetric
type LatencySlice ¶
type LatencySlice []PodLatencyData
func (LatencySlice) Len ¶
func (a LatencySlice) Len() int
func (LatencySlice) Less ¶
func (a LatencySlice) Less(i, j int) bool
func (LatencySlice) Swap ¶
func (a LatencySlice) Swap(i, j int)
type LogSizeDataTimeseries ¶
type LogSizeDataTimeseries map[string]map[string][]TimestampedSize
type LogSizeGatherer ¶
type LogSizeGatherer struct {
// contains filtered or unexported fields
}
LogSizeGatherer is a worker which grabs a WorkItem from the channel and does assigned work.
func (*LogSizeGatherer) Run ¶
func (g *LogSizeGatherer) Run()
func (*LogSizeGatherer) Work ¶
func (g *LogSizeGatherer) Work() bool
Work does a single unit of work: tries to take out a WorkItem from the queue, ssh-es into a given machine, gathers data, writes it to the shared <data> map, and creates a gorouting which reinserts work item into the queue with a <pollingPeriod> delay. Returns false if worker should exit.
type LogsSizeData ¶
type LogsSizeData struct {
// contains filtered or unexported fields
}
func (*LogsSizeData) AddNewData ¶
func (d *LogsSizeData) AddNewData(ip, path string, timestamp time.Time, size int)
type LogsSizeDataSummary ¶
type LogsSizeDataSummary map[string]map[string]SingleLogSummary
node -> file -> data
func (*LogsSizeDataSummary) PrintHumanReadable ¶
func (s *LogsSizeDataSummary) PrintHumanReadable() string
TODO: make sure that we don't need locking here
func (*LogsSizeDataSummary) PrintJSON ¶
func (s *LogsSizeDataSummary) PrintJSON() string
type LogsSizeVerifier ¶
type LogsSizeVerifier struct {
// contains filtered or unexported fields
}
LogsSizeVerifier gathers data about log files sizes from master and node machines. It oversees a <workersNo> workers which do the gathering.
func NewLogsVerifier ¶
func NewLogsVerifier(c *client.Client, stopChannel chan bool) *LogsSizeVerifier
NewLogsVerifier creates a new LogsSizeVerifier which will stop when stopChannel is closed
func (*LogsSizeVerifier) GetSummary ¶
func (s *LogsSizeVerifier) GetSummary() *LogsSizeDataSummary
GetSummary returns a summary (average generation rate and number of probes) of the data gathered by LogSizeVerifier
func (*LogsSizeVerifier) Run ¶
func (v *LogsSizeVerifier) Run()
Run starts log size gathering. It starts a gorouting for every worker and then blocks until stopChannel is closed
type MetricsForE2E ¶
type MetricsForE2E metrics.MetricsCollection
func (*MetricsForE2E) PrintHumanReadable ¶
func (m *MetricsForE2E) PrintHumanReadable() string
func (*MetricsForE2E) PrintJSON ¶
func (m *MetricsForE2E) PrintJSON() string
type NodeRuntimeOperationErrorRate ¶
type NodeRuntimeOperationErrorRate map[string]*RuntimeOperationErrorRate
NodeRuntimeOperationErrorRate is the runtime operation error rate on one node.
type NodesCPUSummary ¶
type NodesCPUSummary map[string]ContainersCPUSummary
NodesCPUSummary is indexed by the node name with each entry a ContainersCPUSummary map.
type PodClient ¶ added in v1.4.1
type PodClient struct { unversioned.PodInterface // contains filtered or unexported fields }
func (*PodClient) Create ¶ added in v1.4.1
Create creates a new pod according to the framework specifications (don't wait for it to start).
func (*PodClient) CreateBatch ¶ added in v1.4.1
CreateBatch create a batch of pods. All pods are created before waiting.
func (*PodClient) CreateSync ¶ added in v1.4.1
CreateSync creates a new pod according to the framework specifications, and wait for it to start.
type PodDiff ¶
type PodDiff map[string]*podInfo
PodDiff is a map of pod name to podInfos
type PodLatencyData ¶
type PodLatencyData struct { // Name of the pod Name string // Node this pod was running on Node string // Latency information related to pod startuptime Latency time.Duration }
PodLatencyData encapsulates pod startup latency information.
type PodStartupLatency ¶
type PodStartupLatency struct {
Latency LatencyMetric `json:"latency"`
}
type PodStateVerification ¶
type PodStateVerification struct { // Optional: only pods that have k=v labels will pass this filter. Selectors map[string]string // Required: The phases which are valid for your pod. ValidPhases []api.PodPhase // Optional: only pods passing this function will pass the filter // Verify a pod. // As an optimization, in addition to specfying filter (boolean), // this function allows specifying an error as well. // The error indicates that the polling of the pod spectrum should stop. Verify func(api.Pod) (bool, error) // Optional: only pods with this name will pass the filter. PodName string }
PodStateVerification represents a verification of pod state. Any time you have a set of pods that you want to operate against or query, this struct can be used to declaratively identify those pods.
type PodStore ¶
Convenient wrapper around cache.Store that returns list of api.Pod instead of interface{}.
func NewPodStore ¶
type RCConfig ¶
type RCConfig struct { Client *client.Client Image string Command []string Name string Namespace string PollInterval time.Duration Timeout time.Duration PodStatusFile *os.File Replicas int CpuRequest int64 // millicores CpuLimit int64 // millicores MemRequest int64 // bytes MemLimit int64 // bytes ReadinessProbe *api.Probe DNSPolicy *api.DNSPolicy // Env vars, set the same for every pod. Env map[string]string // Extra labels added to every pod. Labels map[string]string // Node selector for pods in the RC. NodeSelector map[string]string // Ports to declare in the container (map of name to containerPort). Ports map[string]int // Ports to declare in the container as host and container ports. HostPorts map[string]int Volumes []api.Volume VolumeMounts []api.VolumeMount // Pointer to a list of pods; if non-nil, will be set to a list of pods // created by this RC by RunRC. CreatedPods *[]*api.Pod // Maximum allowable container failures. If exceeded, RunRC returns an error. // Defaults to replicas*0.1 if unspecified. MaxContainerFailures *int // If set to false starting RC will print progress, otherwise only errors will be printed. Silent bool }
type RCStartupStatus ¶
type RCStartupStatus struct { Expected int Terminating int Running int RunningButNotReady int Waiting int Pending int Unknown int Inactive int FailedContainers int Created []*api.Pod ContainerRestartNodes sets.String }
func ComputeRCStartupStatus ¶
func ComputeRCStartupStatus(pods []*api.Pod, expected int) RCStartupStatus
func (*RCStartupStatus) Print ¶
func (s *RCStartupStatus) Print(name string)
type ReplicaSetConfig ¶
type ReplicaSetConfig struct {
RCConfig
}
type ResourceConstraint ¶
type 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 (*ResourceMonitor) FormatCPUSummary ¶
func (r *ResourceMonitor) FormatCPUSummary(summary NodesCPUSummary) string
func (*ResourceMonitor) FormatResourceUsage ¶
func (r *ResourceMonitor) FormatResourceUsage(s ResourceUsagePerNode) string
func (*ResourceMonitor) GetCPUSummary ¶
func (r *ResourceMonitor) GetCPUSummary() NodesCPUSummary
func (*ResourceMonitor) GetLatest ¶
func (r *ResourceMonitor) GetLatest() (ResourceUsagePerNode, error)
func (*ResourceMonitor) GetMasterNodeCPUSummary ¶
func (r *ResourceMonitor) GetMasterNodeCPUSummary(summaryPerNode NodesCPUSummary) NodesCPUSummary
func (*ResourceMonitor) GetMasterNodeLatest ¶
func (r *ResourceMonitor) GetMasterNodeLatest(usagePerNode ResourceUsagePerNode) ResourceUsagePerNode
func (*ResourceMonitor) LogCPUSummary ¶
func (r *ResourceMonitor) LogCPUSummary()
func (*ResourceMonitor) LogLatest ¶
func (r *ResourceMonitor) LogLatest()
func (*ResourceMonitor) Reset ¶
func (r *ResourceMonitor) Reset()
func (*ResourceMonitor) Start ¶
func (r *ResourceMonitor) Start()
func (*ResourceMonitor) Stop ¶
func (r *ResourceMonitor) Stop()
type ResourceUsagePerContainer ¶
type ResourceUsagePerContainer map[string]*ContainerResourceUsage
type ResourceUsagePerNode ¶
type ResourceUsagePerNode map[string]ResourceUsagePerContainer
type ResourceUsageSummary ¶
type ResourceUsageSummary map[string][]SingleContainerSummary
we can't have int here, as JSON does not accept integer keys.
func (*ResourceUsageSummary) PrintHumanReadable ¶
func (s *ResourceUsageSummary) PrintHumanReadable() string
func (*ResourceUsageSummary) PrintJSON ¶
func (s *ResourceUsageSummary) PrintJSON() string
type RuntimeOperationErrorRate ¶
RuntimeOperationErrorRate is the error rate of a specified runtime operation.
type RuntimeOperationMonitor ¶
type RuntimeOperationMonitor struct {
// contains filtered or unexported fields
}
RuntimeOperationMonitor is the tool getting and parsing docker operation metrics.
func NewRuntimeOperationMonitor ¶
func NewRuntimeOperationMonitor(c *client.Client) *RuntimeOperationMonitor
func (*RuntimeOperationMonitor) GetLatestRuntimeOperationErrorRate ¶
func (m *RuntimeOperationMonitor) GetLatestRuntimeOperationErrorRate() map[string]NodeRuntimeOperationErrorRate
GetLatestRuntimeOperationErrorRate gets latest error rate and timeout rate from last observed RuntimeOperationErrorRate.
func (*RuntimeOperationMonitor) GetRuntimeOperationErrorRate ¶
func (m *RuntimeOperationMonitor) GetRuntimeOperationErrorRate() map[string]NodeRuntimeOperationErrorRate
GetRuntimeOperationErrorRate gets runtime operation records from kubelet metrics and calculate error rates of all runtime operations.
type SaturationTime ¶
type SchedulingLatency ¶
type SchedulingLatency struct { Scheduling LatencyMetric `json:"scheduling"` Binding LatencyMetric `json:"binding"` Total LatencyMetric `json:"total"` }
type SingleContainerSummary ¶
type SingleLogSummary ¶
type TestContextType ¶
type TestContextType struct { KubeConfig string KubeContext string KubeAPIContentType string KubeVolumeDir string CertDir string Host string RepoRoot string Provider string CloudConfig CloudConfig KubectlPath string OutputDir string ReportDir string ReportPrefix string Prefix string MinStartupPods int // Timeout for waiting for system pods to be running SystemPodsStartupTimeout time.Duration UpgradeTarget string PrometheusPushGateway string ContainerRuntime string MasterOSDistro string NodeOSDistro string VerifyServiceAccount bool DeleteNamespace bool CleanStart bool // If set to 'true' or 'all' framework will start a goroutine monitoring resource usage of system add-ons. // It will read the data every 30 seconds from all Nodes and print summary during afterEach. If set to 'master' // only master Node will be monitored. GatherKubeSystemResourceUsageData string GatherLogsSizes bool GatherMetricsAfterTest bool // Currently supported values are 'hr' for human-readable and 'json'. It's a comma separated list. OutputPrintType string // CreateTestingNS is responsible for creating namespace used for executing e2e tests. // It accepts namespace base name, which will be prepended with e2e prefix, kube client // and labels to be applied to a namespace. CreateTestingNS CreateTestingNSFn // If set to true test will dump data about the namespace in which test was running. DumpLogsOnFailure bool // Name of the node to run tests on (node e2e suite only). NodeName string // Whether to enable the QoS Cgroup Hierarchy or not CgroupsPerQOS bool }
var TestContext TestContextType
type TestDataSummary ¶
type TimestampedSize ¶
type TimestampedSize struct {
// contains filtered or unexported fields
}
TimestampedSize contains a size together with a time of measurement.