Documentation
¶
Overview ¶
Package builder is a comment just to silence the linter
Index ¶
- Constants
- func AddDummyInstanceStorageVolume(vm *vmopv1.VirtualMachine)
- func DummyAvailabilityZone() *topologyv1.AvailabilityZone
- func DummyBasicVirtualMachine(name, namespace string) *vmopv1.VirtualMachine
- func DummyClusterContentLibrary(name, uuid string) *imgregv1a1.ClusterContentLibrary
- func DummyClusterVirtualMachineImage(imageName string) *vmopv1.ClusterVirtualMachineImage
- func DummyContentLibrary(name, namespace, uuid string) *imgregv1a1.ContentLibrary
- func DummyContentSourceProviderAndBinding(uuid, namespace string) (*vmopv1.ContentSource, *vmopv1.ContentLibraryProvider, ...)
- func DummyInstanceStorage() vmopv1.InstanceStorage
- func DummyInstanceStorageVirtualMachineVolumes() []vmopv1.VirtualMachineVolume
- func DummyPersistentVolumeClaim() *corev1.PersistentVolumeClaim
- func DummyResourceQuota(namespace, rlName string) *corev1.ResourceQuota
- func DummyStorageClass() *storagev1.StorageClass
- func DummyVirtualMachine() *vmopv1.VirtualMachine
- func DummyVirtualMachineClass() *vmopv1.VirtualMachineClass
- func DummyVirtualMachineClassAndBinding(className, namespace string) (*vmopv1.VirtualMachineClass, *vmopv1.VirtualMachineClassBinding)
- func DummyVirtualMachineClassBinding(className, namespace string) *vmopv1.VirtualMachineClassBinding
- func DummyVirtualMachineImage(imageName string) *vmopv1.VirtualMachineImage
- func DummyVirtualMachinePublishRequest(name, namespace, sourceName, itemName, clName string) *vmopv1.VirtualMachinePublishRequest
- func DummyVirtualMachineService() *vmopv1.VirtualMachineService
- func DummyVirtualMachineSetResourcePolicy() *vmopv1.VirtualMachineSetResourcePolicy
- func DummyVirtualMachineSetResourcePolicy2(name, namespace string) *vmopv1.VirtualMachineSetResourcePolicy
- func DummyWebConsoleRequest(namespace, wcrName, vmName, pubKey string) *vmopv1.WebConsoleRequest
- func NewFakeClient(objs ...client.Object) client.Client
- func NewFakeRecorder() (record.Recorder, chan string)
- func NewScheme() *runtime.Scheme
- func ToUnstructured(obj runtime.Object) (*unstructured.Unstructured, error)
- func WebConsoleRequestKeyPair() (privateKey *rsa.PrivateKey, publicKeyPem string)
- type IntegrationTestContext
- type NewReconcilerFunc
- type Reconciler
- type TestContextForVCSim
- func (c *TestContextForVCSim) AfterEach()
- func (c *TestContextForVCSim) ContentLibraryItemTemplate(srcVMName, templateName string)
- func (c *TestContextForVCSim) CreateVirtualMachineSetResourcePolicy(name string, nsInfo WorkloadNamespaceInfo) (*vmopv1alpha1.VirtualMachineSetResourcePolicy, *object.Folder)
- func (c *TestContextForVCSim) CreateWorkloadNamespace() WorkloadNamespaceInfo
- func (c *TestContextForVCSim) GetAZClusterComputes(azName string) []*object.ClusterComputeResource
- func (c *TestContextForVCSim) GetResourcePoolForNamespace(namespace, azName, childName string) *object.ResourcePool
- func (c *TestContextForVCSim) GetSingleClusterCompute() *object.ClusterComputeResource
- func (c *TestContextForVCSim) GetVMFromMoID(moID string) *object.VirtualMachine
- type TestSuite
- func NewFunctionalTestSuite(...) *TestSuite
- func NewTestSuite() *TestSuite
- func NewTestSuiteForController(addToManagerFn pkgmgr.AddToManagerFunc, ...) *TestSuite
- func NewTestSuiteForControllerWithFSS(addToManagerFn pkgmgr.AddToManagerFunc, ...) *TestSuite
- func NewTestSuiteForMutatingWebhook(addToManagerFn pkgmgr.AddToManagerFunc, newMutatorFn builder.MutatorFunc, ...) *TestSuite
- func NewTestSuiteForValidatingWebhook(addToManagerFn pkgmgr.AddToManagerFunc, newValidatorFn builder.ValidatorFunc, ...) *TestSuite
- func (s *TestSuite) AfterSuite()
- func (s *TestSuite) BeforeSuite()
- func (s *TestSuite) GetEnvTestConfig() *rest.Config
- func (s *TestSuite) GetInstalledCRD(crdName string) *apiextensionsv1.CustomResourceDefinition
- func (s *TestSuite) GetLogger() logr.Logger
- func (s *TestSuite) NewIntegrationTestContext() *IntegrationTestContext
- func (s *TestSuite) NewTestContextForVCSim(config VCSimTestConfig, initObjects ...client.Object) *TestContextForVCSim
- func (s *TestSuite) NewUnitTestContextForController(initObjects ...client.Object) *UnitTestContextForController
- func (s *TestSuite) NewUnitTestContextForMutatingWebhook(obj *unstructured.Unstructured) *UnitTestContextForMutatingWebhook
- func (s *TestSuite) NewUnitTestContextForValidatingWebhook(obj, oldObj *unstructured.Unstructured, initObjects ...client.Object) *UnitTestContextForValidatingWebhook
- func (s *TestSuite) Register(t *testing.T, name string, runIntegrationTestsFn, runUnitTestsFn func())
- func (s *TestSuite) UpdateCRDScope(oldCrd *apiextensionsv1.CustomResourceDefinition, newScope string)
- type UnitTestContext
- type UnitTestContextForController
- type UnitTestContextForMutatingWebhook
- type UnitTestContextForValidatingWebhook
- type VCSimTestConfig
- type WorkloadNamespaceInfo
Constants ¶
const ( DummyImageName = "dummy-image-name" DummyClassName = "dummyClassName" DummyNetworkName = "dummyNetworkName" DummyVolumeName = "dummy-volume-name" DummyPVCName = "dummyPVCName" DummyMetadataCMName = "dummyMetadataCMName" DummyDistroVersion = "dummyDistroVersion" DummyOSType = "centosGuest" DummyStorageClassName = "dummy-storage-class" DummyResourceQuotaName = "dummy-resource-quota" DummyAvailabilityZoneName = "dummy-availability-zone" )
const (
VMICRDName = "virtualmachineimages.vmoperator.vmware.com"
)
Variables ¶
This section is empty.
Functions ¶
func AddDummyInstanceStorageVolume ¶
func AddDummyInstanceStorageVolume(vm *vmopv1.VirtualMachine)
func DummyAvailabilityZone ¶
func DummyAvailabilityZone() *topologyv1.AvailabilityZone
func DummyBasicVirtualMachine ¶
func DummyBasicVirtualMachine(name, namespace string) *vmopv1.VirtualMachine
func DummyClusterContentLibrary ¶
func DummyClusterContentLibrary(name, uuid string) *imgregv1a1.ClusterContentLibrary
func DummyClusterVirtualMachineImage ¶
func DummyClusterVirtualMachineImage(imageName string) *vmopv1.ClusterVirtualMachineImage
func DummyContentLibrary ¶
func DummyContentLibrary(name, namespace, uuid string) *imgregv1a1.ContentLibrary
func DummyContentSourceProviderAndBinding ¶
func DummyContentSourceProviderAndBinding(uuid, namespace string) ( *vmopv1.ContentSource, *vmopv1.ContentLibraryProvider, *vmopv1.ContentSourceBinding)
func DummyInstanceStorage ¶
func DummyInstanceStorage() vmopv1.InstanceStorage
func DummyInstanceStorageVirtualMachineVolumes ¶
func DummyInstanceStorageVirtualMachineVolumes() []vmopv1.VirtualMachineVolume
func DummyPersistentVolumeClaim ¶
func DummyPersistentVolumeClaim() *corev1.PersistentVolumeClaim
func DummyResourceQuota ¶
func DummyResourceQuota(namespace, rlName string) *corev1.ResourceQuota
func DummyStorageClass ¶
func DummyStorageClass() *storagev1.StorageClass
func DummyVirtualMachine ¶
func DummyVirtualMachine() *vmopv1.VirtualMachine
func DummyVirtualMachineClass ¶
func DummyVirtualMachineClass() *vmopv1.VirtualMachineClass
func DummyVirtualMachineClassAndBinding ¶
func DummyVirtualMachineClassAndBinding(className, namespace string) ( *vmopv1.VirtualMachineClass, *vmopv1.VirtualMachineClassBinding)
func DummyVirtualMachineClassBinding ¶
func DummyVirtualMachineClassBinding(className, namespace string) *vmopv1.VirtualMachineClassBinding
func DummyVirtualMachineImage ¶
func DummyVirtualMachineImage(imageName string) *vmopv1.VirtualMachineImage
func DummyVirtualMachinePublishRequest ¶
func DummyVirtualMachinePublishRequest(name, namespace, sourceName, itemName, clName string) *vmopv1.VirtualMachinePublishRequest
func DummyVirtualMachineService ¶
func DummyVirtualMachineService() *vmopv1.VirtualMachineService
func DummyVirtualMachineSetResourcePolicy ¶
func DummyVirtualMachineSetResourcePolicy() *vmopv1.VirtualMachineSetResourcePolicy
func DummyVirtualMachineSetResourcePolicy2 ¶
func DummyVirtualMachineSetResourcePolicy2(name, namespace string) *vmopv1.VirtualMachineSetResourcePolicy
func DummyWebConsoleRequest ¶
func DummyWebConsoleRequest(namespace, wcrName, vmName, pubKey string) *vmopv1.WebConsoleRequest
func NewFakeRecorder ¶
func ToUnstructured ¶
func ToUnstructured(obj runtime.Object) (*unstructured.Unstructured, error)
func WebConsoleRequestKeyPair ¶
func WebConsoleRequestKeyPair() (privateKey *rsa.PrivateKey, publicKeyPem string)
Types ¶
type IntegrationTestContext ¶
type IntegrationTestContext struct {
context.Context
Client client.Client
Namespace string
PodNamespace string
}
IntegrationTestContext is used for integration testing. Each IntegrationTestContext contains one separate namespace
func (*IntegrationTestContext) AfterEach ¶
func (ctx *IntegrationTestContext) AfterEach()
AfterEach should be invoked by ginkgo.AfterEach to destroy the test namespace
type NewReconcilerFunc ¶
type NewReconcilerFunc func() Reconciler
NewReconcilerFunc is a base type for functions that return a reconciler
type TestContextForVCSim ¶
type TestContextForVCSim struct {
// NOTE: Unit test in the context of test suite framework means we use
// the fake k8s client, which is sufficient for our needs. Otherwise,
// unit testing is a little misleading here since we're using vcsim.
*UnitTestContext
PodNamespace string
VCClient *govmomi.Client
Datacenter *object.Datacenter
Finder *find.Finder
RestClient *rest.Client
Recorder record.Recorder
// When WithFaultDomains is true:
ZoneCount int
ClustersPerZone int
ZoneNames []string
// When WithContentLibrary is true:
ContentLibraryImageName string
ContentLibraryID string
// When WithoutStorageClass is false:
StorageClassName string
StorageProfileID string
// contains filtered or unexported fields
}
func (*TestContextForVCSim) AfterEach ¶
func (c *TestContextForVCSim) AfterEach()
AfterEach is a comment just to silence the linter TODO: Once we update ginkgo, this is more suitable as an AfterAll().
func (*TestContextForVCSim) ContentLibraryItemTemplate ¶
func (c *TestContextForVCSim) ContentLibraryItemTemplate(srcVMName, templateName string)
func (*TestContextForVCSim) CreateVirtualMachineSetResourcePolicy ¶
func (c *TestContextForVCSim) CreateVirtualMachineSetResourcePolicy( name string, nsInfo WorkloadNamespaceInfo) (*vmopv1alpha1.VirtualMachineSetResourcePolicy, *object.Folder)
func (*TestContextForVCSim) CreateWorkloadNamespace ¶
func (c *TestContextForVCSim) CreateWorkloadNamespace() WorkloadNamespaceInfo
func (*TestContextForVCSim) GetAZClusterComputes ¶
func (c *TestContextForVCSim) GetAZClusterComputes(azName string) []*object.ClusterComputeResource
func (*TestContextForVCSim) GetResourcePoolForNamespace ¶
func (c *TestContextForVCSim) GetResourcePoolForNamespace(namespace, azName, childName string) *object.ResourcePool
func (*TestContextForVCSim) GetSingleClusterCompute ¶
func (c *TestContextForVCSim) GetSingleClusterCompute() *object.ClusterComputeResource
func (*TestContextForVCSim) GetVMFromMoID ¶
func (c *TestContextForVCSim) GetVMFromMoID(moID string) *object.VirtualMachine
type TestSuite ¶
TestSuite is used for unit and integration testing builder. Each TestSuite contains one independent test environment and a controller manager
func NewFunctionalTestSuite ¶
func NewFunctionalTestSuite(addToManagerFunc func(ctx *ctrlCtx.ControllerManagerContext, mgr manager.Manager) error) *TestSuite
NewFunctionalTestSuite returns a new test suite used for functional tests. The functional test starts all the controllers, and creates all the providers so it is a more fully functioning env than an integration test with a single controller running.
func NewTestSuite ¶
func NewTestSuite() *TestSuite
NewTestSuite returns a new test suite used for unit and/or integration test
func NewTestSuiteForController ¶
func NewTestSuiteForController(addToManagerFn pkgmgr.AddToManagerFunc, initProvidersFn pkgmgr.InitializeProvidersFunc) *TestSuite
NewTestSuiteForController returns a new test suite used for controller integration test
func NewTestSuiteForControllerWithFSS ¶
func NewTestSuiteForControllerWithFSS(addToManagerFn pkgmgr.AddToManagerFunc, initProvidersFn pkgmgr.InitializeProvidersFunc, fssMap map[string]bool) *TestSuite
NewTestSuiteForControllerWithFSS returns a new test suite used for controller integration test with FSS set.
func NewTestSuiteForMutatingWebhook ¶
func NewTestSuiteForMutatingWebhook( addToManagerFn pkgmgr.AddToManagerFunc, newMutatorFn builder.MutatorFunc, webhookName string) *TestSuite
NewTestSuiteForMutatingWebhook returns a new test suite used for unit and integration testing mutating webhooks created using the "pkg/builder" package.
func NewTestSuiteForValidatingWebhook ¶
func NewTestSuiteForValidatingWebhook( addToManagerFn pkgmgr.AddToManagerFunc, newValidatorFn builder.ValidatorFunc, webhookName string) *TestSuite
NewTestSuiteForValidatingWebhook returns a new test suite used for unit and integration testing validating webhooks created using the "pkg/builder" package.
func (*TestSuite) AfterSuite ¶
func (s *TestSuite) AfterSuite()
AfterSuite should be invoked by ginkgo.AfterSuite.
func (*TestSuite) BeforeSuite ¶
func (s *TestSuite) BeforeSuite()
BeforeSuite should be invoked by ginkgo.BeforeSuite.
func (*TestSuite) GetEnvTestConfig ¶
func (*TestSuite) GetInstalledCRD ¶
func (s *TestSuite) GetInstalledCRD(crdName string) *apiextensionsv1.CustomResourceDefinition
func (*TestSuite) NewIntegrationTestContext ¶
func (s *TestSuite) NewIntegrationTestContext() *IntegrationTestContext
NewIntegrationTestContext should be invoked by ginkgo.BeforeEach
This function creates a namespace with a random name to separate integration test cases
This function returns a TestSuite context The resources created by this function may be cleaned up by calling AfterEach with the IntegrationTestContext returned by this function
func (*TestSuite) NewTestContextForVCSim ¶
func (s *TestSuite) NewTestContextForVCSim( config VCSimTestConfig, initObjects ...client.Object) *TestContextForVCSim
func (*TestSuite) NewUnitTestContextForController ¶
func (s *TestSuite) NewUnitTestContextForController(initObjects ...client.Object) *UnitTestContextForController
NewUnitTestContextForController returns a new unit test context for this suite's reconciler.
Returns nil if unit testing is disabled.
func (*TestSuite) NewUnitTestContextForMutatingWebhook ¶
func (s *TestSuite) NewUnitTestContextForMutatingWebhook(obj *unstructured.Unstructured) *UnitTestContextForMutatingWebhook
NewUnitTestContextForMutatingWebhook returns a new unit test context for this suite's mutator.
Returns nil if unit testing is disabled.
func (*TestSuite) NewUnitTestContextForValidatingWebhook ¶
func (s *TestSuite) NewUnitTestContextForValidatingWebhook( obj, oldObj *unstructured.Unstructured, initObjects ...client.Object) *UnitTestContextForValidatingWebhook
NewUnitTestContextForValidatingWebhook returns a new unit test context for this suite's validator.
Returns nil if unit testing is disabled.
func (*TestSuite) Register ¶
func (s *TestSuite) Register(t *testing.T, name string, runIntegrationTestsFn, runUnitTestsFn func())
Register should be invoked by the function to which *testing.T is passed.
Use runUnitTestsFn to pass a function that will be invoked if unit testing is enabled with Describe("Unit tests", runUnitTestsFn).
Use runIntegrationTestsFn to pass a function that will be invoked if integration testing is enabled with Describe("Unit tests", runIntegrationTestsFn).
func (*TestSuite) UpdateCRDScope ¶
func (s *TestSuite) UpdateCRDScope(oldCrd *apiextensionsv1.CustomResourceDefinition, newScope string)
type UnitTestContext ¶
UnitTestContext is used for general purpose unit testing.
func NewUnitTestContext ¶
func NewUnitTestContext(initObjects ...client.Object) *UnitTestContext
NewUnitTestContext returns a new UnitTestContext
func (*UnitTestContext) AfterEach ¶
func (ctx *UnitTestContext) AfterEach()
AfterEach should be invoked by ginkgo.AfterEach to cleanup
type UnitTestContextForController ¶
type UnitTestContextForController struct {
// context is the context.ControllerManagerContext for being tested.
context.ControllerManagerContext
// Client is the k8s client to access resources.
Client client.Client
// reconciler is the reconcile.Reconciler being unit tested.
Reconciler reconcile.Reconciler
// Events is a channel that fake recorder records events to.
Events chan string
}
UnitTestContextForController is used for unit testing controllers.
func NewUnitTestContextForController ¶
func NewUnitTestContextForController(initObjects []client.Object) *UnitTestContextForController
NewUnitTestContextForController returns a new UnitTestContextForController for unit testing controllers.
func (*UnitTestContextForController) AfterEach ¶
func (ctx *UnitTestContextForController) AfterEach()
AfterEach should be invoked by ginkgo.AfterEach to cleanup
type UnitTestContextForMutatingWebhook ¶
type UnitTestContextForMutatingWebhook struct {
// WebhookRequestContext is initialized with fake.NewWebhookRequestContext
// and is used for unit testing.
context.WebhookRequestContext
// Client is the k8s client to access resources.
Client client.Client
// Key may be used to lookup Ctx.Cluster with Ctx.Client.Get.
Key client.ObjectKey
// mutator is the builder.Mutator being unit tested.
builder.Mutator
}
UnitTestContextForMutatingWebhook is used for unit testing mutating webhooks.
func NewUnitTestContextForMutatingWebhook ¶
func NewUnitTestContextForMutatingWebhook( mutatorFn builder.MutatorFunc, obj *unstructured.Unstructured) *UnitTestContextForMutatingWebhook
NewUnitTestContextForMutatingWebhook returns a new UnitTestContextForMutatingWebhook for unit testing mutating webhooks.
type UnitTestContextForValidatingWebhook ¶
type UnitTestContextForValidatingWebhook struct {
// WebhookRequestContext is initialized with fake.NewWebhookRequestContext
// and is used for unit testing.
context.WebhookRequestContext
// Client is the k8s client to access resources.
Client client.Client
// Key may be used to lookup Ctx.Obj with Ctx.Client.Get.
Key client.ObjectKey
// validator is the builder.Validator being unit tested.
builder.Validator
}
UnitTestContextForValidatingWebhook is used for unit testing validating webhooks.
func NewUnitTestContextForValidatingWebhook ¶
func NewUnitTestContextForValidatingWebhook( validatorFn builder.ValidatorFunc, obj, oldObj *unstructured.Unstructured, initObjects ...client.Object) *UnitTestContextForValidatingWebhook
NewUnitTestContextForValidatingWebhook returns a new UnitTestContextForValidatingWebhook for unit testing validating webhooks.
type VCSimTestConfig ¶
type VCSimTestConfig struct {
// WithFaultDomains enables the HA WCP_FAULTDOMAINS_FSS.
WithFaultDomains bool
// NumFaultDomains is the number of zones when WithFaultDomains is true.
NumFaultDomains int
// WithContentLibrary configures a Content Library, populated with one image's
// name available in the TestContextForVCSim.ContentLibraryImageName.
WithContentLibrary bool
// WithInstanceStorage enables the WCP_INSTANCE_STORAGE FSS.
WithInstanceStorage bool
// WithoutStorageClass disables the storage class required, meaning that the
// Datastore will be used instead. In WCP production the storage class is
// always required; the Datastore is only needed for gce2e.
WithoutStorageClass bool
// WithJSONExtraConfig enables additional ExtraConfig that is included when
// creating a VM.
WithJSONExtraConfig string
// WithDefaultNetwork string sets the default network VM NICs will use.
// In WCP production this is never set; it only exists for current
// limitations of gce2e.
WithDefaultNetwork string
// WithVMClassAsConfig enables the WCP_VM_CLASS_AS_CONFIG FSS.
WithVMClassAsConfig bool
// WithVMClassAsConfigDaynDate enables the WCP_VM_CLASS_AS_CONFIG_DAYNDATE FSS.
WithVMClassAsConfigDaynDate bool
}
VCSimTestConfig configures the vcsim environment.