Documentation ¶
Overview ¶
Package testing includes utilities for testing controllers.
Package testing includes utilities for testing controllers.
Index ¶
- func KeyOrDie(obj interface{}) string
- type CreateHookFunc
- type DeleteHookFunc
- type HookResult
- type Hooks
- func (h *Hooks) OnCreate(fake *kubetesting.Fake, resource string, rf CreateHookFunc)
- func (h *Hooks) OnDelete(fake *kubetesting.Fake, resource string, rf DeleteHookFunc)
- func (h *Hooks) OnUpdate(fake *kubetesting.Fake, resource string, rf UpdateHookFunc)
- func (h *Hooks) WaitForHooks(timeout time.Duration) error
- type UpdateHookFunc
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CreateHookFunc ¶
type CreateHookFunc func(runtime.Object) HookResult
CreateHookFunc is a function for handling a Create hook. Its runtime.Object parameter will be the kubernetes resource created. The resource can be cast to its actual type like this:
pod := obj.(*v1.Pod)
A return value of true marks the hook as completed. Returning false allows the hook to run again when the next resource of the requested type is created.
func ExpectNormalEventDelivery ¶
func ExpectNormalEventDelivery(t *testing.T, messageRegexp string) CreateHookFunc
ExpectNormalEventDelivery returns a hook function that can be passed to a Hooks.OnCreate() call to verify that an event of type Normal was created matching the given regular expression. For this expectation to be effective the test must also call Hooks.WaitForHooks().
func ExpectWarningEventDelivery ¶
func ExpectWarningEventDelivery(t *testing.T, messageRegexp string) CreateHookFunc
ExpectWarningEventDelivery returns a hook function that can be passed to a Hooks.OnCreate() call to verify that an event of type Warning was created matching the given regular expression. For this expectation to be effective the test must also call Hooks.WaitForHooks().
type DeleteHookFunc ¶
type DeleteHookFunc func(string) HookResult
DeleteHookFunc is a function for handling a delete hook. Its name parameter will be the name of the resource deleted. The resource itself is not available to the reactor.
type HookResult ¶
type HookResult bool
HookResult is the return value of hook functions.
const ( // HookComplete indicates the hook function completed, and WaitForHooks should // not wait for it. HookComplete HookResult = true // HookIncomplete indicates the hook function is incomplete, and WaitForHooks // should wait for it to complete. HookIncomplete HookResult = false )
type Hooks ¶
type Hooks struct {
// contains filtered or unexported fields
}
Hooks is a utility struct that simplifies controller testing with fake clients. A Hooks struct allows attaching hook functions to actions (create, update, delete) on a specified resource type within a fake client and ensuring that all hooks complete in a timely manner.
Example ¶
h := NewHooks() f := fake.NewSimpleClientset() h.OnCreate(&f.Fake, "pods", func(obj runtime.Object) HookResult { pod := obj.(*v1.Pod) fmt.Printf("Pod %s has restart policy %v\n", pod.Name, pod.Spec.RestartPolicy) return true }) h.OnUpdate(&f.Fake, "pods", func(obj runtime.Object) HookResult { pod := obj.(*v1.Pod) fmt.Printf("Pod %s restart policy was updated to %v\n", pod.Name, pod.Spec.RestartPolicy) return true }) h.OnDelete(&f.Fake, "pods", func(name string) HookResult { fmt.Printf("Pod %s was deleted\n", name) return true }) pod := &v1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "test-pod", }, Spec: v1.PodSpec{ RestartPolicy: v1.RestartPolicyAlways, }, } f.CoreV1().Pods("test").Create(pod) updatedPod := pod.DeepCopy() updatedPod.Spec.RestartPolicy = v1.RestartPolicyNever f.CoreV1().Pods("test").Update(updatedPod) f.CoreV1().Pods("test").Delete(pod.Name, &metav1.DeleteOptions{}) if err := h.WaitForHooks(time.Second); err != nil { log.Fatal(err) }
Output: Pod test-pod has restart policy Always Pod test-pod restart policy was updated to Never Pod test-pod was deleted
func NewHooks ¶
func NewHooks() *Hooks
NewHooks returns a Hooks struct that can be used to attach hooks to one or more fake clients and wait for all hooks to complete. TODO(grantr): Allow validating that a hook never fires
func (*Hooks) OnCreate ¶
func (h *Hooks) OnCreate(fake *kubetesting.Fake, resource string, rf CreateHookFunc)
OnCreate attaches a create hook to the given Fake. The hook function is executed every time a resource of the given type is created.
func (*Hooks) OnDelete ¶
func (h *Hooks) OnDelete(fake *kubetesting.Fake, resource string, rf DeleteHookFunc)
OnDelete attaches a delete hook to the given Fake. The hook function is executed every time a resource of the given type is deleted.
func (*Hooks) OnUpdate ¶
func (h *Hooks) OnUpdate(fake *kubetesting.Fake, resource string, rf UpdateHookFunc)
OnUpdate attaches an update hook to the given Fake. The hook function is executed every time a resource of the given type is updated.
type UpdateHookFunc ¶
type UpdateHookFunc func(runtime.Object) HookResult
UpdateHookFunc is a function for handling an update hook. its runtime.Object parameter will be the kubernetes resource updated. The resource can be cast to its actual type like this:
pod := obj.(*v1.Pod)
A return value of true marks the hook as completed. Returning false allows the hook to run again when the next resource of the requested type is updated.