Documentation ¶
Index ¶
- Constants
- Variables
- func CleanupServiceResources(c clientset.Interface, loadBalancerName, region, zone string)
- func CreateServiceForSimpleApp(c clientset.Interface, contPort, svcPort int, namespace, appName string) *v1.Service
- func CreateServiceForSimpleAppWithPods(c clientset.Interface, contPort int, svcPort int, namespace, appName string, ...) (*v1.Service, error)
- 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 GetServiceLoadBalancerPropagationTimeout(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) CreateSCTPServiceWithPort(tweak func(svc *v1.Service), port int32) (*v1.Service, 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) GetEndpointNodesWithIP(addressType v1.NodeAddressType) (map[string][]string, error)
- func (j *TestJig) ListNodesWithEndpoint() ([]v1.Node, 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) 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 // 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 // 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 CreateServiceForSimpleApp ¶ added in v1.19.0
func CreateServiceForSimpleApp(c clientset.Interface, contPort, svcPort int, namespace, appName string) *v1.Service
CreateServiceForSimpleApp returns a service that selects/exposes pods (send -1 ports if no exposure needed) with an app label.
func CreateServiceForSimpleAppWithPods ¶ added in v1.19.0
func CreateServiceForSimpleAppWithPods(c clientset.Interface, contPort int, svcPort int, namespace, 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 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 GetServiceLoadBalancerPropagationTimeout ¶ added in v1.19.0
GetServiceLoadBalancerPropagationTimeout returns a timeout value for propagating 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) CreateSCTPServiceWithPort ¶ added in v1.19.0
func (j *TestJig) CreateSCTPServiceWithPort(tweak func(svc *v1.Service), port int32) (*v1.Service, error)
CreateSCTPServiceWithPort creates a new SCTP 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) 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) GetEndpointNodesWithIP ¶ added in v1.19.0
func (j *TestJig) GetEndpointNodesWithIP(addressType v1.NodeAddressType) (map[string][]string, error)
GetEndpointNodesWithIP returns a map of nodenames:<ip of given type> on which the endpoints of the Service are running.
func (*TestJig) ListNodesWithEndpoint ¶ added in v1.19.0
ListNodesWithEndpoint returns a list of nodes on which the endpoints of the given 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) 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