Skip to content

Commit

Permalink
SDN-3979: adding disruption e2e coverage
Browse files Browse the repository at this point in the history
This is continuation of
github.com/openshift/pull/221

Signed-off-by: msherif1234 <mmahmoud@redhat.com>
  • Loading branch information
msherif1234 committed May 28, 2023
1 parent 44a0044 commit 93f7ae6
Show file tree
Hide file tree
Showing 7 changed files with 388 additions and 49 deletions.
32 changes: 27 additions & 5 deletions test/e2e/daemonset/daemonset.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,33 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
)

func WaitForDaemonSetReady(client *testclient.ClientSet, ds *appsv1.DaemonSet, namespace, name string, retryInterval, timeout time.Duration) error {
err := wait.PollImmediate(retryInterval, timeout, func() (done bool, err error) {
func GetDaemonSet(client *testclient.ClientSet, namespace, name string, timeout time.Duration) (*appsv1.DaemonSet, error) {
var daemonSet appsv1.DaemonSet
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
err := client.Get(ctx, types.NamespacedName{Name: name, Namespace: namespace}, &daemonSet)
return &daemonSet, err
}

func GetDaemonSetWithRetry(client *testclient.ClientSet, namespace, name string, retryInterval, timeout time.Duration) (*appsv1.DaemonSet, error) {
var daemonSet *appsv1.DaemonSet
err := wait.PollUntilContextTimeout(context.Background(), retryInterval, timeout, true, func(ctx context.Context) (done bool, err error) {
if daemonSet, err = GetDaemonSet(client, namespace, name, timeout); err != nil {
if errors.IsNotFound(err) {
return false, nil
}
return false, err
}
return true, err
})
return daemonSet, err
}

func WaitForDaemonSetReady(client *testclient.ClientSet, ds *appsv1.DaemonSet, retryInterval, timeout time.Duration) error {
err := wait.PollUntilContextTimeout(context.Background(), retryInterval, timeout, true, func(ctx context.Context) (done bool, err error) {
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
err = client.Get(ctx, types.NamespacedName{Name: name, Namespace: namespace}, ds)
err = client.Get(ctx, types.NamespacedName{Name: ds.Name, Namespace: ds.Namespace}, ds)
if err != nil {
if errors.IsNotFound(err) {
return false, nil
Expand All @@ -33,15 +55,15 @@ func WaitForDaemonSetReady(client *testclient.ClientSet, ds *appsv1.DaemonSet, n
}
})
if err != nil {
return fmt.Errorf("failed to wait for daemonset %s in namespace %s to be ready: %v", ds.Name, namespace, err)
return fmt.Errorf("failed to wait for daemonset %s in namespace %s to be ready: %v", ds.Name, ds.Namespace, err)
}

return nil
}

func GetDaemonSetOnNode(client *testclient.ClientSet, namespace, nodeName string) (*corev1.Pod, error) {
var podList *corev1.PodList
err := wait.PollImmediate(1*time.Second, 10*time.Second, func() (done bool, err error) {
err := wait.PollUntilContextTimeout(context.Background(), 1*time.Second, 10*time.Second, true, func(ctx context.Context) (done bool, err error) {
podList, err = client.Pods(namespace).List(context.TODO(), metav1.ListOptions{
LabelSelector: "app=ingress-node-firewall-daemon",
FieldSelector: fmt.Sprintf("spec.nodeName=%s", nodeName),
Expand Down
64 changes: 64 additions & 0 deletions test/e2e/deployment/deployment.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package deployment

import (
"context"
"fmt"
"time"

testclient "github.com/openshift/ingress-node-firewall/test/e2e/client"

appsv1 "k8s.io/api/apps/v1"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait"
)

func GetDeployment(client *testclient.ClientSet, namespace, name string, timeout time.Duration) (*appsv1.Deployment, error) {
var deployment appsv1.Deployment
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
err := client.Get(ctx, types.NamespacedName{Name: name, Namespace: namespace}, &deployment)
return &deployment, err
}

func GetDeploymentWithRetry(client *testclient.ClientSet, namespace, name string, retryInterval, timeout time.Duration) (*appsv1.Deployment, error) {
var deployment *appsv1.Deployment
err := wait.PollUntilContextTimeout(context.Background(), retryInterval, timeout, true, func(ctx context.Context) (done bool, err error) {
if deployment, err = GetDeployment(client, namespace, name, timeout); err != nil {
if errors.IsNotFound(err) {
return false, nil
}
return false, err
}
return true, nil
})

return deployment, err
}

func WaitForDeploymentSetReady(client *testclient.ClientSet, deployment *appsv1.Deployment, retryInterval,
timeout time.Duration) error {

err := wait.PollUntilContextTimeout(context.Background(), retryInterval, timeout, true, func(ctx context.Context) (done bool, err error) {
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()
err = client.Get(ctx, types.NamespacedName{Name: deployment.Name, Namespace: deployment.Namespace}, deployment)
if err != nil {
if errors.IsNotFound(err) {
return false, nil
}
return false, err
}
if *deployment.Spec.Replicas == deployment.Status.ReadyReplicas {
return true, nil
} else {
return false, nil
}
})
if err != nil {
return fmt.Errorf("failed to wait for deployment %s in namespace %s to be ready: %v", deployment.Name,
deployment.Namespace, err)
}

return nil
}
Loading

0 comments on commit 93f7ae6

Please sign in to comment.