lib

package
v0.43.2 Latest Latest
Warning

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

Go to latest
Published: Nov 19, 2024 License: Apache-2.0 Imports: 61 Imported by: 58

Documentation

Index

Constants

View Source
const (
	// Default Event values
	DefaultEventSource = "http://knative.test"
	DefaultEventType   = "dev.knative.test.event"

	SystemLogsDir = "knative-eventing-logs"
)
View Source
const (
	MaxNamespaceSkip   = 200
	MaxRetries         = 5
	RetrySleepDuration = 2 * time.Second
)
View Source
const (
	RoleKind = "Role"
)

Variables

View Source
var ApiServerSourceTypeMeta = metav1.TypeMeta{
	APIVersion: resources.SourcesV1APIVersion,
	Kind:       resources.ApiServerSourceKind,
}
View Source
var BrokerFeatureMap = map[metav1.TypeMeta][]Feature{
	*BrokerTypeMeta: {FeatureBasic},
}

BrokerTypeMeta is the TypeMeta ref for Broker.

ComponentFeatureMap saves the channel-features mapping. Each pair means the channel support the list of features.

ChannelTypeMeta is the TypeMeta ref for Channel.

View Source
var DefaultChannel = InMemoryChannelTypeMeta

DefaultChannel is the default channel we will run tests against.

View Source
var FlowsParallelTypeMeta = FlowsTypeMeta(resources.FlowsParallelKind)

FlowsParallelTypeMeta is the TypeMeta ref for Parallel (in flows.knative.dev).

View Source
var FlowsSequenceTypeMeta = FlowsTypeMeta(resources.FlowsSequenceKind)

FlowsSequenceTypeMeta is the TypeMeta ref for Sequence (in flows.knative.dev).

View Source
var InMemoryChannelTypeMeta = metav1.TypeMeta{
	APIVersion: resources.MessagingAPIVersion,
	Kind:       resources.InMemoryChannelKind,
}

InMemoryChannelTypeMeta is the metav1.TypeMeta for InMemoryChannel.

View Source
var MessagingChannelTypeMeta = metav1.TypeMeta{
	APIVersion: resources.MessagingAPIVersion,
	Kind:       resources.ChannelKind,
}

MessagingChannelTypeMeta is the metav1.TypeMeta for messaging.Channel.

ParallelTypeMeta is the TypeMeta ref for Parallel.

View Source
var PingSourceTypeMeta = metav1.TypeMeta{
	APIVersion: resources.SourcesV1A2APIVersion,
	Kind:       resources.PingSourceKind,
}
View Source
var (
	ReuseNamespace bool
)

SequenceTypeMeta is the TypeMeta ref for Sequence.

SubscriptionTypeMeta is the TypeMeta ref for Subscription.

TriggerTypeMeta is the TypeMeta ref for Trigger.

Functions

func AwaitForAll added in v0.15.0

func AwaitForAll(log *zap.SugaredLogger) error

AwaitForAll will wait until all registered wait routines resolves

func CreateNamespaceWithRetry added in v0.24.0

func CreateNamespaceWithRetry(client *Client, namespace string) error

CreateNamespaceWithRetry creates the given namespace with retries.

func CreateRBACPodsEventsGetListWatch added in v0.25.0

func CreateRBACPodsEventsGetListWatch(client *Client, name string)

func CreateRBACPodsGetEventsAll added in v0.25.0

func CreateRBACPodsGetEventsAll(client *Client, name string)

func DeleteNameSpace

func DeleteNameSpace(client *Client) error

DeleteNameSpace deletes the namespace that has the given name.

func EventingTypeMeta

func EventingTypeMeta(kind string) *metav1.TypeMeta

EventingTypeMeta returns the TypeMeta ref for an eventing resource.

func ExportLogStreamOnError added in v0.36.0

func ExportLogStreamOnError(t *testing.T, logDir, namespace string, podPrefixes ...string) logstream.Canceler

ExportLogStreamOnError starts a log stream from the given namespace for pods specified via podPrefixes. The log strema is stopped and logs exported upon calling the returned Canceler.

func ExportLogs added in v0.17.0

func ExportLogs(systemLogsDir, systemNamespace string)

func FlowsTypeMeta

func FlowsTypeMeta(kind string) *metav1.TypeMeta

FlowsTypeMeta returns the TypeMeta ref for an eventing messaging resource.

func GetNextNamespaceId added in v0.24.0

func GetNextNamespaceId() int

