Documentation
¶
Index ¶
- Constants
- func InstanceID() int
- func MakeInstanceOfferings(types []linodego.LinodeType) []linodego.RegionAvailability
- func MakeInstances() []linodego.LinodeType
- func ProviderID(id int) string
- func RandomProviderID() string
- type AtomicError
- type AtomicErrorOption
- type AtomicPtr
- type AtomicPtrSlice
- type CapacityPool
- type CloudProvider
- func (c *CloudProvider) Create(_ context.Context, _ *karpv1.NodeClaim) (*karpv1.NodeClaim, error)
- func (c *CloudProvider) Delete(context.Context, *karpv1.NodeClaim) error
- func (c *CloudProvider) DisruptionReasons() []karpv1.DisruptionReason
- func (c *CloudProvider) Get(context.Context, string) (*karpv1.NodeClaim, error)
- func (c *CloudProvider) GetInstanceTypes(_ context.Context, _ *karpv1.NodePool) ([]*corecloudprovider.InstanceType, error)
- func (c *CloudProvider) GetSupportedNodeClasses() []status.Object
- func (c *CloudProvider) IsDrifted(_ context.Context, nodeClaim *karpv1.NodeClaim) (corecloudprovider.DriftReason, error)
- func (c *CloudProvider) List(context.Context) ([]*karpv1.NodeClaim, error)
- func (c *CloudProvider) Name() string
- func (c *CloudProvider) RepairPolicies() []corecloudprovider.RepairPolicy
- type LinodeAPIBehavior
- type LinodeClient
- func (l *LinodeClient) CreateInstance(_ context.Context, opts linodego.InstanceCreateOptions) (*linodego.Instance, error)
- func (l *LinodeClient) CreateLKENodePool(_ context.Context, clusterID int, opts linodego.LKENodePoolCreateOptions) (*linodego.LKENodePool, error)
- func (l *LinodeClient) CreateTag(_ context.Context, opts linodego.TagCreateOptions) (*linodego.Tag, error)
- func (l *LinodeClient) DeleteInstance(_ context.Context, linodeID int) error
- func (l *LinodeClient) DeleteLKENodePool(_ context.Context, clusterID, poolID int) error
- func (l *LinodeClient) DeleteLKENodePoolNode(_ context.Context, clusterID int, nodeID string) error
- func (l *LinodeClient) GetInstance(_ context.Context, linodeID int) (*linodego.Instance, error)
- func (l *LinodeClient) GetLKENodePool(_ context.Context, clusterID, poolID int) (*linodego.LKENodePool, error)
- func (l *LinodeClient) GetType(_ context.Context, typeID string) (*linodego.LinodeType, error)
- func (l *LinodeClient) ListInstances(_ context.Context, opts *linodego.ListOptions) ([]linodego.Instance, error)
- func (l *LinodeClient) ListLKEClusters(_ context.Context, _ *linodego.ListOptions) ([]linodego.LKECluster, error)
- func (l *LinodeClient) ListLKENodePools(_ context.Context, clusterID int, opts *linodego.ListOptions) ([]linodego.LKENodePool, error)
- func (l *LinodeClient) ListRegionsAvailability(_ context.Context, _ *linodego.ListOptions) ([]linodego.RegionAvailability, error)
- func (l *LinodeClient) ListTypes(_ context.Context, _ *linodego.ListOptions) ([]linodego.LinodeType, error)
- func (l *LinodeClient) Reset()
- func (l *LinodeClient) UpdateInstance(_ context.Context, linodeID int, opts linodego.InstanceUpdateOptions) (*linodego.Instance, error)
- func (l *LinodeClient) UpdateLKENodePool(_ context.Context, clusterID, poolID int, ...) (*linodego.LKENodePool, error)
- type MockedFunction
Constants ¶
const ( DefaultRegion = "us-east" DefaultClusterID = 12345 DefaultClusterName = "test-cluster" DefaultClusterTier = linodego.LKEVersionStandard )
Variables ¶
This section is empty.
Functions ¶
func InstanceID ¶
func InstanceID() int
func MakeInstanceOfferings ¶
func MakeInstanceOfferings(types []linodego.LinodeType) []linodego.RegionAvailability
func MakeInstances ¶
func MakeInstances() []linodego.LinodeType
func ProviderID ¶
func RandomProviderID ¶
func RandomProviderID() string
Types ¶
type AtomicError ¶
type AtomicError struct {
// contains filtered or unexported fields
}
func (*AtomicError) Get ¶
func (e *AtomicError) Get() error
Get is equivalent to the error being called, so we increase number of calls in this function
func (*AtomicError) IsNil ¶
func (e *AtomicError) IsNil() bool
func (*AtomicError) Reset ¶
func (e *AtomicError) Reset()
func (*AtomicError) Set ¶
func (e *AtomicError) Set(err error, opts ...AtomicErrorOption)
type AtomicErrorOption ¶
type AtomicErrorOption func(atomicError *AtomicError)
func MaxCalls ¶
func MaxCalls(maxCalls int) AtomicErrorOption
type AtomicPtr ¶
type AtomicPtr[T any] struct { // contains filtered or unexported fields }
AtomicPtr is intended for use in mocks to easily expose variables for use in testing. It makes setting and retrieving the values race free by wrapping the pointer itself in a mutex. There is no Get() method, but instead a Clone() method deep copies the object being stored by serializing/de-serializing it from JSON. This pattern shouldn't be followed anywhere else but is an easy way to eliminate races in our tests.
type AtomicPtrSlice ¶
type AtomicPtrSlice[T any] struct { // contains filtered or unexported fields }
AtomicPtrSlice exposes a slice of a pointer type in a race-free manner. The interface is just enough to replace the set.Set usage in our previous tests.
func (*AtomicPtrSlice[T]) Add ¶
func (a *AtomicPtrSlice[T]) Add(input *T)
func (*AtomicPtrSlice[T]) At ¶
func (a *AtomicPtrSlice[T]) At(index int) *T
func (*AtomicPtrSlice[T]) ForEach ¶
func (a *AtomicPtrSlice[T]) ForEach(fn func(*T))
func (*AtomicPtrSlice[T]) Len ¶
func (a *AtomicPtrSlice[T]) Len() int
func (*AtomicPtrSlice[T]) Pop ¶
func (a *AtomicPtrSlice[T]) Pop() *T
func (*AtomicPtrSlice[T]) Reset ¶
func (a *AtomicPtrSlice[T]) Reset()
type CapacityPool ¶
type CloudProvider ¶
type CloudProvider struct {
InstanceTypes []*corecloudprovider.InstanceType
Validimages []string
}
func (*CloudProvider) DisruptionReasons ¶
func (c *CloudProvider) DisruptionReasons() []karpv1.DisruptionReason
func (*CloudProvider) GetInstanceTypes ¶
func (c *CloudProvider) GetInstanceTypes(_ context.Context, _ *karpv1.NodePool) ([]*corecloudprovider.InstanceType, error)
func (*CloudProvider) GetSupportedNodeClasses ¶
func (c *CloudProvider) GetSupportedNodeClasses() []status.Object
func (*CloudProvider) IsDrifted ¶
func (c *CloudProvider) IsDrifted(_ context.Context, nodeClaim *karpv1.NodeClaim) (corecloudprovider.DriftReason, error)
func (*CloudProvider) Name ¶
func (c *CloudProvider) Name() string
Name returns the CloudProvider implementation name.
func (*CloudProvider) RepairPolicies ¶
func (c *CloudProvider) RepairPolicies() []corecloudprovider.RepairPolicy
type LinodeAPIBehavior ¶
type LinodeAPIBehavior struct {
ListTypesOutput AtomicPtr[[]linodego.LinodeType]
ListRegionsAvailabilityOutput AtomicPtr[[]linodego.RegionAvailability]
GetTypeBehavior MockedFunction[string, *linodego.LinodeType]
ListRegionsAvailabilityBehavior MockedFunction[linodego.ListOptions, []linodego.RegionAvailability]
CreateInstanceBehavior MockedFunction[linodego.InstanceCreateOptions, *linodego.Instance]
GetInstanceBehavior MockedFunction[int, *linodego.Instance]
DeleteInstanceBehavior MockedFunction[int, error]
ListInstancesBehavior MockedFunction[linodego.ListOptions, []linodego.Instance]
CreateTagsBehavior MockedFunction[linodego.TagCreateOptions, linodego.Tag]
ListTypesBehavior MockedFunction[linodego.ListOptions, []linodego.LinodeType]
Instances sync.Map
InsufficientCapacityPools atomic.Slice[CapacityPool]
// NodePool storage and behaviors
NodePools sync.Map // key: "clusterID-poolID", value: *linodego.LKENodePool
CreateLKENodePoolBehavior MockedFunction[struct {
ClusterID int
Opts linodego.LKENodePoolCreateOptions
}, *linodego.LKENodePool]
ListLKENodePoolsBehavior MockedFunction[int, []linodego.LKENodePool]
GetLKENodePoolBehavior MockedFunction[struct {
ClusterName int
PoolID int
}, *linodego.LKENodePool]
UpdateLKENodePoolBehavior MockedFunction[struct {
ClusterID int
PoolID int
Opts linodego.LKENodePoolUpdateOptions
}, *linodego.LKENodePool]
DeleteLKENodePoolBehavior MockedFunction[struct {
ClusterName int
PoolID int
}, error]
DeleteLKENodePoolNodeBehavior MockedFunction[struct {
ClusterID int
NodeID string
}, error]
UpdateInstanceBehavior MockedFunction[struct {
LinodeID int
Opts linodego.InstanceUpdateOptions
}, *linodego.Instance]
}
LinodeAPIBehavior must be reset between tests otherwise tests will pollute each other.
type LinodeClient ¶
type LinodeClient struct {
LinodeAPIBehavior
}
func NewLinodeClient ¶
func NewLinodeClient() *LinodeClient
func (*LinodeClient) CreateInstance ¶
func (l *LinodeClient) CreateInstance(_ context.Context, opts linodego.InstanceCreateOptions) (*linodego.Instance, error)
func (*LinodeClient) CreateLKENodePool ¶
func (l *LinodeClient) CreateLKENodePool(_ context.Context, clusterID int, opts linodego.LKENodePoolCreateOptions) (*linodego.LKENodePool, error)
func (*LinodeClient) CreateTag ¶
func (l *LinodeClient) CreateTag(_ context.Context, opts linodego.TagCreateOptions) (*linodego.Tag, error)
func (*LinodeClient) DeleteInstance ¶
func (l *LinodeClient) DeleteInstance(_ context.Context, linodeID int) error
func (*LinodeClient) DeleteLKENodePool ¶
func (l *LinodeClient) DeleteLKENodePool(_ context.Context, clusterID, poolID int) error
func (*LinodeClient) DeleteLKENodePoolNode ¶
func (*LinodeClient) GetInstance ¶
func (*LinodeClient) GetLKENodePool ¶
func (l *LinodeClient) GetLKENodePool(_ context.Context, clusterID, poolID int) (*linodego.LKENodePool, error)
func (*LinodeClient) GetType ¶
func (l *LinodeClient) GetType(_ context.Context, typeID string) (*linodego.LinodeType, error)
func (*LinodeClient) ListInstances ¶
func (l *LinodeClient) ListInstances(_ context.Context, opts *linodego.ListOptions) ([]linodego.Instance, error)
func (*LinodeClient) ListLKEClusters ¶
func (l *LinodeClient) ListLKEClusters(_ context.Context, _ *linodego.ListOptions) ([]linodego.LKECluster, error)
func (*LinodeClient) ListLKENodePools ¶
func (l *LinodeClient) ListLKENodePools(_ context.Context, clusterID int, opts *linodego.ListOptions) ([]linodego.LKENodePool, error)
func (*LinodeClient) ListRegionsAvailability ¶
func (l *LinodeClient) ListRegionsAvailability(_ context.Context, _ *linodego.ListOptions) ([]linodego.RegionAvailability, error)
func (*LinodeClient) ListTypes ¶
func (l *LinodeClient) ListTypes(_ context.Context, _ *linodego.ListOptions) ([]linodego.LinodeType, error)
func (*LinodeClient) Reset ¶
func (l *LinodeClient) Reset()
func (*LinodeClient) UpdateInstance ¶
func (l *LinodeClient) UpdateInstance(_ context.Context, linodeID int, opts linodego.InstanceUpdateOptions) (*linodego.Instance, error)
func (*LinodeClient) UpdateLKENodePool ¶
func (l *LinodeClient) UpdateLKENodePool(_ context.Context, clusterID, poolID int, opts linodego.LKENodePoolUpdateOptions) (*linodego.LKENodePool, error)
nolint:gocyclo // fix this later
type MockedFunction ¶
type MockedFunction[I any, O any] struct { Output AtomicPtr[O] // Output to return on call to this function MultiOut AtomicPtrSlice[O] CalledWithInput AtomicPtrSlice[I] // Slice used to keep track of passed input to this function Error AtomicError // Error to return a certain number of times defined by custom error options // contains filtered or unexported fields }
func (*MockedFunction[I, O]) Calls ¶
func (m *MockedFunction[I, O]) Calls() int
func (*MockedFunction[I, O]) FailedCalls ¶
func (m *MockedFunction[I, O]) FailedCalls() int
func (*MockedFunction[I, O]) Invoke ¶
func (m *MockedFunction[I, O]) Invoke(input *I, defaultTransformer func(*I) (*O, error)) (*O, error)
func (*MockedFunction[I, O]) Reset ¶
func (m *MockedFunction[I, O]) Reset()
Reset must be called between tests otherwise tests will pollute each other.
func (*MockedFunction[I, O]) SuccessfulCalls ¶
func (m *MockedFunction[I, O]) SuccessfulCalls() int