@@ -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,6 +35,8 @@ 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
38
41
func TestZeroMemberCluster (t * testing.T ) {
39
42
feature := features .New ("zero-member-cluster" )
@@ -51,7 +54,7 @@ func TestZeroMemberCluster(t *testing.T) {
51
54
},
52
55
Spec : ecv1alpha1.EtcdClusterSpec {
53
56
Size : size ,
54
- Version : "v3.5.18" ,
57
+ Version : etcdVersion ,
55
58
},
56
59
}
57
60
@@ -87,6 +90,53 @@ func TestZeroMemberCluster(t *testing.T) {
87
90
88
91
}
89
92
93
+ // TestNegativeClusterSize tests negative membership cluster creation
94
+ func TestNegativeClusterSize (t * testing.T ) {
95
+ feature := features .New ("negative-member-cluster" )
96
+ etcdClusterName := "etcd-cluster-negative"
97
+ size := - 1
98
+
99
+ etcdClusterSpec := & ecv1alpha1.EtcdCluster {
100
+ TypeMeta : metav1.TypeMeta {
101
+ APIVersion : "operator.etcd.io/v1alpha1" ,
102
+ Kind : "EtcdCluster" ,
103
+ },
104
+ ObjectMeta : metav1.ObjectMeta {
105
+ Name : etcdClusterName ,
106
+ Namespace : namespace ,
107
+ },
108
+ Spec : ecv1alpha1.EtcdClusterSpec {
109
+ Size : size ,
110
+ Version : etcdVersion ,
111
+ },
112
+ }
113
+
114
+ feature .Setup (func (ctx context.Context , t * testing.T , c * envconf.Config ) context.Context {
115
+
116
+ err := c .Client ().Resources ().Create (ctx , etcdClusterSpec )
117
+ if ! errors .IsInvalid (err ) {
118
+ t .Fatalf ("etcdCluster with negative size failed with unexpected error: %s" , err )
119
+ }
120
+
121
+ return ctx
122
+ })
123
+
124
+ feature .Assess ("etcdCluster resource should not be created when etcdCluster.Spec.Size is negative" ,
125
+ func (ctx context.Context , t * testing.T , c * envconf.Config ) context.Context {
126
+
127
+ var etcdCluster ecv1alpha1.EtcdCluster
128
+ err := c .Client ().Resources ().Get (ctx , etcdClusterName , namespace , & etcdCluster )
129
+ if ! errors .IsNotFound (err ) {
130
+ t .Fatalf ("found etcdCluster resource with negative size: %s" , err )
131
+ }
132
+
133
+ return ctx
134
+ },
135
+ )
136
+
137
+ _ = testEnv .Test (t , feature .Feature ())
138
+ }
139
+
90
140
func TestClusterHealthy (t * testing.T ) {
91
141
feature := features .New ("etcd-operator-controller" )
92
142
0 commit comments