helpers

package
v2.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2023 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddIngressToCleaner

func AddIngressToCleaner(cleaner *clusters.Cleaner, obj runtime.Object)

AddIngressToCleaner adds a runtime.Object to the cleanup list if it is a supported version of Ingress. It panics if the runtime.Object is something else.

func CountHTTPGetResponses

func CountHTTPGetResponses(
	t *testing.T,
	proxyURL *url.URL,
	cfg CountHTTPResponsesConfig,
	matchers ...ResponseMatcher,
) (matchedResponseCounter map[string]int)

func DefaultHTTPClient

func DefaultHTTPClient() *http.Client

DefaultHTTPClient returns a client that should be used by default in tests. All defaults that should be propagated to tests for use should be changed in here.

func DistributionOfMapValues

func DistributionOfMapValues(counter map[string]int) map[string]float64

DistributionOfMapValues returns a map of the values in the given counter map and the relative frequency of each value.

func DumpDiagnosticsIfFailed

func DumpDiagnosticsIfFailed(ctx context.Context, t *testing.T, cluster clusters.Cluster)

DumpDiagnosticsIfFailed dumps the diagnostics if the test failed.

func EventuallyGETPath

func EventuallyGETPath(
	t *testing.T,
	proxyURL *url.URL,
	path string,
	statusCode int,
	bodyContents string,
	headers map[string]string,
	waitDuration time.Duration,
	waitTick time.Duration,
)

EventuallyGETPath makes a GET request to the Kong proxy multiple times until either the request starts to respond with the given status code and contents present in the response body, or until timeout occurrs according to ingressWait time limits. This uses only the path of for the request and does not pay attention to hostname or other routing rules. This uses a "require" for the desired conditions so if this request doesn't eventually succeed the calling test will fail and stop.

func ExpectHTTP404WithNoRoute

func ExpectHTTP404WithNoRoute(t *testing.T, proxyURL *url.URL, resp *http.Response) bool

ExpectHTTP404WithNoRoute is used to check whether a given http response is (specifically) a Kong 404.

func GenerateKongBuilder

func GenerateKongBuilder(_ context.Context) (*kong.Builder, []string, error)

GenerateKongBuilder returns a Kong KTF addon builder, a string slice of controller arguments needed to interact with the addon and an error.

func GetKongVersion

func GetKongVersion(proxyAdminURL *url.URL, kongTestPassword string) (semver.Version, error)

GetKongVersion returns kong version using the provided Admin API URL.

func LabelValueForTest

func LabelValueForTest(t *testing.T) string

LabelValueForTest returns a sanitized test name that can be used as kubernetes label value.

func MustHTTPRequest

func MustHTTPRequest(t *testing.T, method string, proxyURL *url.URL, path string, headers map[string]string) *http.Request

MustHTTPRequest creates a request with provided parameters and it fails the test that it was called in when request creation fails.

func Namespace

Namespace provides the Namespace provisioned for each test case given their t.Name as the "testCase".

func Setup

Setup is a test helper function which:

  • creates a cluster cleaner which will be used to to clean up test resources automatically after the test finishes and creates a new namespace for the test to use.
  • creates a namespace for the provided test and adds it to the cleaner for automatic cleanup using the previously created cleaner.

TODO move this into a shared library https://github.com/Kong/kubernetes-testing-framework/issues/302

func TeardownCluster

func TeardownCluster(ctx context.Context, t *testing.T, cluster clusters.Cluster)

TeardownCluster dumps the diagnostics from the test cluster if the test failed and performs a cluster teardown.

Types

type CountHTTPResponsesConfig

type CountHTTPResponsesConfig struct {
	Method      string
	Path        string
	Headers     map[string]string
	Duration    time.Duration
	RequestTick time.Duration
}

type ResponseMatcher

type ResponseMatcher func(resp *http.Response, respBody string) (key string, ok bool)

ResponseMatcher is a function that returns match-name and whether the response matches the provided criteria.

func MatchRespByStatusAndContent

func MatchRespByStatusAndContent(
	responseName string,
	expectedStatusCode int,
	expectedBodyContents string,
) ResponseMatcher

MatchRespByStatusAndContent returns a responseMatcher that matches the given status code and body contents.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL