Documentation
¶
Overview ¶
Package testutil provides shared envtest bootstrap helpers for the operator integration suites under cmd/thv-operator/test-integration. Each suite delegates its BeforeSuite/AfterSuite plumbing here and keeps only its per-suite controller registrations.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type SuiteEnv ¶
type SuiteEnv struct {
// Cfg is the rest config for the running envtest control plane.
Cfg *rest.Config
// Client is a controller-runtime client wired to the global scheme.
Client client.Client
// Manager is the controller manager. It is nil for StartMinimalSuite and is
// created but not started by StartSuite — call StartManager to launch it.
Manager ctrl.Manager
// Ctx is the suite-scoped context cancelled by Stop. Specs and indexers that
// need a context should use it.
Ctx context.Context
// contains filtered or unexported fields
}
SuiteEnv holds the shared envtest infrastructure for an operator integration suite. It is produced by StartSuite (full bootstrap with a manager) or StartMinimalSuite (envtest + client only) and torn down by Stop.
func StartMinimalSuite ¶
func StartMinimalSuite() *SuiteEnv
StartMinimalSuite bootstraps an envtest control plane with no operator CRDs and no controller manager: just the API server, the apiextensions scheme (so tests can install CRDs on demand), and a client. It exists for the StorageVersionMigrator suite, which installs its own CRDs per-test and drives reconcilers directly. It must be called from within a Ginkgo node.
func StartSuite ¶
func StartSuite(opts SuiteOptions) *SuiteEnv
StartSuite bootstraps a full operator integration suite: it starts an envtest control plane loaded with the operator CRDs, registers the operator API versions plus the built-in Kubernetes types on the global client-go scheme, creates a client and a controller manager (metrics and health probes disabled), and optionally installs the GroupRef field indexers.
The returned manager is not started — callers register their controllers on it and then call StartManager. Pair every StartSuite with a deferred or AfterSuite call to Stop. It must be called from within a Ginkgo node (BeforeSuite or a spec) because it uses Ginkgo/Gomega for logging and assertions.
func (*SuiteEnv) StartManager ¶
func (e *SuiteEnv) StartManager()
StartManager launches the controller manager in a background goroutine. Call it after registering all controllers on Manager. It is a no-op when there is no manager (i.e. for StartMinimalSuite).
type SuiteOptions ¶
type SuiteOptions struct {
// RegisterGroupRefIndexers installs the spec.groupRef field indexers for
// MCPServer, MCPRemoteProxy, and MCPServerEntry. Suites whose controllers
// list by GroupRef (anything that wires up the MCPGroup or VirtualMCPServer
// controllers) need these; the rest leave it false.
RegisterGroupRefIndexers bool
}
SuiteOptions configures the envtest bootstrap performed by StartSuite. Add fields only as concrete suites require them.