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

manirajv06 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 c17e1ba6 [YUNIKORN-3320] Add test for required node reservation not 
cancelled on timeout (#1113)
c17e1ba6 is described below

commit c17e1ba60d3fdc813ebd7366181c2656e7494ae3
Author: kaijaytu <[email protected]>
AuthorDate: Tue Aug 4 16:27:26 2026 +0530

    [YUNIKORN-3320] Add test for required node reservation not cancelled on 
timeout (#1113)
    
    Closes: #1113
    
    Signed-off-by: mani <[email protected]>
---
 pkg/scheduler/objects/application_test.go | 41 +++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/pkg/scheduler/objects/application_test.go 
b/pkg/scheduler/objects/application_test.go
index 0f237df6..70db068f 100644
--- a/pkg/scheduler/objects/application_test.go
+++ b/pkg/scheduler/objects/application_test.go
@@ -3340,6 +3340,47 @@ func TestTryAllocateWithReservedHeadRoomChecking(t 
*testing.T) {
        // reset wait timeout
 }
 
+// TestTryReservedAllocateRequiredNodeNotCancelledOnTimeout verifies that 
required node reservations
+// are not cancelled even if they exceed the reservationWaitTimeout.
+func TestTryReservedAllocateRequiredNodeNotCancelledOnTimeout(t *testing.T) {
+       setupUGM()
+
+       res, err := resources.NewResourceFromConf(map[string]string{"memory": 
"2G"})
+       assert.NilError(t, err, "failed to create basic resource")
+       headRoom, err := 
resources.NewResourceFromConf(map[string]string{"memory": "1G"})
+       assert.NilError(t, err, "failed to create basic resource")
+
+       app := newApplication(appID1, "default", "root")
+       ask := newAllocationAsk(aKey, appID1, res)
+       ask.SetRequiredNode(nodeID1)
+       queue, err := createRootQueue(map[string]string{"memory": "1G"})
+       assert.NilError(t, err, "queue create failed")
+       app.queue = queue
+       err = app.AddAllocationAsk(ask)
+       assert.NilError(t, err, "ask should have been added to app")
+
+       node1 := newNodeRes(nodeID1, res)
+       node2 := newNodeRes(nodeID2, res)
+       // reserve on the required node
+       err = app.Reserve(node1, ask)
+       assert.NilError(t, err, "reservation should not have failed")
+
+       iter := getNodeIteratorFn(node1, node2)
+
+       // headroom is insufficient, but reservation should NOT be cancelled 
(required node)
+       result := app.tryReservedAllocate(headRoom, iter)
+       assert.Assert(t, result == nil, "result is expected to be nil due to 
insufficient headroom")
+       assert.Equal(t, len(app.reservations), 1, "required node reservation 
should not be cancelled")
+
+       // set the reservation time to well beyond the timeout
+       app.reservations[ask.allocationKey].createTime = time.Now().Add(-90 * 
time.Minute)
+
+       // even after timeout, required node reservation must NOT be cancelled
+       result = app.tryReservedAllocate(headRoom, iter)
+       assert.Assert(t, result == nil, "result is expected to be nil due to 
insufficient headroom")
+       assert.Equal(t, len(app.reservations), 1, "required node reservation 
must not be cancelled on timeout")
+}
+
 func TestUpdateRunnableStatus(t *testing.T) {
        app := newApplication(appID0, "default", "root.unknown")
        assert.Assert(t, app.runnableInQueue)


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

Reply via email to