Skip to content
This repository has been archived by the owner on Jan 6, 2021. It is now read-only.

move/merge test utility funcs in a '/test' and '/test/olm' pkgs #57

Merged
merged 4 commits into from Feb 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -5,6 +5,7 @@ build/_test
# generated files
**/*_assets.go

deploy/test/empty.yaml

# Created by https://www.gitignore.io/api/go,vim,emacs,visualstudiocode
### Emacs ###
Expand Down
Expand Up @@ -10,11 +10,9 @@ import (

"github.com/codeready-toolchain/toolchain-operator/pkg/apis"
"github.com/codeready-toolchain/toolchain-operator/pkg/apis/toolchain/v1alpha1"
"github.com/codeready-toolchain/toolchain-operator/pkg/test"
. "github.com/codeready-toolchain/toolchain-operator/pkg/test/k8s"
. "github.com/codeready-toolchain/toolchain-operator/pkg/test/olm"
. "github.com/codeready-toolchain/toolchain-operator/pkg/test/toolchain"
"github.com/codeready-toolchain/toolchain-operator/pkg/toolchain"
"github.com/codeready-toolchain/toolchain-operator/test"
. "github.com/codeready-toolchain/toolchain-operator/test/assert"

orgv1 "github.com/eclipse/che-operator/pkg/apis/org/v1"
"github.com/go-logr/logr"
Expand Down
Expand Up @@ -9,9 +9,8 @@ import (

"github.com/codeready-toolchain/toolchain-operator/pkg/apis"
"github.com/codeready-toolchain/toolchain-operator/pkg/apis/toolchain/v1alpha1"
"github.com/codeready-toolchain/toolchain-operator/pkg/test"
. "github.com/codeready-toolchain/toolchain-operator/pkg/test/olm"
. "github.com/codeready-toolchain/toolchain-operator/pkg/test/toolchain"
"github.com/codeready-toolchain/toolchain-operator/test"
. "github.com/codeready-toolchain/toolchain-operator/test/assert"

olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
"github.com/stretchr/testify/assert"
Expand Down
22 changes: 11 additions & 11 deletions pkg/installation_test.go
Expand Up @@ -7,16 +7,16 @@ import (
"github.com/codeready-toolchain/toolchain-operator/pkg/apis"
"github.com/codeready-toolchain/toolchain-operator/pkg/controller/cheinstallation"
"github.com/codeready-toolchain/toolchain-operator/pkg/controller/tektoninstallation"
"github.com/codeready-toolchain/toolchain-operator/pkg/test"
"github.com/codeready-toolchain/toolchain-operator/pkg/test/toolchain"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
"github.com/codeready-toolchain/toolchain-operator/test"
"github.com/codeready-toolchain/toolchain-operator/test/assert"

"github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
"github.com/satori/go.uuid"
uuid "github.com/satori/go.uuid"
"github.com/stretchr/testify/require"
"k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/kubernetes/scheme"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
)

Expand Down Expand Up @@ -51,9 +51,9 @@ func TestCreateInstallationResources(t *testing.T) {

// then
require.NoError(t, err)
toolchain.AssertThatTektonInstallation(t, "", tektoninstallation.InstallationName, client).
assert.AssertThatTektonInstallation(t, "", tektoninstallation.InstallationName, client).
HasNoOwnerRef()
toolchain.AssertThatCheInstallation(t, "", cheinstallation.InstallationName, client).
assert.AssertThatCheInstallation(t, "", cheinstallation.InstallationName, client).
HasNoOwnerRef()
})

Expand All @@ -73,9 +73,9 @@ func TestCreateInstallationResources(t *testing.T) {

// then
require.NoError(t, err)
toolchain.AssertThatTektonInstallation(t, "", tektoninstallation.InstallationName, client).
assert.AssertThatTektonInstallation(t, "", tektoninstallation.InstallationName, client).
HasNoOwnerRef()
toolchain.AssertThatCheInstallation(t, "", cheinstallation.InstallationName, client).
assert.AssertThatCheInstallation(t, "", cheinstallation.InstallationName, client).
HasNoOwnerRef()
})

Expand All @@ -91,9 +91,9 @@ func TestCreateInstallationResources(t *testing.T) {

// then
require.NoError(t, err)
toolchain.AssertThatTektonInstallation(t, "", tektoninstallation.InstallationName, client).
assert.AssertThatTektonInstallation(t, "", tektoninstallation.InstallationName, client).
HasNoOwnerRef()
toolchain.AssertThatCheInstallation(t, "", cheinstallation.InstallationName, client).
assert.AssertThatCheInstallation(t, "", cheinstallation.InstallationName, client).
HasNoOwnerRef()
})
}
10 changes: 5 additions & 5 deletions test/wait/awaitility.go → test/assert/awaitility.go
@@ -1,4 +1,4 @@
package wait
package assert

import (
"context"
Expand All @@ -8,8 +8,8 @@ import (

toolchainv1alpha1 "github.com/codeready-toolchain/api/pkg/apis/toolchain/v1alpha1"
"github.com/codeready-toolchain/toolchain-operator/pkg/apis/toolchain/v1alpha1"
"github.com/codeready-toolchain/toolchain-operator/pkg/test"
"github.com/codeready-toolchain/toolchain-operator/pkg/test/toolchain"
"github.com/codeready-toolchain/toolchain-operator/test"

orgv1 "github.com/eclipse/che-operator/pkg/apis/org/v1"
olmv1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1"
olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
Expand Down Expand Up @@ -108,7 +108,7 @@ type TektonInstallationWaitCondition func(a *ToolchainAwaitility, ic *v1alpha1.T
func UntilHasCheStatusCondition(conditions ...toolchainv1alpha1.Condition) CheInstallationWaitCondition {
return func(a *ToolchainAwaitility, ic *v1alpha1.CheInstallation) bool {
if len(ic.Status.Conditions) > 0 {
if toolchain.ConditionsMatch(ic.Status.Conditions, conditions...) {
if ConditionsMatch(ic.Status.Conditions, conditions...) {
a.T.Logf("status conditions match in CheInstallation '%s`", ic.Name)
return true
}
Expand All @@ -121,7 +121,7 @@ func UntilHasCheStatusCondition(conditions ...toolchainv1alpha1.Condition) CheIn
// UntilHasTektonStatusCondition checks if TektonInstallation status has the given set of conditions
func UntilHasTektonStatusCondition(conditions ...toolchainv1alpha1.Condition) TektonInstallationWaitCondition {
return func(a *ToolchainAwaitility, ic *v1alpha1.TektonInstallation) bool {
if toolchain.ConditionsMatch(ic.Status.Conditions, conditions...) {
if ConditionsMatch(ic.Status.Conditions, conditions...) {
a.T.Logf("status conditions match in TektonInstallation '%s`", ic.Name)
return true
}
Expand Down
9 changes: 4 additions & 5 deletions pkg/test/olm/che_cluster.go → test/assert/che_cluster.go
@@ -1,15 +1,14 @@
package olm
package assert

import (
"context"
testwait "github.com/codeready-toolchain/toolchain-operator/test/wait"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"testing"

orgv1 "github.com/eclipse/che-operator/pkg/apis/org/v1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
)
Expand Down Expand Up @@ -42,7 +41,7 @@ func (a *CheClusterAssertion) HasRunningStatus(want string) *CheClusterAssertion
}

func (a *CheClusterAssertion) DoesNotExist() *CheClusterAssertion {
err := testwait.PollOnceOrUntilCondition(func() (done bool, err error) {
err := PollOnceOrUntilCondition(func() (done bool, err error) {
err = a.loadCheClusterAssertion()
if err != nil {
if errors.IsNotFound(err) {
Expand Down
@@ -1,4 +1,4 @@
package toolchain
package assert

import (
"context"
Expand Down
@@ -1,11 +1,13 @@
package toolchain
package assert

import (
"fmt"
"testing"

toolchainv1alpha1 "github.com/codeready-toolchain/api/pkg/apis/toolchain/v1alpha1"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"testing"
)

// TODo - This is copied as it is, due to issues of controller-runtime's client.Client. There is update on some methods of client.Client, which causes compile error. This can be removed once we updated controller-runtime for common
Expand Down
10 changes: 5 additions & 5 deletions pkg/test/k8s/namespace.go → test/assert/namespace.go
@@ -1,16 +1,16 @@
package k8s
package assert

import (
"context"
testwait "github.com/codeready-toolchain/toolchain-operator/test/wait"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
"testing"
)

type NamespaceAssertion struct {
Expand Down Expand Up @@ -39,7 +39,7 @@ func AssertThatNamespace(t *testing.T, name string, client client.Reader) *Names
}

func (a *NamespaceAssertion) DoesNotExist() *NamespaceAssertion {
err := testwait.PollOnceOrUntilCondition(func() (done bool, err error) {
err := PollOnceOrUntilCondition(func() (done bool, err error) {
err = a.loadNamespaceAssertion()
if err != nil {
if errors.IsNotFound(err) {
Expand Down
@@ -1,15 +1,16 @@
package olm
package assert

import (
"context"
"testing"

"github.com/codeready-toolchain/toolchain-operator/pkg/toolchain"
testwait "github.com/codeready-toolchain/toolchain-operator/test/wait"

olmv1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
"testing"
)

type OperatorGroupAssertion struct {
Expand Down Expand Up @@ -39,7 +40,7 @@ func AssertThatOperatorGroup(t *testing.T, ns, name string, client client.Reader
}

func (a *OperatorGroupAssertion) DoesNotExist() *OperatorGroupAssertion {
err := testwait.PollOnceOrUntilCondition(func() (done bool, err error) {
err := PollOnceOrUntilCondition(func() (done bool, err error) {
err = a.loadOperatorGroupAssertion()
if len(a.ogList) == 0 {
a.t.Logf("operatorgroup deleted")
Expand Down
8 changes: 4 additions & 4 deletions pkg/test/olm/subscription.go → test/assert/subscription.go
@@ -1,16 +1,16 @@
package olm
package assert

import (
"context"
testwait "github.com/codeready-toolchain/toolchain-operator/test/wait"
"testing"

olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
"testing"
)

type SubscriptionAssertion struct {
Expand Down Expand Up @@ -39,7 +39,7 @@ func AssertThatSubscription(t *testing.T, ns, name string, client client.Reader)
}

func (a *SubscriptionAssertion) DoesNotExist() *SubscriptionAssertion {
err := testwait.PollOnceOrUntilCondition(func() (done bool, err error) {
err := PollOnceOrUntilCondition(func() (done bool, err error) {
err = a.loadSubscriptionAssertion()
if err != nil {
if errors.IsNotFound(err) {
Expand Down
@@ -1,16 +1,16 @@
package toolchain
package assert

import (
"context"
"testing"

toolchainv1alpha1 "github.com/codeready-toolchain/api/pkg/apis/toolchain/v1alpha1"
"github.com/codeready-toolchain/toolchain-operator/pkg/apis/toolchain/v1alpha1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"

opsv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
)
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
25 changes: 12 additions & 13 deletions test/e2e/toolchain_test.go
Expand Up @@ -9,11 +9,10 @@ import (
"github.com/codeready-toolchain/toolchain-operator/pkg/apis/toolchain/v1alpha1"
"github.com/codeready-toolchain/toolchain-operator/pkg/controller/cheinstallation"
"github.com/codeready-toolchain/toolchain-operator/pkg/controller/tektoninstallation"
"github.com/codeready-toolchain/toolchain-operator/pkg/test"
. "github.com/codeready-toolchain/toolchain-operator/pkg/test/k8s"
. "github.com/codeready-toolchain/toolchain-operator/pkg/test/olm"
"github.com/codeready-toolchain/toolchain-operator/pkg/toolchain"
"github.com/codeready-toolchain/toolchain-operator/test/wait"
"github.com/codeready-toolchain/toolchain-operator/test"
. "github.com/codeready-toolchain/toolchain-operator/test/assert"

orgv1 "github.com/eclipse/che-operator/pkg/apis/org/v1"
olmv1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1"
olmv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
Expand Down Expand Up @@ -53,7 +52,7 @@ func TestToolchain(t *testing.T) {
// then
require.NoError(t, err, "failed to create toolchain CheInstallation")

err = await.WaitForCheInstallConditions(cheInstallation.Name, wait.UntilHasCheStatusCondition(cheinstallation.InstallationSucceeded()))
err = await.WaitForCheInstallConditions(cheInstallation.Name, UntilHasCheStatusCondition(cheinstallation.InstallationSucceeded()))
require.NoError(t, err)
checkCheResources(t, f.Client.Client, cheOperatorNS, cheOg, cheSub, cheCluster)
})
Expand All @@ -74,7 +73,7 @@ func TestToolchain(t *testing.T) {
// err = await.WaitForNamespace(cheOperatorNS, v1.NamespaceActive)
// require.NoError(t, err)

// err = await.WaitForCheInstallConditions(cheInstallation.Name, wait.UntilHasCheStatusCondition(cheinstallation.SubscriptionCreated()))
// err = await.WaitForCheInstallConditions(cheInstallation.Name, UntilHasCheStatusCondition(cheinstallation.SubscriptionCreated()))
// require.NoError(t, err)
// checkCheResources(t, f.Client.Client, cheOperatorNS, cheOg, cheSub)
// })
Expand Down Expand Up @@ -124,7 +123,7 @@ func TestToolchain(t *testing.T) {
// then
require.NoError(t, err, "failed to delete CheCluster %s in namespace %s", cluster.Name, cluster.Namespace)

err = await.WaitForCheInstallConditions(cheInstallation.Name, wait.UntilHasCheStatusCondition(cheinstallation.InstallationSucceeded()))
err = await.WaitForCheInstallConditions(cheInstallation.Name, UntilHasCheStatusCondition(cheinstallation.InstallationSucceeded()))
require.NoError(t, err)
checkCheResources(t, f.Client.Client, cheOperatorNS, cheOg, cheSub, cheCluster)
})
Expand All @@ -133,7 +132,7 @@ func TestToolchain(t *testing.T) {
// given
// TektonInstallation should already exist
// when
err = await.WaitForTektonInstallConditions(tektonInstallation.Name, wait.UntilHasTektonStatusCondition(tektoninstallation.InstallationSucceeded()))
err = await.WaitForTektonInstallConditions(tektonInstallation.Name, UntilHasTektonStatusCondition(tektoninstallation.InstallationSucceeded()))
// then
require.NoError(t, err)

Expand All @@ -154,7 +153,7 @@ func TestToolchain(t *testing.T) {
err = await.WaitForSubscription(tektoninstallation.SubscriptionNamespace, tektoninstallation.SubscriptionName)
require.NoError(t, err)

err = await.WaitForTektonInstallConditions(tektonInstallation.Name, wait.UntilHasTektonStatusCondition(tektoninstallation.InstallationSucceeded()))
err = await.WaitForTektonInstallConditions(tektonInstallation.Name, UntilHasTektonStatusCondition(tektoninstallation.InstallationSucceeded()))
require.NoError(t, err)

checkTektonResources(t, f.Client.Client, tektonSub)
Expand Down Expand Up @@ -219,7 +218,7 @@ func checkTektonResources(t *testing.T, client client.Client, tektonSub *olmv1al
HasSpec(tektonSub.Spec)
}

func InitOperator(t *testing.T) (*framework.TestCtx, wait.ToolchainAwaitility) {
func InitOperator(t *testing.T) (*framework.TestCtx, ToolchainAwaitility) {
icList := &v1alpha1.CheInstallationList{}
err := framework.AddToFrameworkScheme(apis.AddToScheme, icList)
require.NoError(t, err, "failed to add custom resource scheme to framework: %v", err)
Expand All @@ -235,18 +234,18 @@ func InitOperator(t *testing.T) (*framework.TestCtx, wait.ToolchainAwaitility) {

// get global framework variables
f := framework.Global
await := wait.ToolchainAwaitility{
await := ToolchainAwaitility{
T: t,
Client: f.Client,
}
// wait for toolchain-operator to be ready
err = e2eutil.WaitForOperatorDeployment(t, f.KubeClient, namespace, "toolchain-operator", 1, wait.RetryInterval, wait.Timeout)
err = e2eutil.WaitForOperatorDeployment(t, f.KubeClient, namespace, "toolchain-operator", 1, RetryInterval, Timeout)
require.NoError(t, err, "failed while waiting for toolchain-operator deployment")
t.Log("toolchain-operator is ready and running state")

return ctx, await
}

func cleanupOptions(ctx *framework.TestCtx) *framework.CleanupOptions {
return &framework.CleanupOptions{TestContext: ctx, Timeout: wait.CleanupTimeout, RetryInterval: wait.CleanupRetryInterval}
return &framework.CleanupOptions{TestContext: ctx, Timeout: CleanupTimeout, RetryInterval: CleanupRetryInterval}
}