GetNextNamespaceId return the next unique ID for the next namespace.

func InterestingHeaders added in v0.14.0

func InterestingHeaders() []string

InterestingHeaders is used by logging pods to decide interesting HTTP headers to log

func MessagingTypeMeta

func MessagingTypeMeta(kind string) *metav1.TypeMeta

MessagingTypeMeta returns the TypeMeta ref for an eventing messaging resource.

func NextNamespace added in v0.24.0

func NextNamespace() string

NextNamespace returns the next unique namespace.

func SetupPullSecret added in v0.24.0

func SetupPullSecret(t *testing.T, client *Client)

SetupPullSecret sets up kn-eventing-test-pull-secret on the client namespace.

func SetupServiceAccount added in v0.24.0

func SetupServiceAccount(t *testing.T, client *Client)

SetupServiceAccount creates a new namespace if it does not exist.

func TearDown

func TearDown(client *Client)

TearDown will delete created names using clients.

func WaitFor added in v0.15.0

func WaitFor(name string, routine AwaitRoutine)

WaitFor will register a wait routine to be resolved later

func WaitForReadiness added in v0.15.0

func WaitForReadiness(port int, log *zap.SugaredLogger) error

WaitForReadiness will wait until readiness endpoint reports OK

func WithService

func WithService(name string) func(*corev1.Pod, *Client) error

WithService returns an option that creates a Service binded with the given pod.

Types

type AwaitRoutine added in v0.15.0

type AwaitRoutine func() error

type Client

type Client struct {
	Kube          kubernetes.Interface
	Eventing      *eventing.Clientset
	Apiextensions *apiextensionsv1.ApiextensionsV1Client
	Dynamic       dynamic.Interface
	Config        *rest.Config

	EventListener *EventListener

	Namespace string
	T         *testing.T
	Tracker   *Tracker

	TracingCfg string
	// contains filtered or unexported fields
}

Client holds instances of interfaces for making requests to Knative.

func CreateNamespacedClient added in v0.24.0

func CreateNamespacedClient(t *testing.T) (*Client, error)

func GSetup added in v0.26.0

func GSetup(t *testing.T, options ...SetupClientOption) *Client

GSetup creates - the client objects needed in the e2e tests, - the namespace hosting all objects needed by the test

func NewClient

func NewClient(namespace string, t *testing.T) (*Client, error)

NewClient instantiates and returns several clientsets required for making request to the cluster specified by the combination of clusterName and configPath.

func Setup

func Setup(t *testing.T, runInParallel bool, options ...SetupClientOption) *Client

Setup creates - the client objects needed in the e2e tests, - the namespace hosting all objects needed by the test

func (*Client) Cleanup added in v0.17.0

func (c *Client) Cleanup(f func())

Cleanup acts similarly to testing.T, but it's tied to the client lifecycle

func (*Client) CreateApiServerSourceV1OrFail added in v0.19.0

func (c *Client) CreateApiServerSourceV1OrFail(apiServerSource *sourcesv1.ApiServerSource)

CreateApiServerSourceV1OrFail will create an v1 ApiServerSource

func (*Client) CreateBrokerConfigMapOrFail added in v0.13.0

func (c *Client) CreateBrokerConfigMapOrFail(name string, channel *metav1.TypeMeta) *duckv1.KReference

func (*Client) CreateBrokerOrFail

func (c *Client) CreateBrokerOrFail(name string, options ...resources.BrokerOption) *eventingv1.Broker

CreateBrokerV1OrFail will create a v1 Broker or fail the test if there is an error.

func (*Client) CreateChannelOrFail

func (c *Client) CreateChannelOrFail(name string, channelTypeMeta *metav1.TypeMeta)

CreateChannelOrFail will create a typed Channel Resource in Eventing or fail the test if there is an error.

func (*Client) CreateChannelWithDefaultOrFail

func (c *Client) CreateChannelWithDefaultOrFail(channel *messagingv1.Channel)

CreateChannelV1WithDefaultOrFail will create a default Channel Resource in Eventing or fail the test if there is an error.

func (*Client) CreateChannelsOrFail

func (c *Client) CreateChannelsOrFail(names []string, channelTypeMeta *metav1.TypeMeta)

CreateChannelsOrFail will create a list of typed Channel Resources in Eventing or fail the test if there is an error.

func (*Client) CreateClusterRoleBindingOrFail

func (c *Client) CreateClusterRoleBindingOrFail(saName, crName, crbName string)

