kousei47747 commented on code in PR #1004:
URL: https://github.com/apache/yunikorn-core/pull/1004#discussion_r1891536990


##########
pkg/scheduler/objects/application_test.go:
##########
@@ -3438,3 +3438,130 @@ func TestApplication_canAllocationReserve(t *testing.T) 
{
                })
        }
 }
+
+func TestTryPlaceHolderAllocateNoPlaceHolders(t *testing.T) {
+       const tg1 = "tg-1"
+
+       node := newNode(nodeID1, map[string]resources.Quantity{"first": 5})
+       nodeMap := map[string]*Node{nodeID1: node}
+       iterator := getNodeIteratorFn(node)
+       getNode := func(nodeID string) *Node {
+               return nodeMap[nodeID]
+       }
+
+       app := newApplication(appID0, "default", "root.default")
+
+       queue, err := createRootQueue(nil)
+       assert.NilError(t, err, "queue create failed")
+       app.queue = queue
+
+       res := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5})
+       ask := newAllocationAsk(aKey, appID0, res)
+       ask.taskGroupName = tg1
+       err = app.AddAllocationAsk(ask)
+       assert.NilError(t, err, "ask should have been added to app")
+
+       result := app.tryPlaceholderAllocate(iterator, getNode)
+       assert.Assert(t, result == nil, "result should be nil since there are 
no placeholders to allocate")
+}
+
+func TestTryPlaceHolderAllocateSmallerRequest(t *testing.T) {
+       const tg1 = "tg-1"
+
+       node := newNode(nodeID1, map[string]resources.Quantity{"first": 5})
+       nodeMap := map[string]*Node{nodeID1: node}
+       iterator := getNodeIteratorFn(node)
+       getNode := func(nodeID string) *Node {
+               return nodeMap[nodeID]
+       }
+
+       app := newApplication(appID0, "default", "root.default")
+
+       queue, err := createRootQueue(nil)
+       assert.NilError(t, err, "queue create failed")
+       app.queue = queue
+
+       res := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5})
+       ph := newPlaceholderAlloc(appID0, nodeID1, res, tg1)
+       app.AddAllocation(ph)
+       app.addPlaceholderData(ph)
+       assertPlaceholderData(t, app, tg1, 1, 0, 0, res)
+
+       // allocation request is smaller than placeholder
+       smallerRes := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 1})
+       ask := newAllocationAsk(aKey, appID0, smallerRes)
+       ask.taskGroupName = tg1
+       err = app.AddAllocationAsk(ask)
+       assert.NilError(t, err, "ask should have been added to app")
+
+       result := app.tryPlaceholderAllocate(iterator, getNode)
+       assert.Assert(t, result != nil, "result should not be nil since the ask 
is smaller than the placeholder")

Review Comment:
   Thanks for reviewing! I've added some checks:
   
   - ResultType, NodeId and Request of the result
   - links between real allocation and placeholder
   - placeholder data should remain unchanged
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to