Documentation
¶
Index ¶
- Constants
- Variables
- func AdminAPIOptFns(fns ...mocks.AdminAPIHandlerOpt) []mocks.AdminAPIHandlerOpt
- func Context(t *testing.T, ctx context.Context) (context.Context, context.CancelFunc)
- func CreateNamespace(ctx context.Context, t *testing.T, client ctrlclient.Client) corev1.Namespace
- func CreatePod(ctx context.Context, t *testing.T, client ctrlclient.Client, ns string) corev1.Pod
- func DumpLogsIfTestFailed(t *testing.T, logs LogsObserver)
- func NameFromT(t *testing.T) string
- func NewControllerClient(t *testing.T, scheme *runtime.Scheme, cfg *rest.Config) ctrlclient.Client
- func Scheme(t *testing.T, opts ...SchemeOption) *k8sruntime.Scheme
- func Setup(t *testing.T, ctx context.Context, scheme *k8sruntime.Scheme, ...) (*rest.Config, *corev1.Namespace)
- func SetupManager(ctx context.Context, t *testing.T, mgrID manager.ID, envcfg *rest.Config, ...) *manager.Manager
- func StartAdminAPIServerMock(t *testing.T, opts ...mocks.AdminAPIHandlerOpt) *httptest.Server
- func StartReconciler(ctx context.Context, t *testing.T, scheme *runtime.Scheme, cfg *rest.Config, ...)
- func StartReconcilers(ctx context.Context, t *testing.T, mgr manager.Manager, logs LogsObserver, ...)
- func WaitForManagerStart(t *testing.T, logsObserver LogsObserver)
- func WithCacheSyncTimeout(d time.Duration) func(cfg *managercfg.Config)
- func WithDefaultEnvTestsConfig(envcfg *rest.Config) func(cfg *managercfg.Config)
- func WithDiagnosticsServer(port int) func(cfg *managercfg.Config)
- func WithDiagnosticsWithoutServer() func(cfg *managercfg.Config)
- func WithFeatureGate(name string, enabled bool) func(cfg *managercfg.Config)
- func WithGatewayAPI(t *testing.T, s *k8sruntime.Scheme)
- func WithGatewayAPIControllers() func(cfg *managercfg.Config)
- func WithGatewayFeatureEnabled(cfg *managercfg.Config)
- func WithGatewayToReconcile(gatewayNN string) func(cfg *managercfg.Config)
- func WithHealthProbePort(port int) func(cfg *managercfg.Config)
- func WithIngressClass(name string) func(cfg *managercfg.Config)
- func WithInitCacheSyncDuration(d time.Duration) func(cfg *managercfg.Config)
- func WithKong(t *testing.T, s *k8sruntime.Scheme)
- func WithKongAdminURLs(urls ...string) func(cfg *managercfg.Config)
- func WithKongServiceFacadeFeatureEnabled() func(cfg *managercfg.Config)
- func WithKongUpstreamPolicyEnabled() func(cfg *managercfg.Config)
- func WithMetricsAddr(addr string) func(cfg *managercfg.Config)
- func WithProfiling() func(cfg *managercfg.Config)
- func WithProxySyncInterval(period time.Duration) func(cfg *managercfg.Config)
- func WithPublishService(namespace string) func(cfg *managercfg.Config)
- func WithPublishStatusAddress(addresses []string, udps []string) func(cfg *managercfg.Config)
- func WithTelemetry(splunkEndpoint string, telemetryPeriod time.Duration) managercfg.Opt
- func WithUpdateStatus() func(cfg *managercfg.Config)
- func WithWatchNamespace(ns string) func(*manager.Options)
- type IngressReconciler
- type LogsObserver
- func CreateTestLogger(ctx context.Context) (context.Context, logr.Logger, LogsObserver)
- func NewManager(t *testing.T, ctx context.Context, cfg *rest.Config, s *runtime.Scheme, ...) (manager.Manager, LogsObserver)
- func RunManager(ctx context.Context, t *testing.T, envcfg *rest.Config, ...) LogsObserver
- type ManagerOption
- type MockTestingTAdapter
- type OptionModifier
- type Options
- type Reconciler
- type SchemeOption
- type TelemetryServer
Constants ¶
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 )
const ( // ErrBodyDataConstraintError is a JSON error response body for a data constraint error. ErrBodyDataConstraintError = `` /* 291-byte string literal not displayed */ )
Variables ¶
var DefaultEnvTestOpts = Options{ InstallGatewayCRDs: true, InstallKongCRDs: true, }
Functions ¶
func AdminAPIOptFns ¶ added in v2.1.1
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 Context ¶
Context creates a context for tests with deadline if it was provided. It also cancels the context on test cleanup.
func CreateNamespace ¶ added in v2.1.1
CreateNamespace creates namespace 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 NameFromT ¶
NameFromT returns a name suitable for use in Kubernetes resources for a given test. This is used e.g. when setting kong addon's name.
func NewControllerClient ¶ added in v2.1.1
NewControllerClient returns a new controller-runtime Client for provided runtime.Scheme and rest.Config.
func Scheme ¶ added in v2.1.1
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, ctx context.Context, scheme *k8sruntime.Scheme, optModifiers ...OptionModifier) (*rest.Config, *corev1.Namespace)
Setup sets up a test k8s API server environment and returned the configuration.
func SetupManager ¶ added in v2.1.1
func StartAdminAPIServerMock ¶ added in v2.1.1
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 StartReconciler ¶ added in v2.1.1
func StartReconciler( ctx context.Context, t *testing.T, scheme *runtime.Scheme, cfg *rest.Config, r IngressReconciler, opts ...func(*manager.Options), )
StartReconciler 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 StartReconcilers ¶
func StartReconcilers( ctx context.Context, t *testing.T, mgr manager.Manager, logs LogsObserver, reconcilers ...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 ¶ added in v2.1.1
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 ¶ added in v2.1.1
func WithCacheSyncTimeout(d time.Duration) func(cfg *managercfg.Config)
func WithDefaultEnvTestsConfig ¶ added in v2.1.1
func WithDefaultEnvTestsConfig(envcfg *rest.Config) func(cfg *managercfg.Config)
WithDefaultEnvTestsConfig modifies a managercfg.Config for use in envtests.
func WithDiagnosticsServer ¶ added in v2.1.1
func WithDiagnosticsServer(port int) func(cfg *managercfg.Config)
func WithDiagnosticsWithoutServer ¶ added in v2.1.1
func WithDiagnosticsWithoutServer() func(cfg *managercfg.Config)
func WithFeatureGate ¶ added in v2.1.1
func WithFeatureGate(name string, enabled bool) func(cfg *managercfg.Config)
func WithGatewayAPI ¶ added in v2.1.1
func WithGatewayAPI(t *testing.T, s *k8sruntime.Scheme)
WithGatewayAPI registers the Gateway API types with the scheme.
func WithGatewayAPIControllers ¶ added in v2.1.1
func WithGatewayAPIControllers() func(cfg *managercfg.Config)
func WithGatewayFeatureEnabled ¶ added in v2.1.1
func WithGatewayFeatureEnabled(cfg *managercfg.Config)
func WithGatewayToReconcile ¶ added in v2.1.1
func WithGatewayToReconcile(gatewayNN string) func(cfg *managercfg.Config)
func WithHealthProbePort ¶ added in v2.1.1
func WithHealthProbePort(port int) func(cfg *managercfg.Config)
func WithIngressClass ¶ added in v2.1.1
func WithIngressClass(name string) func(cfg *managercfg.Config)
func WithInitCacheSyncDuration ¶ added in v2.1.1
func WithInitCacheSyncDuration(d time.Duration) func(cfg *managercfg.Config)
func WithKong ¶ added in v2.1.1
func WithKong(t *testing.T, s *k8sruntime.Scheme)
WithKong registers the Kong types with the scheme.
func WithKongAdminURLs ¶ added in v2.1.1
func WithKongAdminURLs(urls ...string) func(cfg *managercfg.Config)
func WithKongServiceFacadeFeatureEnabled ¶ added in v2.1.1
func WithKongServiceFacadeFeatureEnabled() func(cfg *managercfg.Config)
func WithKongUpstreamPolicyEnabled ¶ added in v2.1.1
func WithKongUpstreamPolicyEnabled() func(cfg *managercfg.Config)
func WithMetricsAddr ¶ added in v2.1.1
func WithMetricsAddr(addr string) func(cfg *managercfg.Config)
func WithProfiling ¶ added in v2.1.1
func WithProfiling() func(cfg *managercfg.Config)
func WithProxySyncInterval ¶ added in v2.1.1
func WithProxySyncInterval(period time.Duration) func(cfg *managercfg.Config)
func WithPublishService ¶ added in v2.1.1
func WithPublishService(namespace string) func(cfg *managercfg.Config)
func WithPublishStatusAddress ¶ added in v2.1.1
func WithPublishStatusAddress(addresses []string, udps []string) func(cfg *managercfg.Config)
func WithTelemetry ¶ added in v2.1.1
func WithTelemetry(splunkEndpoint string, telemetryPeriod time.Duration) managercfg.Opt
func WithUpdateStatus ¶ added in v2.1.1
func WithUpdateStatus() func(cfg *managercfg.Config)
func WithWatchNamespace ¶ added in v2.1.1
Types ¶
type IngressReconciler ¶ added in v2.1.1
IngressReconciler represents a reconciler that requires a logger.
type LogsObserver ¶
type LogsObserver interface {
// All returns all the logs that have been observed so far.
All() []observer.LoggedEntry
}
LogsObserver is an interface for observing logs.
func CreateTestLogger ¶
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 NewManager ¶
func NewManager(t *testing.T, ctx context.Context, cfg *rest.Config, s *runtime.Scheme, opts ...ManagerOption) (manager.Manager, LogsObserver)
NewManager returns a manager and a logs observer. The logs observer can be used to dump logs if the test fails. The returned manager can be used with StartReconcilers() to start a list of provided reconcilers with the manager.
func RunManager ¶ added in v2.1.1
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 ManagerOption ¶
ManagerOption is a function that can be used to configure the manager.
type MockTestingTAdapter ¶
MockTestingTAdapter allows to use assert.CollectT where a mock.TestingT is required. This is useful when in functions like AssertExpectations.
Ref: https://pkg.go.dev/github.com/stretchr/testify/mock#TestingT
func (MockTestingTAdapter) Logf ¶
func (a MockTestingTAdapter) Logf(format string, args ...any)
Logf is a method that allows to log messages in the context of a test.
type OptionModifier ¶ added in v2.1.1
func WithInstallGatewayCRDs ¶ added in v2.1.1
func WithInstallGatewayCRDs(install bool) OptionModifier
func WithInstallKongCRDs ¶ added in v2.1.1
func WithInstallKongCRDs(install bool) OptionModifier
type Reconciler ¶
Reconciler represents a reconciler.
type SchemeOption ¶ added in v2.1.1
type SchemeOption func(t *testing.T, s *k8sruntime.Scheme)
type TelemetryServer ¶ added in v2.1.1
type TelemetryServer struct {
// contains filtered or unexported fields
}
TelemetryServer represents a server that listens for telemetry data over a TLS connection.
func NewTelemetryServer ¶ added in v2.1.1
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 ¶ added in v2.1.1
func (ts *TelemetryServer) Endpoint() string
Endpoint returns the address of the telemetry server.
func (*TelemetryServer) ReportChan ¶ added in v2.1.1
func (ts *TelemetryServer) ReportChan() <-chan []byte
ReportChan provides access to the telemetry report channel.
func (*TelemetryServer) Start ¶ added in v2.1.1
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 ¶ added in v2.1.1
func (ts *TelemetryServer) Stop(t *testing.T)
Stop shuts down the telemetry server, closing the listener and canceling the context.