Documentation ¶
Overview ¶
Package test holds the project's test helpers and end-to-end tests (e2e).
Create Pipeline resources ¶
To create Tekton objects (e.g. Task, Pipeline, …), you can use the builder (./builder) package to reduce noise:
func MyTest(t *testing.T){ // Pipeline pipeline := tb.Pipeline("tomatoes", tb.PipelineSpec(tb.PipelineTask("foo", "banana")), ) // … and PipelineRun pipelineRun := tb.PipelineRun("pear", tb.PipelineRunSpec("tomatoes", tb.PipelineRunServiceAccount("inexistent")), ) // And do something with them // […] if _, err := c.PipelineClient.Create(pipeline); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", "tomatoes", err) } if _, err := c.PipelineRunClient.Create(pipelineRun); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", "pear", err) } }
Get access to client objects ¶
To initialize client objects you can use the setup function. It returns a clients struct that contains initialized clients for accessing:
- Kubernetes objects
- Pipelines (https://github.com/tektoncd/pipeline#pipeline)
For example, to create a Pipeline
_, err = clients.PipelineClient.Pipelines.Create(test.Pipeline(namespaceName, pipelineName))
And you can use the client to clean up resources created by your test
func tearDown(clients *test.Clients) { if clients != nil { clients.Delete([]string{routeName}, []string{configName}) } }
Poll Pipeline resources ¶
After creating Pipeline resources or making changes to them, you will need to wait for the system to realize those changes. You can use polling methods to check the resources reach the desired state.
The WaitFor* functions use the kubernetes wait package (https://godoc.org/k8s.io/apimachinery/pkg/util/wait). To poll they use PollImmediate (https://godoc.org/k8s.io/apimachinery/pkg/util/wait#PollImmediate) and the return values of the function you provide behave the same as ConditionFunc (https://godoc.org/k8s.io/apimachinery/pkg/util/wait#ConditionFunc): a boolean to indicate if the function should stop or continue polling, and an error to indicate if there has been an error.
For example, you can poll a TaskRun object to wait for it to have a Status.Condition:
err = WaitForTaskRunState(c, hwTaskRunName, func(tr *v1alpha1.TaskRun) (bool, error) { if len(tr.Status.Conditions) > 0 { return true, nil } return false, nil }, "TaskRunHasCondition")
Index ¶
- Constants
- func AddToInformer(t *testing.T, store cache.Store) func(ktesting.Action) (bool, runtime.Object, error)
- func CollectPodLogs(c *clients, podName, namespace string, logf logging.FormatLogger)
- func CreateImage(ref string, objs ...runtime.Object) (string, error)
- func GetTestImage(image int) string
- func PrependResourceVersionReactor(f *ktesting.Fake)
- func SeedTestData(t *testing.T, ctx context.Context, d Data) (Clients, Informers)
- func SkipIfExcluded(t *testing.T)
- func WaitForDeploymentState(c *clients, name string, namespace string, ...) error
- func WaitForPipelineRunState(c *clients, name string, polltimeout time.Duration, ...) error
- func WaitForPodState(c *clients, name string, namespace string, ...) error
- func WaitForServiceExternalIPState(c *clients, namespace, name string, ...) error
- func WaitForTaskRunState(c *clients, name string, inState ConditionAccessorFn, desc string) error
- type Assets
- type Clients
- type ConditionAccessorFn
- func Failed(name string) ConditionAccessorFn
- func FailedWithMessage(message, name string) ConditionAccessorFn
- func FailedWithReason(reason, name string) ConditionAccessorFn
- func PipelineRunFailed(name string) ConditionAccessorFn
- func PipelineRunSucceed(name string) ConditionAccessorFn
- func Running(name string) ConditionAccessorFn
- func Succeed(name string) ConditionAccessorFn
- func TaskRunFailed(name string) ConditionAccessorFn
- func TaskRunSucceed(name string) ConditionAccessorFn
- type Data
- type Informers
- type ResourceVersionReactor
Constants ¶
const ( // Busybox image with specific sha BusyboxSha = iota // Registry image Registry )
Variables ¶
This section is empty.
Functions ¶
func AddToInformer ¶ added in v0.14.0
func CollectPodLogs ¶ added in v0.5.0
func CollectPodLogs(c *clients, podName, namespace string, logf logging.FormatLogger)
CollectPodLogs will get the logs for all containers in a Pod
func CreateImage ¶ added in v0.12.0
CreateImage will push a new OCI image artifact with the provided raw data object as a layer and return the full image reference with a digest to fetch the image. Key must be specified as [lowercase kind]/[object name]. The image ref with a digest is returned.
func GetTestImage ¶ added in v0.16.0
get test image based on unique id
func PrependResourceVersionReactor ¶ added in v0.14.0
PrependResourceVersionReactor will instrument a client-go testing Fake with a reactor that simulates resourceVersion changes on mutations. This does not work with patches.
func SeedTestData ¶
SeedTestData returns Clients and Informers populated with the given Data. nolint: golint
func SkipIfExcluded ¶ added in v0.16.0
check if test name is in the excluded list and skip it
func WaitForDeploymentState ¶ added in v0.9.0
func WaitForDeploymentState(c *clients, name string, namespace string, inState func(d *appsv1.Deployment) (bool, error), desc string) error
WaitForDeploymentState polls the status of the Deployment called name from client every interval until inState returns `true` indicating it is done, returns an error or timeout. desc will be used to name the metric that is emitted to track how long it took for name to get into the state checked by inState.
func WaitForPipelineRunState ¶
func WaitForPipelineRunState(c *clients, name string, polltimeout time.Duration, inState ConditionAccessorFn, desc string) error
WaitForPipelineRunState polls the status of the PipelineRun called name from client every interval until inState returns `true` indicating it is done, returns an error or timeout. desc will be used to name the metric that is emitted to track how long it took for name to get into the state checked by inState.
func WaitForPodState ¶
func WaitForPodState(c *clients, name string, namespace string, inState func(r *corev1.Pod) (bool, error), desc string) error
WaitForPodState polls the status of the Pod called name from client every interval until inState returns `true` indicating it is done, returns an error or timeout. desc will be used to name the metric that is emitted to track how long it took for name to get into the state checked by inState.
func WaitForServiceExternalIPState ¶
func WaitForServiceExternalIPState(c *clients, namespace, name string, inState func(s *corev1.Service) (bool, error), desc string) error
WaitForServiceExternalIPState polls the status of the a k8s Service called name from client every interval until an external ip is assigned indicating it is done, returns an error or timeout. desc will be used to name the metric that is emitted to track how long it took for name to get into the state checked by inState.
func WaitForTaskRunState ¶
func WaitForTaskRunState(c *clients, name string, inState ConditionAccessorFn, desc string) error
WaitForTaskRunState polls the status of the TaskRun called name from client every interval until inState returns `true` indicating it is done, returns an error or timeout. desc will be used to name the metric that is emitted to track how long it took for name to get into the state checked by inState.
Types ¶
type Assets ¶ added in v0.10.0
type Assets struct { Logger *zap.SugaredLogger Controller *controller.Impl Clients Clients Informers Informers Recorder *record.FakeRecorder }
Assets holds references to the controller, logs, clients, and informers.
type Clients ¶
type Clients struct { Pipeline *fakepipelineclientset.Clientset Resource *fakeresourceclientset.Clientset Kube *fakekubeclientset.Clientset CloudEvents cloudeventclient.CEClient }
Clients holds references to clients which are useful for reconciler tests.
type ConditionAccessorFn ¶ added in v0.11.0
type ConditionAccessorFn func(ca apis.ConditionAccessor) (bool, error)
ConditionAccessorFn is a condition function used polling functions
func Failed ¶ added in v0.11.0
func Failed(name string) ConditionAccessorFn
Failed provides a poll condition function that checks if the ConditionAccessor resource has failed or not.
func FailedWithMessage ¶ added in v0.11.0
func FailedWithMessage(message, name string) ConditionAccessorFn
FailedWithMessage provides a poll function that checks if the ConditionAccessor resource has failed with the TimeoudOut reason
func FailedWithReason ¶ added in v0.11.0
func FailedWithReason(reason, name string) ConditionAccessorFn
FailedWithReason provides a poll function that checks if the ConditionAccessor resource has failed with the TimeoudOut reason
func PipelineRunFailed ¶
func PipelineRunFailed(name string) ConditionAccessorFn
PipelineRunFailed provides a poll condition function that checks if the PipelineRun has failed.
func PipelineRunSucceed ¶
func PipelineRunSucceed(name string) ConditionAccessorFn
PipelineRunSucceed provides a poll condition function that checks if the PipelineRun has successfully completed.
func Running ¶ added in v0.11.0
func Running(name string) ConditionAccessorFn
Running provides a poll condition function that checks if the ConditionAccessor resource is currently running.
func Succeed ¶ added in v0.11.0
func Succeed(name string) ConditionAccessorFn
Succeed provides a poll condition function that checks if the ConditionAccessor resource has successfully completed or not.
func TaskRunFailed ¶
func TaskRunFailed(name string) ConditionAccessorFn
TaskRunFailed provides a poll condition function that checks if the TaskRun has failed.
func TaskRunSucceed ¶
func TaskRunSucceed(name string) ConditionAccessorFn
TaskRunSucceed provides a poll condition function that checks if the TaskRun has successfully completed.
type Data ¶
type Data struct { PipelineRuns []*v1beta1.PipelineRun Pipelines []*v1beta1.Pipeline TaskRuns []*v1beta1.TaskRun Tasks []*v1beta1.Task ClusterTasks []*v1beta1.ClusterTask PipelineResources []*v1alpha1.PipelineResource Conditions []*v1alpha1.Condition Pods []*corev1.Pod Namespaces []*corev1.Namespace ConfigMaps []*corev1.ConfigMap }
Data represents the desired state of the system (i.e. existing resources) to seed controllers with.
type Informers ¶
type Informers struct { PipelineRun informersv1beta1.PipelineRunInformer Pipeline informersv1beta1.PipelineInformer TaskRun informersv1beta1.TaskRunInformer Task informersv1beta1.TaskInformer ClusterTask informersv1beta1.ClusterTaskInformer PipelineResource resourceinformersv1alpha1.PipelineResourceInformer Condition informersv1alpha1.ConditionInformer Pod coreinformers.PodInformer ConfigMap coreinformers.ConfigMapInformer }
Informers holds references to informers which are useful for reconciler tests.
type ResourceVersionReactor ¶ added in v0.14.0
type ResourceVersionReactor struct {
// contains filtered or unexported fields
}
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package test holds the project's test helpers and end-to-end tests (e2e).
|
Package test holds the project's test helpers and end-to-end tests (e2e). |