@@ -28,8 +28,65 @@ import (
28
28
29
29
appsv1 "k8s.io/api/apps/v1"
30
30
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"
31
35
)
32
36
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
+
33
90
func TestClusterHealthy (t * testing.T ) {
34
91
feature := features .New ("etcd-operator-controller" )
35
92
0 commit comments