Documentation ¶
Index ¶
- Constants
- Variables
- 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 CollectAddresses(nodes *v1.NodeList, addressType v1.NodeAddressType) []string
- func CountEgressSinglePortRules(oci client.Interface, seclistID string, port int) int
- func CountIngressSinglePortRules(oci client.Interface, seclistID string, port int) int
- func CountSinglePortSecListRules(oci client.Interface, egressSecListID, ingressSecListID string, port int) (int, int)
- func CreateExecPodOrFail(client clientset.Interface, ns, generateName string, tweak func(*v1.Pod)) string
- func CreateServiceSpec(serviceName, externalName string, isHeadless bool, selector map[string]string) *v1.Service
- func DeleteRCAndWaitForGC(c clientset.Interface, ns, name string) error
- func DeleteResourceAndWaitForGC(c clientset.Interface, kind schema.GroupKind, ns, name string) error
- func EnableAndDisableInternalLB() (enable func(svc *v1.Service), disable func(svc *v1.Service))
- func EnsureLoadBalancerResourcesDeleted(ip, portRange string) error
- func ExpectNoError(err error, explain ...interface{})
- func ExpectNoErrorWithOffset(offset int, err error, explain ...interface{})
- 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 GetIngressPoint(ing *v1.LoadBalancerIngress) string
- func GetNodeAddresses(node *v1.Node, addressType v1.NodeAddressType) (ips []string)
- func GetNodePublicIps(c clientset.Interface) ([]string, error)
- func GetReadySchedulableNodesOrDie(c clientset.Interface) (nodes *v1.NodeList)
- func HasValidSinglePortEgressRulesAfterPortChange(oci client.Interface, seclistID string, ...) bool
- func HasValidSinglePortIngressRulesAfterPortChange(oci client.Interface, seclistID string, ...) bool
- 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 IsRetryableAPIError(err error) bool
- func KubectlCmd(args ...string) *exec.Cmd
- func Logf(format string, args ...interface{})
- func NewKubectlCommand(args ...string) *kubectlBuilder
- func PickNodeIP(c clientset.Interface) string
- func PodToleratesNodeTaints(pod *v1.Pod, nodeInfo *v1alpha1.NodeInfo) (bool, error)
- func RemoveCleanupAction(p CleanupActionHandle)
- func RunCleanupActions()
- func RunHostCmd(ns, name, cmd string) (string, error)
- func RunKubectl(args ...string) (string, error)
- func TestHitNodesFromOutside(externalIP string, httpPort int32, timeout time.Duration, ...) error
- func TestHitNodesFromOutsideWithCount(externalIP string, httpPort int32, timeout time.Duration, ...) error
- func TestNotReachableHTTP(ip string, port int) (bool, error)
- func TestNotReachableHTTPTimeout(ip string, port int, timeout time.Duration) (bool, error)
- func TestNotReachableUDP(ip string, port int, request string) (bool, error)
- func TestReachableHTTP(secure bool, ip string, port int, request string, expect string) (bool, error)
- func TestReachableHTTPWithContent(secure bool, ip string, port int, request string, expect string, ...) (bool, error)
- func TestReachableHTTPWithContentTimeout(secure bool, ip string, port int, request string, expect string, ...) (bool, error)
- func TestReachableHTTPWithContentTimeoutWithRetriableErrorCodes(secure bool, ip string, port int, request string, expect string, ...) (bool, error)
- func TestReachableHTTPWithRetriableErrorCodes(secure bool, ip string, port int, request string, expect string, ...) (bool, error)
- func TestReachableUDP(ip string, port int, request string, expect string) (bool, error)
- func UniqueID() string
- func UpdateService(c clientset.Interface, namespace, serviceName string, update func(*v1.Service)) (*v1.Service, error)
- func WaitForPodCondition(c clientset.Interface, ns, podName, desc string, timeout time.Duration, ...) error
- func WaitForSinglePortEgressRulesAfterPortChangeOrFail(oci client.Interface, seclistID string, ...)
- func WaitForSinglePortIngressRulesAfterPortChangeOrFail(oci client.Interface, seclistID string, ...)
- type CleanupActionHandle
- type CloudProviderFramework
- func NewBackupFramework(baseName string) *CloudProviderFramework
- func NewCcmFramework(baseName string, client clientset.Interface, backup bool) *CloudProviderFramework
- func NewDefaultFramework(baseName string) *CloudProviderFramework
- func NewFrameworkWithCloudProvider(baseName string) *CloudProviderFramework
- func (f *CloudProviderFramework) AfterEach()
- func (f *CloudProviderFramework) BeforeEach()
- func (f *CloudProviderFramework) CreateNamespace(baseName string, labels map[string]string) (*v1.Namespace, error)
- func (f *CloudProviderFramework) CreateStorageClassOrFail(name string, provisionerType string, parameters map[string]string, ...) string
- func (f *CloudProviderFramework) DeleteNamespace(namespace string, timeout time.Duration) error
- func (f *CloudProviderFramework) DeleteStorageClass(name string) error
- func (f *CloudProviderFramework) UpdateStorageClassOrFail(storageClass *storagev1beta1.StorageClass, allowVolumeExpansion bool, ...) (*storagev1beta1.StorageClass, error)
- func (f *CloudProviderFramework) VerifyHealthCheckConfig(loadBalancerId string, retries, timeout, interval int) error
- func (f *CloudProviderFramework) VerifyLoadBalancerConnectionIdleTimeout(loadBalancerId string, connectionIdleTimeout int) error
- func (f *CloudProviderFramework) VerifyLoadBalancerPolicy(loadBalancerId string, loadbalancerPolicy string) error
- func (f *CloudProviderFramework) WaitForLoadBalancerNSGChange(lb *loadbalancer.LoadBalancer, nsgIds []string) error
- func (f *CloudProviderFramework) WaitForLoadBalancerShapeChange(lb *loadbalancer.LoadBalancer, shape, fMin, fMax string) error
- type Framework
- type KubeClient
- func (kc *KubeClient) AddLabelsToNode(nodeName string, labelValues map[string]string)
- func (kc *KubeClient) CheckNodes(expectedNumNodes int)
- func (kc *KubeClient) CheckPods(expectedNumPods int)
- func (kc *KubeClient) CheckVersion(serverVersion string)
- func (kc *KubeClient) CheckVersionSucceeds() (string, error)
- func (kc *KubeClient) CreatePod(pod *v1.Pod) (*v1.Pod, error)
- func (kc *KubeClient) DeletePod(namespace string, name string, timeout time.Duration) error
- func (kc *KubeClient) Exec(namespace, podName, containerName string, command []string) (string, error)
- func (kc *KubeClient) GetPodIP(namespace string, name string) string
- func (kc *KubeClient) NamespaceExists(ns string) bool
- func (kc *KubeClient) PodLogs(namespace string, name string) (string, error)
- func (kc *KubeClient) WaitForPodFailure(namespace string, name string, errorMessage string, timeout time.Duration)
- func (kc *KubeClient) WaitForPodRunning(namespace string, name string, timeout time.Duration)
- func (kc *KubeClient) WaitForPodSuccess(namespace string, name string, timeout time.Duration)
- type PVCTestJig
- func (j *PVCTestJig) CheckAndAwaitPVCOrFail(pvc *v1.PersistentVolumeClaim, namespace string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CheckAttachmentTypeAndEncryptionType(compute client.ComputeInterface, ...)
- func (j *PVCTestJig) CheckCMEKKey(bs client.BlockStorageInterface, pvcName, namespace, kmsKeyIDExpected string)
- func (j *PVCTestJig) CheckDataPersistenceWithDeployment(pvcName string, ns string)
- func (j *PVCTestJig) CheckEncryptionType(namespace, podName string)
- func (j *PVCTestJig) CheckExpandedVolumeReadWrite(namespace string, podName string)
- func (j *PVCTestJig) CheckFileCorruption(namespace string, podName string, dir string, fileName string)
- func (j *PVCTestJig) CheckFileExists(namespace string, podName string, dir string, fileName string)
- func (j *PVCTestJig) CheckMultiplePodReadWrite(namespace string, pvcName string, checkEncryption bool)
- func (j *PVCTestJig) CheckPVCorFail(pvc *v1.PersistentVolumeClaim, tweak func(pvc *v1.PersistentVolumeClaim), ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CheckSinglePodReadWrite(namespace string, pvcName string, checkEncryption bool)
- func (j *PVCTestJig) CheckUsableVolumeSizeInsidePod(namespace string, podName string)
- func (j *PVCTestJig) CheckVolumeCapacity(expected string, name string, namespace string)
- func (j *PVCTestJig) CheckVolumeDirectoryOwnership(namespace string, pvcParam *v1.PersistentVolumeClaim)
- func (j *PVCTestJig) CheckVolumeMount(namespace string, pvcParam *v1.PersistentVolumeClaim)
- func (j *PVCTestJig) CheckVolumeReadWrite(namespace string, pvcParam *v1.PersistentVolumeClaim)
- func (j *PVCTestJig) CreateAndAwaitNginxPodOrFail(ns string, pvc *v1.PersistentVolumeClaim, command string) string
- func (j *PVCTestJig) CreateAndAwaitPVCOrFail(namespace, volumeSize, scName, adLabel string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CreateAndAwaitPVCOrFailCSI(namespace, volumeSize, scName string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CreateAndAwaitPVCOrFailFSS(namespace, volumeName, volumeSize string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CreateAndAwaitStaticPVCOrFailCSI(bs ocicore.BlockstorageClient, namespace string, volumeSize string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CreateBackupVolume(storageClient ocicore.BlockstorageClient, pvc *v1.PersistentVolumeClaim) (string, error)
- func (j *PVCTestJig) CreatePVCTemplate(namespace, volumeSize string) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CreatePVCorFail(namespace string, volumeSize string, scName string, adLabel string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CreatePVCorFailCSI(namespace string, volumeSize string, scName string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CreatePVCorFailFSS(namespace, volumeName, volumeSize string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) CreatePVTemplate(namespace, annotation, storageClassName string, ...) *v1.PersistentVolume
- func (j *PVCTestJig) CreatePVorFailCSI(namespace string, scName string, ocid string) *v1.PersistentVolume
- func (j *PVCTestJig) CreatePVorFailFSS(namespace, volumeHandle, encryptInTransit string) *v1.PersistentVolume
- func (j *PVCTestJig) CreateVolume(bs ocicore.BlockstorageClient, adLabel string, compartmentId string, ...) *string
- func (j *PVCTestJig) DeleteAndAwaitNginxPodOrFail(ns string, podName string)
- func (j *PVCTestJig) DeletePersistentVolumeClaim(ns string, pvcName string) error
- func (j *PVCTestJig) NewPodForCSI(name string, namespace string, claimName string, adLabel string) string
- func (j *PVCTestJig) NewPodForCSIFSSRead(matchString string, namespace string, claimName string, fileName string, ...)
- func (j *PVCTestJig) NewPodForCSIFSSWrite(name string, namespace string, claimName string, fileName string, ...) string
- func (j *PVCTestJig) SanityCheckPV(pvc *v1.PersistentVolumeClaim)
- func (j *PVCTestJig) UpdateAndAwaitPVCOrFailCSI(pvc *v1.PersistentVolumeClaim, namespace, volumeSize string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) UpdatePVCorFail(pvc *v1.PersistentVolumeClaim, tweak func(pvc *v1.PersistentVolumeClaim), ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) UpdatePVCorFailCSI(pvc *v1.PersistentVolumeClaim, volumeSize string, ...) *v1.PersistentVolumeClaim
- func (j *PVCTestJig) WaitForPVCPhase(phase v1.PersistentVolumeClaimPhase, ns string, pvcName string) error
- func (j *PVCTestJig) WaitForPVPhase(phase v1.PersistentVolumePhase, pvName string) error
- type PortsByPodName
- type PortsByPodUID
- 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) CreateJobRunningScript(ns string, script string, backOffLimit int32, name string)
- 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) 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(secure bool, host string, port int, timeout time.Duration, url string) bytes.Buffer
- func (j *ServiceTestJig) GetNodes(maxNodesForTest int) (nodes *v1.NodeList)
- 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) 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(secure bool, host string, port int, timeout time.Duration)
- func (j *ServiceTestJig) TestReachableHTTPWithRetriableErrorCodes(secure bool, host string, port int, retriableErrCodes []int, ...)
- func (j *ServiceTestJig) TestReachableUDP(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
Constants ¶
const ( // Poll is the default polling period when checking lifecycle status. Poll = 15 * time.Second // Poll defines how regularly to poll kubernetes resources. K8sResourcePoll = 2 * time.Second // DefaultTimeout is how long we wait for long-running operations in the // test suite before giving up. DefaultTimeout = 10 * time.Minute JobCompletionTimeout = 5 * time.Minute DefaultClusterKubeconfig = "/tmp/clusterkubeconfig" DefaultCloudConfig = "/tmp/cloudconfig" ClassOCI = "oci" ClassOCICSI = "oci-bv" ClassOCICSIExpand = "oci-bv-expand" ClassOCIExt3 = "oci-ext3" ClassOCIMntFss = "oci-fss-mnt" ClassOCISubnetFss = "oci-fss-subnet" MinVolumeBlock = "50Gi" MaxVolumeBlock = "100Gi" VolumeFss = "1Gi" )
const ( EndpointHttpPort = 8080 EndpointHttpsPort = 443 EndpointUdpPort = 8081 TestContainerHttpPort = 8080 ClusterHttpPort = 80 ClusterUdpPort = 90 // Number of checks to hit a given set of endpoints when enable session affinity. SessionAffinityChecks = 10 )
const ( KmsKey = "kms-key-id" AttachmentTypeISCSI = "iscsi" AttachmentTypeParavirtualized = "paravirtualized" SCName = "oci-kms" AttachmentType = "attachment-type" )
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 = 5 * time.Minute // LoadBalancerLagTimeoutAWS is the delay between ELB creation and serving traffic // on AWS. A few minutes is typical, so use 10m. LoadBalancerLagTimeoutAWS = 10 * time.Minute // How long to wait for a load balancer to be created/modified. //TODO: once support ticket 21807001 is resolved, reduce this timeout back to something reasonable LoadBalancerCreateTimeoutDefault = 20 * time.Minute LoadBalancerCreateTimeoutLarge = 2 * time.Hour // Time required by the loadbalancer to cleanup, proportional to numApps/Ing. // Bring the cleanup timeout back down to 5m once b/33588344 is resolved. LoadBalancerCleanupTimeout = 15 * time.Minute // On average it takes ~6 minutes for a single backend to come online in GCE. LoadBalancerPollTimeout = 15 * time.Minute LoadBalancerPollInterval = 30 * time.Second LargeClusterMinNodesNumber = 100 // Don't test with more than 3 nodes. // Many tests create an endpoint per node, in large clusters, this is // resource and time intensive. MaxNodesForEndpointsTests = 3 // ServiceTestTimeout is used for most polling/waiting activities ServiceTestTimeout = 60 * time.Second // GCPMaxInstancesInInstanceGroup is the maximum number of instances supported in // one instance group on GCP. GCPMaxInstancesInInstanceGroup = 2000 // OCI LB Shape Update Timeout OCILBShapeUpdateTimeout = 5 * time.Minute // OCI LB NSG Update Timeout OCILBNSGUpdateTimeout = 5 * time.Minute )
const ( // 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 )
Variables ¶
var ( // SSL CAData is a CA certificate not being used anywhere else; it only is utilised to check the load // balancer SSL connection during tests SSLCAData = `` /* 976-byte string literal not displayed */ SSLCertificateData = `` /* 1451-byte string literal not displayed */ SSLPrivateData = `` /* 1674-byte string literal not displayed */ SSLPassphrase = "" )
var ErrJobFailed = fmt.Errorf("Job failed")
var ServiceNodePortRange = utilnet.PortRange{Base: 30000, Size: 2768}
This should match whatever the default/configured range is
Functions ¶
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 CollectAddresses ¶
func CollectAddresses(nodes *v1.NodeList, addressType v1.NodeAddressType) []string
func CountEgressSinglePortRules ¶
CountEgressSinglePortRules counts the number of 'single port' (non-ranged) egress rules for the specified seclist and port. If no client or seclist is provided, then 0 is returned.
func CountIngressSinglePortRules ¶
CountIngressSinglePortRules counts the number of 'single port' (non-ranged) ingress rules for the specified seclist and port. If no client or seclist is provided, then 0 is returned.
func CountSinglePortSecListRules ¶
func CountSinglePortSecListRules(oci client.Interface, egressSecListID, ingressSecListID string, port int) (int, int)
CountSinglePortSecListRules counts the number of 'single port' (non-ranged) egress/ingress rules for the specified list and port.
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 CreateServiceSpec ¶
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 EnableAndDisableInternalLB ¶
EnableAndDisableInternalLB returns two functions for enabling and disabling the internal load balancer setting for the supported cloud providers: GCE/GKE and Azure
func EnsureLoadBalancerResourcesDeleted ¶
EnsureLoadBalancerResourcesDeleted ensures that cloud load balancer resources that were created are actually cleaned up.
func ExpectNoError ¶
func ExpectNoError(err error, explain ...interface{})
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 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 ¶
Filters nodes in NodeList in place, removing nodes that do not satisfy the given condition TODO: consider merging with pkg/client/cache.NodeLister
func GetIngressPoint ¶
func GetIngressPoint(ing *v1.LoadBalancerIngress) string
func GetNodeAddresses ¶
func GetNodeAddresses(node *v1.Node, addressType v1.NodeAddressType) (ips []string)
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 HasValidSinglePortEgressRulesAfterPortChange ¶
func HasValidSinglePortEgressRulesAfterPortChange(oci client.Interface, seclistID string, expectedRuleCount, oldPort, newPort int) bool
HasValidSinglePortEgressRulesAfterPortChange checks the counts of 'single port' (non-ranged) egress rules in the provided seclist after a service port change.
func HasValidSinglePortIngressRulesAfterPortChange ¶
func HasValidSinglePortIngressRulesAfterPortChange(oci client.Interface, seclistID string, expectedRuleCount, oldPort, newPort int) bool
HasValidSinglePortIngressRulesAfterPortChange checks the counts of 'single port' (non-ranged) egress rules in the provided seclist after a service port change.
func IsNodeConditionUnset ¶
func IsNodeConditionUnset(node *v1.Node, conditionType v1.NodeConditionType) bool
func IsRetryableAPIError ¶
func KubectlCmd ¶
KubectlCmd runs the kubectl executable through the wrapper script.
func NewKubectlCommand ¶
func NewKubectlCommand(args ...string) *kubectlBuilder
func PickNodeIP ¶
func PodToleratesNodeTaints ¶
func RemoveCleanupAction ¶
func RemoveCleanupAction(p CleanupActionHandle)
RemoveCleanupAction removes a function that was installed by AddCleanupAction.
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 RunHostCmd ¶
RunHostCmd runs the given cmd in the context of the given pod using `kubectl exec` inside of a shell.
func RunKubectl ¶
RunKubectl is a convenience wrapper over kubectlBuilder
func TestHitNodesFromOutside ¶
func TestNotReachableUDP ¶
func TestReachableHTTP ¶
func TestReachableUDP ¶
func UniqueID ¶
func UniqueID() string
UniqueID returns a unique UUID-like identifier for use in generating resources for integration tests.
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 WaitForPodCondition ¶
func WaitForPodCondition(c clientset.Interface, ns, podName, desc string, timeout time.Duration, condition podCondition) error
WaitForPodCondition waits for a Pod to satisfy a condition.
func WaitForSinglePortEgressRulesAfterPortChangeOrFail ¶
func WaitForSinglePortEgressRulesAfterPortChangeOrFail(oci client.Interface, seclistID string, expectedRuleCount, oldPort, newPort int)
WaitForSinglePortEgressRulesAfterPortChangeOrFail waits for the expected number of 'single port' (non-ranged) egress rules to be present in the specified seclist or fails.
func WaitForSinglePortIngressRulesAfterPortChangeOrFail ¶
func WaitForSinglePortIngressRulesAfterPortChangeOrFail(oci client.Interface, seclistID string, expectedRuleCount, oldPort, newPort int)
WaitForSinglePortIngressRulesAfterPortChangeOrFail waits for the expected number of 'single port' (non-ranged) ingress rules to be present in the specified seclist or fails.
Types ¶
type CleanupActionHandle ¶
type CleanupActionHandle *int
func AddCleanupAction ¶
func AddCleanupAction(fn func()) CleanupActionHandle
AddCleanupAction installs a function that will be called in the event of the whole test being terminated. This allows arbitrary pieces of the overall test to hook into SynchronizedAfterSuite().
type CloudProviderFramework ¶
type CloudProviderFramework struct { BaseName string InitCloudProvider bool // Whether to initialise a cloud provider interface for testing CloudProvider cloudprovider.Interface // Every test has a cloud provider unless initialisation is skipped ClientSet clientset.Interface CloudProviderConfig *providercfg.Config // If specified, the CloudProviderConfig. This provides information on the configuration of the test cluster. Client client.Interface // An OCI client for checking the state of any provisioned OCI infrastructure during testing. NodePortTest bool // An optional configuration for E2E testing. If set to true, then will run additional E2E nodePort connectivity checks during testing. CCMSecListID string // An optional configuration for E2E testing. If present can be used to run additional checks against seclist during testing. K8SSecListID string // An optional configuration for E2E testing. If present can be used to run additional checks against seclist during testing. SkipNamespaceCreation bool // Whether to skip creating a namespace Namespace *v1.Namespace // Every test has at least one namespace unless creation is skipped Secret *v1.Secret // Every test has at least one namespace unless creation is skipped BlockStorageClient ocicore.BlockstorageClient IsBackup bool BackupIDs []string StorageClasses []string VolumeIds []string // contains filtered or unexported fields }
CloudProviderFramework is used in the execution of e2e tests.
func NewBackupFramework ¶
func NewBackupFramework(baseName string) *CloudProviderFramework
NewBackupFramework constructs a new e2e test Framework initialising a storage client used to create a backup
func NewCcmFramework ¶
func NewCcmFramework(baseName string, client clientset.Interface, backup bool) *CloudProviderFramework
NewCcmFramework constructs a new e2e test CloudProviderFramework.
func NewDefaultFramework ¶
func NewDefaultFramework(baseName string) *CloudProviderFramework
NewDefaultFramework constructs a new e2e test CloudProviderFramework with default options.
func NewFrameworkWithCloudProvider ¶
func NewFrameworkWithCloudProvider(baseName string) *CloudProviderFramework
NewFrameworkWithCloudProvider constructs a new e2e test CloudProviderFramework for testing cloudprovider.Interface directly.
func (*CloudProviderFramework) AfterEach ¶
func (f *CloudProviderFramework) AfterEach()
AfterEach deletes the namespace(s).
func (*CloudProviderFramework) BeforeEach ¶
func (f *CloudProviderFramework) BeforeEach()
BeforeEach gets a client and makes a namespace.
func (*CloudProviderFramework) CreateNamespace ¶
func (f *CloudProviderFramework) CreateNamespace(baseName string, labels map[string]string) (*v1.Namespace, error)
CreateNamespace creates a e2e test namespace.
func (*CloudProviderFramework) CreateStorageClassOrFail ¶
func (f *CloudProviderFramework) CreateStorageClassOrFail(name string, provisionerType string, parameters map[string]string, testLabels map[string]string, bindingMode string, allowVolumeExpansion bool) string
CreateStorageClassOrFail creates a new storage class based on the jig's defaults.
func (*CloudProviderFramework) DeleteNamespace ¶
func (f *CloudProviderFramework) DeleteNamespace(namespace string, timeout time.Duration) error
DeleteNamespace deletes a given namespace and waits until its contents are deleted.
func (*CloudProviderFramework) DeleteStorageClass ¶
func (f *CloudProviderFramework) DeleteStorageClass(name string) error
DeleteStorageClass deletes a storage class given the name
func (*CloudProviderFramework) UpdateStorageClassOrFail ¶
func (f *CloudProviderFramework) UpdateStorageClassOrFail(storageClass *storagev1beta1.StorageClass, allowVolumeExpansion bool, tweak func(sc *storagev1beta1.StorageClass)) (*storagev1beta1.StorageClass, error)
func (*CloudProviderFramework) VerifyHealthCheckConfig ¶
func (f *CloudProviderFramework) VerifyHealthCheckConfig(loadBalancerId string, retries, timeout, interval int) error
func (*CloudProviderFramework) VerifyLoadBalancerConnectionIdleTimeout ¶
func (f *CloudProviderFramework) VerifyLoadBalancerConnectionIdleTimeout(loadBalancerId string, connectionIdleTimeout int) error
func (*CloudProviderFramework) VerifyLoadBalancerPolicy ¶
func (f *CloudProviderFramework) VerifyLoadBalancerPolicy(loadBalancerId string, loadbalancerPolicy string) error
func (*CloudProviderFramework) WaitForLoadBalancerNSGChange ¶
func (f *CloudProviderFramework) WaitForLoadBalancerNSGChange(lb *loadbalancer.LoadBalancer, nsgIds []string) error
WaitForLoadBalancerNSGChange polls for validating the associated NSGs to be the same as the spec
func (*CloudProviderFramework) WaitForLoadBalancerShapeChange ¶
func (f *CloudProviderFramework) WaitForLoadBalancerShapeChange(lb *loadbalancer.LoadBalancer, shape, fMin, fMax string) error
WaitForLoadBalancerShapeChange polls for the shape of the LB to be the same as the spec
type Framework ¶
type Framework struct { // The compartment1 the cluster is running in. Compartment1 string // Default adLocation AdLocation string // Default adLocation AdLabel string //is cluster creation required EnableCreateCluster bool ClusterKubeconfigPath string CloudConfigPath string MntTargetOcid string CMEKKMSKey string NsgOCIDS string ReservedIP string VolumeHandle string }
Framework is the context of the text execution.
func New ¶
func New() *Framework
New creates a new a framework that holds the context of the test execution.
func NewWithConfig ¶
func NewWithConfig() *Framework
NewWithConfig creates a new Framework instance and configures the instance as per the configuration options in the given config.
func (*Framework) Initialize ¶
func (f *Framework) Initialize()
BeforeEach will be executed before each Ginkgo test is executed.
type KubeClient ¶
func NewKubeClient ¶
func NewKubeClient(kubeConfig string) *KubeClient
func (*KubeClient) AddLabelsToNode ¶
func (kc *KubeClient) AddLabelsToNode(nodeName string, labelValues map[string]string)
The function labels the node specified by the nodeName with labels specified by map labelValues.
func (*KubeClient) CheckNodes ¶
func (kc *KubeClient) CheckNodes(expectedNumNodes int)
func (*KubeClient) CheckPods ¶
func (kc *KubeClient) CheckPods(expectedNumPods int)
Check the number of pods reported by k8s in the cluster
func (*KubeClient) CheckVersion ¶
func (kc *KubeClient) CheckVersion(serverVersion string)
Check that k8s reports the expected server version
func (*KubeClient) CheckVersionSucceeds ¶
func (kc *KubeClient) CheckVersionSucceeds() (string, error)
CheckVersionSucceeds checks that the client can successfully fetch the version
func (*KubeClient) Exec ¶
func (kc *KubeClient) Exec(namespace, podName, containerName string, command []string) (string, error)
Exec executes a command in the specified container, returning stdout, stderr and error. `options` allowed for additional parameters to be passed.
func (*KubeClient) NamespaceExists ¶
func (kc *KubeClient) NamespaceExists(ns string) bool
func (*KubeClient) PodLogs ¶
func (kc *KubeClient) PodLogs(namespace string, name string) (string, error)
func (*KubeClient) WaitForPodFailure ¶
func (*KubeClient) WaitForPodRunning ¶
func (kc *KubeClient) WaitForPodRunning(namespace string, name string, timeout time.Duration)
func (*KubeClient) WaitForPodSuccess ¶
func (kc *KubeClient) WaitForPodSuccess(namespace string, name string, timeout time.Duration)
type PVCTestJig ¶
type PVCTestJig struct { ID string Name string Labels map[string]string BlockStorageClient *ocicore.BlockstorageClient KubeClient clientset.Interface // contains filtered or unexported fields }
PVCTestJig is a jig to help create PVC tests.
func NewPVCTestJig ¶
func NewPVCTestJig(kubeClient clientset.Interface, name string) *PVCTestJig
NewPVCTestJig allocates and inits a new PVCTestJig.
func (*PVCTestJig) CheckAndAwaitPVCOrFail ¶
func (j *PVCTestJig) CheckAndAwaitPVCOrFail(pvc *v1.PersistentVolumeClaim, namespace string, pvcPhase v1.PersistentVolumeClaimPhase) *v1.PersistentVolumeClaim
func (*PVCTestJig) CheckAttachmentTypeAndEncryptionType ¶
func (j *PVCTestJig) CheckAttachmentTypeAndEncryptionType(compute client.ComputeInterface, pvcName, namespace, podName, expectedAttachmentType string)
CheckAttachmentTypeAndEncryptionType verifies attachment type and encryption type
func (*PVCTestJig) CheckCMEKKey ¶
func (j *PVCTestJig) CheckCMEKKey(bs client.BlockStorageInterface, pvcName, namespace, kmsKeyIDExpected string)
CheckCMEKKey verifies the expected and actual CMEK key
func (*PVCTestJig) CheckDataPersistenceWithDeployment ¶
func (j *PVCTestJig) CheckDataPersistenceWithDeployment(pvcName string, ns string)
func (*PVCTestJig) CheckEncryptionType ¶
func (j *PVCTestJig) CheckEncryptionType(namespace, podName string)
CheckEncryptionType verifies encryption type
func (*PVCTestJig) CheckExpandedVolumeReadWrite ¶
func (j *PVCTestJig) CheckExpandedVolumeReadWrite(namespace string, podName string)
CheckExpandedVolumeReadWrite checks a pvc expanded pod with a dymincally provisioned volume
func (*PVCTestJig) CheckFileCorruption ¶
func (j *PVCTestJig) CheckFileCorruption(namespace string, podName string, dir string, fileName string)
func (*PVCTestJig) CheckFileExists ¶
func (j *PVCTestJig) CheckFileExists(namespace string, podName string, dir string, fileName string)
func (*PVCTestJig) CheckMultiplePodReadWrite ¶
func (j *PVCTestJig) CheckMultiplePodReadWrite(namespace string, pvcName string, checkEncryption bool)
func (*PVCTestJig) CheckPVCorFail ¶
func (j *PVCTestJig) CheckPVCorFail(pvc *v1.PersistentVolumeClaim, tweak func(pvc *v1.PersistentVolumeClaim), namespace, volumeSize string) *v1.PersistentVolumeClaim
func (*PVCTestJig) CheckSinglePodReadWrite ¶
func (j *PVCTestJig) CheckSinglePodReadWrite(namespace string, pvcName string, checkEncryption bool)
func (*PVCTestJig) CheckUsableVolumeSizeInsidePod ¶
func (j *PVCTestJig) CheckUsableVolumeSizeInsidePod(namespace string, podName string)
CheckUsableVolumeSizeInsidePod checks a pvc expanded pod with a dymincally provisioned volume
func (*PVCTestJig) CheckVolumeCapacity ¶
func (j *PVCTestJig) CheckVolumeCapacity(expected string, name string, namespace string)
CheckVolumeCapacity verifies the Capacity of Volume provisioned.
func (*PVCTestJig) CheckVolumeDirectoryOwnership ¶
func (j *PVCTestJig) CheckVolumeDirectoryOwnership(namespace string, pvcParam *v1.PersistentVolumeClaim)
CheckVolumeDirectoryOwnership creates a pod with a dynamically provisioned volume
func (*PVCTestJig) CheckVolumeMount ¶
func (j *PVCTestJig) CheckVolumeMount(namespace string, pvcParam *v1.PersistentVolumeClaim)
CheckVolumeMount creates a pod with a dynamically provisioned volume
func (*PVCTestJig) CheckVolumeReadWrite ¶
func (j *PVCTestJig) CheckVolumeReadWrite(namespace string, pvcParam *v1.PersistentVolumeClaim)
CheckVolumeReadWrite creates a pod with a dynamically provisioned volume
func (*PVCTestJig) CreateAndAwaitNginxPodOrFail ¶
func (j *PVCTestJig) CreateAndAwaitNginxPodOrFail(ns string, pvc *v1.PersistentVolumeClaim, command string) string
CreateAndAwaitNginxPodOrFail returns a pod definition based on the namespace using nginx image
func (*PVCTestJig) CreateAndAwaitPVCOrFail ¶
func (j *PVCTestJig) CreateAndAwaitPVCOrFail(namespace, volumeSize, scName, adLabel string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
CreateAndAwaitPVCOrFail creates a new PVC based on the jig's defaults, waits for it to become ready, and then sanity checks it and its dependant resources. Callers can provide a function to tweak the PVC object before it is created.
func (*PVCTestJig) CreateAndAwaitPVCOrFailCSI ¶
func (j *PVCTestJig) CreateAndAwaitPVCOrFailCSI(namespace, volumeSize, scName string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
CreateAndAwaitPVCOrFailCSI creates a new PVC based on the jig's defaults, waits for it to become ready, and then sanity checks it and its dependant resources. Callers can provide a function to tweak the PVC object before it is created.
func (*PVCTestJig) CreateAndAwaitPVCOrFailFSS ¶
func (j *PVCTestJig) CreateAndAwaitPVCOrFailFSS(namespace, volumeName, volumeSize string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
CreateAndAwaitPVCOrFailFSS creates a new PVC based on the jig's defaults, waits for it to become ready, and then sanity checks it and its dependant resources. Callers can provide a function to tweak the PVC object before it is created.
func (*PVCTestJig) CreateAndAwaitStaticPVCOrFailCSI ¶
func (j *PVCTestJig) CreateAndAwaitStaticPVCOrFailCSI(bs ocicore.BlockstorageClient, namespace string, volumeSize string, scName string, adLabel string, compartmentId string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
CreateAndAwaitStaticPVCOrFailCSI creates a new PV and PVC based on the jig's defaults, waits for it to become ready, and then sanity checks it and its dependant resources. Callers can provide a function to tweak the PVC object before it is created.
func (*PVCTestJig) CreateBackupVolume ¶
func (j *PVCTestJig) CreateBackupVolume(storageClient ocicore.BlockstorageClient, pvc *v1.PersistentVolumeClaim) (string, error)
CreateBackupVolume creates a volume backup on OCI from an exsiting volume and returns the backup volume id
func (*PVCTestJig) CreatePVCTemplate ¶
func (j *PVCTestJig) CreatePVCTemplate(namespace, volumeSize string) *v1.PersistentVolumeClaim
func (*PVCTestJig) CreatePVCorFail ¶
func (j *PVCTestJig) CreatePVCorFail(namespace string, volumeSize string, scName string, adLabel string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
CreatePVCorFail creates a new claim based on the jig's defaults. Callers can provide a function to tweak the claim object before it is created.
func (*PVCTestJig) CreatePVCorFailCSI ¶
func (j *PVCTestJig) CreatePVCorFailCSI(namespace string, volumeSize string, scName string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
CreatePVCorFailCSI creates a new claim based on the jig's defaults. Callers can provide a function to tweak the claim object before it is created.
func (*PVCTestJig) CreatePVCorFailFSS ¶
func (j *PVCTestJig) CreatePVCorFailFSS(namespace, volumeName, volumeSize string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
CreatePVCorFailFSS creates a new claim based on the jig's defaults. Callers can provide a function to tweak the claim object before it is created.
func (*PVCTestJig) CreatePVTemplate ¶
func (j *PVCTestJig) CreatePVTemplate(namespace, annotation, storageClassName string, pvReclaimPolicy v1.PersistentVolumeReclaimPolicy) *v1.PersistentVolume
func (*PVCTestJig) CreatePVorFailCSI ¶
func (j *PVCTestJig) CreatePVorFailCSI(namespace string, scName string, ocid string) *v1.PersistentVolume
CreatePVorFail creates a new claim based on the jig's defaults. Callers can provide a function to tweak the claim object before it is created.
func (*PVCTestJig) CreatePVorFailFSS ¶
func (j *PVCTestJig) CreatePVorFailFSS(namespace, volumeHandle, encryptInTransit string) *v1.PersistentVolume
CreatePVForFSSorFail creates a new claim based on the jig's defaults. Callers can provide a function to tweak the claim object before it is created.
func (*PVCTestJig) CreateVolume ¶
func (j *PVCTestJig) CreateVolume(bs ocicore.BlockstorageClient, adLabel string, compartmentId string, volName string) *string
CreateVolume is a function to create the block volume
func (*PVCTestJig) DeleteAndAwaitNginxPodOrFail ¶
func (j *PVCTestJig) DeleteAndAwaitNginxPodOrFail(ns string, podName string)
DeleteAndAwaitNginxPodOrFail deletes the pod definition based on the namespace and waits for pod to disappear
func (*PVCTestJig) DeletePersistentVolumeClaim ¶
func (j *PVCTestJig) DeletePersistentVolumeClaim(ns string, pvcName string) error
DeletePersistentVolumeClaim deletes the PersistentVolumeClaim with the given name / namespace.
func (*PVCTestJig) NewPodForCSI ¶
func (j *PVCTestJig) NewPodForCSI(name string, namespace string, claimName string, adLabel string) string
newPODTemplate returns the default template for this jig, creates the Pod. Attaches PVC to the Pod which is created by CSI
func (*PVCTestJig) NewPodForCSIFSSRead ¶
func (j *PVCTestJig) NewPodForCSIFSSRead(matchString string, namespace string, claimName string, fileName string, encryptionEnabled bool)
NewPodForCSIFSSRead returns the CSI Fss read pod template for this jig, creates the Pod. Attaches PVC to the Pod which is created by CSI Fss. It does not have a node selector unlike the default pod template. It does a grep on the file with string matchString and goes to completion with an exit code either 0 or 1.
func (*PVCTestJig) NewPodForCSIFSSWrite ¶
func (j *PVCTestJig) NewPodForCSIFSSWrite(name string, namespace string, claimName string, fileName string, encryptionEnabled bool) string
NewPodForCSIFSSWrite returns the CSI Fss template for this jig, creates the Pod. Attaches PVC to the Pod which is created by CSI Fss. It does not have a node selector unlike the default pod template.
func (*PVCTestJig) SanityCheckPV ¶
func (j *PVCTestJig) SanityCheckPV(pvc *v1.PersistentVolumeClaim)
SanityCheckPV checks basic properties of a given volume match our expectations.
func (*PVCTestJig) UpdateAndAwaitPVCOrFailCSI ¶
func (j *PVCTestJig) UpdateAndAwaitPVCOrFailCSI(pvc *v1.PersistentVolumeClaim, namespace, volumeSize string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
UpdatedAndAwaitPVCOrFailCSI updates a PVC based on the jig's defaults, waits for it to become ready, and then sanity checks it and its dependant resources. Callers can provide a function to tweak the PVC object before it is created.
func (*PVCTestJig) UpdatePVCorFail ¶
func (j *PVCTestJig) UpdatePVCorFail(pvc *v1.PersistentVolumeClaim, tweak func(pvc *v1.PersistentVolumeClaim), namespace, volumeSize string) *v1.PersistentVolumeClaim
func (*PVCTestJig) UpdatePVCorFailCSI ¶
func (j *PVCTestJig) UpdatePVCorFailCSI(pvc *v1.PersistentVolumeClaim, volumeSize string, tweak func(pvc *v1.PersistentVolumeClaim)) *v1.PersistentVolumeClaim
UpdatePVCorFailCSI updates a new claim based on the jig's defaults. Callers can provide a function to tweak the claim object before it is updated.
func (*PVCTestJig) WaitForPVCPhase ¶
func (j *PVCTestJig) WaitForPVCPhase(phase v1.PersistentVolumeClaimPhase, ns string, pvcName string) error
WaitForPVCPhase waits for a PersistentVolumeClaim to be in a specific phase or until timeout occurs, whichever comes first.
func (*PVCTestJig) WaitForPVPhase ¶
func (j *PVCTestJig) WaitForPVPhase(phase v1.PersistentVolumePhase, pvName string) error
WaitForPVPhase waits for a PersistentVolume to be in a specific phase or until timeout occurs, whichever comes first.
type PortsByPodName ¶
type PortsByPodUID ¶
func GetContainerPortsByPodUID ¶
func GetContainerPortsByPodUID(endpoints *v1.Endpoints) PortsByPodUID
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 }
Simple helper class to avoid too much boilerplate in tests
func NewServerTest ¶
func NewServerTest(client clientset.Interface, namespace string, serviceName string) *ServiceTestFixture
func (*ServiceTestFixture) BuildServiceSpec ¶
func (t *ServiceTestFixture) BuildServiceSpec() *v1.Service
Build default config for a service (which can then be changed)
func (*ServiceTestFixture) Cleanup ¶
func (t *ServiceTestFixture) Cleanup() []error
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 ¶
Create a service, and record it for cleanup
func (*ServiceTestFixture) DeleteService ¶
func (t *ServiceTestFixture) DeleteService(serviceName string) error
Delete 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 }
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)
func (*ServiceTestJig) ChangeServiceNodePortOrFail ¶
func (j *ServiceTestJig) ChangeServiceNodePortOrFail(namespace, name string, initial int) *v1.Service
func (*ServiceTestJig) ChangeServiceType ¶
func (j *ServiceTestJig) ChangeServiceType(namespace, name string, newType v1.ServiceType, timeout time.Duration)
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) CreateJobRunningScript ¶
func (j *ServiceTestJig) CreateJobRunningScript(ns string, script string, backOffLimit int32, name string)
Creates a new job which will run a pod with the centos container running the given script
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 agnhost 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 agnhost container used everywhere in this test.
func (*ServiceTestJig) CreatePDBOrFail ¶
func (j *ServiceTestJig) CreatePDBOrFail(namespace string, rc *v1.ReplicationController) *policyv1beta1.PodDisruptionBudget
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 (*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) 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)
func (*ServiceTestJig) TestHTTPHealthCheckNodePort ¶
func (*ServiceTestJig) TestNotReachableHTTP ¶
func (j *ServiceTestJig) TestNotReachableHTTP(host string, port int, timeout time.Duration)
func (*ServiceTestJig) TestNotReachableUDP ¶
func (j *ServiceTestJig) TestNotReachableUDP(host string, port int, timeout time.Duration)
func (*ServiceTestJig) TestReachableHTTP ¶
func (*ServiceTestJig) TestReachableHTTPWithRetriableErrorCodes ¶
func (*ServiceTestJig) TestReachableUDP ¶
func (j *ServiceTestJig) TestReachableUDP(host string, port int, timeout time.Duration)
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)
func (*ServiceTestJig) WaitForLoadBalancerDestroyOrFail ¶
func (*ServiceTestJig) WaitForLoadBalancerOrFail ¶
func (*ServiceTestJig) WaitForNewIngressIPOrFail ¶
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string.
|
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string. |