...

Package http

import "sigs.k8s.io/gateway-api/conformance/utils/http"
Overview
Index

Overview ▾

func AwaitConvergence

func AwaitConvergence(t *testing.T, threshold int, maxTimeToConsistency time.Duration, fn func(elapsed time.Duration) bool)

AwaitConvergence runs the given function until it returns 'true' `threshold` times in a row. Each failed attempt has a 1s delay; successful attempts have no delay.

func CalculateHost

func CalculateHost(t *testing.T, gwAddr, scheme string) string

CalculateHost will calculate the Host header as per HTTP spec. To summarize, host will not include any port if it is implied from the scheme. In case of any error, the input gwAddr will be returned as the default.

func CompareRequest

func CompareRequest(t *testing.T, req *roundtripper.Request, cReq *roundtripper.CapturedRequest, cRes *roundtripper.CapturedResponse, expected ExpectedResponse) error

func ExpectMirroredRequest

func ExpectMirroredRequest(t *testing.T, client client.Client, clientset clientset.Interface, mirrorPods []BackendRef, path string)

func MakeRequest

func MakeRequest(t *testing.T, expected *ExpectedResponse, gwAddr, protocol, scheme string) roundtripper.Request

func MakeRequestAndExpectEventuallyConsistentResponse

func MakeRequestAndExpectEventuallyConsistentResponse(t *testing.T, r roundtripper.RoundTripper, timeoutConfig config.TimeoutConfig, gwAddr string, expected ExpectedResponse)

MakeRequestAndExpectEventuallyConsistentResponse makes a request with the given parameters, understanding that the request may fail for some amount of time.

Once the request succeeds consistently with the response having the expected status code, make additional assertions on the response body using the provided ExpectedResponse.

func WaitForConsistentResponse

func WaitForConsistentResponse(t *testing.T, r roundtripper.RoundTripper, req roundtripper.Request, expected ExpectedResponse, threshold int, maxTimeToConsistency time.Duration)

WaitForConsistentResponse repeats the provided request until it completes with a response having the expected response consistently. The provided threshold determines how many times in a row this must occur to be considered "consistent".

type BackendRef

type BackendRef struct {
    Name      string
    Namespace string
}

type ExpectedRequest

ExpectedRequest defines expected properties of a request that reaches a backend.

type ExpectedRequest struct {
    Request

    // AbsentHeaders are names of headers that are expected
    // *not* to be present on the request.
    AbsentHeaders []string
}

type ExpectedResponse

ExpectedResponse defines the response expected for a given request.

type ExpectedResponse struct {
    // Request defines the request to make.
    Request Request

    // ExpectedRequest defines the request that
    // is expected to arrive at the backend. If
    // not specified, the backend request will be
    // expected to match Request.
    ExpectedRequest *ExpectedRequest

    RedirectRequest *roundtripper.RedirectRequest

    // BackendSetResponseHeaders is a set of headers
    // the echoserver should set in its response.
    BackendSetResponseHeaders map[string]string

    // Response defines what response the test case
    // should receive.
    Response Response

    Backend   string
    Namespace string

    // MirroredTo is the destination BackendRefs of the mirrored request.
    MirroredTo []BackendRef

    // User Given TestCase name
    TestCaseName string
}

func (*ExpectedResponse) GetTestCaseName

func (er *ExpectedResponse) GetTestCaseName(i int) string

GetTestCaseName gets the user-defined test case name or generates one from expected response to a given request.

type Request

Request can be used as both the request to make and a means to verify that echoserver received the expected request. Note that multiple header values can be provided, as a comma-separated value.

type Request struct {
    Host             string
    Method           string
    Path             string
    Headers          map[string]string
    UnfollowRedirect bool
    Protocol         string
}

type Response

Response defines expected properties of a response from a backend.

type Response struct {
    StatusCode    int
    Headers       map[string]string
    AbsentHeaders []string
}