diff --git a/pkg/queue/cluster_queue_best_effort_fifo_test.go b/pkg/queue/cluster_queue_best_effort_fifo_test.go index 4ef842fda6..8e5b45cec7 100644 --- a/pkg/queue/cluster_queue_best_effort_fifo_test.go +++ b/pkg/queue/cluster_queue_best_effort_fifo_test.go @@ -135,3 +135,43 @@ func TestClusterQueueBestEffortFIFO(t *testing.T) { }) } } + +func TestDeleteFromQueue(t *testing.T) { + cq := utiltesting.MakeClusterQueue("cq").Obj() + cqImpl, err := newClusterQueueBestEffortFIFO(cq) + if err != nil { + t.Fatalf("Failed creating ClusterQueue %v", err) + } + q := utiltesting.MakeQueue("foo", "").ClusterQueue(cq.Name).Obj() + qImpl := newQueue(q) + wl1 := utiltesting.MakeWorkload("wl1", "").Queue(q.Name).Obj() + wl2 := utiltesting.MakeWorkload("wl2", "").Queue(q.Name).Obj() + wl3 := utiltesting.MakeWorkload("wl3", "").Queue(q.Name).Obj() + wl4 := utiltesting.MakeWorkload("wl4", "").Queue(q.Name).Obj() + admissibleworkloads := []*kueue.Workload{wl1, wl2} + inadmissibleWorkloads := []*kueue.Workload{wl3, wl4} + + for _, w := range admissibleworkloads { + cqImpl.PushOrUpdate(w) + qImpl.AddOrUpdate(w) + } + + for _, w := range inadmissibleWorkloads { + cqImpl.RequeueIfNotPresent(workload.NewInfo(w), false) + qImpl.AddOrUpdate(w) + } + + wantPending := len(admissibleworkloads) + len(inadmissibleWorkloads) + if pending := cqImpl.Pending(); pending != int32(wantPending) { + t.Errorf("clusterQueue's workload number not right, want %v, got %v", wantPending, pending) + } + fifo := cqImpl.(*ClusterQueueBestEffortFIFO) + if len(fifo.inadmissibleWorkloads) != len(inadmissibleWorkloads) { + t.Errorf("clusterQueue's workload number in inadmissibleWorkloads not right, want %v, got %v", len(inadmissibleWorkloads), len(fifo.inadmissibleWorkloads)) + } + + cqImpl.DeleteFromQueue(qImpl) + if cqImpl.Pending() != 0 { + t.Error("clusterQueue should be empty") + } +} diff --git a/pkg/queue/manager_test.go b/pkg/queue/manager_test.go index 2e519fff6d..acb4c4bfba 100644 --- a/pkg/queue/manager_test.go +++ b/pkg/queue/manager_test.go @@ -160,63 +160,6 @@ func TestUpdateQueue(t *testing.T) { } } -func TestDeleteFromQueue(t *testing.T) { - now := time.Now() - cq := utiltesting.MakeClusterQueue("cq").Obj() - q := utiltesting.MakeQueue("foo", "").ClusterQueue(cq.Name).Obj() - wl1 := utiltesting.MakeWorkload("wl1", "").Queue(q.Name).Creation(now.Add(time.Hour)).Obj() - wl2 := utiltesting.MakeWorkload("wl2", "").Queue(q.Name).Creation(now.Add(time.Hour)).Obj() - wl3 := utiltesting.MakeWorkload("wl3", "").Queue(q.Name).Creation(now).Obj() - wl4 := utiltesting.MakeWorkload("wl4", "").Queue(q.Name).Creation(now).Obj() - workloads := []*kueue.Workload{wl1, wl2} - inadmissibleWorkloads := []*kueue.Workload{wl3, wl4} - - scheme := runtime.NewScheme() - if err := kueue.AddToScheme(scheme); err != nil { - t.Fatalf("Failed adding kueue scheme: %s", err) - } - ctx := context.Background() - manager := NewManager(fake.NewClientBuilder().WithScheme(scheme).WithObjects(cq, q, wl1, wl2, wl3, wl4).Build()) - - if err := manager.AddClusterQueue(ctx, cq); err != nil { - t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err) - } - cqImpl, exists := manager.clusterQueues[cq.Name] - if !exists { - t.Errorf("clusterQueue %s not exist", cq.Name) - } - - if err := manager.AddQueue(ctx, q); err != nil { - t.Fatalf("Failed adding queue %s: %v", q.Name, err) - } - qImpl, exists := manager.queues[Key(q)] - if !exists { - t.Errorf("queue %s not exist", q.Name) - } - - for _, w := range workloads { - manager.AddOrUpdateWorkload(w) - } - // simulate scheduling inadmissibleWorkloads - for i := 0; i < len(inadmissibleWorkloads); i++ { - cqImpl.Pop() - } - for _, w := range inadmissibleWorkloads { - manager.RequeueWorkload(ctx, workload.NewInfo(w), false) - } - if pending := cqImpl.Pending(); pending != 4 { - t.Errorf("clusterQueue's workload number not right, want %v, got %v", 4, pending) - } - if gotWorkloads, _ := cqImpl.Dump(); len(gotWorkloads) != 2 { - t.Errorf("clusterQueue's workload number in heap not right, want %v, got %v", 2, len(gotWorkloads)) - } - - cqImpl.DeleteFromQueue(qImpl) - if cqImpl.Pending() != 0 { - t.Error("clusterQueue should be empty") - } -} - func TestAddWorkload(t *testing.T) { scheme := runtime.NewScheme() if err := kueue.AddToScheme(scheme); err != nil {