Skip to content

Commit 11d73d5

Browse files
committed
Improve test file structure
1 parent 77213b7 commit 11d73d5

File tree

1 file changed

+87
-88
lines changed

1 file changed

+87
-88
lines changed

components/node-labeler/cmd/run_test.go

Lines changed: 87 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,25 @@ const (
3535
duration = time.Second * 2
3636
interval = time.Millisecond * 250
3737
workspaceNamespace = "default"
38+
secretsNamespace = "workspace-secrets"
3839
)
3940

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+
4057
var _ = Describe("WorkspaceCountController", func() {
4158
It("should remove scale-down-disabled when last workspace is removed", func() {
4259
ws1 := newWorkspace(uuid.NewString(), workspaceNamespace, NodeName, workspacev1.WorkspacePhaseRunning)
@@ -81,6 +98,76 @@ var _ = Describe("WorkspaceCountController", func() {
8198
})
8299
})
83100

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+
84171
func newWorkspace(name, namespace, nodeName string, phase workspacev1.WorkspacePhase) *workspacev1.Workspace {
85172
GinkgoHelper()
86173
initializer := &csapi.WorkspaceInitializer{
@@ -153,85 +240,6 @@ func updateObjWithRetries[O client.Object](c client.Client, obj O, updateStatus
153240
}, timeout, interval).Should(Succeed())
154241
}
155242

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-
235243
func createNamespace(name string) *corev1.Namespace {
236244
GinkgoHelper()
237245

@@ -244,12 +252,3 @@ func createNamespace(name string) *corev1.Namespace {
244252
Expect(k8sClient.Create(ctx, namespace)).To(Succeed())
245253
return namespace
246254
}
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

Comments
 (0)