CreateClusterRoleBindingOrFail will create a ClusterRoleBinding or fail the test if there is an error.

func (*Client) CreateClusterRoleOrFail

func (c *Client) CreateClusterRoleOrFail(cr *rbacv1.ClusterRole)

CreateClusterRoleOrFail creates the given ClusterRole or fail the test if there is an error.

func (*Client) CreateConfigMapOrFail added in v0.13.0

func (c *Client) CreateConfigMapOrFail(name, namespace string, data map[string]string) *corev1.ConfigMap

CreateConfigMapOrFail will create a configmap or fail the test if there is an error.

func (*Client) CreateContainerSourceV1OrFail added in v0.19.0

func (c *Client) CreateContainerSourceV1OrFail(containerSource *sourcesv1.ContainerSource)

CreateContainerSourceV1OrFail will create a v1 ContainerSource.

func (*Client) CreateCronJobOrFail

func (c *Client) CreateCronJobOrFail(cronjob *batchv1.CronJob, options ...func(*batchv1.CronJob, *Client) error)

CreateCronJobOrFail will create a CronJob or fail the test if there is an error.

func (*Client) CreateDeploymentOrFail

func (c *Client) CreateDeploymentOrFail(deploy *appsv1.Deployment, options ...func(*appsv1.Deployment, *Client) error)

CreateDeploymentOrFail will create a Deployment or fail the test if there is an error.

func (*Client) CreateFlowsParallelOrFail

func (c *Client) CreateFlowsParallelOrFail(parallel *flowsv1.Parallel)

CreateFlowsParallelOrFail will create a Parallel (in flows.knative.dev api group) or fail the test if there is an error.

func (*Client) CreateFlowsSequenceOrFail

func (c *Client) CreateFlowsSequenceOrFail(sequence *flowsv1.Sequence)

CreateFlowsSequenceOrFail will create a Sequence (in flows.knative.dev api group) or fail the test if there is an error.

func (*Client) CreatePingSourceV1Beta2OrFail added in v0.20.0

func (c *Client) CreatePingSourceV1Beta2OrFail(pingSource *sourcesv1beta2.PingSource)

CreatePingSourceV1Beta2OrFail will create a PingSource

func (*Client) CreatePingSourceV1OrFail added in v0.23.0

func (c *Client) CreatePingSourceV1OrFail(pingSource *sourcesv1.PingSource)

CreatePingSourceV1OrFail will create a PingSource

func (*Client) CreatePodOrFail

func (c *Client) CreatePodOrFail(pod *corev1.Pod, options ...func(*corev1.Pod, *Client) error)

CreatePodOrFail will create a Pod or fail the test if there is an error.

func (*Client) CreateRoleBindingOrFail

func (c *Client) CreateRoleBindingOrFail(saName, rKind, rName, rbName, rbNamespace string)

CreateRoleBindingOrFail will create a RoleBinding or fail the test if there is an error.

func (*Client) CreateRoleOrFail

func (c *Client) CreateRoleOrFail(r *rbacv1.Role)

CreateRoleOrFail creates the given Role in the Client namespace or fail the test if there is an error.

func (*Client) CreateServiceAccountOrFail

func (c *Client) CreateServiceAccountOrFail(saName string)

CreateServiceAccountOrFail will create a ServiceAccount or fail the test if there is an error.

func (*Client) CreateServiceOrFail

func (c *Client) CreateServiceOrFail(svc *corev1.Service) *corev1.Service

func (*Client) CreateSinkBindingV1OrFail added in v0.19.0

func (c *Client) CreateSinkBindingV1OrFail(sb *sourcesv1.SinkBinding)

CreateSinkBindingV1OrFail will create a SinkBinding or fail the test if there is an error.

func (*Client) CreateSubscriptionOrFail

func (c *Client) CreateSubscriptionOrFail(
	name, channelName string,
	channelTypeMeta *metav1.TypeMeta,
	options ...resources.SubscriptionOption,
) *messagingv1.Subscription

CreateSubscriptionV1OrFail will create a v1 Subscription or fail the test if there is an error.

func (*Client) CreateSubscriptionsOrFail

func (c *Client) CreateSubscriptionsOrFail(
	names []string,
	channelName string,
	channelTypeMeta *metav1.TypeMeta,
	options ...resources.SubscriptionOption,
)

CreateSubscriptionsV1OrFail will create a list of v1 Subscriptions with the same configuration except the name.

