Skip to content

Commit 7391aeb

Browse files
Michaelchenyulin0719
Michael
authored andcommitted
[YUNIKORN-2998] tryNodesNoReserve is not tested (#1008)
Closes: #1008 Signed-off-by: Yu-Lin Chen <[email protected]>
1 parent 29e1596 commit 7391aeb

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

pkg/scheduler/objects/application_test.go

+54
Original file line numberDiff line numberDiff line change
@@ -3596,3 +3596,57 @@ func TestTryPlaceHolderAllocateDifferentNodes(t *testing.T) {
35963596
// placeholder data remains unchanged until RM confirms the replacement
35973597
assertPlaceholderData(t, app, tg1, 1, 0, 0, res)
35983598
}
3599+
3600+
func TestTryNodesNoReserve(t *testing.T) {
3601+
app := newApplication(appID0, "default", "root.default")
3602+
3603+
queue, err := createRootQueue(map[string]string{"first": "5"})
3604+
assert.NilError(t, err, "queue create failed")
3605+
app.queue = queue
3606+
3607+
res := resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5})
3608+
ask := newAllocationAsk(aKey, appID0, res)
3609+
err = app.AddAllocationAsk(ask)
3610+
assert.NilError(t, err, "ask should have been added to app")
3611+
3612+
// reserve the allocation on node1
3613+
node1 := newNode(nodeID1, map[string]resources.Quantity{"first": 5})
3614+
err = app.Reserve(node1, ask)
3615+
assert.NilError(t, err, "reservation failed")
3616+
3617+
// case 1: node is the reserved node
3618+
iterator := getNodeIteratorFn(node1)
3619+
result := app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
3620+
assert.Assert(t, result == nil, "result should be nil since node1 is the reserved node")
3621+
3622+
// case 2: node is unschedulable
3623+
node2 := newNode(nodeID2, map[string]resources.Quantity{"first": 5})
3624+
node2.schedulable = false
3625+
iterator = getNodeIteratorFn(node2)
3626+
result = app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
3627+
assert.Assert(t, result == nil, "result should be nil since node2 is unschedulable")
3628+
3629+
// case 3: node does not have enough resources
3630+
node3 := newNode(nodeID3, map[string]resources.Quantity{"first": 1})
3631+
iterator = getNodeIteratorFn(node3)
3632+
result = app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
3633+
assert.Assert(t, result == nil, "result should be nil since node3 does not have enough resources")
3634+
3635+
// case 4: node fails predicate
3636+
mockPlugin := mockCommon.NewPredicatePlugin(false, map[string]int{nodeID4: 1})
3637+
plugins.RegisterSchedulerPlugin(mockPlugin)
3638+
defer plugins.UnregisterSchedulerPlugins()
3639+
node4 := newNode(nodeID4, map[string]resources.Quantity{"first": 5})
3640+
iterator = getNodeIteratorFn(node4)
3641+
result = app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
3642+
assert.Assert(t, result == nil, "result should be nil since node4 fails predicate")
3643+
3644+
// case 5: success
3645+
node5 := newNode(nodeID5, map[string]resources.Quantity{"first": 5})
3646+
iterator = getNodeIteratorFn(node5)
3647+
result = app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
3648+
assert.Assert(t, result != nil, "result should not be nil")
3649+
assert.Equal(t, node5.NodeID, result.NodeID, "result should be on node5")
3650+
assert.Equal(t, result.ResultType, AllocatedReserved, "result type should be AllocatedReserved")
3651+
assert.Equal(t, result.ReservedNodeID, node1.NodeID, "reserved node should be node1")
3652+
}

pkg/scheduler/objects/utilities_test.go

+3
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ const (
4848
aKey3 = "alloc-3"
4949
nodeID1 = "node-1"
5050
nodeID2 = "node-2"
51+
nodeID3 = "node-3"
52+
nodeID4 = "node-4"
53+
nodeID5 = "node-5"
5154
instType1 = "itype-1"
5255
testgroup = "testgroup"
5356
tg1 = "tg-1"

0 commit comments

Comments
 (0)