Documentation ¶
Overview ¶
Package framework contains provider-independent helper code for building and running E2E tests with Ginkgo. The actual Ginkgo test suites gets assembled by combining this framework, the optional provider support code and specific tests via a separate .go file like Kubernetes' test/e2e.go.
Index ¶
- Constants
- Variables
- func APICallToPerfData(apicalls *APIResponsiveness) *perftype.PerfData
- func AddOrUpdateAvoidPodOnNode(c clientset.Interface, nodeName string, avoidPods v1.AvoidPods)
- func AddOrUpdateLabelOnNode(c clientset.Interface, nodeName string, labelKey, labelValue string)
- func AddOrUpdateLabelOnNodeAndReturnOldValue(c clientset.Interface, nodeName string, labelKey, labelValue string) string
- func AddOrUpdateTaintOnNode(c clientset.Interface, nodeName string, taint v1.Taint)
- func AfterReadingAllFlags(t *TestContextType)
- func AllNodesReady(c clientset.Interface, timeout time.Duration) error
- func AssertCleanup(ns string, selectors ...string)
- func BlockNetwork(from string, to string)
- func CPUUsageToPerfData(usagePerNode NodesCPUSummary) *perftype.PerfData
- func CPUUsageToPerfDataWithLabels(usagePerNode NodesCPUSummary, labels map[string]string) *perftype.PerfData
- func CheckAffinity(jig *ServiceTestJig, execPod *v1.Pod, targetIP string, targetPort int, ...) bool
- func CheckConnectivityToHost(f *Framework, nodeName, podName, host string, pingCmd PingCommand, timeout int) error
- func CheckForControllerManagerHealthy(duration time.Duration) error
- func CheckInvariants(events []watch.Event, fns ...InvariantFunc) error
- func CheckNodesReady(c clientset.Interface, size int, timeout time.Duration) ([]v1.Node, error)
- func CheckPodsCondition(c clientset.Interface, ns string, podNames []string, timeout time.Duration, ...) bool
- func CheckPodsRunningReady(c clientset.Interface, ns string, podNames []string, timeout time.Duration) bool
- func CheckPodsRunningReadyOrSucceeded(c clientset.Interface, ns string, podNames []string, timeout time.Duration) bool
- func CheckReachabilityFromPod(expectToBeReachable bool, timeout time.Duration, namespace, pod, target string)
- func CheckTestingNSDeletedExcept(c clientset.Interface, skip string) error
- func Cleanup(filePath, ns string, selectors ...string)
- func CleanupServiceResources(c clientset.Interface, loadBalancerName, region, zone string)
- func CollectAddresses(nodes *v1.NodeList, addressType v1.NodeAddressType) []string
- func ConformanceIt(text string, body interface{}, timeout ...float64) bool
- func ContainerInitInvariant(older, newer runtime.Object) error
- func CoreDump(dir string)
- func CreateClientPod(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (*v1.Pod, error)
- func CreateEmptyFileOnPod(namespace string, podName string, filePath string) error
- func CreateExecPodOrFail(client clientset.Interface, ns, generateName string, tweak func(*v1.Pod)) string
- func CreateManagedInstanceGroup(size int64, zone, template string) error
- func CreateNginxPod(client clientset.Interface, namespace string, nodeSelector map[string]string, ...) (*v1.Pod, error)
- func CreatePDWithRetry() (string, error)
- func CreatePDWithRetryAndZone(zone string) (string, error)
- func CreatePV(c clientset.Interface, pv *v1.PersistentVolume) (*v1.PersistentVolume, error)
- func CreatePVC(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error)
- func CreatePVCPV(c clientset.Interface, pvConfig PersistentVolumeConfig, ...) (*v1.PersistentVolume, *v1.PersistentVolumeClaim, error)
- func CreatePVPVC(c clientset.Interface, pvConfig PersistentVolumeConfig, ...) (*v1.PersistentVolume, *v1.PersistentVolumeClaim, error)
- func CreatePVSource(zone string) (*v1.PersistentVolumeSource, error)
- func CreatePVsPVCs(numpvs, numpvcs int, c clientset.Interface, ns string, ...) (PVMap, PVCMap, error)
- func CreatePod(client clientset.Interface, namespace string, nodeSelector map[string]string, ...) (*v1.Pod, error)
- func CreatePodOrFail(c clientset.Interface, ns, name string, labels map[string]string, ...)
- func CreateSecPod(client clientset.Interface, namespace string, ...) (*v1.Pod, error)
- func CreateSecPodWithNodeSelection(client clientset.Interface, namespace string, ...) (*v1.Pod, error)
- func CreateServiceSpec(serviceName, externalName string, isHeadless bool, selector map[string]string) *v1.Service
- func CreateStatefulSetService(name string, labels map[string]string) *v1.Service
- func CreateTestingNS(baseName string, c clientset.Interface, labels map[string]string) (*v1.Namespace, error)
- func CreateUnschedulablePod(client clientset.Interface, namespace string, nodeSelector map[string]string, ...) (*v1.Pod, error)
- func CreateWaitAndDeletePod(f *Framework, c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (err error)
- func DeleteAllStatefulSets(c clientset.Interface, ns string)
- func DeleteManagedInstanceGroup(zone string) error
- func DeleteNamespaces(c clientset.Interface, deleteFilter, skipFilter []string) ([]string, error)
- func DeleteNodeOnCloudProvider(node *v1.Node) error
- func DeletePDWithRetry(diskName string) error
- func DeletePVCandValidatePV(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim, ...) error
- func DeletePVCandValidatePVGroup(c clientset.Interface, ns string, pvols PVMap, claims PVCMap, ...) error
- func DeletePVSource(pvSource *v1.PersistentVolumeSource) error
- func DeletePersistentVolume(c clientset.Interface, pvName string) error
- func DeletePersistentVolumeClaim(c clientset.Interface, pvcName string, ns string) error
- func DeletePodOrFail(c clientset.Interface, ns, name string)
- func DeletePodWithWait(f *Framework, c clientset.Interface, pod *v1.Pod) error
- func DeletePodWithWaitByName(f *Framework, c clientset.Interface, podName, podNamespace string) error
- func DeleteRCAndWaitForGC(c clientset.Interface, ns, name string) error
- func DeleteResourceAndWaitForGC(c clientset.Interface, kind schema.GroupKind, ns, name string) error
- func DescribeIng(ns string)
- func DescribeItem(item interface{}) string
- func DescribeSvc(ns string)
- func DsFromManifest(url string) (*apps.DaemonSet, error)
- func DumpAllNamespaceInfo(c clientset.Interface, namespace string)
- func DumpDebugInfo(c clientset.Interface, ns string)
- func DumpEventsInNamespace(eventsLister EventsLister, namespace string)
- func DumpNodeDebugInfo(c clientset.Interface, nodeNames []string, ...)
- func EnableAndDisableInternalLB() (enable func(svc *v1.Service), disable func(svc *v1.Service))
- func EnsureLoadBalancerResourcesDeleted(ip, portRange string) error
- func EtcdUpgrade(targetStorage, targetVersion string) error
- func ExpectError(err error, explain ...interface{})
- func ExpectNoError(err error, explain ...interface{})
- func ExpectNoErrorWithOffset(offset int, err error, explain ...interface{})
- func ExpectNoErrorWithRetries(fn func() error, maxRetries int, explain ...interface{})
- func ExpectNodeHasLabel(c clientset.Interface, nodeName string, labelKey string, labelValue string)
- func ExpectNodeHasTaint(c clientset.Interface, nodeName string, taint *v1.Taint)
- func Failf(format string, args ...interface{})
- func FailfWithOffset(offset int, format string, args ...interface{})
- func FilterNodes(nodeList *v1.NodeList, fn func(node v1.Node) bool)
- func FilterNonRestartablePods(pods []*v1.Pod) []*v1.Pod
- func FormatRuntimeOperationErrorRate(nodesResult map[string]NodeRuntimeOperationErrorRate) string
- func GatherCPUProfile(componentName string, profileBaseName string, wg *sync.WaitGroup)
- func GatherCPUProfileForSeconds(componentName string, profileBaseName string, seconds int, wg *sync.WaitGroup)
- func GatherMemoryProfile(componentName string, profileBaseName string, wg *sync.WaitGroup)
- func GenerateMasterRegexp(prefix string) string
- func GetAllMasterAddresses(c clientset.Interface) []string
- func GetBoundPV(client clientset.Interface, pvc *v1.PersistentVolumeClaim) (*v1.PersistentVolume, error)
- func GetClusterZones(c clientset.Interface) (sets.String, error)
- func GetDefaultStorageClassName(c clientset.Interface) (string, error)
- func GetFileModeRegex(filePath string, mask *int32) string
- func GetGroupNodes(group string) ([]string, error)
- func GetHostExternalAddress(client clientset.Interface, p *v1.Pod) (externalAddress string, err error)
- func GetIngressPoint(ing *v1.LoadBalancerIngress) string
- func GetKubeletHeapStats(c clientset.Interface, nodeName string) (string, error)
- func GetKubeletPods(c clientset.Interface, node string) (*v1.PodList, error)
- func GetKubeletRunningPods(c clientset.Interface, node string) (*v1.PodList, error)
- func GetKubemarkMasterComponentsResourceUsage() map[string]*KubemarkResourceUsage
- func GetLogToFileFunc(file *os.File) func(format string, args ...interface{})
- func GetManagedInstanceGroupTemplateName(zone string) (string, error)
- func GetMasterAndWorkerNodesOrDie(c clientset.Interface) (sets.String, *v1.NodeList)
- func GetMasterHost() string
- func GetNodeAddresses(node *v1.Node, addressType v1.NodeAddressType) (ips []string)
- func GetNodeExternalIP(node *v1.Node) (string, error)
- func GetNodeInternalIP(node *v1.Node) (string, error)
- func GetNodePortURL(client clientset.Interface, ns, name string, svcPort int) (string, error)
- func GetNodePublicIps(c clientset.Interface) ([]string, error)
- func GetPodLogs(c clientset.Interface, namespace, podName, containerName string) (string, error)
- func GetPodSecretUpdateTimeout(c clientset.Interface) time.Duration
- func GetPodsInNamespace(c clientset.Interface, ns string, ignoreLabels map[string]string) ([]*v1.Pod, error)
- func GetPodsScheduled(masterNodes sets.String, pods *v1.PodList) (scheduledPods, notScheduledPods []v1.Pod)
- func GetProviders() []string
- func GetReadyNodesIncludingTaintedOrDie(c clientset.Interface) (nodes *v1.NodeList)
- func GetReadySchedulableNodesOrDie(c clientset.Interface) (nodes *v1.NodeList)
- func GetServiceLoadBalancerCreationTimeout(cs clientset.Interface) time.Duration
- func GetServicesProxyRequest(c clientset.Interface, request *restclient.Request) (*restclient.Request, error)
- func GetStatsSummary(c clientset.Interface, nodeName string) (*stats.Summary, error)
- func GroupSize(group string) (int, error)
- func HandleFlags()
- func IsNodeConditionSetAsExpected(node *v1.Node, conditionType v1.NodeConditionType, wantTrue bool) bool
- func IsNodeConditionSetAsExpectedSilent(node *v1.Node, conditionType v1.NodeConditionType, wantTrue bool) bool
- func IsNodeConditionUnset(node *v1.Node, conditionType v1.NodeConditionType) bool
- func IsPodSecurityPolicyEnabled(f *Framework) bool
- func KubeDescribe(text string, body func()) bool
- func KubectlCmd(args ...string) *exec.Cmd
- func KubectlVersion() (*utilversion.Version, error)
- func LaunchHostExecPod(client clientset.Interface, ns, name string) *v1.Pod
- func ListNamespaceEvents(c clientset.Interface, ns string) error
- func LoadClientset() (*clientset.Clientset, error)
- func LoadConfig() (*restclient.Config, error)
- func LogClusterImageSources()
- func LogFailedContainers(c clientset.Interface, ns string, ...)
- func LogSuspiciousLatency(latencyData []PodLatencyData, latencyDataLag []PodLatencyData, nodeCount int, ...)
- 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 MakePersistentVolume(pvConfig PersistentVolumeConfig) *v1.PersistentVolume
- func MakePersistentVolumeClaim(cfg PersistentVolumeClaimConfig, ns string) *v1.PersistentVolumeClaim
- func MakePod(ns string, nodeSelector map[string]string, ...) *v1.Pod
- func MakeSecPod(ns string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, ...) *v1.Pod
- func MakeWritePod(ns string, pvc *v1.PersistentVolumeClaim) *v1.Pod
- func MasterOSDistroIs(supportedMasterOsDistros ...string) bool
- func MasterUpgrade(v string) error
- func MasterUpgradeGCEWithKubeProxyDaemonSet(v string, enableKubeProxyDaemonSet bool) error
- func MigTemplate() (string, error)
- func NewE2ETestNodePreparer(client clientset.Interface, countToStrategy []testutils.CountToStrategy) testutils.TestNodePreparer
- func NewExecPodSpec(ns, name string, hostNetwork bool) *v1.Pod
- func NewStatefulSet(name, ns, governingSvcName string, replicas int32, ...) *apps.StatefulSet
- func NewStatefulSetPVC(name string) v1.PersistentVolumeClaim
- func NewStatefulSetScale(ss *apps.StatefulSet) *appsV1beta2.Scale
- func NodeAddresses(nodelist *v1.NodeList, addrType v1.NodeAddressType) []string
- func NodeHasTaint(c clientset.Interface, nodeName string, taint *v1.Taint) (bool, error)
- func NodeOSDistroIs(supportedNodeOsDistros ...string) bool
- func NodeProxyRequest(c clientset.Interface, node, endpoint string, port int) (restclient.Result, error)
- func NodeUpgrade(f *Framework, v string, img string) error
- func NodeUpgradeGCEWithKubeProxyDaemonSet(f *Framework, v string, img string, enableKubeProxyDaemonSet bool) error
- func NumberOfReadyNodes(c clientset.Interface) (int, error)
- func NumberOfRegisteredNodes(c clientset.Interface) (int, error)
- func OpenWebSocketForURL(url *url.URL, config *restclient.Config, protocols []string) (*websocket.Conn, error)
- func PVPVCCleanup(c clientset.Interface, ns string, pv *v1.PersistentVolume, ...) []error
- func PVPVCMapCleanup(c clientset.Interface, ns string, pvols PVMap, claims PVCMap) []error
- func ParseKVLines(output, key string) string
- func PickNodeIP(c clientset.Interface) string
- func PodStartupLatencyToPerfData(latency *PodStartupLatency) *perftype.PerfData
- func PodsCreated(c clientset.Interface, ns, name string, replicas int32) (*v1.PodList, error)
- func PodsCreatedByLabel(c clientset.Interface, ns, name string, replicas int32, label labels.Selector) (*v1.PodList, error)
- func PodsResponding(c clientset.Interface, ns, name string, wantName bool, pods *v1.PodList) error
- func PollURL(route, host string, timeout time.Duration, interval time.Duration, ...) error
- func PrettyPrint(item interface{}) string
- func PrettyPrintJSON(metrics interface{}) string
- func PrintAllKubeletPods(c clientset.Interface, nodeName string)
- func PrintLatencies(latencies []PodLatencyData, header string)
- func PrintPerfData(p *perftype.PerfData)
- func PrintSummaries(summaries []TestDataSummary, testBaseName string)
- func ProviderIs(providers ...string) bool
- func ProxyMode(f *Framework) (string, error)
- func RandomSuffix() string
- func RcByNameContainer(name string, replicas int32, image string, labels map[string]string, ...) *v1.ReplicationController
- func RcByNamePort(name string, replicas int32, image string, port int, protocol v1.Protocol, ...) *v1.ReplicationController
- func RegisterClusterFlags()
- func RegisterCommonFlags()
- func RegisterNodeFlags()
- func RegisterProvider(name string, factory Factory)
- func RemoveAvoidPodsOffNode(c clientset.Interface, nodeName string)
- func RemoveCleanupAction(p CleanupActionHandle)
- func RemoveLabelOffNode(c clientset.Interface, nodeName string, labelKey string)
- func RemoveTaintOffNode(c clientset.Interface, nodeName string, taint v1.Taint)
- func ResetMetrics(c clientset.Interface) error
- func ResetSchedulerMetrics(c clientset.Interface) error
- func ResizeGroup(group string, size int32) error
- func ResourceUsageToPerfData(usagePerNode ResourceUsagePerNode) *perftype.PerfData
- func ResourceUsageToPerfDataWithLabels(usagePerNode ResourceUsagePerNode, labels map[string]string) *perftype.PerfData
- func RestartApiserver(cs clientset.Interface) error
- func RestartControllerManager() error
- func RestartKubeProxy(host string) error
- func RestartKubelet(host string) error
- func RestclientConfig(kubeContext string) (*clientcmdapi.Config, error)
- func RunCleanupActions()
- func RunCmd(command string, args ...string) (string, string, error)
- func RunCmdEnv(env []string, command string, args ...string) (string, string, error)
- func RunHostCmd(ns, name, cmd string) (string, error)
- func RunHostCmdOrDie(ns, name, cmd string) string
- func RunHostCmdWithRetries(ns, name, cmd string, interval, timeout time.Duration) (string, error)
- func RunIfContainerRuntimeIs(runtimes ...string)
- func RunIfSystemSpecNameIs(names ...string)
- func RunKubectl(args ...string) (string, error)
- func RunKubectlInput(data string, args ...string) (string, error)
- func RunKubectlOrDie(args ...string) string
- func RunKubectlOrDieInput(data string, args ...string) string
- func RunKubemciCmd(args ...string) (string, error)
- func RunKubemciWithKubeconfig(args ...string) (string, error)
- func RunRC(config testutils.RCConfig) error
- func ScaleRC(clientset clientset.Interface, scalesGetter scaleclient.ScalesGetter, ...) error
- func ScaleResource(clientset clientset.Interface, scalesGetter scaleclient.ScalesGetter, ...) error
- func ServerVersionGTE(v *utilversion.Version, c discovery.ServerVersionInterface) (bool, error)
- func ServiceResponding(c clientset.Interface, ns, name string) error
- func SetAffinity(nodeSelection *NodeSelection, nodeName string)
- func SetAntiAffinity(nodeSelection *NodeSelection, nodeName string)
- func SetNodeAffinityRequirement(nodeSelection *NodeSelection, operator v1.NodeSelectorOperator, ...)
- func SimpleGET(c *http.Client, url, host string) (string, error)
- func SkipIfContainerRuntimeIs(runtimes ...string)
- func SkipIfMissingResource(dynamicClient dynamic.Interface, gvr schema.GroupVersionResource, ...)
- func SkipIfMultizone(c clientset.Interface)
- func SkipIfNoDefaultStorageClass(c clientset.Interface)
- func SkipIfProviderIs(unsupportedProviders ...string)
- func SkipUnlessAtLeast(value int, minValue int, message string)
- func SkipUnlessLocalEphemeralStorageEnabled()
- func SkipUnlessMasterOSDistroIs(supportedMasterOsDistros ...string)
- func SkipUnlessMultizone(c clientset.Interface)
- func SkipUnlessNodeCountIsAtLeast(minNodeCount int)
- func SkipUnlessNodeCountIsAtMost(maxNodeCount int)
- func SkipUnlessNodeOSDistroIs(supportedNodeOsDistros ...string)
- func SkipUnlessPrometheusMonitoringIsEnabled(supportedMonitoring ...string)
- func SkipUnlessProviderIs(supportedProviders ...string)
- func SkipUnlessSSHKeyPresent()
- func SkipUnlessServerVersionGTE(v *utilversion.Version, c discovery.ServerVersionInterface)
- func SkipUnlessTaintBasedEvictionsEnabled()
- func Skipf(format string, args ...interface{})
- func StartCPUProfileGatherer(componentName string, profileBaseName string, interval time.Duration) chan struct{}
- func StartCmdAndStreamOutput(cmd *exec.Cmd) (stdout, stderr io.ReadCloser, err error)
- func StartServeHostnameService(c clientset.Interface, svc *v1.Service, ns string, replicas int) ([]string, string, error)
- func StopServeHostnameService(clientset clientset.Interface, ns, name string) error
- func TargetContainers() []string
- func TestHitNodesFromOutside(externalIP string, httpPort int32, timeout time.Duration, ...) error
- func TestHitNodesFromOutsideWithCount(externalIP string, httpPort int32, timeout time.Duration, ...) error
- func TestUnderTemporaryNetworkFailure(c clientset.Interface, ns string, node *v1.Node, testFunc func())
- func TryKill(cmd *exec.Cmd)
- func UnblockNetwork(from string, to string)
- func UpdateDaemonSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateDSFunc) (ds *apps.DaemonSet, err error)
- func UpdateReplicationControllerWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateRcFunc) (*v1.ReplicationController, error)
- func UpdateService(c clientset.Interface, namespace, serviceName string, update func(*v1.Service)) (*v1.Service, error)
- func UpdateStatefulSetWithRetries(c clientset.Interface, namespace, name string, ...) (statefulSet *apps.StatefulSet, err error)
- func ValidateController(c clientset.Interface, containerImage string, replicas int, ...)
- func VerifyLatencyWithinThreshold(threshold, actual LatencyMetric, metricName string) error
- func VerifyPods(c clientset.Interface, ns, name string, wantName bool, replicas int32) error
- func VerifyPodsRunning(c clientset.Interface, ns, name string, wantName bool, replicas int32) error
- func VerifyServeHostnameServiceDown(c clientset.Interface, host string, serviceIP string, servicePort int) error
- func VerifyServeHostnameServiceUp(c clientset.Interface, ns, host string, expectedPods []string, ...) error
- func WaitAndVerifyBinds(c clientset.Interface, ns string, pvols PVMap, claims PVCMap, ...) error
- func WaitForAllNodesHealthy(c clientset.Interface, timeout time.Duration) error
- func WaitForAllNodesSchedulable(c clientset.Interface, timeout time.Duration) error
- func WaitForApiserverUp(c clientset.Interface) error
- func WaitForControlledPods(c clientset.Interface, ns, name string, kind schema.GroupKind) (pods *v1.PodList, err error)
- func WaitForControlledPodsRunning(c clientset.Interface, ns, name string, kind schema.GroupKind) error
- func WaitForControllerManagerUp() error
- func WaitForDaemonSets(c clientset.Interface, ns string, allowedNotReadyNodes int32, ...) error
- func WaitForDefaultServiceAccountInNamespace(c clientset.Interface, namespace string) error
- func WaitForGroupSize(group string, size int32) error
- func WaitForKubeletUp(host string) error
- func WaitForMasters(masterPrefix string, c clientset.Interface, size int, timeout time.Duration) error
- func WaitForMatchPodsCondition(c clientset.Interface, opts metav1.ListOptions, desc string, ...) error
- func WaitForNRestartablePods(ps *testutils.PodStore, expect int, timeout time.Duration) ([]string, error)
- func WaitForNamespacesDeleted(c clientset.Interface, namespaces []string, timeout time.Duration) error
- func WaitForNodeHasTaintOrNot(c clientset.Interface, nodeName string, taint *v1.Taint, wantTrue bool, ...) error
- func WaitForNodeToBe(c clientset.Interface, name string, conditionType v1.NodeConditionType, ...) bool
- func WaitForNodeToBeNotReady(c clientset.Interface, name string, timeout time.Duration) bool
- func WaitForNodeToBeReady(c clientset.Interface, name string, timeout time.Duration) bool
- func WaitForPVClaimBoundPhase(client clientset.Interface, pvclaims []*v1.PersistentVolumeClaim, ...) ([]*v1.PersistentVolume, error)
- func WaitForPersistentVolumeClaimDeleted(c clientset.Interface, ns string, pvcName string, Poll, timeout time.Duration) error
- func WaitForPersistentVolumeClaimPhase(phase v1.PersistentVolumeClaimPhase, c clientset.Interface, ns string, ...) error
- func WaitForPersistentVolumeClaimsPhase(phase v1.PersistentVolumeClaimPhase, c clientset.Interface, ns string, ...) error
- func WaitForPersistentVolumeDeleted(c clientset.Interface, pvName string, Poll, timeout time.Duration) error
- func WaitForPersistentVolumePhase(phase v1.PersistentVolumePhase, c clientset.Interface, pvName string, ...) error
- func WaitForPodCondition(c clientset.Interface, ns, podName, desc string, timeout time.Duration, ...) error
- func WaitForPodNameRunningInNamespace(c clientset.Interface, podName, namespace string) error
- func WaitForPodNameUnschedulableInNamespace(c clientset.Interface, podName, namespace string) error
- func WaitForPodNoLongerRunningInNamespace(c clientset.Interface, podName, namespace string) error
- func WaitForPodNotPending(c clientset.Interface, ns, podName string) error
- func WaitForPodRunningInNamespace(c clientset.Interface, pod *v1.Pod) error
- func WaitForPodSuccessInNamespace(c clientset.Interface, podName string, namespace string) error
- func WaitForPodSuccessInNamespaceSlow(c clientset.Interface, podName string, namespace string) error
- func WaitForPodToDisappear(c clientset.Interface, ns, podName string, label labels.Selector, ...) error
- func WaitForPodsReady(c clientset.Interface, ns, name string, minReadySeconds int) error
- func WaitForPodsRunningReady(c clientset.Interface, ns string, minPods, allowedNotReadyPods int32, ...) error
- func WaitForPodsWithLabel(c clientset.Interface, ns string, label labels.Selector) (pods *v1.PodList, err error)
- func WaitForPodsWithLabelRunningReady(c clientset.Interface, ns string, label labels.Selector, num int, ...) (pods *v1.PodList, err error)
- func WaitForPodsWithLabelScheduled(c clientset.Interface, ns string, label labels.Selector) (pods *v1.PodList, err error)
- func WaitForRCPodToDisappear(c clientset.Interface, ns, rcName, podName string) error
- func WaitForRCToStabilize(c clientset.Interface, ns, name string, timeout time.Duration) error
- func WaitForReadyNodes(c clientset.Interface, size int, timeout time.Duration) error
- func WaitForReplicationController(c clientset.Interface, namespace, name string, exist bool, ...) error
- func WaitForReplicationControllerwithSelector(c clientset.Interface, namespace string, selector labels.Selector, exist bool, ...) error
- func WaitForService(c clientset.Interface, namespace, name string, exist bool, ...) error
- func WaitForServiceEndpointsNum(c clientset.Interface, namespace, serviceName string, expectNum int, ...) error
- func WaitForServiceWithSelector(c clientset.Interface, namespace string, selector labels.Selector, exist bool, ...) error
- func WaitForStableCluster(c clientset.Interface, masterNodes sets.String) int
- func WaitForStatefulSetReplicasReady(statefulSetName, ns string, c clientset.Interface, Poll, timeout time.Duration) error
- func WaitOnPVandPVC(c clientset.Interface, ns string, pv *v1.PersistentVolume, ...) error
- func WaitTimeoutForPodEvent(c clientset.Interface, podName, namespace, eventSelector, msg string, ...) error
- func WaitTimeoutForPodNoLongerRunningInNamespace(c clientset.Interface, podName, namespace string, timeout time.Duration) error
- func WaitTimeoutForPodRunningInNamespace(c clientset.Interface, podName, namespace string, timeout time.Duration) error
- type APICall
- type APIResponsiveness
- type CleanupActionHandle
- type ClientConfigGetter
- type CloudConfig
- type ClusterVerification
- type ContainerResourceGatherer
- type ContainerResourceUsage
- type ContainersCPUSummary
- type CreateTestingNSFn
- type E2ETestNodePreparer
- type EtcdMetrics
- type EtcdMetricsCollector
- type EventsLister
- type ExecOptions
- type Factory
- type FlakeReport
- type Framework
- func (f *Framework) AddNamespacesToDelete(namespaces ...*v1.Namespace)
- func (f *Framework) AfterEach()
- func (f *Framework) BeforeEach()
- func (f *Framework) CheckFileSizeViaContainer(podName, containerName, path string) (string, error)
- func (f *Framework) CreateFromManifests(patch func(item interface{}) error, files ...string) (func(), error)
- func (f *Framework) CreateItems(items ...interface{}) (func(), error)
- func (f *Framework) CreateNamespace(baseName string, labels map[string]string) (*v1.Namespace, error)
- func (f *Framework) CreatePodsPerNodeForSimpleApp(appName string, podSpec func(n v1.Node) v1.PodSpec, maxCount int) map[string]string
- func (f *Framework) CreateServiceForSimpleApp(contPort, svcPort int, appName string) *v1.Service
- func (f *Framework) CreateServiceForSimpleAppWithPods(contPort int, svcPort int, appName string, podSpec func(n v1.Node) v1.PodSpec, ...) (*v1.Service, error)
- func (f *Framework) ExecCommandInContainer(podName, containerName string, cmd ...string) string
- func (f *Framework) ExecCommandInContainerWithFullOutput(podName, containerName string, cmd ...string) (string, string, error)
- func (f *Framework) ExecShellInContainer(podName, containerName string, cmd string) string
- func (f *Framework) ExecShellInPod(podName string, cmd string) string
- func (f *Framework) ExecShellInPodWithFullOutput(podName string, cmd string) (string, string, error)
- func (f *Framework) ExecWithOptions(options ExecOptions) (string, string, error)
- func (f *Framework) LoadFromManifests(files ...string) ([]interface{}, error)
- func (f *Framework) MatchContainerOutput(pod *v1.Pod, containerName string, expectedOutput []string, ...) error
- func (f *Framework) NewAgnhostPod(name string, args ...string) *v1.Pod
- func (f *Framework) NewClusterVerification(namespace *v1.Namespace, filter PodStateVerification) *ClusterVerification
- func (f *Framework) NewTestPod(name string, requests v1.ResourceList, limits v1.ResourceList) *v1.Pod
- func (f *Framework) PatchItems(items ...interface{}) error
- func (f *Framework) PatchName(item *string)
- func (f *Framework) PatchNamespace(item *string)
- func (f *Framework) PodClient() *PodClient
- func (f *Framework) PodClientNS(namespace string) *PodClient
- func (f *Framework) ReadFileViaContainer(podName, containerName string, path string) (string, error)
- func (f *Framework) RecordFlakeIfError(err error, optionalDescription ...interface{})
- func (f *Framework) TestContainerOutput(scenarioName string, pod *v1.Pod, containerIndex int, expectedOutput []string)
- func (f *Framework) TestContainerOutputRegexp(scenarioName string, pod *v1.Pod, containerIndex int, expectedOutput []string)
- func (f *Framework) WaitForPodNoLongerRunning(podName string) error
- func (f *Framework) WaitForPodNotFound(podName string, timeout time.Duration) 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 HTTPPokeParams
- type HTTPPokeResult
- type HTTPPokeStatus
- type Histogram
- type HistogramVec
- type InvariantFunc
- type ItemFactory
- type KubeCluster
- type KubeConfig
- type KubeUser
- type KubectlBuilder
- func (b KubectlBuilder) Exec() (string, error)
- func (b KubectlBuilder) ExecOrDie() string
- func (b *KubectlBuilder) WithEnv(env []string) *KubectlBuilder
- func (b KubectlBuilder) WithStdinData(data string) *KubectlBuilder
- func (b KubectlBuilder) WithStdinReader(reader io.Reader) *KubectlBuilder
- func (b *KubectlBuilder) WithTimeout(t <-chan time.Time) *KubectlBuilder
- type KubeletLatencyMetric
- type KubeletLatencyMetrics
- func GetDefaultKubeletLatencyMetrics(ms metrics.KubeletMetrics) KubeletLatencyMetrics
- func GetKubeletLatencyMetrics(ms metrics.KubeletMetrics, filterMetricNames sets.String) KubeletLatencyMetrics
- func HighLatencyKubeletOperations(c clientset.Interface, threshold time.Duration, nodeName string, ...) (KubeletLatencyMetrics, error)
- type KubemarkResourceUsage
- type LatencyMetric
- type LatencySlice
- type LogSizeDataTimeseries
- type LogSizeGatherer
- type LogsSizeData
- type LogsSizeDataSummary
- type LogsSizeVerifier
- type MetricsForE2E
- type NetworkingTestConfig
- func (config *NetworkingTestConfig) DeleteNetProxyPod()
- func (config *NetworkingTestConfig) DeleteNodePortService()
- func (config *NetworkingTestConfig) DialFromContainer(protocol, containerIP, targetIP string, ...)
- func (config *NetworkingTestConfig) DialFromEndpointContainer(protocol, targetIP string, targetPort, maxTries, minTries int, ...)
- func (config *NetworkingTestConfig) DialFromNode(protocol, targetIP string, targetPort, maxTries, minTries int, ...)
- func (config *NetworkingTestConfig) DialFromTestContainer(protocol, targetIP string, targetPort, maxTries, minTries int, ...)
- func (config *NetworkingTestConfig) EndpointHostnames() sets.String
- func (config *NetworkingTestConfig) GetEndpointsFromContainer(protocol, containerIP, targetIP string, ...) (sets.String, error)
- func (config *NetworkingTestConfig) GetEndpointsFromTestContainer(protocol, targetIP string, targetPort, tries int) (sets.String, error)
- func (config *NetworkingTestConfig) GetSelfURL(port int32, path string, expected string)
- func (config *NetworkingTestConfig) GetSelfURLStatusCode(port int32, path string, expected string)
- type NodeKiller
- type NodeKillerConfig
- type NodeRuntimeOperationErrorRate
- type NodeSelection
- type NodeTestContextType
- type NodesCPUSummary
- type NodesSet
- type NullProvider
- func (n NullProvider) CleanupServiceResources(c clientset.Interface, loadBalancerName, region, zone string)
- func (n NullProvider) CreatePD(zone string) (string, error)
- func (n NullProvider) CreatePVSource(zone, diskName string) (*v1.PersistentVolumeSource, error)
- func (n NullProvider) DeleteNode(node *v1.Node) error
- func (n NullProvider) DeletePD(pdName string) error
- func (n NullProvider) DeletePVSource(pvSource *v1.PersistentVolumeSource) error
- func (n NullProvider) EnableAndDisableInternalLB() (enable, disable func(svc *v1.Service))
- func (n NullProvider) EnsureLoadBalancerResourcesDeleted(ip, portRange string) error
- func (n NullProvider) FrameworkAfterEach(f *Framework)
- func (n NullProvider) FrameworkBeforeEach(f *Framework)
- func (n NullProvider) GetGroupNodes(group string) ([]string, error)
- func (n NullProvider) GroupSize(group string) (int, error)
- func (n NullProvider) LoadBalancerSrcRanges() []string
- func (n NullProvider) ResizeGroup(string, int32) error
- type Options
- type PVCMap
- type PVMap
- type PersistentVolumeClaimConfig
- type PersistentVolumeConfig
- type PingCommand
- type PodClient
- func (c *PodClient) Create(pod *v1.Pod) *v1.Pod
- func (c *PodClient) CreateBatch(pods []*v1.Pod) []*v1.Pod
- func (c *PodClient) CreateEventually(pod *v1.Pod, opts ...interface{}) *v1.Pod
- func (c *PodClient) CreateSync(pod *v1.Pod) *v1.Pod
- func (c *PodClient) CreateSyncInNamespace(pod *v1.Pod, namespace string) *v1.Pod
- func (c *PodClient) DeleteSync(name string, options *metav1.DeleteOptions, timeout time.Duration)
- func (c *PodClient) DeleteSyncInNamespace(name string, namespace string, options *metav1.DeleteOptions, ...)
- func (c *PodClient) MatchContainerOutput(name string, containerName string, expectedRegexp string) error
- func (c *PodClient) PodIsReady(name string) bool
- func (c *PodClient) Update(name string, updateFn func(pod *v1.Pod))
- func (c *PodClient) WaitForErrorEventOrSuccess(pod *v1.Pod) (*v1.Event, error)
- func (c *PodClient) WaitForFailure(name string, timeout time.Duration)
- func (c *PodClient) WaitForFinish(name string, timeout time.Duration)
- func (c *PodClient) WaitForSuccess(name string, timeout time.Duration)
- type PodLatencyData
- type PodNode
- type PodProxyResponseChecker
- type PodStartupLatency
- type PodStateVerification
- type ProviderInterface
- 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 SchedulingMetrics
- type ServiceTestFixture
- func (t *ServiceTestFixture) BuildServiceSpec() *v1.Service
- func (t *ServiceTestFixture) Cleanup() []error
- func (t *ServiceTestFixture) CreateRC(rc *v1.ReplicationController) (*v1.ReplicationController, error)
- func (t *ServiceTestFixture) CreateService(service *v1.Service) (*v1.Service, error)
- func (t *ServiceTestFixture) DeleteService(serviceName string) error
- type ServiceTestJig
- func (j *ServiceTestJig) AddRCAntiAffinity(rc *v1.ReplicationController)
- func (j *ServiceTestJig) ChangeServiceNodePortOrFail(namespace, name string, initial int) *v1.Service
- func (j *ServiceTestJig) ChangeServiceType(namespace, name string, newType v1.ServiceType, timeout time.Duration)
- func (j *ServiceTestJig) CreateExternalNameServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service
- func (j *ServiceTestJig) CreateLoadBalancerService(namespace, serviceName string, timeout time.Duration, ...) *v1.Service
- func (j *ServiceTestJig) CreateOnlyLocalLoadBalancerService(namespace, serviceName string, timeout time.Duration, createPod bool, ...) *v1.Service
- func (j *ServiceTestJig) CreateOnlyLocalNodePortService(namespace, serviceName string, createPod bool) *v1.Service
- func (j *ServiceTestJig) CreatePDBOrFail(namespace string, rc *v1.ReplicationController) *policyv1beta1.PodDisruptionBudget
- func (j *ServiceTestJig) CreateServiceWithServicePort(labels map[string]string, namespace string, ports []v1.ServicePort) (*v1.Service, error)
- func (j *ServiceTestJig) CreateTCPServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service
- func (j *ServiceTestJig) CreateTCPServiceWithPort(namespace string, tweak func(svc *v1.Service), port int32) *v1.Service
- func (j *ServiceTestJig) CreateUDPServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service
- func (j *ServiceTestJig) GetEndpointNodes(svc *v1.Service) map[string][]string
- func (j *ServiceTestJig) GetHTTPContent(host string, port int, timeout time.Duration, url string) bytes.Buffer
- func (j *ServiceTestJig) GetNodes(maxNodesForTest int) (nodes *v1.NodeList)
- func (j *ServiceTestJig) GetNodesNames(maxNodesForTest int) []string
- func (j *ServiceTestJig) LaunchEchoserverPodOnNode(f *Framework, nodeName, podName string)
- func (j *ServiceTestJig) LaunchNetexecPodOnNode(f *Framework, nodeName, podName string, httpPort, udpPort int32, ...)
- func (j *ServiceTestJig) RunOrFail(namespace string, tweak func(rc *v1.ReplicationController)) *v1.ReplicationController
- func (j *ServiceTestJig) SanityCheckService(svc *v1.Service, svcType v1.ServiceType)
- func (j *ServiceTestJig) Scale(namespace string, replicas int)
- func (j *ServiceTestJig) TestHTTPHealthCheckNodePort(host string, port int, request string, timeout time.Duration, ...) error
- func (j *ServiceTestJig) TestNotReachableHTTP(host string, port int, timeout time.Duration)
- func (j *ServiceTestJig) TestNotReachableUDP(host string, port int, timeout time.Duration)
- func (j *ServiceTestJig) TestReachableHTTP(host string, port int, timeout time.Duration)
- func (j *ServiceTestJig) TestReachableHTTPWithRetriableErrorCodes(host string, port int, retriableErrCodes []int, timeout time.Duration)
- func (j *ServiceTestJig) TestReachableUDP(host string, port int, timeout time.Duration)
- func (j *ServiceTestJig) TestRejectedHTTP(host string, port int, timeout time.Duration)
- func (j *ServiceTestJig) TestRejectedUDP(host string, port int, timeout time.Duration)
- func (j *ServiceTestJig) UpdateService(namespace, name string, update func(*v1.Service)) (*v1.Service, error)
- func (j *ServiceTestJig) UpdateServiceOrFail(namespace, name string, update func(*v1.Service)) *v1.Service
- func (j *ServiceTestJig) WaitForEndpointOnNode(namespace, serviceName, nodeName string)
- func (j *ServiceTestJig) WaitForLoadBalancerDestroyOrFail(namespace, name string, ip string, port int, timeout time.Duration) *v1.Service
- func (j *ServiceTestJig) WaitForLoadBalancerOrFail(namespace, name string, timeout time.Duration) *v1.Service
- func (j *ServiceTestJig) WaitForNewIngressIPOrFail(namespace, name, existingIP string, timeout time.Duration) *v1.Service
- type SingleContainerSummary
- type SingleLogSummary
- type StatefulSetTester
- func (s *StatefulSetTester) BreakHTTPProbe(ss *apps.StatefulSet) error
- func (s *StatefulSetTester) BreakPodHTTPProbe(ss *apps.StatefulSet, pod *v1.Pod) error
- func (s *StatefulSetTester) CheckHostname(ss *apps.StatefulSet) error
- func (s *StatefulSetTester) CheckMount(ss *apps.StatefulSet, mountPath string) error
- func (s *StatefulSetTester) CheckServiceName(ss *apps.StatefulSet, expectedServiceName string) error
- func (s *StatefulSetTester) ConfirmStatefulPodCount(count int, ss *apps.StatefulSet, timeout time.Duration, hard bool)
- func (s *StatefulSetTester) CreateStatefulSet(manifestPath, ns string) *apps.StatefulSet
- func (s *StatefulSetTester) DeleteStatefulPodAtIndex(index int, ss *apps.StatefulSet)
- func (s *StatefulSetTester) ExecInStatefulPods(ss *apps.StatefulSet, cmd string) error
- func (s *StatefulSetTester) GetPodList(ss *apps.StatefulSet) *v1.PodList
- func (s *StatefulSetTester) GetStatefulSet(namespace, name string) *apps.StatefulSet
- func (s *StatefulSetTester) PauseNewPods(ss *apps.StatefulSet)
- func (s *StatefulSetTester) Restart(ss *apps.StatefulSet)
- func (s *StatefulSetTester) RestoreHTTPProbe(ss *apps.StatefulSet) error
- func (s *StatefulSetTester) RestorePodHTTPProbe(ss *apps.StatefulSet, pod *v1.Pod) error
- func (s *StatefulSetTester) ResumeNextPod(ss *apps.StatefulSet)
- func (s *StatefulSetTester) Saturate(ss *apps.StatefulSet)
- func (s *StatefulSetTester) Scale(ss *apps.StatefulSet, count int32) (*apps.StatefulSet, error)
- func (s *StatefulSetTester) SetHTTPProbe(ss *apps.StatefulSet)
- func (s *StatefulSetTester) SortStatefulPods(pods *v1.PodList)
- func (s *StatefulSetTester) UpdateReplicas(ss *apps.StatefulSet, count int32)
- func (s *StatefulSetTester) VerifyPodAtIndex(index int, ss *apps.StatefulSet, verify VerifyStatefulPodFunc)
- func (s *StatefulSetTester) WaitForPartitionedRollingUpdate(set *apps.StatefulSet) (*apps.StatefulSet, *v1.PodList)
- func (s *StatefulSetTester) WaitForPodNotReady(set *apps.StatefulSet, podName string) (*apps.StatefulSet, *v1.PodList)
- func (s *StatefulSetTester) WaitForPodReady(set *apps.StatefulSet, podName string) (*apps.StatefulSet, *v1.PodList)
- func (s *StatefulSetTester) WaitForRollingUpdate(set *apps.StatefulSet) (*apps.StatefulSet, *v1.PodList)
- func (s *StatefulSetTester) WaitForRunning(numPodsRunning, numPodsReady int32, ss *apps.StatefulSet)
- func (s *StatefulSetTester) WaitForRunningAndNotReady(numStatefulPods int32, ss *apps.StatefulSet)
- func (s *StatefulSetTester) WaitForRunningAndReady(numStatefulPods int32, ss *apps.StatefulSet)
- func (s *StatefulSetTester) WaitForState(ss *apps.StatefulSet, until func(*apps.StatefulSet, *v1.PodList) (bool, error))
- func (s *StatefulSetTester) WaitForStatus(set *apps.StatefulSet) *apps.StatefulSet
- func (s *StatefulSetTester) WaitForStatusReadyReplicas(ss *apps.StatefulSet, expectedReplicas int32)
- func (s *StatefulSetTester) WaitForStatusReplicas(ss *apps.StatefulSet, expectedReplicas int32)
- type TestContextType
- type TestDataSummary
- type TimestampedSize
- type UDPPokeParams
- type UDPPokeResult
- type UDPPokeStatus
- type VerifyStatefulPodFunc
- type What
- type WorkItem
Constants ¶
const ( // EndpointHTTPPort is an endpoint HTTP port for testing. EndpointHTTPPort = 8080 // EndpointUDPPort is an endpoint UDP port for testing. EndpointUDPPort = 8081 // ClusterHTTPPort is a cluster HTTP port for testing. ClusterHTTPPort = 80 // ClusterUDPPort is a cluster UDP port for testing. ClusterUDPPort = 90 // SessionAffinityChecks is number of checks to hit a given set of endpoints when enable session affinity. SessionAffinityChecks = 10 // RegexIPv4 is a regex to match IPv4 addresses RegexIPv4 = "(?:\\d+)\\.(?:\\d+)\\.(?:\\d+)\\.(?:\\d+)" // RegexIPv6 is a regex to match IPv6 addresses RegexIPv6 = "" /* 1910-byte string literal not displayed */ )
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 // LoadBalancerCreateTimeoutDefault is the default time 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 is the maximum time to wait for a load balancer to be created/modified. LoadBalancerCreateTimeoutLarge = 2 * time.Hour // LoadBalancerCleanupTimeout is the 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 // LoadBalancerPollTimeout is the time required by the loadbalancer to poll. // On average it takes ~6 minutes for a single backend to come online in GCE. LoadBalancerPollTimeout = 15 * time.Minute // LoadBalancerPollInterval is the interval value in which the loadbalancer polls. LoadBalancerPollInterval = 30 * time.Second // LargeClusterMinNodesNumber is the number of nodes which a large cluster consists of. LargeClusterMinNodesNumber = 100 // MaxNodesForEndpointsTests is the max number for testing endpoints. // 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 // GCPMaxInstancesInInstanceGroup is the maximum number of instances supported in // one instance group on GCP. GCPMaxInstancesInInstanceGroup = 2000 // AffinityConfirmCount is the number of needed continuous requests to confirm that // affinity is enabled. AffinityConfirmCount = 15 )
const ( // StatefulSetPoll is a poll interval for StatefulSet tests StatefulSetPoll = 10 * time.Second // StatefulSetTimeout is a timeout interval for StatefulSet operations StatefulSetTimeout = 10 * time.Minute // StatefulPodTimeout is a timeout for stateful pods to change state StatefulPodTimeout = 5 * time.Minute )
const ( // PodListTimeout is how long to wait for the pod to be listable. PodListTimeout = time.Minute // PodStartTimeout is how long to wait for the pod to be started. // 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 // PodStartShortTimeout is same as `PodStartTimeout` to wait for the pod to be started, but shorter. // Use it case by case when we are sure pod start will not be delayed. // minutes by slow docker pulls or something else. PodStartShortTimeout = 2 * time.Minute // PodDeleteTimeout is how long to wait for a pod to be deleted. PodDeleteTimeout = 5 * time.Minute // PodEventTimeout is how much we wait for a pod event to occur. PodEventTimeout = 2 * time.Minute // NamespaceCleanupTimeout is how long to wait for the namespace to be deleted. // 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 // ServiceStartTimeout is how long to wait for a service endpoint to be resolvable. ServiceStartTimeout = 3 * time.Minute // Poll is how often to Poll pods, nodes and claims. Poll = 2 * time.Second // PollShortTimeout is the short timeout value in polling. PollShortTimeout = 1 * time.Minute // PollLongTimeout is the long timeout value in polling. PollLongTimeout = 5 * time.Minute // ServiceAccountProvisionTimeout is how long to wait for a service account to be provisioned. // 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 // SingleCallTimeout is 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 // NodeReadyInitialTimeout is 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 // PodReadyBeforeTimeout is how long pods have to be "ready" when a test begins. PodReadyBeforeTimeout = 5 * time.Minute // ServiceRespondingTimeout is how long to wait for a service to be responding. ServiceRespondingTimeout = 2 * time.Minute // ClaimProvisionTimeout is how long claims have to become dynamically provisioned. ClaimProvisionTimeout = 5 * time.Minute // ClaimProvisionShortTimeout is same as `ClaimProvisionTimeout` to wait for claim to be dynamically provisioned, but shorter. // Use it case by case when we are sure this timeout is enough. ClaimProvisionShortTimeout = 1 * time.Minute // ClaimBindingTimeout is how long claims have to become bound. ClaimBindingTimeout = 3 * time.Minute // ClaimDeletingTimeout is How long claims have to become deleted. ClaimDeletingTimeout = 3 * time.Minute // PVReclaimingTimeout is how long PVs have to beome reclaimed. PVReclaimingTimeout = 3 * time.Minute // PVBindingTimeout is how long PVs have to become bound. PVBindingTimeout = 3 * time.Minute // PVDeletingTimeout is how long PVs have to become deleted. PVDeletingTimeout = 3 * time.Minute // RecreateNodeReadyAgainTimeout is how long a node is allowed to become "Ready" after it is recreated before // the test is considered failed. RecreateNodeReadyAgainTimeout = 10 * time.Minute // RestartNodeReadyAgainTimeout is how long a node is allowed to become "Ready" after it is restarted before // the test is considered failed. RestartNodeReadyAgainTimeout = 5 * time.Minute // RestartPodReadyAgainTimeout is how long a pod is allowed to become "running" and "ready" after a node // restart before test is considered failed. RestartPodReadyAgainTimeout = 5 * time.Minute // SnapshotCreateTimeout is how long for snapshot to create snapshotContent. SnapshotCreateTimeout = 5 * time.Minute )
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.
const (
// DefaultCPUProfileSeconds is default value for how long the CPU profile is gathered for.
DefaultCPUProfileSeconds = 30
)
const ( // DefaultNamespaceDeletionTimeout is timeout duration for waiting for a namespace deletion. // TODO(mikedanese): reset this to 5 minutes once #47135 is resolved. // ref https://github.com/kubernetes/kubernetes/issues/47135 DefaultNamespaceDeletionTimeout = 10 * time.Minute )
const (
// DefaultNumNodes is the number of nodes. If not specified, then number of nodes is auto-detected
DefaultNumNodes = -1
)
const DefaultPodDeletionTimeout = 3 * time.Minute
DefaultPodDeletionTimeout is the default timeout for deleting pod
const NoCPUConstraint = math.MaxFloat64
NoCPUConstraint is the number of constraint for CPU.
const ( // NodeStartupThreshold is a rough estimate of the time allocated for a pod to start on a node. NodeStartupThreshold = 4 * time.Second )
const (
// VolumeSelectorKey is the key for volume selector.
VolumeSelectorKey = "e2e-pv-pool"
)
Variables ¶
var ( // BusyBoxImage is the image URI of BusyBox. BusyBoxImage = imageutils.GetE2EImage(imageutils.BusyBox) // ServeHostnameImage is a serve hostname image name. ServeHostnameImage = imageutils.GetE2EImage(imageutils.ServeHostname) )
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.
var ProvidersWithSSH = []string{"gce", "gke", "aws", "local"}
ProvidersWithSSH are those providers where each node is accessible with SSH
var RunID = uuid.NewUUID()
RunID is a unique identifier of the e2e run. Beware that this ID is not the same for all tests in the e2e run, because each Ginkgo node creates it separately.
var ( // SELinuxLabel is common selinux labels. SELinuxLabel = &v1.SELinuxOptions{ Level: "s0:c0,c1"} )
var ServiceNodePortRange = utilnet.PortRange{Base: 30000, Size: 2768}
ServiceNodePortRange should match whatever the default/configured range is
Functions ¶
func APICallToPerfData ¶
func APICallToPerfData(apicalls *APIResponsiveness) *perftype.PerfData
APICallToPerfData transforms APIResponsiveness to PerfData.
func AddOrUpdateAvoidPodOnNode ¶
AddOrUpdateAvoidPodOnNode adds avoidPods annotations to node, will override if it exists
func AddOrUpdateLabelOnNode ¶
AddOrUpdateLabelOnNode adds the given label key and value to the given node or updates value.
func AddOrUpdateLabelOnNodeAndReturnOldValue ¶
func AddOrUpdateLabelOnNodeAndReturnOldValue(c clientset.Interface, nodeName string, labelKey, labelValue string) string
AddOrUpdateLabelOnNodeAndReturnOldValue adds the given label key and value to the given node or updates value and returns the old label value.
func AddOrUpdateTaintOnNode ¶
AddOrUpdateTaintOnNode adds the given taint to the given node or updates taint.
func AfterReadingAllFlags ¶
func AfterReadingAllFlags(t *TestContextType)
AfterReadingAllFlags makes changes to the context after all flags have been read.
func AllNodesReady ¶
AllNodesReady 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 AssertCleanup ¶
AssertCleanup asserts that cleanup of a namespace wrt selectors occurred.
func BlockNetwork ¶
BlockNetwork blocks network between the given from value and the given to value. 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 CPUUsageToPerfDataWithLabels ¶
func CPUUsageToPerfDataWithLabels(usagePerNode NodesCPUSummary, labels map[string]string) *perftype.PerfData
CPUUsageToPerfDataWithLabels transforms NodesCPUSummary to PerfData with additional labels.
func CheckAffinity ¶
func CheckAffinity(jig *ServiceTestJig, execPod *v1.Pod, targetIP string, targetPort int, shouldHold bool) bool
CheckAffinity function tests whether the service affinity works as expected. If affinity is expected, the test will return true once affinityConfirmCount number of same response observed in a row. If affinity is not expected, the test will keep observe until different responses observed. The function will return false only in case of unexpected errors.
func CheckConnectivityToHost ¶
func CheckConnectivityToHost(f *Framework, nodeName, podName, host string, pingCmd PingCommand, 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 CheckForControllerManagerHealthy ¶
CheckForControllerManagerHealthy checks that the controller manager does not crash within "duration"
func CheckInvariants ¶
func CheckInvariants(events []watch.Event, fns ...InvariantFunc) error
CheckInvariants checks for invariant of the each events.
func CheckNodesReady ¶
CheckNodesReady waits up to timeout for cluster to has desired size and there is no not-ready nodes in it. By cluster size we mean number of Nodes excluding Master Node.
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 CheckReachabilityFromPod ¶
func CheckReachabilityFromPod(expectToBeReachable bool, timeout time.Duration, namespace, pod, target string)
CheckReachabilityFromPod checks reachability from the specified pod.
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 ¶
Cleanup stops everything from filePath from namespace ns and checks if everything matching selectors from the given namespace is correctly stopped.
func CleanupServiceResources ¶
CleanupServiceResources cleans up service Type=LoadBalancer resources.
func CollectAddresses ¶
func CollectAddresses(nodes *v1.NodeList, addressType v1.NodeAddressType) []string
CollectAddresses returns a list of addresses of the given addressType for the given list of nodes
func ConformanceIt ¶
ConformanceIt is wrapper function for ginkgo It. Adds "[Conformance]" tag and makes static analysis easier.
func ContainerInitInvariant ¶
ContainerInitInvariant checks for an init containers are initialized and invariant on both older and newer.
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 ¶
func CreateClientPod(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (*v1.Pod, error)
CreateClientPod defines and creates a pod with a mounted PV. Pod runs infinite loop until killed.
func CreateEmptyFileOnPod ¶
CreateEmptyFileOnPod creates empty file at given path on the pod.
func CreateExecPodOrFail ¶
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 CreateManagedInstanceGroup ¶
CreateManagedInstanceGroup creates a Compute Engine managed instance group.
func CreateNginxPod ¶
func CreateNginxPod(client clientset.Interface, namespace string, nodeSelector map[string]string, pvclaims []*v1.PersistentVolumeClaim) (*v1.Pod, error)
CreateNginxPod creates an enginx pod.
func CreatePDWithRetry ¶
CreatePDWithRetry creates PD with retry.
func CreatePDWithRetryAndZone ¶
CreatePDWithRetryAndZone creates PD on zone with retry.
func CreatePV ¶
func CreatePV(c clientset.Interface, pv *v1.PersistentVolume) (*v1.PersistentVolume, error)
CreatePV creates the PV resource. Fails test on error.
func CreatePVC ¶
func CreatePVC(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error)
CreatePVC creates the PVC resource. Fails test on error.
func CreatePVCPV ¶
func CreatePVCPV(c clientset.Interface, pvConfig PersistentVolumeConfig, pvcConfig PersistentVolumeClaimConfig, ns string, preBind bool) (*v1.PersistentVolume, *v1.PersistentVolumeClaim, error)
CreatePVCPV creates 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 ¶
func CreatePVPVC(c clientset.Interface, pvConfig PersistentVolumeConfig, pvcConfig PersistentVolumeClaimConfig, ns string, preBind bool) (*v1.PersistentVolume, *v1.PersistentVolumeClaim, error)
CreatePVPVC creates 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 ¶
func CreatePVSource(zone string) (*v1.PersistentVolumeSource, error)
CreatePVSource creates a PV source.
func CreatePVsPVCs ¶
func CreatePVsPVCs(numpvs, numpvcs int, c clientset.Interface, ns string, pvConfig PersistentVolumeConfig, pvcConfig PersistentVolumeClaimConfig) (PVMap, PVCMap, error)
CreatePVsPVCs creates the desired number of PVs and PVCs and returns 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 ¶
func CreatePod(client clientset.Interface, namespace string, nodeSelector map[string]string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string) (*v1.Pod, error)
CreatePod with given claims based on node selector
func CreatePodOrFail ¶
func CreatePodOrFail(c clientset.Interface, ns, name string, labels map[string]string, containerPorts []v1.ContainerPort)
CreatePodOrFail creates a pod with the specified containerPorts.
func CreateSecPod ¶
func CreateSecPod(client clientset.Interface, namespace string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string, hostIPC bool, hostPID bool, seLinuxLabel *v1.SELinuxOptions, fsGroup *int64, timeout time.Duration) (*v1.Pod, error)
CreateSecPod creates security pod with given claims
func CreateSecPodWithNodeSelection ¶
func CreateSecPodWithNodeSelection(client clientset.Interface, namespace string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string, hostIPC bool, hostPID bool, seLinuxLabel *v1.SELinuxOptions, fsGroup *int64, node NodeSelection, timeout time.Duration) (*v1.Pod, error)
CreateSecPodWithNodeSelection creates security pod with given claims
func CreateServiceSpec ¶
func CreateServiceSpec(serviceName, externalName string, isHeadless bool, selector map[string]string) *v1.Service
CreateServiceSpec returns a Service object for testing.
func CreateStatefulSetService ¶
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 CreateUnschedulablePod ¶
func CreateUnschedulablePod(client clientset.Interface, namespace string, nodeSelector map[string]string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string) (*v1.Pod, error)
CreateUnschedulablePod with given claims based on node selector
func CreateWaitAndDeletePod ¶
func CreateWaitAndDeletePod(f *Framework, c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim) (err error)
CreateWaitAndDeletePod creates 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 ¶
DeleteAllStatefulSets deletes all StatefulSet API Objects in Namespace ns.
func DeleteManagedInstanceGroup ¶
DeleteManagedInstanceGroup deletes Google Compute Engine managed instance group.
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 DeleteNodeOnCloudProvider ¶
DeleteNodeOnCloudProvider deletes the specified node.
func DeletePDWithRetry ¶
DeletePDWithRetry deletes PD with retry.
func DeletePVCandValidatePV ¶
func DeletePVCandValidatePV(c clientset.Interface, ns string, pvc *v1.PersistentVolumeClaim, pv *v1.PersistentVolume, expectPVPhase v1.PersistentVolumePhase) error
DeletePVCandValidatePV deletes the PVC and waits 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 ¶
func DeletePVCandValidatePVGroup(c clientset.Interface, ns string, pvols PVMap, claims PVCMap, expectPVPhase v1.PersistentVolumePhase) error
DeletePVCandValidatePVGroup 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 ¶
func DeletePVSource(pvSource *v1.PersistentVolumeSource) error
DeletePVSource deletes a PV source.
func DeletePersistentVolume ¶
DeletePersistentVolume deletes the PV.
func DeletePersistentVolumeClaim ¶
DeletePersistentVolumeClaim deletes the Claim.
func DeletePodOrFail ¶
DeletePodOrFail deletes the pod of the specified namespace and name.
func DeletePodWithWait ¶
DeletePodWithWait deletes the passed-in pod and waits for the pod to be terminated. Resilient to the pod not existing.
func DeletePodWithWaitByName ¶
func DeletePodWithWaitByName(f *Framework, c clientset.Interface, podName, podNamespace string) error
DeletePodWithWaitByName deletes the named and namespaced pod and waits for the pod to be terminated. Resilient to the pod not existing.
func DeleteRCAndWaitForGC ¶
DeleteRCAndWaitForGC deletes only the Replication Controller and waits for GC to delete the pods.
func DeleteResourceAndWaitForGC ¶
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 ¶
func DescribeIng(ns string)
DescribeIng describes information of ingress by running kubectl describe ing.
func DescribeItem ¶
func DescribeItem(item interface{}) string
DescribeItem always returns a string that describes the item, usually by calling out to cache.MetaNamespaceKeyFunc which concatenates namespace (if set) and name. If that fails, the entire item gets converted to a string.
func DescribeSvc ¶
func DescribeSvc(ns string)
DescribeSvc logs the output of kubectl describe svc for the given namespace
func DsFromManifest ¶
DsFromManifest reads a .json/yaml file and returns the daemonset in it.
func DumpAllNamespaceInfo ¶
DumpAllNamespaceInfo dumps events, pods and nodes information in the given namespace.
func DumpDebugInfo ¶
DumpDebugInfo dumps debug info of tests.
func DumpEventsInNamespace ¶
func DumpEventsInNamespace(eventsLister EventsLister, namespace string)
DumpEventsInNamespace dumps events in the given namespace.
func DumpNodeDebugInfo ¶
func DumpNodeDebugInfo(c clientset.Interface, nodeNames []string, logFunc func(fmt string, args ...interface{}))
DumpNodeDebugInfo dumps debug information of the given nodes.
func EnableAndDisableInternalLB ¶
EnableAndDisableInternalLB returns two functions for enabling and disabling the internal load balancer setting for the supported cloud providers (currently GCE/GKE and Azure) and empty functions for others.
func EnsureLoadBalancerResourcesDeleted ¶
EnsureLoadBalancerResourcesDeleted ensures that cloud load balancer resources that were created are actually cleaned up. Currently only implemented for GCE/GKE.
func EtcdUpgrade ¶
EtcdUpgrade upgrades etcd on GCE.
func ExpectError ¶
func ExpectError(err error, explain ...interface{})
ExpectError expects an error happens, otherwise an exception raises
func ExpectNoError ¶
func ExpectNoError(err error, explain ...interface{})
ExpectNoError checks if "err" is set, and if so, fails assertion while logging the error.
func ExpectNoErrorWithOffset ¶
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 ¶
ExpectNoErrorWithRetries checks if an error occurs with the given retry count.
func ExpectNodeHasLabel ¶
ExpectNodeHasLabel expects that the given node has the given label pair.
func ExpectNodeHasTaint ¶
ExpectNodeHasTaint expects that the node has the given taint.
func FailfWithOffset ¶
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 FilterNodes ¶
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 FilterNonRestartablePods ¶
FilterNonRestartablePods filters out pods that will never get recreated if deleted after termination.
func FormatRuntimeOperationErrorRate ¶
func FormatRuntimeOperationErrorRate(nodesResult map[string]NodeRuntimeOperationErrorRate) string
FormatRuntimeOperationErrorRate formats the runtime operation error rate to string.
func GatherCPUProfile ¶
GatherCPUProfile gathers CPU profile.
func GatherCPUProfileForSeconds ¶
func GatherCPUProfileForSeconds(componentName string, profileBaseName string, seconds int, wg *sync.WaitGroup)
GatherCPUProfileForSeconds gathers CPU profile for specified seconds.
func GatherMemoryProfile ¶
GatherMemoryProfile gathers memory profile.
func GenerateMasterRegexp ¶
GenerateMasterRegexp returns a regex for matching master node name.
func GetAllMasterAddresses ¶
GetAllMasterAddresses returns all IP addresses on which the kubelet can reach the master. It may return internal and external IPs, even if we expect for e.g. internal IPs to be used (issue #56787), so that we can be sure to block the master fully during tests.
func GetBoundPV ¶
func GetBoundPV(client clientset.Interface, pvc *v1.PersistentVolumeClaim) (*v1.PersistentVolume, error)
GetBoundPV returns a PV details.
func GetClusterZones ¶
GetClusterZones returns the values of zone label collected from all nodes.
func GetDefaultStorageClassName ¶
GetDefaultStorageClassName returns default storageClass or return error
func GetFileModeRegex ¶
GetFileModeRegex returns a file mode related regex which should be matched by the mounttest pods' output. If the given mask is nil, then the regex will contain the default OS file modes, which are 0644 for Linux and 0775 for Windows.
func GetGroupNodes ¶
GetGroupNodes returns a node name for the specified node group
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 ¶
func GetIngressPoint(ing *v1.LoadBalancerIngress) string
GetIngressPoint returns a host on which ingress serves.
func GetKubeletHeapStats ¶
GetKubeletHeapStats returns stats of kubelet heap.
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 GetKubemarkMasterComponentsResourceUsage ¶
func GetKubemarkMasterComponentsResourceUsage() map[string]*KubemarkResourceUsage
GetKubemarkMasterComponentsResourceUsage returns the resource usage of kubemark which contains multiple combinations of cpu and memory usage for each pod name. TODO: figure out how to move this to kubemark directory (need to factor test SSH out of e2e framework)
func GetLogToFileFunc ¶
GetLogToFileFunc is a convenience function that returns a function that have the same interface as e2elog.Logf, but writes to a specified file.
func GetManagedInstanceGroupTemplateName ¶
GetManagedInstanceGroupTemplateName returns the list of Google Compute Engine managed instance groups.
func GetMasterAndWorkerNodesOrDie ¶
GetMasterAndWorkerNodesOrDie will return a list masters and schedulable worker nodes
func GetNodeAddresses ¶
func GetNodeAddresses(node *v1.Node, addressType v1.NodeAddressType) (ips []string)
GetNodeAddresses returns a list of addresses of the given addressType for the given node
func GetNodeExternalIP ¶
GetNodeExternalIP returns node external IP concatenated with port 22 for ssh e.g. 1.2.3.4:22
func GetNodeInternalIP ¶
GetNodeInternalIP returns node internal IP
func GetNodePortURL ¶
GetNodePortURL returns the url to a nodeport Service.
func GetNodePublicIps ¶
GetNodePublicIps returns a public IP list of nodes.
func GetPodLogs ¶
GetPodLogs returns the logs of the specified container (namespace/pod/container). TODO(random-liu): Change this to be a member function of the framework.
func GetPodSecretUpdateTimeout ¶
GetPodSecretUpdateTimeout reuturns the timeout duration for updating pod secret.
func GetPodsInNamespace ¶
func GetPodsInNamespace(c clientset.Interface, ns string, ignoreLabels map[string]string) ([]*v1.Pod, error)
GetPodsInNamespace returns the pods in the given namespace.
func GetPodsScheduled ¶
func GetPodsScheduled(masterNodes sets.String, pods *v1.PodList) (scheduledPods, notScheduledPods []v1.Pod)
GetPodsScheduled returns a number of currently scheduled and not scheduled Pods.
func GetProviders ¶
func GetProviders() []string
GetProviders returns the names of all currently registered providers.
func GetReadyNodesIncludingTaintedOrDie ¶
GetReadyNodesIncludingTaintedOrDie returns all ready nodes, even those which are tainted. There are cases when we care about tainted nodes E.g. in tests related to nodes with gpu we care about nodes despite presence of nvidia.com/gpu=present:NoSchedule taint
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 GetServiceLoadBalancerCreationTimeout ¶
GetServiceLoadBalancerCreationTimeout returns a timeout value for creating a load balancer of a service.
func GetServicesProxyRequest ¶
func GetServicesProxyRequest(c clientset.Interface, request *restclient.Request) (*restclient.Request, error)
GetServicesProxyRequest returns a request for a service proxy.
func GetStatsSummary ¶
GetStatsSummary contacts kubelet for the container information.
func IsNodeConditionSetAsExpected ¶
func IsNodeConditionSetAsExpected(node *v1.Node, conditionType v1.NodeConditionType, wantTrue bool) bool
IsNodeConditionSetAsExpected returns a wantTrue value if the node has a match to the conditionType, otherwise returns an opposite value of the wantTrue with detailed logging.
func IsNodeConditionSetAsExpectedSilent ¶
func IsNodeConditionSetAsExpectedSilent(node *v1.Node, conditionType v1.NodeConditionType, wantTrue bool) bool
IsNodeConditionSetAsExpectedSilent returns a wantTrue value if the node has a match to the conditionType, otherwise returns an opposite value of the wantTrue.
func IsNodeConditionUnset ¶
func IsNodeConditionUnset(node *v1.Node, conditionType v1.NodeConditionType) bool
IsNodeConditionUnset returns true if conditions of the given node do not have a match to the given conditionType, otherwise false.
func IsPodSecurityPolicyEnabled ¶
IsPodSecurityPolicyEnabled returns true if PodSecurityPolicy is enabled. Otherwise false.
func KubeDescribe ¶
KubeDescribe is 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 ¶
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 LaunchHostExecPod ¶
LaunchHostExecPod launches a hostexec pod in the given namespace and waits until it's Running
func ListNamespaceEvents ¶
ListNamespaceEvents lists the events in the given namespace.
func LoadClientset ¶
LoadClientset returns clientset for connecting to kubernetes clusters.
func LoadConfig ¶
func LoadConfig() (*restclient.Config, error)
LoadConfig returns a config for a rest client.
func LogClusterImageSources ¶
func LogClusterImageSources()
LogClusterImageSources writes out cluster image sources.
func LogFailedContainers ¶
func LogFailedContainers(c clientset.Interface, ns string, logFunc func(ftm string, args ...interface{}))
LogFailedContainers runs `kubectl logs` on a failed containers.
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 LookForString ¶
func LookForString(expectedString string, timeout time.Duration, fn func() string) (result string, err error)
LookForString 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)
LookForStringInFile 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)
LookForStringInLog 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)
LookForStringInPodExec looks for the given string in the output of a command executed in a specific pod container
func MakePersistentVolume ¶
func MakePersistentVolume(pvConfig PersistentVolumeConfig) *v1.PersistentVolume
MakePersistentVolume 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 ¶
func MakePersistentVolumeClaim(cfg PersistentVolumeClaimConfig, ns string) *v1.PersistentVolumeClaim
MakePersistentVolumeClaim 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 ¶
func MakePod(ns string, nodeSelector map[string]string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string) *v1.Pod
MakePod 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 MakeSecPod ¶
func MakeSecPod(ns string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string, hostIPC bool, hostPID bool, seLinuxLabel *v1.SELinuxOptions, fsGroup *int64) *v1.Pod
MakeSecPod 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. SELinux testing requires to pass HostIPC and HostPID as booleansi arguments.
func MakeWritePod ¶
func MakeWritePod(ns string, pvc *v1.PersistentVolumeClaim) *v1.Pod
MakeWritePod returns a pod definition based on the namespace. The pod references the PVC's name.
func MasterOSDistroIs ¶
MasterOSDistroIs returns true if the master OS distro is included in the supportedMasterOsDistros. Otherwise false.
func MasterUpgrade ¶
MasterUpgrade upgrades master node on GCE/GKE.
func MasterUpgradeGCEWithKubeProxyDaemonSet ¶
MasterUpgradeGCEWithKubeProxyDaemonSet upgrades master node on GCE with enabling/disabling the daemon set of kube-proxy. TODO(mrhohn): Remove this function when kube-proxy is run as a DaemonSet by default.
func MigTemplate ¶
MigTemplate (GCE-only) returns the name of the MIG template that the nodes of the cluster use.
func NewE2ETestNodePreparer ¶
func NewE2ETestNodePreparer(client clientset.Interface, countToStrategy []testutils.CountToStrategy) testutils.TestNodePreparer
NewE2ETestNodePreparer returns a new instance of E2ETestNodePreparer.
func NewExecPodSpec ¶
NewExecPodSpec returns the pod spec of hostexec pod
func NewStatefulSet ¶
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 ¶
func NewStatefulSetPVC(name string) v1.PersistentVolumeClaim
NewStatefulSetPVC returns a PersistentVolumeClaim named name, for testing StatefulSets.
func NewStatefulSetScale ¶
func NewStatefulSetScale(ss *apps.StatefulSet) *appsV1beta2.Scale
NewStatefulSetScale creates a new StatefulSet scale subresource and returns it
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 ¶
NodeHasTaint returns true if the node has the given taint, else returns false.
func NodeOSDistroIs ¶
NodeOSDistroIs returns true if the node OS distro is included in the supportedNodeOsDistros. Otherwise false.
func NodeProxyRequest ¶
func NodeProxyRequest(c clientset.Interface, node, endpoint string, port int) (restclient.Result, error)
NodeProxyRequest performs a get on a node proxy endpoint given the nodename and rest client.
func NodeUpgrade ¶
NodeUpgrade upgrades nodes on GCE/GKE.
func NodeUpgradeGCEWithKubeProxyDaemonSet ¶
func NodeUpgradeGCEWithKubeProxyDaemonSet(f *Framework, v string, img string, enableKubeProxyDaemonSet bool) error
NodeUpgradeGCEWithKubeProxyDaemonSet upgrades nodes on GCE with enabling/disabling the daemon set of kube-proxy. TODO(mrhohn): Remove this function when kube-proxy is run as a DaemonSet by default.
func NumberOfReadyNodes ¶
NumberOfReadyNodes returns number of ready Nodes excluding Master Node.
func NumberOfRegisteredNodes ¶
NumberOfRegisteredNodes returns number of registered Nodes excluding Master Node.
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 ¶
func PVPVCCleanup(c clientset.Interface, ns string, pv *v1.PersistentVolume, pvc *v1.PersistentVolumeClaim) []error
PVPVCCleanup cleans 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 ¶
PVPVCMapCleanup Cleans 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 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 PodStartupLatencyToPerfData ¶
func PodStartupLatencyToPerfData(latency *PodStartupLatency) *perftype.PerfData
PodStartupLatencyToPerfData transforms PodStartupLatency to PerfData.
func PodsCreated ¶
PodsCreated returns a pod list matched by the given name.
func PodsCreatedByLabel ¶
func PodsCreatedByLabel(c clientset.Interface, ns, name string, replicas int32, label labels.Selector) (*v1.PodList, error)
PodsCreatedByLabel returns a created pod list matched by the given label.
func PodsResponding ¶
PodsResponding waits for the pods to response.
func PollURL ¶
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 PrettyPrint ¶
func PrettyPrint(item interface{}) string
PrettyPrint returns a human-readable representation of an item.
func PrettyPrintJSON ¶
func PrettyPrintJSON(metrics interface{}) string
PrettyPrintJSON converts metrics to JSON format.
func PrintAllKubeletPods ¶
PrintAllKubeletPods outputs status of all kubelet pods into log.
func PrintLatencies ¶
func PrintLatencies(latencies []PodLatencyData, header string)
PrintLatencies outputs latencies to log with readable format.
func PrintPerfData ¶
PrintPerfData prints the perfdata in json format with PerfResultTag prefix. If an error occurs, nothing will be printed.
func PrintSummaries ¶
func PrintSummaries(summaries []TestDataSummary, testBaseName string)
PrintSummaries prints summaries of tests.
func ProviderIs ¶
ProviderIs returns true if the provider is included is the providers. Otherwise false.
func RandomSuffix ¶
func RandomSuffix() string
RandomSuffix provides a random string to append to pods,services,rcs. TODO: Allow service names to have the same form as names
for pods and replication controllers so we don't need to use such a function and can instead use the UUID utility function.
func RcByNameContainer ¶
func RcByNameContainer(name string, replicas int32, image string, labels map[string]string, c v1.Container, gracePeriod *int64) *v1.ReplicationController
RcByNameContainer returns a ReplicationController with specified name and container
func RcByNamePort ¶
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 RegisterClusterFlags ¶
func RegisterClusterFlags()
RegisterClusterFlags registers flags specific to the cluster e2e test suite.
func RegisterCommonFlags ¶
func RegisterCommonFlags()
RegisterCommonFlags registers flags common to all e2e test suites.
func RegisterNodeFlags ¶
func RegisterNodeFlags()
RegisterNodeFlags registers flags specific to the node e2e test suite.
func RegisterProvider ¶
RegisterProvider is expected to be called during application init, typically by an init function in a provider package.
func RemoveAvoidPodsOffNode ¶
RemoveAvoidPodsOffNode 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 ¶
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 ¶
RemoveTaintOffNode removes the given taint from the given node.
func ResetMetrics ¶
ResetMetrics resets latency metrics in apiserver.
func ResetSchedulerMetrics ¶
ResetSchedulerMetrics sends a DELETE request to kube-scheduler for resetting metrics.
func ResizeGroup ¶
ResizeGroup resizes an instance group
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 ¶
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 ¶
RestartApiserver restarts the kube-apiserver.
func RestartControllerManager ¶
func RestartControllerManager() error
RestartControllerManager restarts the kube-controller-manager.
func RestartKubeProxy ¶
RestartKubeProxy restarts kube-proxy on the given host.
func RestartKubelet ¶
RestartKubelet restarts kubelet on the given host.
func RestclientConfig ¶
func RestclientConfig(kubeContext string) (*clientcmdapi.Config, error)
RestclientConfig returns a config holds the information needed to build connection to kubernetes clusters.
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 RunCmdEnv ¶
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 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 RunHostCmdWithRetries ¶
RunHostCmdWithRetries calls RunHostCmd and retries all errors until it succeeds or the specified timeout expires. This can be used with idempotent commands to deflake transient Node issues.
func RunIfContainerRuntimeIs ¶
func RunIfContainerRuntimeIs(runtimes ...string)
RunIfContainerRuntimeIs runs if the container runtime is included in the runtimes.
func RunIfSystemSpecNameIs ¶
func RunIfSystemSpecNameIs(names ...string)
RunIfSystemSpecNameIs runs if the system spec name is included in the names.
func RunKubectl ¶
RunKubectl is a convenience wrapper over kubectlBuilder
func RunKubectlInput ¶
RunKubectlInput is a convenience wrapper over kubectlBuilder that takes input to stdin
func RunKubectlOrDie ¶
RunKubectlOrDie is a convenience wrapper over kubectlBuilder
func RunKubectlOrDieInput ¶
RunKubectlOrDieInput is a convenience wrapper over kubectlBuilder that takes input to stdin
func RunKubemciCmd ¶
RunKubemciCmd is a convenience wrapper over kubectlBuilder to run kubemci. It assumes that kubemci exists in PATH.
func RunKubemciWithKubeconfig ¶
RunKubemciWithKubeconfig is a convenience wrapper over RunKubemciCmd
func RunRC ¶
RunRC Launches (and verifies correctness) of a Replication Controller and will wait for all pods it spawns to become "Running".
func ScaleRC ¶
func ScaleRC(clientset clientset.Interface, scalesGetter scaleclient.ScalesGetter, ns, name string, size uint, wait bool) error
ScaleRC scales Replication Controller to be desired size.
func ScaleResource ¶
func ScaleResource( clientset clientset.Interface, scalesGetter scaleclient.ScalesGetter, ns, name string, size uint, wait bool, kind schema.GroupKind, gr schema.GroupResource, ) error
ScaleResource scales resource to the given size.
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 ¶
ServiceResponding waits for the service to be responding.
func SetAffinity ¶
func SetAffinity(nodeSelection *NodeSelection, nodeName string)
SetAffinity sets affinity to nodeName to nodeSelection
func SetAntiAffinity ¶
func SetAntiAffinity(nodeSelection *NodeSelection, nodeName string)
SetAntiAffinity sets anti-affinity to nodeName to nodeSelection
func SetNodeAffinityRequirement ¶
func SetNodeAffinityRequirement(nodeSelection *NodeSelection, operator v1.NodeSelectorOperator, nodeName string)
SetNodeAffinityRequirement sets affinity with specified operator to nodeName to nodeSelection
func SkipIfContainerRuntimeIs ¶
func SkipIfContainerRuntimeIs(runtimes ...string)
SkipIfContainerRuntimeIs skips if the container runtime is included in the runtimes.
func SkipIfMissingResource ¶
func SkipIfMissingResource(dynamicClient dynamic.Interface, gvr schema.GroupVersionResource, namespace string)
SkipIfMissingResource skips if the gvr resource is missing.
func SkipIfMultizone ¶
SkipIfMultizone skips if the cluster has multizone.
func SkipIfNoDefaultStorageClass ¶
SkipIfNoDefaultStorageClass skips tests if no default SC can be found.
func SkipIfProviderIs ¶
func SkipIfProviderIs(unsupportedProviders ...string)
SkipIfProviderIs skips if the provider is included in the unsupportedProviders.
func SkipUnlessAtLeast ¶
SkipUnlessAtLeast skips if the value is less than the minValue.
func SkipUnlessLocalEphemeralStorageEnabled ¶
func SkipUnlessLocalEphemeralStorageEnabled()
SkipUnlessLocalEphemeralStorageEnabled skips if the LocalStorageCapacityIsolation is not enabled.
func SkipUnlessMasterOSDistroIs ¶
func SkipUnlessMasterOSDistroIs(supportedMasterOsDistros ...string)
SkipUnlessMasterOSDistroIs skips if the master OS distro is not included in the supportedMasterOsDistros.
func SkipUnlessMultizone ¶
SkipUnlessMultizone skips if the cluster does not have multizone.
func SkipUnlessNodeCountIsAtLeast ¶
func SkipUnlessNodeCountIsAtLeast(minNodeCount int)
SkipUnlessNodeCountIsAtLeast skips if the number of nodes is less than the minNodeCount.
func SkipUnlessNodeCountIsAtMost ¶
func SkipUnlessNodeCountIsAtMost(maxNodeCount int)
SkipUnlessNodeCountIsAtMost skips if the number of nodes is greater than the maxNodeCount.
func SkipUnlessNodeOSDistroIs ¶
func SkipUnlessNodeOSDistroIs(supportedNodeOsDistros ...string)
SkipUnlessNodeOSDistroIs skips if the node OS distro is not included in the supportedNodeOsDistros.
func SkipUnlessPrometheusMonitoringIsEnabled ¶
func SkipUnlessPrometheusMonitoringIsEnabled(supportedMonitoring ...string)
SkipUnlessPrometheusMonitoringIsEnabled skips if the prometheus monitoring is not enabled.
func SkipUnlessProviderIs ¶
func SkipUnlessProviderIs(supportedProviders ...string)
SkipUnlessProviderIs skips if the provider is not included in the supportedProviders.
func SkipUnlessSSHKeyPresent ¶
func SkipUnlessSSHKeyPresent()
SkipUnlessSSHKeyPresent skips if no SSH key is found.
func SkipUnlessServerVersionGTE ¶
func SkipUnlessServerVersionGTE(v *utilversion.Version, c discovery.ServerVersionInterface)
SkipUnlessServerVersionGTE skips if the server version is less than v.
func SkipUnlessTaintBasedEvictionsEnabled ¶
func SkipUnlessTaintBasedEvictionsEnabled()
SkipUnlessTaintBasedEvictionsEnabled skips if the TaintBasedEvictions is not enabled.
func Skipf ¶
func Skipf(format string, args ...interface{})
Skipf skips with information about why the test is being skipped.
func StartCPUProfileGatherer ¶
func StartCPUProfileGatherer(componentName string, profileBaseName string, interval time.Duration) chan struct{}
StartCPUProfileGatherer performs polling-based gathering of the component's CPU profile. It takes the interval b/w consecutive gatherings as an argument and starts the gathering goroutine. To stop the gatherer, close the returned channel.
func StartCmdAndStreamOutput ¶
func StartCmdAndStreamOutput(cmd *exec.Cmd) (stdout, stderr io.ReadCloser, err error)
StartCmdAndStreamOutput returns stdout and stderr after starting the given cmd.
func StartServeHostnameService ¶
func StartServeHostnameService(c clientset.Interface, svc *v1.Service, ns string, replicas int) ([]string, string, error)
StartServeHostnameService creates a replication controller that serves its hostname and a service on top of it.
func StopServeHostnameService ¶
StopServeHostnameService stops the given service.
func TargetContainers ¶
func TargetContainers() []string
TargetContainers returns a list of containers for which we want to collect resource usage.
func TestHitNodesFromOutside ¶
func TestHitNodesFromOutside(externalIP string, httpPort int32, timeout time.Duration, expectedHosts sets.String) error
TestHitNodesFromOutside checkes HTTP connectivity from outside.
func TestHitNodesFromOutsideWithCount ¶
func TestHitNodesFromOutsideWithCount(externalIP string, httpPort int32, timeout time.Duration, expectedHosts sets.String, countToSucceed int) error
TestHitNodesFromOutsideWithCount checkes HTTP connectivity from outside with count.
func TestUnderTemporaryNetworkFailure ¶
func TestUnderTemporaryNetworkFailure(c clientset.Interface, ns string, node *v1.Node, testFunc func())
TestUnderTemporaryNetworkFailure 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 TryKill ¶
TryKill is rough equivalent of ctrl+c for cleaning up processes. Intended to be run in defer.
func UnblockNetwork ¶
UnblockNetwork unblocks network between the given from value and the given to value.
func UpdateDaemonSetWithRetries ¶
func UpdateDaemonSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateDSFunc) (ds *apps.DaemonSet, err error)
UpdateDaemonSetWithRetries updates daemonsets with the given applyUpdate func until it succeeds or a timeout expires.
func UpdateReplicationControllerWithRetries ¶
func UpdateReplicationControllerWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateRcFunc) (*v1.ReplicationController, error)
UpdateReplicationControllerWithRetries retries updating the given rc on conflict with the following steps: 1. Get latest resource 2. applyUpdate 3. Update the resource
func UpdateService ¶
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 ¶
func UpdateStatefulSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateStatefulSetFunc) (statefulSet *apps.StatefulSet, err error)
UpdateStatefulSetWithRetries updates statfulset template with retries.
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 VerifyLatencyWithinThreshold ¶
func VerifyLatencyWithinThreshold(threshold, actual LatencyMetric, metricName string) error
VerifyLatencyWithinThreshold verifies whether 50, 90 and 99th percentiles of a latency metric are within the expected threshold.
func VerifyPods ¶
VerifyPods checks if the specified pod is responding.
func VerifyPodsRunning ¶
VerifyPodsRunning checks if the specified pod is running.
func VerifyServeHostnameServiceDown ¶
func VerifyServeHostnameServiceDown(c clientset.Interface, host string, serviceIP string, servicePort int) error
VerifyServeHostnameServiceDown verifies that the given service isn't served.
func VerifyServeHostnameServiceUp ¶
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 WaitAndVerifyBinds ¶
func WaitAndVerifyBinds(c clientset.Interface, ns string, pvols PVMap, claims PVCMap, testExpected bool) error
WaitAndVerifyBinds searches 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 WaitForAllNodesHealthy ¶
WaitForAllNodesHealthy checks whether all registered nodes are ready and all required Pods are running on them.
func WaitForAllNodesSchedulable ¶
WaitForAllNodesSchedulable waits up to timeout for all (but TestContext.AllowedNotReadyNodes) to become scheduable.
func WaitForApiserverUp ¶
WaitForApiserverUp waits for the kube-apiserver to be up.
func WaitForControlledPods ¶
func WaitForControlledPods(c clientset.Interface, ns, name string, kind schema.GroupKind) (pods *v1.PodList, err error)
WaitForControlledPods waits up to PodListTimeout for getting pods of the specified controller name and return them.
func WaitForControlledPodsRunning ¶
func WaitForControlledPodsRunning(c clientset.Interface, ns, name string, kind schema.GroupKind) error
WaitForControlledPodsRunning waits up to 10 minutes for pods to become Running.
func WaitForControllerManagerUp ¶
func WaitForControllerManagerUp() error
WaitForControllerManagerUp waits for the kube-controller-manager to be up.
func WaitForDaemonSets ¶
func WaitForDaemonSets(c clientset.Interface, ns string, allowedNotReadyNodes int32, timeout time.Duration) error
WaitForDaemonSets for all daemonsets in the given namespace to be ready (defined as all but 'allowedNotReadyNodes' pods associated with that daemonset are ready).
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 WaitForGroupSize ¶
WaitForGroupSize waits for node instance group reached the desired size
func WaitForKubeletUp ¶
WaitForKubeletUp waits for the kubelet on the given host to be up.
func WaitForMasters ¶
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 WaitForNRestartablePods ¶
func WaitForNRestartablePods(ps *testutils.PodStore, expect int, timeout time.Duration) ([]string, error)
WaitForNRestartablePods tries to list restarting pods using ps until it finds expect of them, returning their names if it can do so before timeout.
func WaitForNamespacesDeleted ¶
func WaitForNamespacesDeleted(c clientset.Interface, namespaces []string, timeout time.Duration) error
WaitForNamespacesDeleted waits for the namespaces to be deleted.
func WaitForNodeHasTaintOrNot ¶
func WaitForNodeHasTaintOrNot(c clientset.Interface, nodeName string, taint *v1.Taint, wantTrue bool, timeout time.Duration) error
WaitForNodeHasTaintOrNot waits for a taint to be added/removed from the node until timeout occurs, whichever comes first.
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 ¶
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 WaitForPVClaimBoundPhase ¶
func WaitForPVClaimBoundPhase(client clientset.Interface, pvclaims []*v1.PersistentVolumeClaim, timeout time.Duration) ([]*v1.PersistentVolume, error)
WaitForPVClaimBoundPhase waits until all pvcs phase set to bound
func WaitForPersistentVolumeClaimDeleted ¶
func WaitForPersistentVolumeClaimDeleted(c clientset.Interface, ns string, pvcName string, Poll, timeout time.Duration) error
WaitForPersistentVolumeClaimDeleted waits for a PersistentVolumeClaim to be removed from the system until timeout occurs, whichever comes first.
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 WaitForPersistentVolumeClaimsPhase ¶
func WaitForPersistentVolumeClaimsPhase(phase v1.PersistentVolumeClaimPhase, c clientset.Interface, ns string, pvcNames []string, Poll, timeout time.Duration, matchAny bool) error
WaitForPersistentVolumeClaimsPhase waits for any (if matchAny is true) or all (if matchAny is false) PersistentVolumeClaims 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 ¶
func WaitForPodCondition(c clientset.Interface, ns, podName, desc string, timeout time.Duration, condition podCondition) error
WaitForPodCondition waits a pods to be matched to the given condition.
func WaitForPodNameRunningInNamespace ¶
WaitForPodNameRunningInNamespace 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 WaitForPodNameUnschedulableInNamespace ¶
WaitForPodNameUnschedulableInNamespace returns an error if it takes too long for the pod to become Pending and have condition Status equal to Unschedulable, if the pod Get api returns an error (IsNotFound or other), or if the pod failed with an unexpected reason. Typically called to test that the passed-in pod is Pending and Unschedulable.
func WaitForPodNoLongerRunningInNamespace ¶
WaitForPodNoLongerRunningInNamespace waits default amount of time (DefaultPodDeletionTimeout) 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 ¶
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 ¶
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
WaitForPodToDisappear waits the given timeout duration for the specified pod to disappear.
func WaitForPodsReady ¶
WaitForPodsReady waits for the pods to become ready.
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 WaitForPodsWithLabel ¶
func WaitForPodsWithLabel(c clientset.Interface, ns string, label labels.Selector) (pods *v1.PodList, err error)
WaitForPodsWithLabel waits up to PodListTimeout for getting pods with certain label
func WaitForPodsWithLabelRunningReady ¶
func WaitForPodsWithLabelRunningReady(c clientset.Interface, ns string, label labels.Selector, num int, timeout time.Duration) (pods *v1.PodList, err error)
WaitForPodsWithLabelRunningReady waits 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)
WaitForPodsWithLabelScheduled waits 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 WaitForRCToStabilize ¶
WaitForRCToStabilize waits till the RC has a matching generation/replica count between spec and status.
func WaitForReadyNodes ¶
WaitForReadyNodes waits up to timeout for cluster to has desired size and there is no not-ready nodes in it. By cluster size we mean number of Nodes excluding Master Node.
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 ¶
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 ¶
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 ¶
WaitForStableCluster waits until all existing pods are scheduled and returns their amount.
func WaitForStatefulSetReplicasReady ¶
func WaitForStatefulSetReplicasReady(statefulSetName, ns string, c clientset.Interface, Poll, timeout time.Duration) error
WaitForStatefulSetReplicasReady waits for all replicas of a StatefulSet to become ready or until timeout occurs, whichever comes first.
func WaitOnPVandPVC ¶
func WaitOnPVandPVC(c clientset.Interface, ns string, pv *v1.PersistentVolume, pvc *v1.PersistentVolumeClaim) error
WaitOnPVandPVC waits for the pv and pvc to bind to each other.
func WaitTimeoutForPodEvent ¶
func WaitTimeoutForPodEvent(c clientset.Interface, podName, namespace, eventSelector, msg string, timeout time.Duration) error
WaitTimeoutForPodEvent waits the given timeout duration for a pod event to occur.
Types ¶
type APICall ¶
type APICall struct { Resource string `json:"resource"` Subresource string `json:"subresource"` Verb string `json:"verb"` Scope string `json:"scope"` Latency LatencyMetric `json:"latency"` Count int `json:"count"` }
APICall is a struct for managing API call.
type APIResponsiveness ¶
type APIResponsiveness struct {
APICalls []APICall `json:"apicalls"`
}
APIResponsiveness is a struct for managing multiple API calls.
func HighLatencyRequests ¶
HighLatencyRequests prints top five summary metrics for request types with latency and returns number of such request types above threshold. We use a higher threshold for list calls if nodeCount is above a given threshold (i.e. cluster is big).
func (*APIResponsiveness) Len ¶
func (a *APIResponsiveness) Len() int
func (*APIResponsiveness) Less ¶
func (a *APIResponsiveness) Less(i, j int) bool
func (*APIResponsiveness) PrintHumanReadable ¶
func (a *APIResponsiveness) PrintHumanReadable() string
PrintHumanReadable returns metrics with JSON format.
func (*APIResponsiveness) PrintJSON ¶
func (a *APIResponsiveness) PrintJSON() string
PrintJSON returns metrics of PerfData(50, 90 and 99th percentiles) with JSON format.
func (*APIResponsiveness) SummaryKind ¶
func (a *APIResponsiveness) SummaryKind() string
SummaryKind returns the summary of API responsiveness.
func (*APIResponsiveness) Swap ¶
func (a *APIResponsiveness) Swap(i, j int)
type CleanupActionHandle ¶
type CleanupActionHandle *int
CleanupActionHandle is an integer pointer type for handling cleanup action
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)
ClientConfigGetter is a func that returns getter to return a config.
type CloudConfig ¶
type CloudConfig struct { APIEndpoint string ProjectID string Zone string // for multizone tests, arbitrarily chosen zone Region string MultiZone bool MultiMaster bool Cluster string MasterName string NodeInstanceGroup string // comma-delimited list of groups' names NumNodes int ClusterIPRange string ClusterTag string Network string ConfigFile string // for azure and openstack NodeTag string MasterTag string Provider ProviderInterface }
CloudConfig holds the cloud configuration for e2e test suites.
type ClusterVerification ¶
type ClusterVerification struct {
// contains filtered or unexported fields
}
ClusterVerification is a struct for a verification of cluster state.
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 verify, 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 ContainerResourceGatherer ¶
type ContainerResourceGatherer struct {
// contains filtered or unexported fields
}
ContainerResourceGatherer is a struct for gathering container resource.
func NewResourceUsageGatherer ¶
func NewResourceUsageGatherer(c clientset.Interface, options ResourceGathererOptions, pods *v1.PodList) (*ContainerResourceGatherer, error)
NewResourceUsageGatherer returns a new ContainerResourceGatherer.
func (*ContainerResourceGatherer) StartGatheringData ¶
func (g *ContainerResourceGatherer) StartGatheringData()
StartGatheringData starts a stat gathering worker blocks for each node to track, and blocks until StopAndSummarize is called.
func (*ContainerResourceGatherer) StopAndSummarize ¶
func (g *ContainerResourceGatherer) StopAndSummarize(percentiles []int, constraints map[string]ResourceConstraint) (*ResourceUsageSummary, error)
StopAndSummarize stops stat gathering workers, processes the collected stats, generates resource summary for the passed-in percentiles, and returns the summary. It returns an error if the resource usage at any percentile is beyond the specified resource constraints.
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 }
ContainerResourceUsage is a structure for gathering container resource usage.
type ContainersCPUSummary ¶
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)
CreateTestingNSFn is a func that is responsible for creating namespace used for executing e2e tests.
type E2ETestNodePreparer ¶
type E2ETestNodePreparer struct {
// contains filtered or unexported fields
}
E2ETestNodePreparer implements testutils.TestNodePreparer interface, which is used to create/modify Nodes before running a test.
func (*E2ETestNodePreparer) CleanupNodes ¶
func (p *E2ETestNodePreparer) CleanupNodes() error
CleanupNodes cleanups nodes in the cluster.
func (*E2ETestNodePreparer) PrepareNodes ¶
func (p *E2ETestNodePreparer) PrepareNodes() error
PrepareNodes prepares nodes in the cluster.
type EtcdMetrics ¶
type EtcdMetrics struct { BackendCommitDuration HistogramVec `json:"backendCommitDuration"` SnapshotSaveTotalDuration HistogramVec `json:"snapshotSaveTotalDuration"` PeerRoundTripTime HistogramVec `json:"peerRoundTripTime"` WalFsyncDuration HistogramVec `json:"walFsyncDuration"` MaxDatabaseSize float64 `json:"maxDatabaseSize"` }
EtcdMetrics is a struct for managing etcd metrics.
func (*EtcdMetrics) PrintHumanReadable ¶
func (l *EtcdMetrics) PrintHumanReadable() string
PrintHumanReadable returns etcd metrics with JSON format.
func (*EtcdMetrics) PrintJSON ¶
func (l *EtcdMetrics) PrintJSON() string
PrintJSON returns etcd metrics with JSON format.
func (*EtcdMetrics) SummaryKind ¶
func (l *EtcdMetrics) SummaryKind() string
SummaryKind returns the summary of etcd metrics.
type EtcdMetricsCollector ¶
type EtcdMetricsCollector struct {
// contains filtered or unexported fields
}
EtcdMetricsCollector is a struct for managing etcd metrics collector.
func NewEtcdMetricsCollector ¶
func NewEtcdMetricsCollector() *EtcdMetricsCollector
NewEtcdMetricsCollector creates a new etcd metrics collector.
func (*EtcdMetricsCollector) GetMetrics ¶
func (mc *EtcdMetricsCollector) GetMetrics() *EtcdMetrics
GetMetrics returns metrics of etcd metrics collector.
func (*EtcdMetricsCollector) StartCollecting ¶
func (mc *EtcdMetricsCollector) StartCollecting(interval time.Duration)
StartCollecting starts to collect etcd db size metric periodically and updates MaxDatabaseSize accordingly.
func (*EtcdMetricsCollector) StopAndSummarize ¶
func (mc *EtcdMetricsCollector) StopAndSummarize() error
StopAndSummarize stops etcd metrics collector and summarizes the metrics.
type EventsLister ¶
EventsLister is a func that lists events.
type ExecOptions ¶
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 Factory ¶
type Factory func() (ProviderInterface, error)
Factory is a func which operates provider specific behavior.
type FlakeReport ¶
type FlakeReport struct { Flakes []string `json:"flakes"` FlakeCount int `json:"flakeCount"` // contains filtered or unexported fields }
FlakeReport is a struct for managing the flake report.
func (*FlakeReport) GetFlakeCount ¶
func (f *FlakeReport) GetFlakeCount() int
GetFlakeCount returns the flake count.
func (*FlakeReport) PrintHumanReadable ¶
func (f *FlakeReport) PrintHumanReadable() string
PrintHumanReadable returns string of flake report.
func (*FlakeReport) PrintJSON ¶
func (f *FlakeReport) PrintJSON() string
PrintJSON returns the summary of frake report with JSON format.
func (*FlakeReport) RecordFlakeIfError ¶
func (f *FlakeReport) RecordFlakeIfError(err error, optionalDescription ...interface{})
RecordFlakeIfError records the error (if non-nil) as a flake along with an optional description. This can be used as a replacement of framework.ExpectNoError() for non-critical errors that can be considered as 'flakes' to avoid causing failures in tests.
func (*FlakeReport) SummaryKind ¶
func (f *FlakeReport) SummaryKind() string
SummaryKind returns the summary of flake report.
type Framework ¶
type Framework struct { BaseName string // Set together with creating the ClientSet and the namespace. // Guaranteed to be unique in the cluster even when running the same // test multiple times in parallel. UniqueName string ClientSet clientset.Interface KubemarkExternalClusterClientSet clientset.Interface DynamicClient dynamic.Interface ScalesGetter scaleclient.ScalesGetter 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 SkipPrivilegedPSPBinding bool // Whether to skip creating a binding to the privileged PSP in the test namespace // 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 Options // 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 ¶
NewDefaultFramework makes a new framework and sets up a BeforeEach/AfterEach for you (you can write additional before/after each functions).
func NewFramework ¶
NewFramework creates a test framework.
func (*Framework) AddNamespacesToDelete ¶
AddNamespacesToDelete adds one or more namespaces to be deleted when the test completes.
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 ¶
CheckFileSizeViaContainer returns the list of file size under the specified path.
func (*Framework) CreateFromManifests ¶
func (f *Framework) CreateFromManifests(patch func(item interface{}) error, files ...string) (func(), error)
CreateFromManifests is a combination of LoadFromManifests, PatchItems, patching with an optional custom function, and CreateItems.
func (*Framework) CreateItems ¶
CreateItems creates the items. Each of them must be an API object of a type that is registered in Factory.
It returns either a cleanup function or an error, but never both.
Cleaning up after a test can be triggered in two ways:
- the test invokes the returned cleanup function, usually in an AfterEach
- the test suite terminates, potentially after skipping the test's AfterEach (https://github.com/onsi/ginkgo/issues/222)
PatchItems has the some limitations as LoadFromManifests: - only some common items are supported, unknown ones trigger an error - only the latest stable API version for each item is supported
func (*Framework) CreateNamespace ¶
func (f *Framework) CreateNamespace(baseName string, labels map[string]string) (*v1.Namespace, error)
CreateNamespace creates a namespace for e2e testing.
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 ¶
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) (*v1.Service, error)
CreateServiceForSimpleAppWithPods is a convenience wrapper to create a service and its matching pods all at once.
func (*Framework) ExecCommandInContainer ¶
ExecCommandInContainer executes a command in the specified container.
func (*Framework) ExecCommandInContainerWithFullOutput ¶
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) ExecShellInContainer ¶
ExecShellInContainer executes the specified command on the pod's container.
func (*Framework) ExecShellInPod ¶
ExecShellInPod executes the specified command on the pod.
func (*Framework) ExecShellInPodWithFullOutput ¶
func (f *Framework) ExecShellInPodWithFullOutput(podName string, cmd string) (string, string, error)
ExecShellInPodWithFullOutput executes the specified command on the Pod and returns stdout, stderr and error.
func (*Framework) ExecWithOptions ¶
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) LoadFromManifests ¶
LoadFromManifests loads .yaml or .json manifest files and returns all items that it finds in them. It supports all items for which there is a factory registered in factories and .yaml files with multiple items separated by "---". Files are accessed via the "testfiles" package, which means they can come from a file system or be built into the binary.
LoadFromManifests has some limitations:
- aliases are not supported (i.e. use serviceAccountName instead of the deprecated serviceAccount, https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#podspec-v1-core) and silently ignored
- the latest stable API version for each item is used, regardless of what is specified in the manifest files
func (*Framework) MatchContainerOutput ¶
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) NewAgnhostPod ¶
NewAgnhostPod returns a pod that uses the agnhost image. The image's binary supports various subcommands that behave the same, no matter the underlying OS.
func (*Framework) NewClusterVerification ¶
func (f *Framework) NewClusterVerification(namespace *v1.Namespace, filter PodStateVerification) *ClusterVerification
NewClusterVerification creates a new cluster verification.
func (*Framework) NewTestPod ¶
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) PatchItems ¶
PatchItems modifies the given items in place such that each test gets its own instances, to avoid conflicts between different tests and between tests and normal deployments.
This is done by: - creating namespaced items inside the test's namespace - changing the name of non-namespaced items like ClusterRole
PatchItems has some limitations: - only some common items are supported, unknown ones trigger an error - only the latest stable API version for each item is supported
func (*Framework) PatchName ¶
PatchName makes the name of some item unique by appending the generated unique name.
func (*Framework) PatchNamespace ¶
PatchNamespace moves the item into the test's namespace. Not all items can be namespaced. For those, the name also needs to be patched.
func (*Framework) PodClient ¶
PodClient is a 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 ¶
PodClientNS is a 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)
ReadFileViaContainer reads a file using kubectl exec cat <path>.
func (*Framework) RecordFlakeIfError ¶
RecordFlakeIfError records flakeness info if error happens. NOTE: This function is not used at any places yet, but we are in progress for https://github.com/kubernetes/kubernetes/issues/66239 which requires this. Please don't remove this.
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 ¶
WaitForPodNoLongerRunning waits for the pod to no longer be running in the namespace, for either success or failure.
func (*Framework) WaitForPodNotFound ¶
WaitForPodNotFound waits for the pod to be completely terminated (not "Get-able").
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
WriteFileViaContainer writes 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 HTTPPokeParams ¶
type HTTPPokeParams struct { Timeout time.Duration ExpectCode int // default = 200 BodyContains string RetriableCodes []int }
HTTPPokeParams is a struct for HTTP poke parameters.
type HTTPPokeResult ¶
type HTTPPokeResult struct { Status HTTPPokeStatus Code int // HTTP code: 0 if the connection was not made Error error // if there was any error Body []byte // if code != 0 }
HTTPPokeResult is a struct for HTTP poke result.
func PokeHTTP ¶
func PokeHTTP(host string, port int, path string, params *HTTPPokeParams) HTTPPokeResult
PokeHTTP tries to connect to a host on a port for a given URL path. Callers can specify additional success parameters, if desired.
The result status will be characterized as precisely as possible, given the known users of this.
The result code will be zero in case of any failure to connect, or non-zero if the HTTP transaction completed (even if the other test params make this a failure).
The result error will be populated for any status other than Success.
The result body will be populated if the HTTP transaction was completed, even if the other test params make this a failure).
type HTTPPokeStatus ¶
type HTTPPokeStatus string
HTTPPokeStatus is string for representing HTTP poke status.
const ( // HTTPSuccess is HTTP poke status which is success. HTTPSuccess HTTPPokeStatus = "Success" // HTTPError is HTTP poke status which is error. HTTPError HTTPPokeStatus = "UnknownError" // HTTPTimeout is HTTP poke status which is timeout. HTTPTimeout HTTPPokeStatus = "TimedOut" // HTTPRefused is HTTP poke status which is connection refused. HTTPRefused HTTPPokeStatus = "ConnectionRefused" // HTTPRetryCode is HTTP poke status which is retry code. HTTPRetryCode HTTPPokeStatus = "RetryCode" // HTTPWrongCode is HTTP poke status which is wrong code. HTTPWrongCode HTTPPokeStatus = "WrongCode" // HTTPBadResponse is HTTP poke status which is bad response. HTTPBadResponse HTTPPokeStatus = "BadResponse" )
type Histogram ¶
type Histogram struct { Labels map[string]string `json:"labels"` Buckets map[string]int `json:"buckets"` }
Histogram is a struct for managing histogram.
type InvariantFunc ¶
InvariantFunc is a func that checks for invariant.
type ItemFactory ¶
type ItemFactory interface { // New returns a new empty item. New() runtime.Object // Create is responsible for creating the item. It returns an // error or a cleanup function for the created item. // If the item is of an unsupported type, it must return // an error that has errorItemNotSupported as cause. Create(f *Framework, item interface{}) (func() error, error) }
ItemFactory provides support for creating one particular item. The type gets exported because other packages might want to extend the set of pre-defined factories.
type KubeCluster ¶
type KubeCluster struct { Name string `yaml:"name"` Cluster struct { CertificateAuthorityData string `yaml:"certificate-authority-data"` Server string `yaml:"server"` } `yaml:"cluster"` }
KubeCluster is a struct for managing kubernetes cluster info.
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"` }
KubeConfig is a struct for managing kubernetes config.
func (*KubeConfig) FindCluster ¶
func (kc *KubeConfig) FindCluster(name string) *KubeCluster
FindCluster returns cluster info which is the specified cluster name.
func (*KubeConfig) FindUser ¶
func (kc *KubeConfig) FindUser(name string) *KubeUser
FindUser returns user info which is the specified user name.
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"` }
KubeUser is a struct for managing kubernetes user info.
type KubectlBuilder ¶
type KubectlBuilder struct {
// contains filtered or unexported fields
}
KubectlBuilder is used to build, customize and execute a kubectl Command. Add more functions to customize the builder as needed.
func NewKubectlCommand ¶
func NewKubectlCommand(args ...string) *KubectlBuilder
NewKubectlCommand returns a KubectlBuilder for running kubectl.
func (KubectlBuilder) Exec ¶
func (b KubectlBuilder) Exec() (string, error)
Exec runs the kubectl executable.
func (KubectlBuilder) ExecOrDie ¶
func (b KubectlBuilder) ExecOrDie() string
ExecOrDie runs the kubectl executable or dies if error occurs.
func (*KubectlBuilder) WithEnv ¶
func (b *KubectlBuilder) WithEnv(env []string) *KubectlBuilder
WithEnv sets the given environment and returns itself.
func (KubectlBuilder) WithStdinData ¶
func (b KubectlBuilder) WithStdinData(data string) *KubectlBuilder
WithStdinData sets the given data to stdin and returns itself.
func (KubectlBuilder) WithStdinReader ¶
func (b KubectlBuilder) WithStdinReader(reader io.Reader) *KubectlBuilder
WithStdinReader sets the given reader and returns itself.
func (*KubectlBuilder) WithTimeout ¶
func (b *KubectlBuilder) WithTimeout(t <-chan time.Time) *KubectlBuilder
WithTimeout sets the given timeout and returns itself.
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 }
KubeletLatencyMetric 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
KubeletLatencyMetrics implements sort.Interface for []KubeletMetric based on the latency field.
func GetDefaultKubeletLatencyMetrics ¶
func GetDefaultKubeletLatencyMetrics(ms metrics.KubeletMetrics) KubeletLatencyMetrics
GetDefaultKubeletLatencyMetrics calls GetKubeletLatencyMetrics with a set of default metricNames identifying common latency metrics. Note that the KubeletMetrics passed in should not contain subsystem prefix.
func GetKubeletLatencyMetrics ¶
func GetKubeletLatencyMetrics(ms metrics.KubeletMetrics, filterMetricNames sets.String) KubeletLatencyMetrics
GetKubeletLatencyMetrics filters ms to include only those contained in the metricNames set, then constructs a KubeletLatencyMetrics list based on the samples associated with those metrics.
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 ¶
type KubemarkResourceUsage struct { Name string MemoryWorkingSetInBytes uint64 CPUUsageInCores float64 }
KubemarkResourceUsage is a struct for tracking the resource usage of kubemark.
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"` }
LatencyMetric is a struct for dashboard metrics.
func ExtractLatencyMetrics ¶
func ExtractLatencyMetrics(latencies []PodLatencyData) LatencyMetric
ExtractLatencyMetrics returns latency metrics for each percentile(50th, 90th and 99th).
type LatencySlice ¶
type LatencySlice []PodLatencyData
LatencySlice is an array of PodLatencyData which encapsulates pod startup latency information.
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
LogSizeDataTimeseries is map of timestamped size.
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) 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
}
LogsSizeData is a structure for handling timeseries of log size data and lock.
type LogsSizeDataSummary ¶
type LogsSizeDataSummary map[string]map[string]SingleLogSummary
LogsSizeDataSummary is map of log summary. node -> file -> data
func (*LogsSizeDataSummary) PrintHumanReadable ¶
func (s *LogsSizeDataSummary) PrintHumanReadable() string
PrintHumanReadable returns string of log size data summary. TODO: make sure that we don't need locking here
func (*LogsSizeDataSummary) PrintJSON ¶
func (s *LogsSizeDataSummary) PrintJSON() string
PrintJSON returns the summary of log size data with JSON format.
func (*LogsSizeDataSummary) SummaryKind ¶
func (s *LogsSizeDataSummary) SummaryKind() string
SummaryKind returns the summary of log size data summary.
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 (s *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.Collection
MetricsForE2E is metrics collection of components.
func (*MetricsForE2E) PrintHumanReadable ¶
func (m *MetricsForE2E) PrintHumanReadable() string
PrintHumanReadable returns e2e metrics with JSON format.
func (*MetricsForE2E) PrintJSON ¶
func (m *MetricsForE2E) PrintJSON() string
PrintJSON returns e2e metrics with JSON format.
func (*MetricsForE2E) SummaryKind ¶
func (m *MetricsForE2E) SummaryKind() string
SummaryKind returns the summary of e2e metrics.
type NetworkingTestConfig ¶
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 using the hostexec image. HostTestContainerPod *v1.Pod // if the HostTestContainerPod is running with HostNetwork=true. HostNetwork bool // 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 // SessionAffinityService is a Service with SessionAffinity=ClientIP // spanning over all endpointPods. SessionAffinityService *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 ¶
func NewCoreNetworkingTestConfig(f *Framework, hostNetwork bool) *NetworkingTestConfig
NewCoreNetworkingTestConfig creates and sets up a new test config helper for Node E2E.
func NewNetworkingTestConfig ¶
func NewNetworkingTestConfig(f *Framework) *NetworkingTestConfig
NewNetworkingTestConfig creates and sets up a new test config helper.
func (*NetworkingTestConfig) DeleteNetProxyPod ¶
func (config *NetworkingTestConfig) DeleteNetProxyPod()
DeleteNetProxyPod deletes the first endpoint pod and waits for it being removed.
func (*NetworkingTestConfig) DeleteNodePortService ¶
func (config *NetworkingTestConfig) DeleteNodePortService()
DeleteNodePortService deletes NodePort service.
func (*NetworkingTestConfig) DialFromContainer ¶
func (config *NetworkingTestConfig) DialFromContainer(protocol, containerIP, targetIP string, containerHTTPPort, targetPort, maxTries, minTries int, expectedEps sets.String)
DialFromContainer 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 ¶
func (config *NetworkingTestConfig) DialFromEndpointContainer(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String)
DialFromEndpointContainer executes a curl via kubectl exec in an endpoint container.
func (*NetworkingTestConfig) DialFromNode ¶
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 ¶
func (config *NetworkingTestConfig) DialFromTestContainer(protocol, targetIP string, targetPort, maxTries, minTries int, expectedEps sets.String)
DialFromTestContainer executes a curl via kubectl exec in a test container.
func (*NetworkingTestConfig) EndpointHostnames ¶
func (config *NetworkingTestConfig) EndpointHostnames() sets.String
EndpointHostnames returns a set of hostnames for existing endpoints.
func (*NetworkingTestConfig) GetEndpointsFromContainer ¶
func (config *NetworkingTestConfig) GetEndpointsFromContainer(protocol, containerIP, targetIP string, containerHTTPPort, targetPort, tries int) (sets.String, error)
GetEndpointsFromContainer 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. It returns all different endpoints from multiple retries.
- tries is the number of curl attempts. If this many attempts pass and we don't see any endpoints, the test fails.
func (*NetworkingTestConfig) GetEndpointsFromTestContainer ¶
func (config *NetworkingTestConfig) GetEndpointsFromTestContainer(protocol, targetIP string, targetPort, tries int) (sets.String, error)
GetEndpointsFromTestContainer executes a curl via kubectl exec in a test container.
func (*NetworkingTestConfig) GetSelfURL ¶
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.
func (*NetworkingTestConfig) GetSelfURLStatusCode ¶
func (config *NetworkingTestConfig) GetSelfURLStatusCode(port int32, path string, expected string)
GetSelfURLStatusCode executes a curl against the given path via kubectl exec into a test container running with host networking, and fails if the returned status code doesn't match the expected string.
type NodeKiller ¶
type NodeKiller struct {
// contains filtered or unexported fields
}
NodeKiller is a utility to simulate node failures.
func NewNodeKiller ¶
func NewNodeKiller(config NodeKillerConfig, client clientset.Interface, provider string) *NodeKiller
NewNodeKiller creates new NodeKiller.
func (*NodeKiller) Run ¶
func (k *NodeKiller) Run(stopCh <-chan struct{})
Run starts NodeKiller until stopCh is closed.
type NodeKillerConfig ¶
type NodeKillerConfig struct { // Enabled determines whether NodeKill should do anything at all. // All other options below are ignored if Enabled = false. Enabled bool // FailureRatio is a percentage of all nodes that could fail simultinously. FailureRatio float64 // Interval is time between node failures. Interval time.Duration // JitterFactor is factor used to jitter node failures. // Node will be killed between [Interval, Interval + (1.0 + JitterFactor)]. JitterFactor float64 // SimulatedDowntime is a duration between node is killed and recreated. SimulatedDowntime time.Duration }
NodeKillerConfig describes configuration of NodeKiller -- a utility to simulate node failures.
type NodeRuntimeOperationErrorRate ¶
type NodeRuntimeOperationErrorRate map[string]*RuntimeOperationErrorRate
NodeRuntimeOperationErrorRate is the runtime operation error rate on one node.
type NodeSelection ¶
NodeSelection specifies where to run a pod, using a combination of fixed node name, node selector and/or affinity.
type NodeTestContextType ¶
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 kubeletconfig.KubeletConfiguration // ImageDescription is the description of the image on which the test is running. ImageDescription string // 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 // ExtraEnvs is a map of environment names to values. ExtraEnvs map[string]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 NullProvider ¶
type NullProvider struct{}
NullProvider is the default implementation of the ProviderInterface which doesn't do anything.
func (NullProvider) CleanupServiceResources ¶
func (n NullProvider) CleanupServiceResources(c clientset.Interface, loadBalancerName, region, zone string)
CleanupServiceResources is a base implementation which cleans up service resources.
func (NullProvider) CreatePD ¶
func (n NullProvider) CreatePD(zone string) (string, error)
CreatePD is a base implementation which creates PD.
func (NullProvider) CreatePVSource ¶
func (n NullProvider) CreatePVSource(zone, diskName string) (*v1.PersistentVolumeSource, error)
CreatePVSource is a base implementation which creates PV source.
func (NullProvider) DeleteNode ¶
func (n NullProvider) DeleteNode(node *v1.Node) error
DeleteNode is a base implementation which deletes a node.
func (NullProvider) DeletePD ¶
func (n NullProvider) DeletePD(pdName string) error
DeletePD is a base implementation which deletes PD.
func (NullProvider) DeletePVSource ¶
func (n NullProvider) DeletePVSource(pvSource *v1.PersistentVolumeSource) error
DeletePVSource is a base implementation which deletes PV source.
func (NullProvider) EnableAndDisableInternalLB ¶
func (n NullProvider) EnableAndDisableInternalLB() (enable, disable func(svc *v1.Service))
EnableAndDisableInternalLB is a base implementation which returns functions for enabling/disabling an internal LB.
func (NullProvider) EnsureLoadBalancerResourcesDeleted ¶
func (n NullProvider) EnsureLoadBalancerResourcesDeleted(ip, portRange string) error
EnsureLoadBalancerResourcesDeleted is a base implementation which ensures load balancer is deleted.
func (NullProvider) FrameworkAfterEach ¶
func (n NullProvider) FrameworkAfterEach(f *Framework)
FrameworkAfterEach is a base implementation which does AfterEach.
func (NullProvider) FrameworkBeforeEach ¶
func (n NullProvider) FrameworkBeforeEach(f *Framework)
FrameworkBeforeEach is a base implementation which does BeforeEach.
func (NullProvider) GetGroupNodes ¶
func (n NullProvider) GetGroupNodes(group string) ([]string, error)
GetGroupNodes is a base implementation which returns group nodes.
func (NullProvider) GroupSize ¶
func (n NullProvider) GroupSize(group string) (int, error)
GroupSize returns the size of an instance group
func (NullProvider) LoadBalancerSrcRanges ¶
func (n NullProvider) LoadBalancerSrcRanges() []string
LoadBalancerSrcRanges is a base implementation which returns the ranges of ips used by load balancers.
func (NullProvider) ResizeGroup ¶
func (n NullProvider) ResizeGroup(string, int32) error
ResizeGroup is a base implementation which resizes group.
type Options ¶
type Options struct { ClientQPS float32 ClientBurst int GroupVersion *schema.GroupVersion }
Options is a struct for managing test framework options.
type PVCMap ¶
type PVCMap map[types.NamespacedName]pvcval
PVCMap is a map of all PVCs used in the multi pv-pvc tests. The key is "namespace/pvc.Name". The value is {} (empty struct) since we're only interested in the PVC's name and if it is present. We must always Get the pvc object before referencing any of its values, eg. its VolumeName. Note: It's unsafe to add keys to a map in a loop. Their insertion in the map is
unpredictable and can result in the same key being iterated over again.
type PVMap ¶
type PVMap map[string]pvval
PVMap is a map of all PVs used in the multi pv-pvc tests. The key is the PV's name, which is guaranteed to be unique. The value is {} (empty struct) since we're only interested in the PV's name and if it is present. We must always Get the pv object before referencing any of its values, eg its ClaimRef.
type PersistentVolumeClaimConfig ¶
type PersistentVolumeClaimConfig struct { AccessModes []v1.PersistentVolumeAccessMode Annotations map[string]string Selector *metav1.LabelSelector StorageClassName *string VolumeMode *v1.PersistentVolumeMode }
PersistentVolumeClaimConfig is consumed by MakePersistentVolumeClaim() to generate a PVC object. AccessModes defaults to all modes (RWO, RWX, ROX) if left empty (+optional) Annotations defines the PVC's annotations
type PersistentVolumeConfig ¶
type PersistentVolumeConfig struct { PVSource v1.PersistentVolumeSource Prebind *v1.PersistentVolumeClaim ReclaimPolicy v1.PersistentVolumeReclaimPolicy NamePrefix string Labels labels.Set StorageClassName string NodeAffinity *v1.VolumeNodeAffinity VolumeMode *v1.PersistentVolumeMode }
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 PingCommand ¶
type PingCommand string
PingCommand is the type to hold ping command.
const ( // IPv4PingCommand is a ping command for IPv4. IPv4PingCommand PingCommand = "ping" // IPv6PingCommand is a ping command for IPv6. IPv6PingCommand PingCommand = "ping6" )
type PodClient ¶
type PodClient struct { v1core.PodInterface // contains filtered or unexported fields }
PodClient is a struct for pod client.
func (*PodClient) Create ¶
Create creates a new pod according to the framework specifications (don't wait for it to start).
func (*PodClient) CreateBatch ¶
CreateBatch create a batch of pods. All pods are created before waiting.
func (*PodClient) CreateEventually ¶
CreateEventually retries pod creation for a while before failing the test with the most recent error. This mimicks the behavior of a controller (like the one for DaemonSet) and is necessary because pod creation can fail while its service account is still getting provisioned (https://github.com/kubernetes/kubernetes/issues/68776).
Both the timeout and polling interval are configurable as optional arguments: - The first optional argument is the timeout. - The second optional argument is the polling interval.
Both intervals can either be specified as time.Duration, parsable duration strings or as floats/integers. In the last case they are interpreted as seconds.
func (*PodClient) CreateSync ¶
CreateSync creates a new pod according to the framework specifications, and wait for it to start.
func (*PodClient) CreateSyncInNamespace ¶
CreateSyncInNamespace creates a new pod according to the framework specifications in the given namespace, and waits for it to start.
func (*PodClient) DeleteSync ¶
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 ¶
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 ¶
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) PodIsReady ¶
PodIsReady returns true if the specified pod is ready. Otherwise false.
func (*PodClient) Update ¶
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 ¶
WaitForErrorEventOrSuccess waits for pod to succeed or an error event for that pod.
func (*PodClient) WaitForFailure ¶
WaitForFailure waits for pod to fail.
func (*PodClient) WaitForFinish ¶
WaitForFinish waits for pod to finish running, regardless of success or failure.
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 PodNode ¶
type PodNode struct { // Pod represents pod name Pod string // Node represents node name Node string }
PodNode is a pod-node pair indicating which node a given pod is running on
type PodProxyResponseChecker ¶
type PodProxyResponseChecker struct {
// contains filtered or unexported fields
}
PodProxyResponseChecker is a context for checking pods responses by issuing GETs to them (via the API proxy) and verifying that they answer with their own pod name.
func NewPodProxyResponseChecker ¶
func NewPodProxyResponseChecker(c clientset.Interface, ns string, label labels.Selector, controllerName string, respondName bool, pods *v1.PodList) PodProxyResponseChecker
NewPodProxyResponseChecker returns a context for checking pods responses.
func (PodProxyResponseChecker) CheckAllResponses ¶
func (r PodProxyResponseChecker) CheckAllResponses() (done bool, err error)
CheckAllResponses issues GETs to all pods in the context and verify they reply with their own pod name.
type PodStartupLatency ¶
type PodStartupLatency struct { CreateToScheduleLatency LatencyMetric `json:"createToScheduleLatency"` ScheduleToRunLatency LatencyMetric `json:"scheduleToRunLatency"` RunToWatchLatency LatencyMetric `json:"runToWatchLatency"` ScheduleToWatchLatency LatencyMetric `json:"scheduleToWatchLatency"` E2ELatency LatencyMetric `json:"e2eLatency"` }
PodStartupLatency is a struct for managing latency of pod startup.
func (*PodStartupLatency) PrintHumanReadable ¶
func (l *PodStartupLatency) PrintHumanReadable() string
PrintHumanReadable returns pod startup letency with JSON format.
func (*PodStartupLatency) PrintJSON ¶
func (l *PodStartupLatency) PrintJSON() string
PrintJSON returns pod startup letency with JSON format.
func (*PodStartupLatency) SummaryKind ¶
func (l *PodStartupLatency) SummaryKind() string
SummaryKind returns the summary of pod startup 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 []v1.PodPhase // Optional: only pods passing this function will pass the filter // Verify a pod. // As an optimization, in addition to specifying 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 ProviderInterface ¶
type ProviderInterface interface { FrameworkBeforeEach(f *Framework) FrameworkAfterEach(f *Framework) ResizeGroup(group string, size int32) error GetGroupNodes(group string) ([]string, error) GroupSize(group string) (int, error) DeleteNode(node *v1.Node) error CreatePD(zone string) (string, error) DeletePD(pdName string) error CreatePVSource(zone, diskName string) (*v1.PersistentVolumeSource, error) DeletePVSource(pvSource *v1.PersistentVolumeSource) error CleanupServiceResources(c clientset.Interface, loadBalancerName, region, zone string) EnsureLoadBalancerResourcesDeleted(ip, portRange string) error LoadBalancerSrcRanges() []string EnableAndDisableInternalLB() (enable, disable func(svc *v1.Service)) }
ProviderInterface contains the implementation for certain provider-specific functionality.
func SetupProviderConfig ¶
func SetupProviderConfig(providerName string) (ProviderInterface, error)
SetupProviderConfig validates the chosen provider and creates an interface instance for it.
type ResourceConstraint ¶
ResourceConstraint is a struct to hold constraints.
type ResourceGathererOptions ¶
type ResourceGathererOptions struct { InKubemark bool Nodes NodesSet ResourceDataGatheringPeriod time.Duration ProbeDuration time.Duration PrintVerboseLogs bool }
ResourceGathererOptions is a struct to hold options for resource.
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
NewResourceMonitor returns a new ResourceMonitor.
func (*ResourceMonitor) FormatCPUSummary ¶
func (r *ResourceMonitor) FormatCPUSummary(summary NodesCPUSummary) string
FormatCPUSummary returns the string of human-readable CPU summary from the specified summary data.
func (*ResourceMonitor) FormatResourceUsage ¶
func (r *ResourceMonitor) FormatResourceUsage(s ResourceUsagePerNode) string
FormatResourceUsage returns the formatted string for LogLatest(). TODO(oomichi): This can be made to local function after making test/e2e/node/kubelet_perf.go use LogLatest directly instead.
func (*ResourceMonitor) GetCPUSummary ¶
func (r *ResourceMonitor) GetCPUSummary() NodesCPUSummary
GetCPUSummary returns summary of CPU.
func (*ResourceMonitor) GetLatest ¶
func (r *ResourceMonitor) GetLatest() (ResourceUsagePerNode, error)
GetLatest returns the latest resource usage.
func (*ResourceMonitor) GetMasterNodeCPUSummary ¶
func (r *ResourceMonitor) GetMasterNodeCPUSummary(summaryPerNode NodesCPUSummary) NodesCPUSummary
GetMasterNodeCPUSummary returns summary of master node CPUs.
func (*ResourceMonitor) GetMasterNodeLatest ¶
func (r *ResourceMonitor) GetMasterNodeLatest(usagePerNode ResourceUsagePerNode) ResourceUsagePerNode
GetMasterNodeLatest returns the latest resource usage of master and node.
func (*ResourceMonitor) LogCPUSummary ¶
func (r *ResourceMonitor) LogCPUSummary()
LogCPUSummary outputs summary of CPU into log.
func (*ResourceMonitor) LogLatest ¶
func (r *ResourceMonitor) LogLatest()
LogLatest outputs the latest resource usage into log.
type ResourceUsagePerContainer ¶
type ResourceUsagePerContainer map[string]*ContainerResourceUsage
ResourceUsagePerContainer is map of ContainerResourceUsage
type ResourceUsagePerNode ¶
type ResourceUsagePerNode map[string]ResourceUsagePerContainer
ResourceUsagePerNode is map of ResourceUsagePerContainer.
type ResourceUsageSummary ¶
type ResourceUsageSummary map[string][]SingleContainerSummary
ResourceUsageSummary is a struct to hold resource usage summary. we can't have int here, as JSON does not accept integer keys.
func (*ResourceUsageSummary) PrintHumanReadable ¶
func (s *ResourceUsageSummary) PrintHumanReadable() string
PrintHumanReadable prints resource usage summary in human readable.
func (*ResourceUsageSummary) PrintJSON ¶
func (s *ResourceUsageSummary) PrintJSON() string
PrintJSON prints resource usage summary in JSON.
func (*ResourceUsageSummary) SummaryKind ¶
func (s *ResourceUsageSummary) SummaryKind() string
SummaryKind returns string of ResourceUsageSummary
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 clientset.Interface) *RuntimeOperationMonitor
NewRuntimeOperationMonitor returns a new 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 SchedulingMetrics ¶
type SchedulingMetrics struct { PredicateEvaluationLatency LatencyMetric `json:"predicateEvaluationLatency"` PriorityEvaluationLatency LatencyMetric `json:"priorityEvaluationLatency"` PreemptionEvaluationLatency LatencyMetric `json:"preemptionEvaluationLatency"` BindingLatency LatencyMetric `json:"bindingLatency"` ThroughputAverage float64 `json:"throughputAverage"` ThroughputPerc50 float64 `json:"throughputPerc50"` ThroughputPerc90 float64 `json:"throughputPerc90"` ThroughputPerc99 float64 `json:"throughputPerc99"` }
SchedulingMetrics is a struct for managing scheduling metrics.
func VerifySchedulerLatency ¶
func VerifySchedulerLatency(c clientset.Interface) (*SchedulingMetrics, error)
VerifySchedulerLatency verifies (currently just by logging them) the scheduling latencies.
func (*SchedulingMetrics) PrintHumanReadable ¶
func (l *SchedulingMetrics) PrintHumanReadable() string
PrintHumanReadable returns scheduling metrics with JSON format.
func (*SchedulingMetrics) PrintJSON ¶
func (l *SchedulingMetrics) PrintJSON() string
PrintJSON returns scheduling metrics with JSON format.
func (*SchedulingMetrics) SummaryKind ¶
func (l *SchedulingMetrics) SummaryKind() string
SummaryKind returns the summary of scheduling metrics.
type ServiceTestFixture ¶
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 }
ServiceTestFixture is a simple helper class to avoid too much boilerplate in tests
func NewServerTest ¶
func NewServerTest(client clientset.Interface, namespace string, serviceName string) *ServiceTestFixture
NewServerTest creates a new ServiceTestFixture for the tests.
func (*ServiceTestFixture) BuildServiceSpec ¶
func (t *ServiceTestFixture) BuildServiceSpec() *v1.Service
BuildServiceSpec builds default config for a service (which can then be changed)
func (*ServiceTestFixture) Cleanup ¶
func (t *ServiceTestFixture) Cleanup() []error
Cleanup cleans all ReplicationControllers and Services which this object holds.
func (*ServiceTestFixture) CreateRC ¶
func (t *ServiceTestFixture) CreateRC(rc *v1.ReplicationController) (*v1.ReplicationController, error)
CreateRC creates a replication controller and records it for cleanup.
func (*ServiceTestFixture) CreateService ¶
CreateService creates a service, and record it for cleanup
func (*ServiceTestFixture) DeleteService ¶
func (t *ServiceTestFixture) DeleteService(serviceName string) error
DeleteService deletes a service, and remove it from the cleanup list
type ServiceTestJig ¶
type ServiceTestJig struct { ID string Name string Client clientset.Interface Labels map[string]string }
ServiceTestJig is a test jig to help service testing.
func NewServiceTestJig ¶
func NewServiceTestJig(client clientset.Interface, name string) *ServiceTestJig
NewServiceTestJig allocates and inits a new ServiceTestJig.
func (*ServiceTestJig) AddRCAntiAffinity ¶
func (j *ServiceTestJig) AddRCAntiAffinity(rc *v1.ReplicationController)
AddRCAntiAffinity adds AntiAffinity to the given ReplicationController.
func (*ServiceTestJig) ChangeServiceNodePortOrFail ¶
func (j *ServiceTestJig) ChangeServiceNodePortOrFail(namespace, name string, initial int) *v1.Service
ChangeServiceNodePortOrFail changes node ports of the given service.
func (*ServiceTestJig) ChangeServiceType ¶
func (j *ServiceTestJig) ChangeServiceType(namespace, name string, newType v1.ServiceType, timeout time.Duration)
ChangeServiceType updates the given service's ServiceType to the given newType.
func (*ServiceTestJig) CreateExternalNameServiceOrFail ¶
func (j *ServiceTestJig) CreateExternalNameServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service
CreateExternalNameServiceOrFail creates a new ExternalName type Service based on the jig's defaults. Callers can provide a function to tweak the Service object before it is created.
func (*ServiceTestJig) CreateLoadBalancerService ¶
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 ¶
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 ¶
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 ¶
func (j *ServiceTestJig) CreatePDBOrFail(namespace string, rc *v1.ReplicationController) *policyv1beta1.PodDisruptionBudget
CreatePDBOrFail returns a PodDisruptionBudget for the given ReplicationController, or fails if a PodDisruptionBudget isn't ready
func (*ServiceTestJig) CreateServiceWithServicePort ¶
func (j *ServiceTestJig) CreateServiceWithServicePort(labels map[string]string, namespace string, ports []v1.ServicePort) (*v1.Service, error)
CreateServiceWithServicePort creates a new Service with ServicePort.
func (*ServiceTestJig) CreateTCPServiceOrFail ¶
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 ¶
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 ¶
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 ¶
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 ¶
func (j *ServiceTestJig) GetHTTPContent(host string, port int, timeout time.Duration, url string) bytes.Buffer
GetHTTPContent returns the content of the given url by HTTP.
func (*ServiceTestJig) GetNodes ¶
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 ¶
func (j *ServiceTestJig) GetNodesNames(maxNodesForTest int) []string
GetNodesNames returns a list of names of the first maxNodesForTest nodes
func (*ServiceTestJig) LaunchEchoserverPodOnNode ¶
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 ¶
func (j *ServiceTestJig) LaunchNetexecPodOnNode(f *Framework, nodeName, podName string, httpPort, udpPort int32, hostNetwork bool)
LaunchNetexecPodOnNode launches a netexec pod on the given node.
func (*ServiceTestJig) RunOrFail ¶
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 ¶
func (j *ServiceTestJig) SanityCheckService(svc *v1.Service, svcType v1.ServiceType)
SanityCheckService performs sanity checks on the given service
func (*ServiceTestJig) Scale ¶
func (j *ServiceTestJig) Scale(namespace string, replicas int)
Scale scales pods to the given replicas
func (*ServiceTestJig) TestHTTPHealthCheckNodePort ¶
func (j *ServiceTestJig) TestHTTPHealthCheckNodePort(host string, port int, request string, timeout time.Duration, expectSucceed bool, threshold int) error
TestHTTPHealthCheckNodePort tests a HTTP connection by the given request to the given host and port.
func (*ServiceTestJig) TestNotReachableHTTP ¶
func (j *ServiceTestJig) TestNotReachableHTTP(host string, port int, timeout time.Duration)
TestNotReachableHTTP tests that a HTTP request doesn't connect to the given host and port.
func (*ServiceTestJig) TestNotReachableUDP ¶
func (j *ServiceTestJig) TestNotReachableUDP(host string, port int, timeout time.Duration)
TestNotReachableUDP tests that the given host doesn't serve UDP on the given port.
func (*ServiceTestJig) TestReachableHTTP ¶
func (j *ServiceTestJig) TestReachableHTTP(host string, port int, timeout time.Duration)
TestReachableHTTP tests that the given host serves HTTP on the given port.
func (*ServiceTestJig) TestReachableHTTPWithRetriableErrorCodes ¶
func (j *ServiceTestJig) TestReachableHTTPWithRetriableErrorCodes(host string, port int, retriableErrCodes []int, timeout time.Duration)
TestReachableHTTPWithRetriableErrorCodes tests that the given host serves HTTP on the given port with the given retriableErrCodes.
func (*ServiceTestJig) TestReachableUDP ¶
func (j *ServiceTestJig) TestReachableUDP(host string, port int, timeout time.Duration)
TestReachableUDP tests that the given host serves UDP on the given port.
func (*ServiceTestJig) TestRejectedHTTP ¶
func (j *ServiceTestJig) TestRejectedHTTP(host string, port int, timeout time.Duration)
TestRejectedHTTP tests that the given host rejects a HTTP request on the given port.
func (*ServiceTestJig) TestRejectedUDP ¶
func (j *ServiceTestJig) TestRejectedUDP(host string, port int, timeout time.Duration)
TestRejectedUDP tests that the given host rejects a UDP request on the given port.
func (*ServiceTestJig) UpdateService ¶
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 ¶
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 ¶
func (j *ServiceTestJig) WaitForEndpointOnNode(namespace, serviceName, nodeName string)
WaitForEndpointOnNode waits for a service endpoint on the given node.
func (*ServiceTestJig) WaitForLoadBalancerDestroyOrFail ¶
func (j *ServiceTestJig) WaitForLoadBalancerDestroyOrFail(namespace, name string, ip string, port int, timeout time.Duration) *v1.Service
WaitForLoadBalancerDestroyOrFail waits the given service to destroy a LoadBalancer, or fails after the given timeout
func (*ServiceTestJig) WaitForLoadBalancerOrFail ¶
func (j *ServiceTestJig) WaitForLoadBalancerOrFail(namespace, name string, timeout time.Duration) *v1.Service
WaitForLoadBalancerOrFail waits the given service to have a LoadBalancer, or fails after the given timeout
func (*ServiceTestJig) WaitForNewIngressIPOrFail ¶
func (j *ServiceTestJig) WaitForNewIngressIPOrFail(namespace, name, existingIP string, timeout time.Duration) *v1.Service
WaitForNewIngressIPOrFail waits for the given service to get a new ingress IP, or fails after the given timeout
type SingleContainerSummary ¶
SingleContainerSummary is a struct to hold single container summary.
type SingleLogSummary ¶
SingleLogSummary is a structure for handling average generation rate and number of probes.
type StatefulSetTester ¶
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 ¶
func NewStatefulSetTester(c clientset.Interface) *StatefulSetTester
NewStatefulSetTester creates a StatefulSetTester that uses c to interact with the API server.
func (*StatefulSetTester) BreakHTTPProbe ¶
func (s *StatefulSetTester) BreakHTTPProbe(ss *apps.StatefulSet) error
BreakHTTPProbe breaks the readiness probe for Nginx StatefulSet containers in ss.
func (*StatefulSetTester) BreakPodHTTPProbe ¶
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 ¶
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 ¶
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 ¶
func (s *StatefulSetTester) CheckServiceName(ss *apps.StatefulSet, expectedServiceName string) error
CheckServiceName asserts that the ServiceName for ss is equivalent to expectedServiceName.
func (*StatefulSetTester) ConfirmStatefulPodCount ¶
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 ¶
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 ¶
func (s *StatefulSetTester) DeleteStatefulPodAtIndex(index int, ss *apps.StatefulSet)
DeleteStatefulPodAtIndex deletes the Pod with ordinal index in ss.
func (*StatefulSetTester) ExecInStatefulPods ¶
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 ¶
func (s *StatefulSetTester) GetPodList(ss *apps.StatefulSet) *v1.PodList
GetPodList gets the current Pods in ss.
func (*StatefulSetTester) GetStatefulSet ¶
func (s *StatefulSetTester) GetStatefulSet(namespace, name string) *apps.StatefulSet
GetStatefulSet gets the StatefulSet named name in namespace.
func (*StatefulSetTester) PauseNewPods ¶
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 ¶
func (s *StatefulSetTester) Restart(ss *apps.StatefulSet)
Restart scales ss to 0 and then back to its previous number of replicas.
func (*StatefulSetTester) RestoreHTTPProbe ¶
func (s *StatefulSetTester) RestoreHTTPProbe(ss *apps.StatefulSet) error
RestoreHTTPProbe restores the readiness probe for Nginx StatefulSet containers in ss.
func (*StatefulSetTester) RestorePodHTTPProbe ¶
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 ¶
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 ¶
func (s *StatefulSetTester) Saturate(ss *apps.StatefulSet)
Saturate waits for all Pods in ss to become Running and Ready.
func (*StatefulSetTester) Scale ¶
func (s *StatefulSetTester) Scale(ss *apps.StatefulSet, count int32) (*apps.StatefulSet, error)
Scale scales ss to count replicas.
func (*StatefulSetTester) SetHTTPProbe ¶
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 ¶
func (s *StatefulSetTester) SortStatefulPods(pods *v1.PodList)
SortStatefulPods sorts pods by their ordinals
func (*StatefulSetTester) UpdateReplicas ¶
func (s *StatefulSetTester) UpdateReplicas(ss *apps.StatefulSet, count int32)
UpdateReplicas updates the replicas of ss to count.
func (*StatefulSetTester) VerifyPodAtIndex ¶
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 applied to the Pod to "visit" it.
func (*StatefulSetTester) WaitForPartitionedRollingUpdate ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
func (s *StatefulSetTester) WaitForRunningAndNotReady(numStatefulPods int32, ss *apps.StatefulSet)
WaitForRunningAndNotReady waits for numStatefulPods in ss to be Running and not Ready.
func (*StatefulSetTester) WaitForRunningAndReady ¶
func (s *StatefulSetTester) WaitForRunningAndReady(numStatefulPods int32, ss *apps.StatefulSet)
WaitForRunningAndReady waits for numStatefulPods in ss to be Running and Ready.
func (*StatefulSetTester) WaitForState ¶
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 ¶
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 ¶
func (s *StatefulSetTester) WaitForStatusReadyReplicas(ss *apps.StatefulSet, expectedReplicas int32)
WaitForStatusReadyReplicas waits for the ss.Status.ReadyReplicas to be equal to expectedReplicas
func (*StatefulSetTester) WaitForStatusReplicas ¶
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 DockershimCheckpointDir string // ListImages will list off all images that are used then quit ListImages bool // Provider identifies the infrastructure provider (gce, gke, aws) Provider string // Tooling is the tooling in use (e.g. kops, gke). Provider is the cloud provider and might not uniquely identify the tooling. Tooling 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 EtcdUpgradeStorage string EtcdUpgradeVersion string GCEUpgradeScript string ContainerRuntime string ContainerRuntimeEndpoint string ContainerRuntimeProcessName string ContainerRuntimePidFile string // SystemdServices are comma separated list of systemd services the test framework // will dump logs for. SystemdServices string // DumpSystemdJournal controls whether to dump the full systemd journal. DumpSystemdJournal bool 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 string GatherSuiteMetricsAfterTest bool MaxNodesToGather int AllowGatheringProfiles bool // If set to 'true' framework will gather ClusterAutoscaler metrics when gathering them for other components. IncludeClusterAutoscalerMetrics 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 // SystemDaemonsetStartupTimeout is the timeout for waiting for all system daemonsets to be ready. SystemDaemonsetStartupTimeout 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 // Path to the GCS artifacts directory to dump logs from nodes. Logexporter gets enabled if this is non-empty. LogexporterGCSPath string // featureGates is a map of feature names to bools that enable or disable alpha/experimental features. FeatureGates map[string]bool // Node e2e specific test context NodeTestContextType // Monitoring solution that is used in current cluster. ClusterMonitoringMode string // Separate Prometheus monitoring deployed in cluster EnablePrometheusMonitoring bool // Indicates what path the kubernetes-anywhere is installed on KubernetesAnywherePath string // The DNS Domain of the cluster. ClusterDNSDomain string // The configration of NodeKiller. NodeKiller NodeKillerConfig }
TestContextType contains test settings and global state. Due to historic reasons, it is a mixture of items managed by the test framework itself, cloud providers and individual tests. The goal is to move anything not required by the framework into the code which uses the settings.
The recommendation for those settings is:
- They are stored in their own context structure or local variables.
- The standard `flag` package is used to register them. The flag name should follow the pattern <part1>.<part2>....<partn> where the prefix is unlikely to conflict with other tests or standard packages and each part is in lower camel case. For example, test/e2e/storage/csi/context.go could define storage.csi.numIterations.
- framework/config can be used to simplify the registration of multiple options with a single function call: var storageCSI { NumIterations `default:"1" usage:"number of iterations"` } _ config.AddOptions(&storageCSI, "storage.csi")
- The direct use Viper in tests is possible, but discouraged because it only works in test suites which use Viper (which is not required) and the supported options cannot be discovered by a test suite user.
Test suite authors can use framework/viper to make all command line parameters also configurable via a configuration file.
var TestContext TestContextType
TestContext should be used by all tests to access common context data.
type TestDataSummary ¶
type TestDataSummary interface { SummaryKind() string PrintHumanReadable() string PrintJSON() string }
TestDataSummary is an interface for managing test data.
type TimestampedSize ¶
type TimestampedSize struct {
// contains filtered or unexported fields
}
TimestampedSize contains a size together with a time of measurement.
type UDPPokeParams ¶
UDPPokeParams is a struct for UDP poke parameters.
type UDPPokeResult ¶
type UDPPokeResult struct { Status UDPPokeStatus Error error // if there was any error Response []byte // if code != 0 }
UDPPokeResult is a struct for UDP poke result.
func PokeUDP ¶
func PokeUDP(host string, port int, request string, params *UDPPokeParams) UDPPokeResult
PokeUDP tries to connect to a host on a port and send the given request. Callers can specify additional success parameters, if desired.
The result status will be characterized as precisely as possible, given the known users of this.
The result error will be populated for any status other than Success.
The result response will be populated if the UDP transaction was completed, even if the other test params make this a failure).
type UDPPokeStatus ¶
type UDPPokeStatus string
UDPPokeStatus is string for representing UDP poke status.
const ( // UDPSuccess is UDP poke status which is success. UDPSuccess UDPPokeStatus = "Success" // UDPError is UDP poke status which is error. UDPError UDPPokeStatus = "UnknownError" // UDPTimeout is UDP poke status which is timeout. UDPTimeout UDPPokeStatus = "TimedOut" // UDPRefused is UDP poke status which is connection refused. UDPRefused UDPPokeStatus = "ConnectionRefused" // UDPBadResponse is UDP poke status which is bad response. UDPBadResponse UDPPokeStatus = "BadResponse" )
type VerifyStatefulPodFunc ¶
VerifyStatefulPodFunc is a func that examines a StatefulSetPod.
type What ¶
type What struct {
Kind string `json:"kind"`
}
What is a subset of metav1.TypeMeta which (in contrast to metav1.TypeMeta itself) satisfies the runtime.Object interface.
func (*What) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new What.
func (*What) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out.
func (*What) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*What) GetObjectKind ¶
func (in *What) GetObjectKind() schema.ObjectKind
GetObjectKind returns the ObjectKind schema
Source Files ¶
- cleanup.go
- create.go
- exec_util.go
- flake_reporting_util.go
- framework.go
- get-kubemark-resource-usage.go
- google_compute.go
- kubelet_stats.go
- log_size_monitoring.go
- metrics_util.go
- networking_utils.go
- nodes_util.go
- perf_util.go
- pods.go
- profile_gatherer.go
- provider.go
- psp_util.go
- pv_util.go
- rc_util.go
- resource_usage_gatherer.go
- service_util.go
- size.go
- statefulset_utils.go
- test_context.go
- util.go
Directories ¶
Path | Synopsis |
---|---|
Package config simplifies the declaration of configuration options.
|
Package config simplifies the declaration of configuration options. |
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. |
Package podlogs enables live capturing of all events and log messages for some or all pods in a namespace as they get generated.
|
Package podlogs enables live capturing of all events and log messages for some or all pods in a namespace as they get generated. |
providers
|
|
Package testfiles provides a wrapper around various optional ways of retrieving additional files needed during a test run: - builtin bindata - filesystem access
|
Package testfiles provides a wrapper around various optional ways of retrieving additional files needed during a test run: - builtin bindata - filesystem access |