func (*Client) CreateTriggerOrFail

func (c *Client) CreateTriggerOrFail(name string, options ...resources.TriggerOption) *eventingv1.Trigger

CreateTriggerOrFail will create a v1 Trigger or fail the test if there is an error.

func (*Client) ExportLogs added in v0.15.0

func (c *Client) ExportLogs(dir string) error

func (*Client) GetAddressableURI

func (c *Client) GetAddressableURI(addressableName string, typeMeta *metav1.TypeMeta) (string, error)

GetAddressableURI returns the URI of the addressable resource. To use this function, the given resource must have implemented the Addressable duck-type.

func (*Client) GetServiceHost added in v0.16.0

func (c *Client) GetServiceHost(podName string) string

GetServiceHost returns the service hostname for the specified podName

func (*Client) LabelNamespace

func (c *Client) LabelNamespace(labels map[string]string) error

LabelNamespace labels the given namespace with the labels map.

func (*Client) RetryWebhookErrors added in v0.17.0

func (c *Client) RetryWebhookErrors(updater func(int) error) error

func (*Client) SendEvent added in v0.16.0

func (c *Client) SendEvent(
	ctx context.Context,
	senderName string,
	uri string,
	event cloudevents.Event,
	option ...func(*corev1.Pod),
)

SendEvent will create a sender pod, which will send the given event to the given url.

func (*Client) SendEventToAddressable added in v0.16.0

func (c *Client) SendEventToAddressable(
	ctx context.Context,
	senderName,
	addressableName string,
	typemeta *metav1.TypeMeta,
	event cloudevents.Event,
	option ...func(*corev1.Pod),
)

SendEventToAddressable will send the given event to the given Addressable.

func (*Client) SendRequest added in v0.16.0

func (c *Client) SendRequest(
	ctx context.Context,
	senderName string,
	uri string,
	headers map[string]string,
	body string,
	option ...func(*corev1.Pod),
)

SendRequest will create a sender pod, which will send the given request to the given url.

func (*Client) SendRequestToAddressable added in v0.16.0

func (c *Client) SendRequestToAddressable(
	ctx context.Context,
	senderName,
	addressableName string,
	typemeta *metav1.TypeMeta,
	headers map[string]string,
	body string,
	option ...func(*corev1.Pod),
)

SendRequestToAddressable will send the given request to the given Addressable.

func (*Client) WaitForAllTestResourcesReady

func (c *Client) WaitForAllTestResourcesReady(ctx context.Context) error

WaitForAllTestResourcesReady waits until all test resources in the namespace are Ready.

func (*Client) WaitForAllTestResourcesReadyOrFail

func (c *Client) WaitForAllTestResourcesReadyOrFail(ctx context.Context)

func (*Client) WaitForResourceReadyOrFail

func (c *Client) WaitForResourceReadyOrFail(name string, typemeta *metav1.TypeMeta)

WaitForResourceReadyOrFail waits for the resource to become ready or fail. To use this function, the given resource must have implemented the Status duck-type.

func (*Client) WaitForResourcesReadyOrFail

func (c *Client) WaitForResourcesReadyOrFail(typemeta *metav1.TypeMeta)

WaitForResourcesReadyOrFail waits for resources of the given type in the namespace to become ready or fail. To use this function, the given resource must have implemented the Status duck-type.

func (*Client) WaitForServiceEndpointsOrFail

func (c *Client) WaitForServiceEndpointsOrFail(ctx context.Context, svcName string, numberOfExpectedEndpoints int)

type ComponentsTestRunner added in v0.16.0

type ComponentsTestRunner struct {
	ComponentFeatureMap map[metav1.TypeMeta][]Feature
	ComponentsToTest    []metav1.TypeMeta

	ComponentName      string
	ComponentNamespace string
	// contains filtered or unexported fields
}

ComponentsTestRunner is used to run tests against different eventing components.

func (*ComponentsTestRunner) AddComponentSetupClientOption added in v0.17.0

func (tr *ComponentsTestRunner) AddComponentSetupClientOption(component metav1.TypeMeta,
	options ...SetupClientOption)

AddComponentSetupClientOption adds a SetupClientOption that should only run when component gets selected to run. This should be used when there's an expensive initialization code should take place conditionally (e.g. create an instance of a source or a channel) as opposed to other cheap initialization code that is safe to be called in all cases (e.g. installation of a CRD)

func (*ComponentsTestRunner) RunTests added in v0.16.0

