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) 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)
- type UDPPokeParams
- type UDPPokeResult
- type UDPPokeStatus
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 // 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 = 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 // AffinityTimeout is the maximum time that CheckAffinity is allowed to take; this // needs to be more than long enough for AffinityConfirmCount HTTP requests to // complete in a busy CI cluster, but shouldn't be too long since we will end up // waiting the entire time in the tests where affinity is not expected. AffinityTimeout = 2 * time.Minute // 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 ¶
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
type UDPPokeParams ¶ added in v1.17.0
UDPPokeParams is a struct for UDP poke parameters.
type UDPPokeResult ¶ added in v1.17.0
type UDPPokeResult struct { Status UDPPokeStatus Error error // if there was any error Response []byte // if code != 0 }
UDPPokeResult is a struct for UDP poke result.
type UDPPokeStatus ¶ added in v1.17.0
type UDPPokeStatus string
UDPPokeStatus is string for representing UDP poke status.
const ( // UDPSuccess is UDP poke status which is success. UDPSuccess UDPPokeStatus = "Success" // UDPError is UDP poke status which is error. UDPError UDPPokeStatus = "UnknownError" // UDPTimeout is UDP poke status which is timeout. UDPTimeout UDPPokeStatus = "TimedOut" // UDPRefused is UDP poke status which is connection refused. UDPRefused UDPPokeStatus = "ConnectionRefused" // UDPBadResponse is UDP poke status which is bad response. UDPBadResponse UDPPokeStatus = "BadResponse" )