envtest

package
v1.6.1-0...-f207c0f Latest Latest
Warning

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

Go to latest
Published: Sep 28, 2025 License: Apache-2.0 Imports: 66 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// PublishServiceName is the name of the publish service used in Gateway API tests.
	PublishServiceName = "publish-svc"

	// ManagerStartupWaitTime is the time to wait for the manager to start.
	ManagerStartupWaitTime = 5 * time.Second

	// ManagerStartupWaitInterval is the interval to wait for the manager to start.
	ManagerStartupWaitInterval = time.Millisecond
)

Variables

View Source
var DefaultEnvTestOpts = Options{
	InstallGatewayCRDs: true,
	InstallKongCRDs:    true,
}

Functions

func AdminAPIOptFns

func AdminAPIOptFns(fns ...mocks.AdminAPIHandlerOpt) []mocks.AdminAPIHandlerOpt

AdminAPIOptFns wraps a variadic list of mocks.AdminAPIHandlerOpt and returns a slice containing all of them. The purpose of this is func is to make the call sites a bit less verbose.

NOTE: Ideally we'd refactor the RunManager() so that it'd not need to accept an empty slice of mocks.AdminAPIHandlerOpt or a call to AdminAPIOptFns() with no arguments but we can't accept 2 variadic list parameters. A slight refactor might be beneficial here.

func CreateNamespace

func CreateNamespace(ctx context.Context, t *testing.T, client ctrlclient.Client) corev1.Namespace

CreateNamespace creates namespace using the provided client and returns it.

func CreatePod

func CreatePod(ctx context.Context, t *testing.T, client ctrlclient.Client, ns string) corev1.Pod

CreatePod creates pod using the provided client and returns it.

func DumpLogsIfTestFailed

func DumpLogsIfTestFailed(t *testing.T, logs LogsObserver)

DumpLogsIfTestFailed dumps the provided logs the if the test failed.

func NewControllerClient

func NewControllerClient(t *testing.T, scheme *runtime.Scheme, cfg *rest.Config) ctrlclient.Client

NewControllerClient returns a new controller-runtime Client for provided runtime.Scheme and rest.Config.

func Scheme

func Scheme(t *testing.T, opts ...SchemeOption) *k8sruntime.Scheme

Scheme returns a new scheme with the default Kubernetes types registered. It accepts optional SchemeOptions to register additional types.

func Setup

func Setup(t *testing.T, scheme *k8sruntime.Scheme, optModifiers ...OptionModifier) *rest.Config

Setup sets up the envtest environment which will be stopped on test cleanup using t.Cleanup().

Note: If you want apiserver output on stdout set KUBEBUILDER_ATTACH_CONTROL_PLANE_OUTPUT to true when running tests.

func SetupManager

func SetupManager(
	ctx context.Context,
	t *testing.T,
	mgrID manager.ID,
	envcfg *rest.Config,
	adminAPIOpts []mocks.AdminAPIHandlerOpt,
	modifyCfgFns ...managercfg.Opt,
) *manager.Manager

func StartAdminAPIServerMock

func StartAdminAPIServerMock(t *testing.T, opts ...mocks.AdminAPIHandlerOpt) *httptest.Server

StartAdminAPIServerMock starts a mock Kong Admin API server. It accepts a variadic list of options which can configure the test server.

Server's .Close() method will be called during test's cleanup.

func StartReconcilers

func StartReconcilers(ctx context.Context, t *testing.T, scheme *runtime.Scheme, cfg *rest.Config, reconcilers ...controllers.Reconciler)

StartReconcilers creates a controller manager and starts the provided reconciler as its runnable. It also adds a t.Cleanup which waits for the manager to exit so that the test can be self contained and logs from different tests' managers don't mix up.

func WaitForManagerStart

func WaitForManagerStart(t *testing.T, logsObserver LogsObserver)

WaitForManagerStart waits for the manager to start. The indication of the manager starting is the "Starting manager" log entry that is emitted just before the manager starts. Note: We cannot rely here on the manager's readiness probe because it returns 200 OK as soon as it starts listening which happens before the manager actually starts.

func WithCacheSyncTimeout

func WithCacheSyncTimeout(d time.Duration) func(cfg *managercfg.Config)

func WithDefaultEnvTestsConfig

func WithDefaultEnvTestsConfig(envcfg *rest.Config) func(cfg *managercfg.Config)

WithDefaultEnvTestsConfig modifies a managercfg.Config for use in envtests.

func WithDiagnosticsServer

func WithDiagnosticsServer(port int) func(cfg *managercfg.Config)

func WithDiagnosticsWithoutServer

