@@ -18,6 +18,7 @@ package e2e
18
18
19
19
import (
20
20
"context"
21
+ "os"
21
22
"testing"
22
23
"time"
23
24
@@ -34,7 +35,10 @@ import (
34
35
ecv1alpha1 "go.etcd.io/etcd-operator/api/v1alpha1"
35
36
)
36
37
38
+ var etcdVersion = os .Getenv ("ETCD_VERSION" )
39
+
37
40
// TestZeroMemberCluster tests if zero member Etcd Cluster does not create its StatefulSet
41
+ // TODO: update this test once https://github.com/etcd-io/etcd-operator/issues/125 is addressed
38
42
func TestZeroMemberCluster (t * testing.T ) {
39
43
feature := features .New ("zero-member-cluster" )
40
44
etcdClusterName := "etcd-cluster-zero"
@@ -51,7 +55,7 @@ func TestZeroMemberCluster(t *testing.T) {
51
55
},
52
56
Spec : ecv1alpha1.EtcdClusterSpec {
53
57
Size : size ,
54
- Version : "v3.5.18" ,
58
+ Version : etcdVersion ,
55
59
},
56
60
}
57
61
@@ -87,6 +91,53 @@ func TestZeroMemberCluster(t *testing.T) {
87
91
88
92
}
89
93
94
+ // TestNegativeClusterSize tests negative membership cluster creation
95
+ func TestNegativeClusterSize (t * testing.T ) {
96
+ feature := features .New ("negative-member-cluster" )
97
+ etcdClusterName := "etcd-cluster-negative"
98
+ size := - 1
99
+
100
+ etcdClusterSpec := & ecv1alpha1.EtcdCluster {
101
+ TypeMeta : metav1.TypeMeta {
102
+ APIVersion : "operator.etcd.io/v1alpha1" ,
103
+ Kind : "EtcdCluster" ,
104
+ },
105
+ ObjectMeta : metav1.ObjectMeta {
106
+ Name : etcdClusterName ,
107
+ Namespace : namespace ,
108
+ },
109
+ Spec : ecv1alpha1.EtcdClusterSpec {
110
+ Size : size ,
111
+ Version : etcdVersion ,
112
+ },
113
+ }
114
+
115
+ feature .Setup (func (ctx context.Context , t * testing.T , c * envconf.Config ) context.Context {
116
+
117
+ err := c .Client ().Resources ().Create (ctx , etcdClusterSpec )
118
+ if ! errors .IsInvalid (err ) {
119
+ t .Fatalf ("etcdCluster with negative size failed with unexpected error: %s" , err )
120
+ }
121
+
122
+ return ctx
123
+ })
124
+
125
+ feature .Assess ("etcdCluster resource should not be created when etcdCluster.Spec.Size is negative" ,
126
+ func (ctx context.Context , t * testing.T , c * envconf.Config ) context.Context {
127
+
128
+ var etcdCluster ecv1alpha1.EtcdCluster
129
+ err := c .Client ().Resources ().Get (ctx , etcdClusterName , namespace , & etcdCluster )
130
+ if ! errors .IsNotFound (err ) {
131
+ t .Fatalf ("found etcdCluster resource with negative size: %s" , err )
132
+ }
133
+
134
+ return ctx
135
+ },
136
+ )
137
+
138
+ _ = testEnv .Test (t , feature .Feature ())
139
+ }
140
+
90
141
func TestClusterHealthy (t * testing.T ) {
91
142
feature := features .New ("etcd-operator-controller" )
92
143
0 commit comments