testenv

package
v0.16.2 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2022 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Overview

Package testenv contains helpers to create and work with an encapsulated local Kubernetes test environment.

For general advice around testing, see: https://cluster-api.sigs.k8s.io/developer/testing.html

For more information about the encapsulated local Kubernetes test environment, see: https://book.kubebuilder.io/reference/envtest.html

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Environment

type Environment struct {
	manager.Manager
	client.Client
	Config *rest.Config
	// contains filtered or unexported fields
}

Environment encapsulates a Kubernetes local test environment.

func New

func New(o ...Option) *Environment

New creates a new environment spinning up a local api-server.

NOTE: This function should be called only once for each package you are running tests within, usually the environment is initialised in a suite_test.go or <package>_test.go file within a `TestMain` function.

When a testenv Environment is created, it initializes the controller-runtime's deferred logger with a default logger based on klog. In order to override this behavior, the controller-runtime logger can be initialized before creating testenv Environment.

import (
    "testing"

    "github.com/fluxcd/pkg/runtime/testenv"
    ctrl "sigs.k8s.io/controller-runtime"
    "sigs.k8s.io/controller-runtime/pkg/log/zap"
}

func TestMain(m *testing.M) {
    zlog := zap.New(zap.UseDevMode(true))
    ctrl.SetLogger(zlog)

    testEnv = testenv.New()
    ...
}

func (*Environment) AddUser added in v0.12.2

func (e *Environment) AddUser(user envtest.User, baseConfig *rest.Config) (*envtest.AuthenticatedUser, error)

AddUser provisions a new user for connecting to this Environment. The user will have the specified name & belong to the specified groups.

If a "base" config is specified, the returned REST Config will contain those settings as well as any required by the authentication method. It can also be used to specify options like QPS.

func (*Environment) Cleanup

func (e *Environment) Cleanup(ctx context.Context, objs ...client.Object) error

Cleanup deletes all the given objects.

func (*Environment) CleanupAndWait

func (e *Environment) CleanupAndWait(ctx context.Context, objs ...client.Object) error

CleanupAndWait deletes all the given objects and waits for the cache to be updated accordingly.

NOTE: Waiting for the cache to be updated helps in preventing test flakes due to the cache sync delays.

func (*Environment) CreateAndWait

func (e *Environment) CreateAndWait(ctx context.Context, obj client.Object, opts ...client.CreateOption) error

CreateAndWait creates the given object and waits for the cache to be updated accordingly.

NOTE: Waiting for the cache to be updated helps in preventing test flakes due to the cache sync delays.

func (*Environment) CreateNamespace

func (e *Environment) CreateNamespace(ctx context.Context, generateName string) (*corev1.Namespace, error)

CreateNamespace creates a new namespace with a generated name.

func (*Environment) Start

func (e *Environment) Start(ctx context.Context) error

Start starts the test environment.

func (*Environment) Stop

func (e *Environment) Stop() error

Stop stops the test environment.

type Option

type Option func(*options)

Option sets a configuration for the Environment.

func WithCRDPath

func WithCRDPath(path ...string) Option

WithCRDPath configures the paths the envtest.Environment should look at for Custom Resource Definitions.

func WithScheme

func WithScheme(scheme *runtime.Scheme) Option

WithScheme configures the runtime.Scheme for the Environment. If no scheme is configured, the Environment defaults to the global runtime.Scheme.

Jump to

Keyboard shortcuts

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