func WithDiagnosticsWithoutServer() func(cfg *managercfg.Config)

func WithFeatureGate

func WithFeatureGate(name string, enabled bool) func(cfg *managercfg.Config)

func WithGatewayAPI

func WithGatewayAPI(t *testing.T, s *k8sruntime.Scheme)

WithGatewayAPI registers the Gateway API types with the scheme.

func WithGatewayAPIControllers

func WithGatewayAPIControllers() func(cfg *managercfg.Config)

func WithGatewayFeatureEnabled

func WithGatewayFeatureEnabled(cfg *managercfg.Config)

func WithGatewayToReconcile

func WithGatewayToReconcile(gatewayNN string) func(cfg *managercfg.Config)

func WithHealthProbePort

func WithHealthProbePort(port int) func(cfg *managercfg.Config)

func WithIngressClass

func WithIngressClass(name string) func(cfg *managercfg.Config)

func WithInitCacheSyncDuration

func WithInitCacheSyncDuration(d time.Duration) func(cfg *managercfg.Config)

func WithKong

func WithKong(t *testing.T, s *k8sruntime.Scheme)

WithKong registers the Kong types with the scheme.

func WithKongAdminURLs

func WithKongAdminURLs(urls ...string) func(cfg *managercfg.Config)

func WithKongServiceFacadeFeatureEnabled

func WithKongServiceFacadeFeatureEnabled() func(cfg *managercfg.Config)

func WithKongUpstreamPolicyEnabled

func WithKongUpstreamPolicyEnabled() func(cfg *managercfg.Config)

func WithMetricsAddr

func WithMetricsAddr(addr string) func(cfg *managercfg.Config)

func WithProfiling

func WithProfiling() func(cfg *managercfg.Config)

func WithProxySyncInterval

func WithProxySyncInterval(period time.Duration) func(cfg *managercfg.Config)

func WithPublishService

func WithPublishService(namespace string) func(cfg *managercfg.Config)

func WithPublishStatusAddress

func WithPublishStatusAddress(addresses []string, udps []string) func(cfg *managercfg.Config)

func WithTelemetry

func WithTelemetry(splunkEndpoint string, telemetryPeriod time.Duration) managercfg.Opt

func WithUpdateStatus

func WithUpdateStatus() func(cfg *managercfg.Config)

Types

type LogsObserver

type LogsObserver interface {
	// All returns all the logs that have been observed so far.
	All() []observer.LoggedEntry
}

func CreateTestLogger

func CreateTestLogger(ctx context.Context) (context.Context, logr.Logger, LogsObserver)

CreateTestLogger creates a logger for use in tests. It returns the logger - which is also added to the context - and the observer which can be used to dump logs if the test fails.

func RunManager

func RunManager(
	ctx context.Context,
	t *testing.T,
	envcfg *rest.Config,
	adminAPIOpts []mocks.AdminAPIHandlerOpt,
	modifyCfgFns ...managercfg.Opt,
) LogsObserver

RunManager runs the manager in a goroutine. It's possible to modify the manager's configuration by passing in modifyCfgFns. The manager is stopped when the context is canceled.

type OptionModifier

type OptionModifier func(Options) Options

func WithInstallGatewayCRDs

func WithInstallGatewayCRDs(install bool) OptionModifier

func WithInstallKongCRDs

func WithInstallKongCRDs(install bool) OptionModifier

type Options

type Options struct {
	InstallGatewayCRDs bool
	InstallKongCRDs    bool
}

type SchemeOption

type SchemeOption func(t *testing.T, s *k8sruntime.Scheme)

type TelemetryServer

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

TelemetryServer represents a server that listens for telemetry data over a TLS connection.

func NewTelemetryServer

func NewTelemetryServer(t *testing.T) *TelemetryServer

NewTelemetryServer creates and configures a new TelemetryServer instance. It generates a TLS listener using a self-signed certificate.

func (*TelemetryServer) Endpoint

func (ts *TelemetryServer) Endpoint() string

Endpoint returns the address of the telemetry server.

func (*TelemetryServer) ReportChan

func (ts *TelemetryServer) ReportChan() <-chan []byte

ReportChan provides access to the telemetry report channel.

func (*TelemetryServer) Start

func (ts *TelemetryServer) Start(ctx context.Context, t *testing.T)

Start begins the telemetry server, accepting incoming connections and processing telemetry data. It does not block.

func (*TelemetryServer) Stop

func (ts *TelemetryServer) Stop(t *testing.T)

Stop shuts down the telemetry server, closing the listener and canceling the context.

Jump to

Keyboard shortcuts

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