Skip to content
This repository has been archived by the owner on Dec 18, 2019. It is now read-only.

Commit

Permalink
Chore: Wait for deletion added
Browse files Browse the repository at this point in the history
  • Loading branch information
Stephin Thomas committed Sep 25, 2019
1 parent fbda497 commit 309c756
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 18 deletions.
18 changes: 17 additions & 1 deletion Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,11 @@ pipeline {
}
stage("Install dependencies") {
steps {
sh "make setup"
dir("${env.CLONED_REPOSITORY_PATH}") {
sh "mkdir -p ${env.WORKSPACE}/bin"
sh "curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh"
sh "make setup"
}
}
}

Expand Down
69 changes: 53 additions & 16 deletions test/e2e/mobile_security_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@ import (
goctx "context"
apis "github.com/aerogear/mobile-security-service-operator/pkg/apis"
mssv1alpha1 "github.com/aerogear/mobile-security-service-operator/pkg/apis/mobilesecurityservice/v1alpha1"
dcv1 "github.com/openshift/client-go/apps/clientset/versioned/typed/apps/v1"
framework "github.com/operator-framework/operator-sdk/pkg/test"
"github.com/operator-framework/operator-sdk/pkg/test/e2eutil"
e2eutil "github.com/operator-framework/operator-sdk/pkg/test/e2eutil"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait"

"testing"
"time"
)
Expand Down Expand Up @@ -111,15 +115,30 @@ func MssTest(t *testing.T) {
if err := createMSSCustomResource(t, f, ctx, mssTestCR, namespace, mssName); err != nil {
t.Fatal(err)
}
dcV1Client, err := dcv1.NewForConfig(f.KubeConfig)
if err != nil {
t.Fatalf("Failed to initialize DeploymentConfig Client : %v", err)
}

//Delete MSS database CR
if err := deleteMSSdbCustomResource(t, f, ctx, mssDBTestCR, namespace, mssdbName); err != nil {
t.Fatal(err)
}
//Ensure MSS database was deleted successfully
if err = waitForDeploymentConfig(t, *dcV1Client, namespace, mssdbName, 0); err != nil {
t.Fatal(err)
}
t.Log("MSS database was deleted successfully")

//Delete MSS CR
if err := deleteMSSCustomResource(t, f, ctx, mssTestCR, namespace, mssName); err != nil {
t.Fatal(err)
}
//Ensure MSS was deleted successfully
if err = waitForDeploymentConfig(t, *dcV1Client, namespace, mssName, 0); err != nil {
t.Fatal(err)
}
t.Log("MSS was deleted successfully")

}
func initializeMssResources(t *testing.T, f *framework.Framework, ctx *framework.TestCtx, namespace string) error {
Expand Down Expand Up @@ -167,7 +186,6 @@ func createMSSCustomResource(t *testing.T, f *framework.Framework, ctx *framewor
return err
}
t.Log("Successfully created MSS Custom Resource")

//Ensure MSS was deployed successfully
if err = e2eutil.WaitForDeployment(t, f.KubeClient, namespace, mssName, 1, retryInterval, timeout); err != nil {
t.Fatal(err)
Expand All @@ -176,19 +194,14 @@ func createMSSCustomResource(t *testing.T, f *framework.Framework, ctx *framewor

return err
}
func deleteMSSdbCustomResource(t *testing.T, f *framework.Framework, ctx *framework.TestCtx, mssTestCR *mssv1alpha1.MobileSecurityServiceDB, namespace string, mssdbName string) error {
err := f.Client.Delete(goctx.TODO(), mssTestCR)
func deleteMSSdbCustomResource(t *testing.T, f *framework.Framework, ctx *framework.TestCtx, mssDBTestCR *mssv1alpha1.MobileSecurityServiceDB, namespace string, mssdbName string) error {
err := f.Client.Delete(goctx.TODO(), mssDBTestCR)
if err != nil {
return err
}
t.Log("Successfully deleted MSS database Custom Resource")

return nil
//Ensure MSS database was deleted successfully
// if err = e2eutil.waitForDeployment(t, f.KubeClient, namespace, mssdbName, 0, retryInterval, timeout, false); err != nil {
// t.Fatal(err)
// }
// t.Log("MSS database was deleted successfully")
// return err

}
func deleteMSSCustomResource(t *testing.T, f *framework.Framework, ctx *framework.TestCtx, mssTestCR *mssv1alpha1.MobileSecurityService, namespace string, mssName string) error {
Expand All @@ -198,10 +211,34 @@ func deleteMSSCustomResource(t *testing.T, f *framework.Framework, ctx *framewor
}
t.Log("Successfully deleted MSS Custom Resource")
return nil
//Ensure MSS was deleted successfully
// if err = e2eutil.waitForDeployment(t, f.KubeClient, namespace, mssName, 0, retryInterval, timeout, false); err != nil {
// t.Fatal(err)
// }
// t.Log("MSS was deleted successfully")
// return err
}

// Helper function for checking whether specified DeploymentConfig has a certain number of available replicas
// Copied & edited from https://github.com/operator-framework/operator-sdk/blob/f6d83791dd8880f0e33d549343642aabadc9d3a0/pkg/test/e2eutil/wait_util.go#L46
func waitForDeploymentConfig(t *testing.T, dcV1Client dcv1.AppsV1Client, namespace, name string, replicas int) error {
err := wait.Poll(retryInterval, timeout, func() (done bool, err error) {
dc, err := dcV1Client.DeploymentConfigs(namespace).Get(name, metav1.GetOptions{IncludeUninitialized: true})

if err != nil {
if apierrors.IsNotFound(err) && replicas == 0 {
return true, nil
}
if apierrors.IsNotFound(err) {
t.Logf("Waiting for availability of %s Deployment Config\n", name)
return false, nil
}
return false, err
}

if int(dc.Status.AvailableReplicas) == replicas {
return true, nil
}
t.Logf("Waiting for full availability of %s Deployment Config (%d/%d)\n", name, dc.Status.AvailableReplicas, replicas)
return false, nil
})
if err != nil {
return err
}
t.Logf("Deployment Config has now requested number of replicas: (%d/%d)\n", replicas, replicas)
return nil
}

0 comments on commit 309c756

Please sign in to comment.