Skip to content

Commit

Permalink
Add e2e test for kube controller manager lease configmap deletion rec…
Browse files Browse the repository at this point in the history
…overy
  • Loading branch information
damemi committed Nov 26, 2019
1 parent ad89ca9 commit 64c65ca
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions test/e2e/operator_test.go
Expand Up @@ -2,8 +2,11 @@ package e2e

import (
"testing"
"time"

"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/kubernetes"

"github.com/openshift/cluster-kube-controller-manager-operator/pkg/operator/operatorclient"
Expand All @@ -24,3 +27,34 @@ func TestOperatorNamespace(t *testing.T) {
t.Fatal(err)
}
}

func TestKCMRecovery(t *testing.T) {
// This is an e2e test to verify that KCM can recover from having its lease configmap deleted
// See https://bugzilla.redhat.com/show_bug.cgi?id=1744984
kubeConfig, err := test.NewClientConfigForTest()
if err != nil {
t.Fatal(err)
}
kubeClient, err := kubernetes.NewForConfig(kubeConfig)
if err != nil {
t.Fatal(err)
}

// Try to delete the kube controller manager's configmap in kube-system
err = kubeClient.CoreV1().ConfigMaps("kube-system").Delete("kube-controller-manager", &metav1.DeleteOptions{})
if err != nil {
t.Fatal(err)
}

// Check to see that the configmap then gets recreated
wait.Poll(time.Second*5, time.Second*300, func() (bool, error) {
_, err := kubeClient.CoreV1().ConfigMaps("kube-system").Get("kube-controller-manager", metav1.GetOptions{})
if err != nil {
if !errors.IsNotFound(err) {
return false, err
}
return false, nil
}
return true, nil
})
}

0 comments on commit 64c65ca

Please sign in to comment.