Skip to content

Commit f1a38d4

Browse files
committed
Add e2e to check 0 size cluster
Signed-off-by: Frederiko Costa <[email protected]>
1 parent ee6cc59 commit f1a38d4

File tree

2 files changed

+59
-2
lines changed

2 files changed

+59
-2
lines changed

config/manager/kustomization.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1
44
kind: Kustomization
55
images:
66
- name: controller
7-
newName: controller
8-
newTag: latest
7+
newName: etcd-operator
8+
newTag: v0.1

test/e2e/e2e_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,65 @@ import (
2828

2929
appsv1 "k8s.io/api/apps/v1"
3030
corev1 "k8s.io/api/core/v1"
31+
"k8s.io/apimachinery/pkg/api/errors"
32+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33+
34+
ecv1alpha1 "go.etcd.io/etcd-operator/api/v1alpha1"
3135
)
3236

37+
// TestZeroMemberCluster tests if zero member Etcd Cluster does not create its StatefulSet
38+
func TestZeroMemberCluster(t *testing.T) {
39+
feature := features.New("zero-member-cluster")
40+
etcdClusterName := "etcd-cluster-zero"
41+
size := 0
42+
43+
etcdClusterSpec := &ecv1alpha1.EtcdCluster{
44+
TypeMeta: metav1.TypeMeta{
45+
APIVersion: "operator.etcd.io/v1alpha1",
46+
Kind: "EtcdCluster",
47+
},
48+
ObjectMeta: metav1.ObjectMeta{
49+
Name: etcdClusterName,
50+
Namespace: namespace,
51+
},
52+
Spec: ecv1alpha1.EtcdClusterSpec{
53+
Size: size,
54+
Version: "v3.5.18",
55+
},
56+
}
57+
58+
feature.Setup(func(ctx context.Context, t *testing.T, c *envconf.Config) context.Context {
59+
60+
if err := c.Client().Resources().Create(ctx, etcdClusterSpec); err != nil {
61+
t.Fatalf("fail to create Etcd cluster: %s", err)
62+
}
63+
64+
return ctx
65+
})
66+
67+
feature.Assess("statefulSet is not created when etcdCluster.Spec.Size is 0",
68+
func(ctx context.Context, t *testing.T, c *envconf.Config) context.Context {
69+
70+
var etcdCluster ecv1alpha1.EtcdCluster
71+
if err := c.Client().Resources().Get(ctx, etcdClusterName, namespace, &etcdCluster); err != nil {
72+
t.Fatalf("unable to fetch Etcd cluster: %s", err)
73+
}
74+
75+
var sts appsv1.StatefulSet
76+
err := c.Client().Resources().Get(ctx, etcdClusterName, namespace, &sts)
77+
78+
if !errors.IsNotFound(err) {
79+
t.Fatalf("statefulSet found when Etcd Cluster size is zero: %s", err)
80+
}
81+
82+
return ctx
83+
},
84+
)
85+
86+
_ = testEnv.Test(t, feature.Feature())
87+
88+
}
89+
3390
func TestClusterHealthy(t *testing.T) {
3491
feature := features.New("etcd-operator-controller")
3592

0 commit comments

Comments
 (0)