Skip to content

Commit dd79fe0

Browse files
committed
[Refactor] queue.Manager Factory for unit tests
1 parent 7859769 commit dd79fe0

23 files changed

+83
-55
lines changed

pkg/cache/queue/manager.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ type Manager struct {
138138
roleTracker *roletracker.RoleTracker
139139
}
140140

141+
// NewManager is a factory for cache.queue.Manager. For tests,
142+
// NewManagerForUnitTests or NewManagerForIntegrationTests should be
143+
// used.
141144
func NewManager(client client.Client, checker StatusChecker, options ...Option) *Manager {
142145
m := &Manager{
143146
clock: realClock,

pkg/cache/queue/manager_test.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func TestAddLocalQueueOrphans(t *testing.T) {
6363
utiltestingapi.MakeWorkload("f", "earth").Queue("foo").Finished().Obj(),
6464
utiltestingapi.MakeWorkload("a", "moon").Queue("foo").Obj(),
6565
)
66-
manager := NewManager(kClient, nil)
66+
manager := NewManagerForUnitTests(kClient, nil)
6767
q := utiltestingapi.MakeLocalQueue("foo", "earth").Obj()
6868
ctx, _ := utiltesting.ContextWithLog(t)
6969
if err := manager.AddLocalQueue(ctx, q); err != nil {
@@ -105,7 +105,7 @@ func TestAddClusterQueueOrphans(t *testing.T) {
105105
queues[0],
106106
queues[1],
107107
)
108-
manager := NewManager(kClient, nil)
108+
manager := NewManagerForUnitTests(kClient, nil)
109109
cq := utiltestingapi.MakeClusterQueue("cq").Obj()
110110
if err := manager.AddClusterQueue(ctx, cq); err != nil {
111111
t.Fatalf("Failed adding cluster queue %s: %v", cq.Name, err)
@@ -159,7 +159,7 @@ func TestUpdateClusterQueue(t *testing.T) {
159159
}
160160
// Setup.
161161
cl := utiltesting.NewFakeClient(utiltesting.MakeNamespace(defaultNamespace))
162-
manager := NewManager(cl, nil)
162+
manager := NewManagerForUnitTests(cl, nil)
163163
for _, cq := range clusterQueues {
164164
if err := manager.AddClusterQueue(ctx, cq); err != nil {
165165
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)
@@ -242,7 +242,7 @@ func TestRequeueWorkloadsCohortCycle(t *testing.T) {
242242
expectedAssigned := map[workload.Reference]queue.LocalQueueReference{defaultNamespace + "/a": defaultNamespace + "/foo"}
243243
// Setup.
244244
cl := utiltesting.NewFakeClient(utiltesting.MakeNamespace(defaultNamespace))
245-
manager := NewManager(cl, nil)
245+
manager := NewManagerForUnitTests(cl, nil)
246246
for _, cohort := range cohorts {
247247
manager.AddOrUpdateCohort(ctx, cohort)
248248
}
@@ -353,7 +353,7 @@ func TestQueueInadmissibleWorkloads(t *testing.T) {
353353
ctx := logr.NewContext(context.Background(), logger)
354354

355355
cl := utiltesting.NewFakeClient(utiltesting.MakeNamespace(defaultNamespace))
356-
manager := NewManager(cl, nil)
356+
manager := NewManagerForUnitTests(cl, nil)
357357

358358
for _, cohort := range tc.cohorts {
359359
manager.AddOrUpdateCohort(ctx, cohort)
@@ -401,7 +401,7 @@ func TestClusterQueueToActive(t *testing.T) {
401401
stoppedCq := utiltestingapi.MakeClusterQueue("cq1").Cohort("alpha").Condition(kueue.ClusterQueueActive, metav1.ConditionFalse, "ByTest", "by test").Obj()
402402
runningCq := utiltestingapi.MakeClusterQueue("cq1").Cohort("alpha").Condition(kueue.ClusterQueueActive, metav1.ConditionTrue, "ByTest", "by test").Obj()
403403
cl := utiltesting.NewFakeClient(utiltesting.MakeNamespace(defaultNamespace))
404-
manager := NewManager(cl, nil)
404+
manager := NewManagerForUnitTests(cl, nil)
405405

406406
wgCounterStart := sync.WaitGroup{}
407407
wgCounterStart.Add(1)
@@ -467,7 +467,7 @@ func TestUpdateLocalQueue(t *testing.T) {
467467
utiltestingapi.MakeWorkload("a", "").Queue("foo").Creation(now.Add(time.Second)).Obj(),
468468
utiltestingapi.MakeWorkload("b", "").Queue("bar").Creation(now).Obj(),
469469
}
470-
manager := NewManager(utiltesting.NewFakeClient(), nil)
470+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
471471
for _, cq := range clusterQueues {
472472
if err := manager.AddClusterQueue(ctx, cq); err != nil {
473473
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)
@@ -513,7 +513,7 @@ func TestDeleteLocalQueue(t *testing.T) {
513513
wl := utiltestingapi.MakeWorkload("a", "").Queue("foo").Obj()
514514

515515
cl := utiltesting.NewFakeClient(wl)
516-
manager := NewManager(cl, nil)
516+
manager := NewManagerForUnitTests(cl, nil)
517517

518518
if err := manager.AddClusterQueue(ctx, cq); err != nil {
519519
t.Fatalf("Could not create ClusterQueue: %v", err)
@@ -539,7 +539,7 @@ func TestDeleteLocalQueue(t *testing.T) {
539539
func TestAddWorkload(t *testing.T) {
540540
now := time.Now().Truncate(time.Second)
541541
ctx, log := utiltesting.ContextWithLog(t)
542-
manager := NewManager(utiltesting.NewFakeClient(), nil)
542+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
543543
cq := utiltestingapi.MakeClusterQueue("cq").Obj()
544544
if err := manager.AddClusterQueue(ctx, cq); err != nil {
545545
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)
@@ -621,7 +621,7 @@ func TestAddWorkload(t *testing.T) {
621621
}
622622
for _, tc := range cases {
623623
t.Run(tc.workload.Name, func(t *testing.T) {
624-
manager := NewManager(utiltesting.NewFakeClient(), nil)
624+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
625625
cq := utiltestingapi.MakeClusterQueue("cq").Obj()
626626
if err := manager.AddClusterQueue(ctx, cq); err != nil {
627627
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)
@@ -648,7 +648,7 @@ func TestAddWorkload(t *testing.T) {
648648

649649
func TestDeleteWorkload(t *testing.T) {
650650
ctx, log := utiltesting.ContextWithLog(t)
651-
manager := NewManager(utiltesting.NewFakeClient(), nil)
651+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
652652
cq := utiltestingapi.MakeClusterQueue("cq").Obj()
653653
if err := manager.AddClusterQueue(ctx, cq); err != nil {
654654
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)
@@ -699,7 +699,7 @@ func TestDeleteWorkload(t *testing.T) {
699699

700700
func TestDeleteAndForgetWorkload(t *testing.T) {
701701
ctx, log := utiltesting.ContextWithLog(t)
702-
manager := NewManager(utiltesting.NewFakeClient(), nil)
702+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
703703
cq := utiltestingapi.MakeClusterQueue("cq").Obj()
704704
if err := manager.AddClusterQueue(ctx, cq); err != nil {
705705
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)
@@ -796,7 +796,7 @@ func TestStatus(t *testing.T) {
796796
},
797797
}
798798

799-
manager := NewManager(utiltesting.NewFakeClient(), nil)
799+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
800800
for _, q := range queues {
801801
if err := manager.AddLocalQueue(ctx, &q); err != nil {
802802
t.Errorf("Failed adding queue: %s", err)
@@ -897,7 +897,7 @@ func TestRequeueWorkloadStrictFIFO(t *testing.T) {
897897
for _, tc := range cases {
898898
t.Run(tc.workload.Name, func(t *testing.T) {
899899
cl := utiltesting.NewFakeClient()
900-
manager := NewManager(cl, nil)
900+
manager := NewManagerForUnitTests(cl, nil)
901901
ctx, log := utiltesting.ContextWithLog(t)
902902
if err := manager.AddClusterQueue(ctx, cq); err != nil {
903903
t.Fatalf("Failed adding cluster queue %s: %v", cq.Name, err)
@@ -1083,7 +1083,7 @@ func TestUpdateWorkload(t *testing.T) {
10831083
for name, tc := range cases {
10841084
t.Run(name, func(t *testing.T) {
10851085
ctx, log := utiltesting.ContextWithLog(t)
1086-
manager := NewManager(utiltesting.NewFakeClient(), nil)
1086+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
10871087
for _, cq := range tc.clusterQueues {
10881088
if err := manager.AddClusterQueue(ctx, cq); err != nil {
10891089
t.Fatalf("Adding cluster queue %s: %v", cq.Name, err)
@@ -1218,7 +1218,7 @@ func TestHeads(t *testing.T) {
12181218
ctx, cancel := context.WithTimeout(ctx, headsTimeout)
12191219
defer cancel()
12201220
fakeC := &fakeStatusChecker{}
1221-
manager := NewManager(utiltesting.NewFakeClient(), fakeC)
1221+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), fakeC)
12221222
for _, cq := range clusterQueues {
12231223
if err := manager.AddClusterQueue(ctx, cq); err != nil {
12241224
t.Fatalf("Failed adding clusterQueue %s to manager: %v", cq.Name, err)
@@ -1467,7 +1467,7 @@ func TestHeadsAsync(t *testing.T) {
14671467
ctx, cancel := context.WithTimeout(ctx, headsTimeout)
14681468
defer cancel()
14691469
client := utiltesting.NewFakeClient(tc.initialObjs...)
1470-
manager := NewManager(client, nil)
1470+
manager := NewManagerForUnitTests(client, nil)
14711471
go manager.CleanUpOnContext(ctx)
14721472
tc.op(ctx, manager)
14731473
heads := manager.Heads(ctx)
@@ -1481,7 +1481,7 @@ func TestHeadsAsync(t *testing.T) {
14811481
// TestHeadsCancelled ensures that the Heads call returns when the context is closed.
14821482
func TestHeadsCancelled(t *testing.T) {
14831483
ctx, _ := utiltesting.ContextWithLog(t)
1484-
manager := NewManager(utiltesting.NewFakeClient(), nil)
1484+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
14851485
ctx, cancel := context.WithCancel(ctx)
14861486
go func() {
14871487
cancel()
@@ -1497,7 +1497,7 @@ func TestHeadsCancelled(t *testing.T) {
14971497
// stuck in cond.Wait due to a missed broadcast from CleanUpOnContext.
14981498
func TestHeadsCancelledNoLostWakeup(t *testing.T) {
14991499
ctx, _ := utiltesting.ContextWithLog(t)
1500-
manager := NewManager(utiltesting.NewFakeClient(), nil)
1500+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
15011501

15021502
const iterations = 50
15031503
for i := range iterations {
@@ -1584,7 +1584,7 @@ func TestGetPendingWorkloadsInfo(t *testing.T) {
15841584
utiltestingapi.MakeWorkload("b", "").Queue("foo").Creation(now.Add(time.Second)).Obj(),
15851585
}
15861586

1587-
manager := NewManager(utiltesting.NewFakeClient(), nil)
1587+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
15881588
for _, cq := range clusterQueues {
15891589
if err := manager.AddClusterQueue(ctx, cq); err != nil {
15901590
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)
@@ -1728,7 +1728,7 @@ func TestQueueSecondPassIfNeeded(t *testing.T) {
17281728
ctx, _ := utiltesting.ContextWithLog(t)
17291729

17301730
fakeClock := testingclock.NewFakeClock(now)
1731-
manager := NewManager(
1731+
manager := NewManagerForUnitTests(
17321732
utiltesting.NewFakeClient(),
17331733
nil,
17341734
WithClock(fakeClock),
@@ -1816,7 +1816,7 @@ func TestGetWorkloadFromCache(t *testing.T) {
18161816

18171817
for name, tc := range cases {
18181818
t.Run(name, func(t *testing.T) {
1819-
manager := NewManager(utiltesting.NewFakeClient(), nil)
1819+
manager := NewManagerForUnitTests(utiltesting.NewFakeClient(), nil)
18201820
for _, cq := range clusterQueues {
18211821
if err := manager.AddClusterQueue(ctx, cq); err != nil {
18221822
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)

pkg/cache/queue/test_util.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Copyright The Kubernetes Authors.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package queue
16+
17+
import "sigs.k8s.io/controller-runtime/pkg/client"
18+
19+
// NewManagerForUnitTests creates a new Manager for testing purposes.
20+
// This test manager, though exported, is not included in Kueue binary.
21+
// Note that this function is not found when running:
22+
// make build && go tool nm ./bin/manager | grep "NewManager"
23+
func NewManagerForUnitTests(client client.Client, checker StatusChecker, options ...Option) *Manager {
24+
return NewManager(client, checker, options...)
25+
}

pkg/controller/core/clusterqueue_controller_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ func TestUpdateCqStatusIfChanged(t *testing.T) {
207207
cl := utiltesting.NewClientBuilder().WithLists(defaultWls).WithObjects(lq, cq).WithStatusSubresource(lq, cq).
208208
Build()
209209
cqCache := schdcache.New(cl)
210-
qManager := qcache.NewManager(cl, cqCache)
210+
qManager := qcache.NewManagerForUnitTests(cl, cqCache)
211211
if tc.insertCqIntoCache {
212212
if err := cqCache.AddClusterQueue(ctx, cq); err != nil {
213213
t.Fatalf("Inserting clusterQueue in cache: %v", err)
@@ -271,7 +271,7 @@ func TestReconcileRemovesFinalizerWithFinishedWorkloads(t *testing.T) {
271271

272272
cl := utiltesting.NewClientBuilder().WithObjects(cq).Build()
273273
cqCache := schdcache.New(cl)
274-
qManager := qcache.NewManager(cl, cqCache)
274+
qManager := qcache.NewManagerForUnitTests(cl, cqCache)
275275
if err := cqCache.AddClusterQueue(ctx, cq); err != nil {
276276
t.Fatalf("Inserting clusterQueue in cache: %v", err)
277277
}

pkg/controller/core/cohort_controller_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func TestCohortReconcileCohortNotFoundDelete(t *testing.T) {
4040
cl := utiltesting.NewClientBuilder().Build()
4141
ctx, _ := utiltesting.ContextWithLog(t)
4242
cache := schdcache.New(cl)
43-
qManager := qcache.NewManager(cl, cache)
43+
qManager := qcache.NewManagerForUnitTests(cl, cache)
4444
reconciler := NewCohortReconciler(cl, cache, qManager)
4545

4646
cohort := utiltestingapi.MakeCohort("cohort").Obj()
@@ -75,7 +75,7 @@ func TestCohortReconcileCohortNotFoundIdempotentDelete(t *testing.T) {
7575
Build()
7676
ctx, _ := utiltesting.ContextWithLog(t)
7777
cache := schdcache.New(cl)
78-
qManager := qcache.NewManager(cl, cache)
78+
qManager := qcache.NewManagerForUnitTests(cl, cache)
7979
reconciler := NewCohortReconciler(cl, cache, qManager)
8080

8181
snapshot, err := cache.Snapshot(ctx)
@@ -112,7 +112,7 @@ func TestCohortReconcileCycleNoError(t *testing.T) {
112112
Build()
113113
ctx, _ := utiltesting.ContextWithLog(t)
114114
cache := schdcache.New(cl)
115-
qManager := qcache.NewManager(cl, cache)
115+
qManager := qcache.NewManagerForUnitTests(cl, cache)
116116
reconciler := NewCohortReconciler(cl, cache, qManager)
117117

118118
// no cycle when creating first cohort
@@ -157,7 +157,7 @@ func TestCohortReconcileErrorOtherThanNotFoundNotDeleted(t *testing.T) {
157157
cl := utiltesting.NewClientBuilder().WithInterceptorFuncs(funcs).Build()
158158

159159
cache := schdcache.New(cl)
160-
qManager := qcache.NewManager(cl, cache)
160+
qManager := qcache.NewManagerForUnitTests(cl, cache)
161161
reconciler := NewCohortReconciler(cl, cache, qManager)
162162
cohort := utiltestingapi.MakeCohort("cohort").Obj()
163163
_ = cache.AddOrUpdateCohort(cohort)
@@ -193,7 +193,7 @@ func TestCohortReconcileLifecycle(t *testing.T) {
193193
).Obj()
194194
cl := utiltesting.NewClientBuilder().WithObjects(cohort).WithStatusSubresource(&kueue.Cohort{}).Build()
195195
cache := schdcache.New(cl)
196-
qManager := qcache.NewManager(cl, cache)
196+
qManager := qcache.NewManagerForUnitTests(cl, cache)
197197
reconciler := NewCohortReconciler(cl, cache, qManager)
198198

199199
// create
@@ -283,7 +283,7 @@ func TestCohortReconcilerFilters(t *testing.T) {
283283
cl := utiltesting.NewClientBuilder().
284284
Build()
285285
cache := schdcache.New(cl)
286-
qManager := qcache.NewManager(cl, cache)
286+
qManager := qcache.NewManagerForUnitTests(cl, cache)
287287
reconciler := NewCohortReconciler(cl, cache, qManager)
288288

289289
t.Run("delete returns true", func(t *testing.T) {

pkg/controller/core/localqueue_controller_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ func TestLocalQueueReconcile(t *testing.T) {
593593
for _, wl := range tc.runningWls {
594594
cqCache.AddOrUpdateWorkload(log, &wl)
595595
}
596-
qManager := qcache.NewManager(cl, cqCache)
596+
qManager := qcache.NewManagerForUnitTests(cl, cqCache)
597597
if err := qManager.AddClusterQueue(ctxWithLogger, tc.clusterQueue); err != nil {
598598
t.Fatalf("Unexpected error: %v", err)
599599
}

pkg/controller/core/workload_controller_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2589,7 +2589,7 @@ func TestReconcile(t *testing.T) {
25892589
recorder := &utiltesting.EventRecorder{}
25902590

25912591
cqCache := schdcache.New(cl)
2592-
qManager := qcache.NewManager(cl, cqCache)
2592+
qManager := qcache.NewManagerForUnitTests(cl, cqCache)
25932593
reconciler := NewWorkloadReconciler(cl, qManager, cqCache, recorder, tc.reconcilerOpts...)
25942594
// use a fake clock with jitter = 0 to be able to assert on the requeueAt.
25952595
reconciler.clock = fakeClock
@@ -2879,7 +2879,7 @@ func TestWorkloadDeletion(t *testing.T) {
28792879
cl := clientBuilder.Build()
28802880
recorder := &utiltesting.EventRecorder{}
28812881
cqCache := schdcache.New(cl)
2882-
qManager := qcache.NewManager(cl, cqCache)
2882+
qManager := qcache.NewManagerForUnitTests(cl, cqCache)
28832883

28842884
mockWatcher := mockWorkloadUpdateWatcher(qManager)
28852885

pkg/controller/jobframework/base_webhook_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func TestBaseWebhookDefault(t *testing.T) {
118118
)
119119
cl := clientBuilder.Build()
120120
cqCache := schdcache.New(cl)
121-
queueManager := qcache.NewManager(cl, cqCache)
121+
queueManager := qcache.NewManagerForUnitTests(cl, cqCache)
122122
if tc.defaultLqExist {
123123
if err := queueManager.AddLocalQueue(ctx, utiltestingapi.MakeLocalQueue("default", metav1.NamespaceDefault).
124124
ClusterQueue("cluster-queue").Obj()); err != nil {

pkg/controller/jobs/deployment/deployment_webhook_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ func TestDefault(t *testing.T) {
153153
builder := utiltesting.NewClientBuilder()
154154
client := builder.Build()
155155
cqCache := schdcache.New(client)
156-
queueManager := qcache.NewManager(client, cqCache)
156+
queueManager := qcache.NewManagerForUnitTests(client, cqCache)
157157
if tc.defaultLqExist {
158158
if err := queueManager.AddLocalQueue(ctx, utiltestingapi.MakeLocalQueue("default", "default").
159159
ClusterQueue("cluster-queue").

pkg/controller/jobs/job/job_webhook_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,7 @@ func TestDefault(t *testing.T) {
905905
WithRuntimeObjects(tc.objs...)
906906
cl := clientBuilder.Build()
907907
cqCache := schdcache.New(cl)
908-
queueManager := qcache.NewManager(cl, cqCache)
908+
queueManager := qcache.NewManagerForUnitTests(cl, cqCache)
909909
if tc.defaultLqExist {
910910
if err := queueManager.AddLocalQueue(ctx, utiltestingapi.MakeLocalQueue("default", "default").
911911
ClusterQueue("cluster-queue").Obj()); err != nil {

0 commit comments

Comments
 (0)