func (tr *ComponentsTestRunner) RunTests(
	t *testing.T,
	feature Feature,
	testFunc func(st *testing.T, component metav1.TypeMeta),
)

RunTests will use all components that support the given feature, to run a test for the testFunc.

func (*ComponentsTestRunner) RunTestsWithComponentOptions added in v0.17.0

func (tr *ComponentsTestRunner) RunTestsWithComponentOptions(
	t *testing.T,
	feature Feature,
	strict bool,
	testFunc func(st *testing.T, component metav1.TypeMeta,
		options ...SetupClientOption),
)

RunTestsWithComponentOptions will use all components that support the given feature, to run a test for the testFunc while passing the component specific SetupClientOptions to testFunc. You should used this method instead of RunTests if you have used AddComponentSetupClientOption to add some component specific initialization code. If strict is set to true, tests will not run for components that don't exist in the ComponentFeatureMap.

type EventHandler added in v0.17.8

type EventHandler func(event *corev1.Event)

EventHandler is the callback type for the EventListener

type EventListener added in v0.17.8

type EventListener struct {
	// contains filtered or unexported fields
}

EventListener is a type that broadcasts new k8s events

func NewEventListener added in v0.17.8

func NewEventListener(client kubernetes.Interface, namespace string, logf func(string, ...interface{})) *EventListener

NewEventListener creates a new event listener

func (*EventListener) AddHandler added in v0.17.8

func (el *EventListener) AddHandler(handler EventHandler) int

func (*EventListener) Stop added in v0.17.8

func (el *EventListener) Stop()

type Feature

type Feature string

Feature is the feature supported by the channel.

const (
	// FeatureBasic is the feature that should be supported by all components.
	FeatureBasic Feature = "basic"
	// FeatureRedelivery means if downstream rejects an event, that request will be attempted again.
	FeatureRedelivery Feature = "redelivery"
	// FeaturePersistence means if channel's Pod goes down, all events already ACKed by the channel
	// will persist and be retransmitted when the Pod restarts.
	FeaturePersistence Feature = "persistence"
	// A long living component
	FeatureLongLiving Feature = "longliving"
	// A batch style of components that run once and complete
	FeatureBatch Feature = "batch"
)

type ResourceDeleter

type ResourceDeleter struct {
	Resource  dynamic.ResourceInterface
	Name      string
	Namespace string
}

ResourceDeleter holds the resource interface and name of resource to be cleaned

type SetupClientOption

type SetupClientOption func(*Client)

SetupClientOption does further setup for the Client. It can be used if other projects need to do extra setups to run the tests we expose as test helpers.

var SetupClientOptionNoop SetupClientOption = func(*Client) {

}

SetupClientOptionNoop is a SetupClientOption that does nothing.

type Tracker

type Tracker struct {
	// contains filtered or unexported fields
}

Tracker holds resources that need to be tracked during test execution. It includes: 1. KResources that need to check their Ready status; 2. All Kubernetes resources that need to be cleaned after test is done.

func NewTracker

func NewTracker(t *testing.T, client dynamic.Interface) *Tracker

NewTracker creates a new Tracker

func (*Tracker) Add

func (t *Tracker) Add(group string, version string, resource string, namespace string, name string)

Add will register a resource to be cleaned by the Clean function This function is generic enough so as to be able to register any resources Each resource is identified by: * group (e.g. serving.knative.dev) * version (e.g. v1alpha1) * resource's plural (e.g. routes) * namespace (use "" if the resource is not tied to any namespace) * actual name of the resource (e.g. myroute)

func (*Tracker) AddObj

func (t *Tracker) AddObj(obj kmeta.OwnerRefable)

AddObj will register a resource that implements OwnerRefable interface to be cleaned by the Clean function. It also register the resource for checking if its status is Ready. Note this function assumes all resources that implement kmeta.OwnerRefable are KResources.

func (*Tracker) Clean

func (t *Tracker) Clean(awaitDeletion bool) error

Clean will delete all registered resources

func (*Tracker) WaitForKResourcesReady

func (t *Tracker) WaitForKResourcesReady() error

WaitForKResourcesReady will wait for all registered KResources to become ready.

Directories

Path Synopsis
recorder_vent
Package recorder_vent implements an recordevents.EventLog backed by Kubernetes Events using an event recorder.
Package recorder_vent implements an recordevents.EventLog backed by Kubernetes Events using an event recorder.

Jump to

Keyboard shortcuts

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