Documentation
¶
Index ¶
- Constants
- Variables
- func CheckAffinity(execPod *v1.Pod, serviceIP string, servicePort int, shouldHold bool) bool
- func CleanupServiceResources(c clientset.Interface, loadBalancerName, region, zone string)
- func CreateServiceSpec(serviceName, externalName string, isHeadless bool, selector map[string]string) *v1.Service
- func DescribeSvc(ns string)
- func EnableAndDisableInternalLB() (enable func(svc *v1.Service), disable func(svc *v1.Service))
- func GetHTTPContent(host string, port int, timeout time.Duration, url string) bytes.Buffer
- 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 StartServeHostnameService(c clientset.Interface, svc *v1.Service, ns string, replicas int) ([]string, string, error)
- func StopServeHostnameService(clientset clientset.Interface, ns, name string) error
- func TestHTTPHealthCheckNodePort(host string, port int, request string, timeout time.Duration, ...) error
- func TestNotReachableHTTP(host string, port int, timeout time.Duration)
- func TestNotReachableUDP(host string, port int, timeout time.Duration)
- func TestReachableHTTP(host string, port int, timeout time.Duration)
- func TestReachableHTTPWithRetriableErrorCodes(host string, port int, retriableErrCodes []int, timeout time.Duration)
- func TestReachableUDP(host string, port int, timeout time.Duration)
- func TestRejectedHTTP(host string, port int, timeout time.Duration)
- func TestRejectedUDP(host string, port int, timeout time.Duration)
- func UpdateService(c clientset.Interface, namespace, serviceName string, update func(*v1.Service)) (*v1.Service, 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 WaitForServiceDeletedWithFinalizer(cs clientset.Interface, namespace, name string)
- func WaitForServiceResponding(c clientset.Interface, ns, name string) error
- func WaitForServiceUpdatedWithFinalizer(cs clientset.Interface, namespace, name string, hasFinalizer bool)
- type TestFixture
- func (t *TestFixture) BuildServiceSpec() *v1.Service
- func (t *TestFixture) Cleanup() []error
- func (t *TestFixture) CreateRC(rc *v1.ReplicationController) (*v1.ReplicationController, error)
- func (t *TestFixture) CreateService(service *v1.Service) (*v1.Service, error)
- func (t *TestFixture) DeleteService(serviceName string) error
- type TestJig
- func (j *TestJig) AddRCAntiAffinity(rc *v1.ReplicationController)
- func (j *TestJig) ChangeServiceNodePortOrFail(namespace, name string, initial int) *v1.Service
- func (j *TestJig) ChangeServiceType(namespace, name string, newType v1.ServiceType, timeout time.Duration)
- func (j *TestJig) CheckServiceReachability(namespace string, svc *v1.Service, pod *v1.Pod)
- func (j *TestJig) CreateExternalNameServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service
- func (j *TestJig) CreateLoadBalancerService(namespace, serviceName string, timeout time.Duration, ...) *v1.Service
- func (j *TestJig) CreateOnlyLocalLoadBalancerService(namespace, serviceName string, timeout time.Duration, createPod bool, ...) *v1.Service
- func (j *TestJig) CreateOnlyLocalNodePortService(namespace, serviceName string, createPod bool) *v1.Service
- func (j *TestJig) CreatePDBOrFail(namespace string, rc *v1.ReplicationController) *policyv1beta1.PodDisruptionBudget
- func (j *TestJig) CreateServicePods(c clientset.Interface, ns string, replica int)
- func (j *TestJig) CreateServiceWithServicePort(labels map[string]string, namespace string, ports []v1.ServicePort) (*v1.Service, error)
- func (j *TestJig) CreateTCPServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service
- func (j *TestJig) CreateTCPServiceWithPort(namespace string, tweak func(svc *v1.Service), port int32) *v1.Service
- func (j *TestJig) CreateTCPUDPServicePods(c clientset.Interface, ns string, replica int)
- func (j *TestJig) CreateUDPServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service
- func (j *TestJig) GetEndpointNodes(svc *v1.Service) map[string][]string
- func (j *TestJig) RunOrFail(namespace string, tweak func(rc *v1.ReplicationController)) *v1.ReplicationController
- func (j *TestJig) SanityCheckService(svc *v1.Service, svcType v1.ServiceType)
- func (j *TestJig) Scale(namespace string, replicas int)
- func (j *TestJig) UpdateService(namespace, name string, update func(*v1.Service)) (*v1.Service, error)
- func (j *TestJig) UpdateServiceOrFail(namespace, name string, update func(*v1.Service)) *v1.Service
- func (j *TestJig) WaitForAvailableEndpoint(namespace, serviceName string, timeout time.Duration)
- func (j *TestJig) WaitForEndpointOnNode(namespace, serviceName, nodeName string)
- func (j *TestJig) WaitForLoadBalancerDestroyOrFail(namespace, name string, ip string, port int, timeout time.Duration) *v1.Service
- func (j *TestJig) WaitForLoadBalancerOrFail(namespace, name string, timeout time.Duration) *v1.Service
- func (j *TestJig) WaitForNewIngressIPOrFail(namespace, name, existingIP string, timeout time.Duration) *v1.Service
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 )
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 // TestTimeout is used for most polling/waiting activities TestTimeout = 60 * time.Second // AffinityConfirmCount is the number of needed continuous requests to confirm that // affinity is enabled. AffinityConfirmCount = 15 // 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 CheckAffinity ¶ added in v1.17.0
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 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 DescribeSvc ¶
func DescribeSvc(ns string)
DescribeSvc logs the output of kubectl describe svc for the given namespace
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 GetHTTPContent ¶ added in v1.17.0
GetHTTPContent returns the content of the given url by HTTP.
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 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 TestHTTPHealthCheckNodePort ¶ added in v1.17.0
func 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 TestNotReachableHTTP ¶ added in v1.17.0
TestNotReachableHTTP tests that a HTTP request doesn't connect to the given host and port.
func TestNotReachableUDP ¶ added in v1.17.0
TestNotReachableUDP tests that the given host doesn't serve UDP on the given port.
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 TestReachableUDP ¶ added in v1.17.0
TestReachableUDP tests that the given host serves UDP on the given port.
func TestRejectedHTTP ¶ added in v1.17.0
TestRejectedHTTP tests that the given host rejects a HTTP request on the given port.
func TestRejectedUDP ¶ added in v1.17.0
TestRejectedUDP tests that the given host rejects a UDP request on the given port.
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 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 WaitForServiceDeletedWithFinalizer ¶
WaitForServiceDeletedWithFinalizer waits for the service with finalizer to be deleted.
func WaitForServiceResponding ¶
WaitForServiceResponding waits for the service to be responding.
Types ¶
type TestFixture ¶
type TestFixture struct { ServiceName string Namespace string Client clientset.Interface TestID string Labels map[string]string Name string Image string // contains filtered or unexported fields }
TestFixture is a simple helper class to avoid too much boilerplate in tests
func NewServerTest ¶
func NewServerTest(client clientset.Interface, namespace string, serviceName string) *TestFixture
NewServerTest creates a new TestFixture for the tests.
func (*TestFixture) BuildServiceSpec ¶
func (t *TestFixture) BuildServiceSpec() *v1.Service
BuildServiceSpec builds default config for a service (which can then be changed)
func (*TestFixture) Cleanup ¶
func (t *TestFixture) Cleanup() []error
Cleanup cleans all ReplicationControllers and Services which this object holds.
func (*TestFixture) CreateRC ¶
func (t *TestFixture) CreateRC(rc *v1.ReplicationController) (*v1.ReplicationController, error)
CreateRC creates a replication controller and records it for cleanup.
func (*TestFixture) CreateService ¶
CreateService creates a service, and record it for cleanup
func (*TestFixture) DeleteService ¶
func (t *TestFixture) DeleteService(serviceName string) error
DeleteService deletes a service, and remove it from the cleanup list
type TestJig ¶
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) ChangeServiceNodePortOrFail ¶
ChangeServiceNodePortOrFail changes node ports of the given service.
func (*TestJig) ChangeServiceType ¶
func (j *TestJig) ChangeServiceType(namespace, name string, newType v1.ServiceType, timeout time.Duration)
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) CreateExternalNameServiceOrFail ¶
func (j *TestJig) CreateExternalNameServiceOrFail(namespace string, tweak func(svc *v1.Service)) *v1.Service
CreateExternalNameServiceOrFail 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(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 (*TestJig) CreateOnlyLocalLoadBalancerService ¶
func (j *TestJig) 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 (*TestJig) CreateOnlyLocalNodePortService ¶
func (j *TestJig) 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 (*TestJig) CreatePDBOrFail ¶
func (j *TestJig) 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 (*TestJig) CreateServicePods ¶
CreateServicePods creates a replication controller with the label same as service. Service listens to HTTP.
func (*TestJig) CreateServiceWithServicePort ¶
func (j *TestJig) CreateServiceWithServicePort(labels map[string]string, namespace string, ports []v1.ServicePort) (*v1.Service, error)
CreateServiceWithServicePort creates a new Service with ServicePort.
func (*TestJig) CreateTCPServiceOrFail ¶
CreateTCPServiceOrFail 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(namespace string, tweak func(svc *v1.Service), port int32) *v1.Service
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) CreateUDPServiceOrFail ¶
CreateUDPServiceOrFail 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) GetEndpointNodes ¶
GetEndpointNodes returns a map of nodenames:external-ip on which the endpoints of the given Service are running.
func (*TestJig) RunOrFail ¶
func (j *TestJig) 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 (*TestJig) SanityCheckService ¶
func (j *TestJig) SanityCheckService(svc *v1.Service, svcType v1.ServiceType)
SanityCheckService performs sanity checks on the given service
func (*TestJig) UpdateService ¶
func (j *TestJig) 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 (*TestJig) UpdateServiceOrFail ¶
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 (*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) WaitForLoadBalancerDestroyOrFail ¶
func (j *TestJig) 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