Documentation ¶
Index ¶
- Constants
- Variables
- func CleanupServiceResources(c clientset.Interface, loadBalancerName, region, zone string)
- func CreateServiceSpec(serviceName, externalName string, isHeadless bool, selector map[string]string) *v1.Service
- func GetIngressPoint(ing *v1.LoadBalancerIngress) string
- func GetServiceLoadBalancerCreationTimeout(cs clientset.Interface) time.Duration
- func GetServicesProxyRequest(c clientset.Interface, request *restclient.Request) (*restclient.Request, error)
- func TestReachableHTTP(host string, port int, timeout time.Duration)
- func TestReachableHTTPWithRetriableErrorCodes(host string, port int, retriableErrCodes []int, timeout time.Duration)
- func UpdateService(c clientset.Interface, namespace, serviceName string, update func(*v1.Service)) (*v1.Service, error)
- func WaitForServiceDeletedWithFinalizer(cs clientset.Interface, namespace, name string)
- func WaitForServiceUpdatedWithFinalizer(cs clientset.Interface, namespace, name string, hasFinalizer bool)
- type TestJig
- func (j *TestJig) AddRCAntiAffinity(rc *v1.ReplicationController)
- func (j *TestJig) ChangeServiceNodePort(initial int) (*v1.Service, error)
- func (j *TestJig) ChangeServiceType(newType v1.ServiceType, timeout time.Duration) error
- func (j *TestJig) CheckServiceReachability(svc *v1.Service, pod *v1.Pod) error
- func (j *TestJig) CreateExternalNameService(tweak func(svc *v1.Service)) (*v1.Service, error)
- func (j *TestJig) CreateLoadBalancerService(timeout time.Duration, tweak func(svc *v1.Service)) (*v1.Service, error)
- func (j *TestJig) CreateOnlyLocalLoadBalancerService(timeout time.Duration, createPod bool, tweak func(svc *v1.Service)) (*v1.Service, error)
- func (j *TestJig) CreateOnlyLocalNodePortService(createPod bool) (*v1.Service, error)
- func (j *TestJig) CreatePDB(rc *v1.ReplicationController) (*policyv1beta1.PodDisruptionBudget, error)
- func (j *TestJig) CreateServicePods(replica int) error
- func (j *TestJig) CreateTCPService(tweak func(svc *v1.Service)) (*v1.Service, error)
- func (j *TestJig) CreateTCPServiceWithPort(tweak func(svc *v1.Service), port int32) (*v1.Service, error)
- func (j *TestJig) CreateTCPUDPServicePods(replica int) error
- func (j *TestJig) CreateUDPService(tweak func(svc *v1.Service)) (*v1.Service, error)
- func (j *TestJig) GetEndpointNodeNames() (sets.String, error)
- func (j *TestJig) GetEndpointNodes() (map[string][]string, error)
- func (j *TestJig) Run(tweak func(rc *v1.ReplicationController)) (*v1.ReplicationController, error)
- func (j *TestJig) Scale(replicas int) error
- func (j *TestJig) UpdateService(update func(*v1.Service)) (*v1.Service, error)
- func (j *TestJig) WaitForAvailableEndpoint(timeout time.Duration) error
- func (j *TestJig) WaitForEndpointOnNode(nodeName string) error
- func (j *TestJig) WaitForLoadBalancer(timeout time.Duration) (*v1.Service, error)
- func (j *TestJig) WaitForLoadBalancerDestroy(ip string, port int, timeout time.Duration) (*v1.Service, error)
- func (j *TestJig) WaitForNewIngressIP(existingIP string, timeout time.Duration) (*v1.Service, error)
Constants ¶
const ( // RespondingTimeout is how long to wait for a service to be responding. RespondingTimeout = 2 * time.Minute // 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 // 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 // LoadBalancerPropagationTimeoutDefault is the default time to wait for pods to // be targeted by load balancers. LoadBalancerPropagationTimeoutDefault = 10 * time.Minute // 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 = 22 * 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 // TestTimeout is used for most polling/waiting activities TestTimeout = 60 * time.Second // ServiceEndpointsTimeout is the maximum time in which endpoints for the service should be created. ServiceEndpointsTimeout = 2 * time.Minute // ServiceReachabilityShortPollTimeout is the maximum time in which service must be reachable during polling. ServiceReachabilityShortPollTimeout = 2 * time.Minute )
Variables ¶
var NodePortRange = utilnet.PortRange{Base: 30000, Size: 2768}
NodePortRange should match whatever the default/configured range is
Functions ¶
func CleanupServiceResources ¶
CleanupServiceResources cleans up service Type=LoadBalancer resources.
func CreateServiceSpec ¶
func CreateServiceSpec(serviceName, externalName string, isHeadless bool, selector map[string]string) *v1.Service
CreateServiceSpec returns a Service object for testing.
func GetIngressPoint ¶
func GetIngressPoint(ing *v1.LoadBalancerIngress) string
GetIngressPoint returns a host on which ingress serves.
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 TestReachableHTTP ¶ added in v1.17.0
TestReachableHTTP tests that the given host serves HTTP on the given port.
func TestReachableHTTPWithRetriableErrorCodes ¶ added in v1.17.0
func 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 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 WaitForServiceDeletedWithFinalizer ¶
WaitForServiceDeletedWithFinalizer waits for the service with finalizer to be deleted.
Types ¶
type TestJig ¶
type TestJig struct { Client clientset.Interface Namespace string Name string ID string Labels map[string]string }
TestJig is a test jig to help service testing.
func NewTestJig ¶
NewTestJig allocates and inits a new TestJig.
func (*TestJig) AddRCAntiAffinity ¶
func (j *TestJig) AddRCAntiAffinity(rc *v1.ReplicationController)
AddRCAntiAffinity adds AntiAffinity to the given ReplicationController.
func (*TestJig) ChangeServiceNodePort ¶ added in v1.17.0
ChangeServiceNodePort changes node ports of the given service.
func (*TestJig) ChangeServiceType ¶
ChangeServiceType updates the given service's ServiceType to the given newType.
func (*TestJig) CheckServiceReachability ¶
CheckServiceReachability ensures that request are served by the services. Only supports Services with type ClusterIP, NodePort and ExternalName.
func (*TestJig) CreateExternalNameService ¶ added in v1.17.0
CreateExternalNameService creates a new ExternalName type Service based on the j's defaults. Callers can provide a function to tweak the Service object before it is created.
func (*TestJig) CreateLoadBalancerService ¶
func (j *TestJig) CreateLoadBalancerService(timeout time.Duration, tweak func(svc *v1.Service)) (*v1.Service, error)
CreateLoadBalancerService creates a loadbalancer service and waits for it to acquire an ingress IP.
func (*TestJig) CreateOnlyLocalLoadBalancerService ¶
func (j *TestJig) CreateOnlyLocalLoadBalancerService(timeout time.Duration, createPod bool, tweak func(svc *v1.Service)) (*v1.Service, error)
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 (*TestJig) CreateOnlyLocalNodePortService ¶
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 (*TestJig) CreatePDB ¶ added in v1.17.0
func (j *TestJig) CreatePDB(rc *v1.ReplicationController) (*policyv1beta1.PodDisruptionBudget, error)
CreatePDB returns a PodDisruptionBudget for the given ReplicationController, or returns an error if a PodDisruptionBudget isn't ready
func (*TestJig) CreateServicePods ¶
CreateServicePods creates a replication controller with the label same as service. Service listens to HTTP.
func (*TestJig) CreateTCPService ¶ added in v1.17.0
CreateTCPService creates a new TCP Service based on the j's defaults. Callers can provide a function to tweak the Service object before it is created.
func (*TestJig) CreateTCPServiceWithPort ¶
func (j *TestJig) CreateTCPServiceWithPort(tweak func(svc *v1.Service), port int32) (*v1.Service, error)
CreateTCPServiceWithPort creates a new TCP Service with given port based on the j's defaults. Callers can provide a function to tweak the Service object before it is created.
func (*TestJig) CreateTCPUDPServicePods ¶ added in v1.17.0
CreateTCPUDPServicePods creates a replication controller with the label same as service. Service listens to TCP and UDP.
func (*TestJig) CreateUDPService ¶ added in v1.17.0
CreateUDPService creates a new UDP Service based on the j's defaults. Callers can provide a function to tweak the Service object before it is created.
func (*TestJig) GetEndpointNodeNames ¶ added in v1.17.0
GetEndpointNodeNames returns a string set of node names on which the endpoints of the given Service are running.
func (*TestJig) GetEndpointNodes ¶
GetEndpointNodes returns a map of nodenames:external-ip on which the endpoints of the Service are running.
func (*TestJig) Run ¶ added in v1.17.0
func (j *TestJig) Run(tweak func(rc *v1.ReplicationController)) (*v1.ReplicationController, error)
Run 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 (*TestJig) UpdateService ¶
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 (*TestJig) WaitForAvailableEndpoint ¶
WaitForAvailableEndpoint waits for at least 1 endpoint to be available till timeout
func (*TestJig) WaitForEndpointOnNode ¶
WaitForEndpointOnNode waits for a service endpoint on the given node.
func (*TestJig) WaitForLoadBalancer ¶ added in v1.17.0
WaitForLoadBalancer waits the given service to have a LoadBalancer, or returns an error after the given timeout