@@ -35,8 +35,25 @@ const (
35
35
duration = time .Second * 2
36
36
interval = time .Millisecond * 250
37
37
workspaceNamespace = "default"
38
+ secretsNamespace = "workspace-secrets"
38
39
)
39
40
41
+ var (
42
+ k8sClient client.Client
43
+ testEnv * envtest.Environment
44
+ mock_ctrl * gomock.Controller
45
+ ctx context.Context
46
+ cancel context.CancelFunc
47
+ workspaceCtrl * WorkspaceCountController
48
+ NodeName = "cool-ws-node"
49
+ )
50
+
51
+ func TestAPIs (t * testing.T ) {
52
+ mock_ctrl = gomock .NewController (t )
53
+ RegisterFailHandler (Fail )
54
+ RunSpecs (t , "Controller Suite" )
55
+ }
56
+
40
57
var _ = Describe ("WorkspaceCountController" , func () {
41
58
It ("should remove scale-down-disabled when last workspace is removed" , func () {
42
59
ws1 := newWorkspace (uuid .NewString (), workspaceNamespace , NodeName , workspacev1 .WorkspacePhaseRunning )
@@ -81,6 +98,76 @@ var _ = Describe("WorkspaceCountController", func() {
81
98
})
82
99
})
83
100
101
+ var _ = BeforeSuite (func () {
102
+ logf .SetLogger (zap .New (zap .WriteTo (GinkgoWriter ), zap .UseDevMode (true )))
103
+
104
+ By ("bootstrapping test environment" )
105
+ testEnv = & envtest.Environment {
106
+ ControlPlaneStartTimeout : 1 * time .Minute ,
107
+ ControlPlaneStopTimeout : 1 * time .Minute ,
108
+ CRDDirectoryPaths : []string {filepath .Join (".." , "crd" )},
109
+ ErrorIfCRDPathMissing : true ,
110
+ }
111
+
112
+ cfg , err := testEnv .Start ()
113
+ Expect (err ).NotTo (HaveOccurred ())
114
+ Expect (cfg ).NotTo (BeNil ())
115
+
116
+ err = workspacev1 .AddToScheme (clientgoscheme .Scheme )
117
+ Expect (err ).NotTo (HaveOccurred ())
118
+
119
+ //+kubebuilder:scaffold:scheme
120
+
121
+ k8sClient , err = client .New (cfg , client.Options {Scheme : clientgoscheme .Scheme })
122
+ Expect (err ).NotTo (HaveOccurred ())
123
+ Expect (k8sClient ).NotTo (BeNil ())
124
+
125
+ k8sManager , err := ctrl .NewManager (cfg , ctrl.Options {
126
+ Scheme : clientgoscheme .Scheme ,
127
+ })
128
+ Expect (err ).ToNot (HaveOccurred ())
129
+ ctx , cancel = context .WithCancel (context .Background ())
130
+
131
+ By ("Creating default ws node" )
132
+ node := & corev1.Node {
133
+ ObjectMeta : metav1.ObjectMeta {
134
+ Name : NodeName ,
135
+ },
136
+ }
137
+ Expect (k8sClient .Create (ctx , node )).To (Succeed ())
138
+
139
+ By ("Setting up workspace controller" )
140
+ workspaceCtrl , err = NewWorkspaceCountController (k8sClient )
141
+ Expect (err ).NotTo (HaveOccurred ())
142
+ Expect (workspaceCtrl .SetupWithManager (k8sManager )).To (Succeed ())
143
+
144
+ _ = createNamespace (secretsNamespace )
145
+
146
+ By ("Starting the manager" )
147
+ go func () {
148
+ defer GinkgoRecover ()
149
+ err = k8sManager .Start (ctx )
150
+ Expect (err ).ToNot (HaveOccurred (), "failed to run manager" )
151
+ }()
152
+
153
+ By ("Waiting for controllers to be ready" )
154
+ DeferCleanup (cancel )
155
+
156
+ // Wait for controllers to be ready
157
+ Eventually (func () bool {
158
+ return k8sManager .GetCache ().WaitForCacheSync (ctx )
159
+ }, time .Second * 10 , time .Millisecond * 100 ).Should (BeTrue ())
160
+ })
161
+
162
+ var _ = AfterSuite (func () {
163
+ if cancel != nil {
164
+ cancel ()
165
+ }
166
+ By ("tearing down the test environment" )
167
+ err := testEnv .Stop ()
168
+ Expect (err ).NotTo (HaveOccurred ())
169
+ })
170
+
84
171
func newWorkspace (name , namespace , nodeName string , phase workspacev1.WorkspacePhase ) * workspacev1.Workspace {
85
172
GinkgoHelper ()
86
173
initializer := & csapi.WorkspaceInitializer {
@@ -153,85 +240,6 @@ func updateObjWithRetries[O client.Object](c client.Client, obj O, updateStatus
153
240
}, timeout , interval ).Should (Succeed ())
154
241
}
155
242
156
- const secretsNamespace = "workspace-secrets"
157
-
158
- var (
159
- k8sClient client.Client
160
- testEnv * envtest.Environment
161
- mock_ctrl * gomock.Controller
162
- ctx context.Context
163
- cancel context.CancelFunc
164
- workspaceCtrl * WorkspaceCountController
165
- NodeName = "cool-ws-node"
166
- )
167
-
168
- func TestAPIs (t * testing.T ) {
169
- mock_ctrl = gomock .NewController (t )
170
- RegisterFailHandler (Fail )
171
- RunSpecs (t , "Controller Suite" )
172
- }
173
-
174
- var _ = BeforeSuite (func () {
175
- logf .SetLogger (zap .New (zap .WriteTo (GinkgoWriter ), zap .UseDevMode (true )))
176
-
177
- By ("bootstrapping test environment" )
178
- testEnv = & envtest.Environment {
179
- ControlPlaneStartTimeout : 1 * time .Minute ,
180
- ControlPlaneStopTimeout : 1 * time .Minute ,
181
- CRDDirectoryPaths : []string {filepath .Join (".." , "crd" )},
182
- ErrorIfCRDPathMissing : true ,
183
- }
184
-
185
- cfg , err := testEnv .Start ()
186
- Expect (err ).NotTo (HaveOccurred ())
187
- Expect (cfg ).NotTo (BeNil ())
188
-
189
- err = workspacev1 .AddToScheme (clientgoscheme .Scheme )
190
- Expect (err ).NotTo (HaveOccurred ())
191
-
192
- //+kubebuilder:scaffold:scheme
193
-
194
- k8sClient , err = client .New (cfg , client.Options {Scheme : clientgoscheme .Scheme })
195
- Expect (err ).NotTo (HaveOccurred ())
196
- Expect (k8sClient ).NotTo (BeNil ())
197
-
198
- k8sManager , err := ctrl .NewManager (cfg , ctrl.Options {
199
- Scheme : clientgoscheme .Scheme ,
200
- })
201
- Expect (err ).ToNot (HaveOccurred ())
202
- ctx , cancel = context .WithCancel (context .Background ())
203
-
204
- By ("Creating default ws node" )
205
- node := & corev1.Node {
206
- ObjectMeta : metav1.ObjectMeta {
207
- Name : NodeName ,
208
- },
209
- }
210
- Expect (k8sClient .Create (ctx , node )).To (Succeed ())
211
-
212
- By ("Setting up workspace controller" )
213
- workspaceCtrl , err = NewWorkspaceCountController (k8sClient )
214
- Expect (err ).NotTo (HaveOccurred ())
215
- Expect (workspaceCtrl .SetupWithManager (k8sManager )).To (Succeed ())
216
-
217
- _ = createNamespace (secretsNamespace )
218
-
219
- By ("Starting the manager" )
220
- go func () {
221
- defer GinkgoRecover ()
222
- err = k8sManager .Start (ctx )
223
- Expect (err ).ToNot (HaveOccurred (), "failed to run manager" )
224
- }()
225
-
226
- By ("Waiting for controllers to be ready" )
227
- DeferCleanup (cancel )
228
-
229
- // Wait for controllers to be ready
230
- Eventually (func () bool {
231
- return k8sManager .GetCache ().WaitForCacheSync (ctx )
232
- }, time .Second * 10 , time .Millisecond * 100 ).Should (BeTrue ())
233
- })
234
-
235
243
func createNamespace (name string ) * corev1.Namespace {
236
244
GinkgoHelper ()
237
245
@@ -244,12 +252,3 @@ func createNamespace(name string) *corev1.Namespace {
244
252
Expect (k8sClient .Create (ctx , namespace )).To (Succeed ())
245
253
return namespace
246
254
}
247
-
248
- var _ = AfterSuite (func () {
249
- if cancel != nil {
250
- cancel ()
251
- }
252
- By ("tearing down the test environment" )
253
- err := testEnv .Stop ()
254
- Expect (err ).NotTo (HaveOccurred ())
255
- })
0 commit comments