This is an automated email from the ASF dual-hosted git repository.

chenyulin0719 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 7391aeb5 [YUNIKORN-2998] tryNodesNoReserve is not tested (#1008)
7391aeb5 is described below

commit 7391aeb5d2ba5e613a5ecf9c1d4bce547ea1be71
Author: Michael <[email protected]>
AuthorDate: Fri Jan 17 11:52:52 2025 +0000

    [YUNIKORN-2998] tryNodesNoReserve is not tested (#1008)
    
    Closes: #1008
    
    Signed-off-by: Yu-Lin Chen <[email protected]>
---
 pkg/scheduler/objects/application_test.go | 54 +++++++++++++++++++++++++++++++
 pkg/scheduler/objects/utilities_test.go   |  3 ++
 2 files changed, 57 insertions(+)

diff --git a/pkg/scheduler/objects/application_test.go 
b/pkg/scheduler/objects/application_test.go
index 767346d8..62c507ed 100644
--- a/pkg/scheduler/objects/application_test.go
+++ b/pkg/scheduler/objects/application_test.go
@@ -3596,3 +3596,57 @@ func TestTryPlaceHolderAllocateDifferentNodes(t 
*testing.T) {
        // placeholder data remains unchanged until RM confirms the replacement
        assertPlaceholderData(t, app, tg1, 1, 0, 0, res)
 }
+
+func TestTryNodesNoReserve(t *testing.T) {
+       app := newApplication(appID0, "default", "root.default")
+
+       queue, err := createRootQueue(map[string]string{"first": "5"})
+       assert.NilError(t, err, "queue create failed")
+       app.queue = queue
+
+       res := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5})
+       ask := newAllocationAsk(aKey, appID0, res)
+       err = app.AddAllocationAsk(ask)
+       assert.NilError(t, err, "ask should have been added to app")
+
+       // reserve the allocation on node1
+       node1 := newNode(nodeID1, map[string]resources.Quantity{"first": 5})
+       err = app.Reserve(node1, ask)
+       assert.NilError(t, err, "reservation failed")
+
+       // case 1: node is the reserved node
+       iterator := getNodeIteratorFn(node1)
+       result := app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
+       assert.Assert(t, result == nil, "result should be nil since node1 is 
the reserved node")
+
+       // case 2: node is unschedulable
+       node2 := newNode(nodeID2, map[string]resources.Quantity{"first": 5})
+       node2.schedulable = false
+       iterator = getNodeIteratorFn(node2)
+       result = app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
+       assert.Assert(t, result == nil, "result should be nil since node2 is 
unschedulable")
+
+       // case 3: node does not have enough resources
+       node3 := newNode(nodeID3, map[string]resources.Quantity{"first": 1})
+       iterator = getNodeIteratorFn(node3)
+       result = app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
+       assert.Assert(t, result == nil, "result should be nil since node3 does 
not have enough resources")
+
+       // case 4: node fails predicate
+       mockPlugin := mockCommon.NewPredicatePlugin(false, 
map[string]int{nodeID4: 1})
+       plugins.RegisterSchedulerPlugin(mockPlugin)
+       defer plugins.UnregisterSchedulerPlugins()
+       node4 := newNode(nodeID4, map[string]resources.Quantity{"first": 5})
+       iterator = getNodeIteratorFn(node4)
+       result = app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
+       assert.Assert(t, result == nil, "result should be nil since node4 fails 
predicate")
+
+       // case 5: success
+       node5 := newNode(nodeID5, map[string]resources.Quantity{"first": 5})
+       iterator = getNodeIteratorFn(node5)
+       result = app.tryNodesNoReserve(ask, iterator(), node1.NodeID)
+       assert.Assert(t, result != nil, "result should not be nil")
+       assert.Equal(t, node5.NodeID, result.NodeID, "result should be on 
node5")
+       assert.Equal(t, result.ResultType, AllocatedReserved, "result type 
should be AllocatedReserved")
+       assert.Equal(t, result.ReservedNodeID, node1.NodeID, "reserved node 
should be node1")
+}
diff --git a/pkg/scheduler/objects/utilities_test.go 
b/pkg/scheduler/objects/utilities_test.go
index 285aa5bb..f9b687b1 100644
--- a/pkg/scheduler/objects/utilities_test.go
+++ b/pkg/scheduler/objects/utilities_test.go
@@ -48,6 +48,9 @@ const (
        aKey3         = "alloc-3"
        nodeID1       = "node-1"
        nodeID2       = "node-2"
+       nodeID3       = "node-3"
+       nodeID4       = "node-4"
+       nodeID5       = "node-5"
        instType1     = "itype-1"
        testgroup     = "testgroup"
        tg1           = "tg-1"


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to