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

ccondit 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 597983cc [YUNIKORN-2824] Refactor preemption_test.go (#985)
597983cc is described below

commit 597983cc72c9f1b5f69f735d300e01bdf85c2a2e
Author: YUN SUN <[email protected]>
AuthorDate: Thu Oct 24 12:10:57 2024 -0500

    [YUNIKORN-2824] Refactor preemption_test.go (#985)
    
    Closes: #985
    
    Signed-off-by: Craig Condit <[email protected]>
---
 pkg/scheduler/objects/preemption_test.go | 371 ++++++++++++-------------------
 1 file changed, 148 insertions(+), 223 deletions(-)

diff --git a/pkg/scheduler/objects/preemption_test.go 
b/pkg/scheduler/objects/preemption_test.go
index 62a05bfd..b2fce675 100644
--- a/pkg/scheduler/objects/preemption_test.go
+++ b/pkg/scheduler/objects/preemption_test.go
@@ -19,6 +19,7 @@
 package objects
 
 import (
+       "fmt"
        "strconv"
        "testing"
        "time"
@@ -34,6 +35,75 @@ import (
 
 const alloc = "alloc"
 
+func creatApp1(
+       childQ1 *Queue,
+       node1 *Node,
+       node2 *Node,
+       app1Rec map[string]resources.Quantity,
+) (*Allocation, *Allocation, error) {
+       app1 := newApplication(appID1, "default", "root.parent.child1")
+       app1.SetQueue(childQ1)
+       childQ1.applications[appID1] = app1
+
+       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(app1Rec))
+       ask1.createTime = time.Now().Add(-1 * time.Minute)
+       if err := app1.AddAllocationAsk(ask1); err != nil {
+               return nil, nil, err
+       }
+       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(app1Rec))
+       ask2.createTime = time.Now()
+       if err := app1.AddAllocationAsk(ask2); err != nil {
+               return nil, nil, err
+       }
+
+       alloc1 := newAllocationWithKey("alloc1", appID1, nodeID1, 
resources.NewResourceFromMap(app1Rec))
+       alloc1.createTime = ask1.createTime
+       app1.AddAllocation(alloc1)
+       if !node1.TryAddAllocation(alloc1) {
+               return nil, nil, fmt.Errorf("node alloc1 failed")
+       }
+       var alloc2 *Allocation
+       if node2 != nil {
+               alloc2 = newAllocationWithKey("alloc2", appID1, nodeID2, 
resources.NewResourceFromMap(app1Rec))
+               alloc2.createTime = ask2.createTime
+               app1.AddAllocation(alloc2)
+               if !node2.TryAddAllocation(alloc2) {
+                       return nil, nil, fmt.Errorf("node alloc2 failed")
+               }
+       } else {
+               alloc2 = newAllocationWithKey("alloc2", appID1, nodeID1, 
resources.NewResourceFromMap(app1Rec))
+               alloc2.createTime = ask2.createTime
+               if !node1.TryAddAllocation(alloc2) {
+                       return nil, nil, fmt.Errorf("node alloc2 failed")
+               }
+       }
+
+       if err := childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()); 
err != nil {
+               return nil, nil, err
+       }
+       if err := childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()); 
err != nil {
+               return nil, nil, err
+       }
+
+       return alloc1, alloc2, nil
+}
+
+func creatApp2(
+       childQ2 *Queue,
+       app2Res map[string]resources.Quantity,
+       allocID string,
+) (*Application, *Allocation, error) {
+       app2 := newApplication(appID2, "default", "root.parent.child2")
+       app2.SetQueue(childQ2)
+       childQ2.applications[appID2] = app2
+       ask3 := newAllocationAsk(allocID, appID2, 
resources.NewResourceFromMap(app2Res))
+       if err := app2.AddAllocationAsk(ask3); err != nil {
+               return nil, nil, err
+       }
+
+       return app2, ask3, nil
+}
+
 func TestCheckPreconditions(t *testing.T) {
        node := newNode("node1", map[string]resources.Quantity{"first": 5})
        iterator := getNodeIteratorFn(node)
@@ -109,25 +179,15 @@ func TestCheckPreemptionQueueGuarantees(t *testing.T) {
        assert.NilError(t, err)
        childQ2, err := createManagedQueueGuaranteed(parentQ, "child2", false, 
map[string]string{"first": "10"}, map[string]string{"first": "5"})
        assert.NilError(t, err)
-       app1 := newApplication(appID1, "default", "root.parent.child1")
-       app1.SetQueue(childQ1)
-       childQ1.applications[appID1] = app1
-       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       assert.NilError(t, app1.AddAllocationAsk(ask1))
 
-       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       assert.NilError(t, app1.AddAllocationAsk(ask2))
-       alloc1 := newAllocationWithKey("alloc1", appID1, "node1", 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       app1.AddAllocation(alloc1)
-       alloc2 := newAllocationWithKey("alloc2", appID1, "node1", 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       app1.AddAllocation(alloc2)
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+       alloc1, alloc2, err := creatApp1(childQ1, node, nil, 
map[string]resources.Quantity{"first": 5})
+       assert.NilError(t, err)
+       assert.Assert(t, alloc1 != nil, "alloc1 should not be nil")
+       assert.Assert(t, alloc2 != nil, "alloc2 should not be nil")
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 5}, "alloc3")
+       assert.NilError(t, err)
+
        childQ2.incPendingResource(ask3.GetAllocatedResource())
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
@@ -167,26 +227,15 @@ func 
TestCheckPreemptionQueueGuaranteesWithNoGuaranteedResources(t *testing.T) {
                        assert.NilError(t, err)
                        childQ2, err := createManagedQueueGuaranteed(parentQ, 
"child2", false, map[string]string{}, tt.childGuaranteed)
                        assert.NilError(t, err)
-                       app1 := newApplication(appID1, "default", 
"root.parent.child1")
-                       app1.SetQueue(childQ1)
-                       childQ1.applications[appID1] = app1
-                       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-                       assert.NilError(t, app1.AddAllocationAsk(ask1))
-                       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-                       assert.NilError(t, app1.AddAllocationAsk(ask2))
-                       alloc1 := newAllocationWithKey("alloc1", appID1, 
"node1", resources.NewResourceFromMap(map[string]resources.Quantity{"first": 
5}))
-                       alloc1.createTime = ask1.createTime
-                       app1.AddAllocation(alloc1)
-                       alloc2 := newAllocationWithKey("alloc2", appID1, 
"node1", resources.NewResourceFromMap(map[string]resources.Quantity{"first": 
5}))
-                       alloc2.createTime = ask2.createTime
-                       app1.AddAllocation(alloc2)
-                       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-                       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-                       app2 := newApplication(appID2, "default", 
"root.parent.child2")
-                       app2.SetQueue(childQ2)
-                       childQ2.applications[appID2] = app2
-                       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-                       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+                       alloc1, alloc2, err := creatApp1(childQ1, node, nil, 
map[string]resources.Quantity{"first": 5})
+                       assert.NilError(t, err)
+                       assert.Assert(t, alloc1 != nil, "alloc1 should not be 
nil")
+                       assert.Assert(t, alloc2 != nil, "alloc2 should not be 
nil")
+
+                       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 5}, "alloc3")
+                       assert.NilError(t, err)
+
                        childQ2.incPendingResource(ask3.GetAllocatedResource())
                        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10})
                        preemptor := NewPreemptor(app2, headRoom, 
30*time.Second, ask3, iterator(), false)
@@ -205,7 +254,7 @@ func 
TestCheckPreemptionQueueGuaranteesWithNoGuaranteedResources(t *testing.T) {
 }
 
 func TestTryPreemption(t *testing.T) {
-       node := newNode("node1", map[string]resources.Quantity{"first": 10, 
"pods": 5})
+       node := newNode(nodeID1, map[string]resources.Quantity{"first": 10, 
"pods": 5})
        iterator := getNodeIteratorFn(node)
        rootQ, err := createRootQueue(map[string]string{"first": "20", "pods": 
"5"})
        assert.NilError(t, err)
@@ -215,36 +264,20 @@ func TestTryPreemption(t *testing.T) {
        assert.NilError(t, err)
        childQ2, err := createManagedQueueGuaranteed(parentQ, "child2", false, 
map[string]string{"first": "10"}, map[string]string{"first": "5"})
        assert.NilError(t, err)
-       app1 := newApplication(appID1, "default", "root.parent.child1")
-       app1.SetQueue(childQ1)
-       childQ1.applications[appID1] = app1
-       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       ask1.createTime = time.Now().Add(-1 * time.Minute)
-       assert.NilError(t, app1.AddAllocationAsk(ask1))
-       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       ask2.createTime = time.Now()
-       assert.NilError(t, app1.AddAllocationAsk(ask2))
-       alloc1 := newAllocationWithKey("alloc1", appID1, "node1", 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       alloc1.createTime = ask1.createTime
-       app1.AddAllocation(alloc1)
-       assert.Check(t, node.TryAddAllocation(alloc1), "node alloc1 failed")
-       alloc2 := newAllocationWithKey("alloc2", appID1, "node1", 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       alloc2.createTime = ask2.createTime
-       assert.Check(t, node.TryAddAllocation(alloc2), "node alloc2 failed")
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+       alloc1, alloc2, err := creatApp1(childQ1, node, nil, 
map[string]resources.Quantity{"first": 5, "pods": 1})
+       assert.NilError(t, err)
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 5, "pods": 1}, "alloc3")
+       assert.NilError(t, err)
        childQ2.incPendingResource(ask3.GetAllocatedResource())
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 
        // register predicate handler
        preemptions := []mock.Preemption{
-               mock.NewPreemption(true, "alloc3", "node1", []string{"alloc1"}, 
0, 0),
+               mock.NewPreemption(true, "alloc3", nodeID1, []string{"alloc1"}, 
0, 0),
        }
        plugin := mock.NewPreemptionPredicatePlugin(nil, nil, preemptions)
        plugins.RegisterSchedulerPlugin(plugin)
@@ -281,30 +314,13 @@ func TestTryPreemptionOnNode(t *testing.T) {
        assert.NilError(t, err)
        childQ2, err := createManagedQueueGuaranteed(parentQ, "child2", false, 
map[string]string{"first": "10"}, map[string]string{"first": "5"})
        assert.NilError(t, err)
-       app1 := newApplication(appID1, "default", "root.parent.child1")
-       app1.SetQueue(childQ1)
-       childQ1.applications[appID1] = app1
-       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       ask1.createTime = time.Now().Add(-1 * time.Minute)
-       assert.NilError(t, app1.AddAllocationAsk(ask1))
-       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       ask2.createTime = time.Now()
-       assert.NilError(t, app1.AddAllocationAsk(ask2))
-       alloc1 := newAllocationWithKey("alloc1", appID1, nodeID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       alloc1.createTime = ask1.createTime
-       app1.AddAllocation(alloc1)
-       assert.Check(t, node1.TryAddAllocation(alloc1), "node alloc1 failed")
-       alloc2 := newAllocationWithKey("alloc2", appID1, nodeID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       alloc2.createTime = ask2.createTime
-       app1.AddAllocation(alloc2)
-       assert.Check(t, node2.TryAddAllocation(alloc2), "node alloc2 failed")
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+       alloc1, alloc2, err := creatApp1(childQ1, node1, node2, 
map[string]resources.Quantity{"first": 5, "pods": 1})
+       assert.NilError(t, err)
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 5, "pods": 1}, "alloc3")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 
@@ -347,30 +363,13 @@ func TestTryPreemption_NodeWithCapacityLesserThanAsk(t 
*testing.T) {
        assert.NilError(t, err)
        childQ2, err := createManagedQueueGuaranteed(parentQ, "child2", false, 
map[string]string{"first": "10"}, map[string]string{"first": "6"})
        assert.NilError(t, err)
-       app1 := newApplication(appID1, "default", "root.parent.child1")
-       app1.SetQueue(childQ1)
-       childQ1.applications[appID1] = app1
-       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       ask1.createTime = time.Now().Add(-1 * time.Minute)
-       assert.NilError(t, app1.AddAllocationAsk(ask1))
-       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       ask2.createTime = time.Now()
-       assert.NilError(t, app1.AddAllocationAsk(ask2))
-       alloc1 := newAllocationWithKey("alloc1", appID1, nodeID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       alloc1.createTime = ask1.createTime
-       app1.AddAllocation(alloc1)
-       assert.Check(t, node1.TryAddAllocation(alloc1), "node alloc1 failed")
-       alloc2 := newAllocationWithKey("alloc2", appID1, nodeID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       alloc2.createTime = ask2.createTime
-       app1.AddAllocation(alloc2)
-       assert.Check(t, node2.TryAddAllocation(alloc2), "node alloc2 failed")
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 6, "pods": 
1}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+       alloc1, alloc2, err := creatApp1(childQ1, node1, node2, 
map[string]resources.Quantity{"first": 5, "pods": 1})
+       assert.NilError(t, err)
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 6, "pods": 1}, "alloc3")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
        result, ok := preemptor.TryPreemption()
@@ -424,11 +423,10 @@ func TestTryPreemptionOnNodeWithOGParentAndUGPreemptor(t 
*testing.T) {
                        assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
                }
        }
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc7", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 1}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 1}, "alloc7")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 
@@ -470,30 +468,13 @@ func TestTryPreemptionOnQueue(t *testing.T) {
        assert.NilError(t, err)
        childQ2, err := createManagedQueueGuaranteed(parentQ, "child2", false, 
nil, map[string]string{"first": "5"})
        assert.NilError(t, err)
-       app1 := newApplication(appID1, "default", "root.parent.child1")
-       app1.SetQueue(childQ1)
-       childQ1.applications[appID1] = app1
-       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       ask1.createTime = time.Now().Add(-1 * time.Minute)
-       assert.NilError(t, app1.AddAllocationAsk(ask1))
-       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       ask2.createTime = time.Now()
-       assert.NilError(t, app1.AddAllocationAsk(ask2))
-       alloc1 := newAllocationWithKey("alloc1", appID1, nodeID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       alloc1.createTime = ask1.createTime
-       app1.AddAllocation(alloc1)
-       assert.Check(t, node1.TryAddAllocation(alloc1), "node alloc1 failed")
-       alloc2 := newAllocationWithKey("alloc2", appID1, nodeID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       alloc2.createTime = ask2.createTime
-       app1.AddAllocation(alloc2)
-       assert.Check(t, node2.TryAddAllocation(alloc2), "node alloc2 failed")
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5, "pods": 
1}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+       alloc1, alloc2, err := creatApp1(childQ1, node1, node2, 
map[string]resources.Quantity{"first": 5, "pods": 1})
+       assert.NilError(t, err)
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 5, "pods": 1}, "alloc3")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 
@@ -535,30 +516,13 @@ func 
TestTryPreemption_VictimsAvailable_InsufficientResource(t *testing.T) {
        assert.NilError(t, err)
        childQ2, err := createManagedQueueGuaranteed(parentQ, "child2", false, 
nil, map[string]string{"first": "5"})
        assert.NilError(t, err)
-       app1 := newApplication(appID1, "default", "root.parent.child1")
-       app1.SetQueue(childQ1)
-       childQ1.applications[appID1] = app1
-       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 2, "pods": 
1}))
-       ask1.createTime = time.Now().Add(-1 * time.Minute)
-       assert.NilError(t, app1.AddAllocationAsk(ask1))
-       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 2, "pods": 
1}))
-       ask2.createTime = time.Now()
-       assert.NilError(t, app1.AddAllocationAsk(ask2))
-       alloc1 := newAllocationWithKey("alloc1", appID1, nodeID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 2, "pods": 
1}))
-       alloc1.createTime = ask1.createTime
-       app1.AddAllocation(alloc1)
-       assert.Check(t, node1.TryAddAllocation(alloc1), "node alloc1 failed")
-       alloc2 := newAllocationWithKey("alloc2", appID1, nodeID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 2, "pods": 
1}))
-       alloc2.createTime = ask2.createTime
-       app1.AddAllocation(alloc2)
-       assert.Check(t, node2.TryAddAllocation(alloc2), "node alloc2 failed")
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+       alloc1, alloc2, err := creatApp1(childQ1, node1, node2, 
map[string]resources.Quantity{"first": 2, "pods": 1})
+       assert.NilError(t, err)
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 5}, "alloc3")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 
@@ -592,30 +556,13 @@ func 
TestTryPreemption_VictimsOnDifferentNodes_InsufficientResource(t *testing.T
        assert.NilError(t, err)
        childQ2, err := createManagedQueueGuaranteed(parentQ, "child2", false, 
nil, map[string]string{"first": "5"})
        assert.NilError(t, err)
-       app1 := newApplication(appID1, "default", "root.parent.child1")
-       app1.SetQueue(childQ1)
-       childQ1.applications[appID1] = app1
-       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 2, "pods": 
1}))
-       ask1.createTime = time.Now().Add(-1 * time.Minute)
-       assert.NilError(t, app1.AddAllocationAsk(ask1))
-       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 2, "pods": 
1}))
-       ask2.createTime = time.Now()
-       assert.NilError(t, app1.AddAllocationAsk(ask2))
-       alloc1 := newAllocationWithKey("alloc1", appID1, nodeID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 2, "pods": 
1}))
-       alloc1.createTime = ask1.createTime
-       app1.AddAllocation(alloc1)
-       assert.Check(t, node1.TryAddAllocation(alloc1), "node alloc1 failed")
-       alloc2 := newAllocationWithKey("alloc2", appID1, nodeID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 2, "pods": 
1}))
-       alloc2.createTime = ask2.createTime
-       app1.AddAllocation(alloc2)
-       assert.Check(t, node2.TryAddAllocation(alloc2), "node alloc2 failed")
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+       alloc1, alloc2, err := creatApp1(childQ1, node1, node2, 
map[string]resources.Quantity{"first": 2, "pods": 1})
+       assert.NilError(t, err)
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 5}, "alloc3")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 
@@ -678,11 +625,10 @@ func TestTryPreemption_VictimsAvailableOnDifferentNodes(t 
*testing.T) {
        assert.Check(t, node2.TryAddAllocation(alloc2), "node alloc2 failed")
        assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
        assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 5}, "alloc3")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 
@@ -730,25 +676,9 @@ func TestTryPreemption_OnQueue_VictimsOnDifferentNodes(t 
*testing.T) {
        assert.NilError(t, err)
        childQ3, err := createManagedQueueGuaranteed(parentQ, "child3", false, 
nil, nil)
        assert.NilError(t, err)
-       app1 := newApplication(appID1, "default", "root.parent.child1")
-       app1.SetQueue(childQ1)
-       childQ1.applications[appID1] = app1
-       ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       ask1.createTime = time.Now().Add(-2 * time.Minute)
-       assert.NilError(t, app1.AddAllocationAsk(ask1))
-       ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       ask2.createTime = time.Now().Add(-1 * time.Minute)
-       assert.NilError(t, app1.AddAllocationAsk(ask2))
-       alloc1 := newAllocationWithKey("alloc1", appID1, nodeID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       alloc1.createTime = ask1.createTime
-       app1.AddAllocation(alloc1)
-       assert.Check(t, node1.TryAddAllocation(alloc1), "node alloc1 failed")
-       alloc2 := newAllocationWithKey("alloc2", appID1, nodeID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
-       alloc2.createTime = ask2.createTime
-       app1.AddAllocation(alloc2)
-       assert.Check(t, node2.TryAddAllocation(alloc2), "node alloc2 failed")
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask1.GetAllocatedResource()))
-       assert.NilError(t, 
childQ1.TryIncAllocatedResource(ask2.GetAllocatedResource()))
+
+       alloc1, alloc2, err := creatApp1(childQ1, node1, node2, 
map[string]resources.Quantity{"first": 5})
+       assert.NilError(t, err)
 
        app3 := newApplication(appID3, "default", "root.parent.child3")
        app3.SetQueue(childQ3)
@@ -764,11 +694,9 @@ func TestTryPreemption_OnQueue_VictimsOnDifferentNodes(t 
*testing.T) {
        assert.Check(t, node2.TryAddAllocation(alloc4), "node alloc2 failed")
        assert.NilError(t, 
childQ3.TryIncAllocatedResource(ask4.GetAllocatedResource()))
 
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 10}, "alloc3")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 
@@ -823,7 +751,6 @@ func 
TestTryPreemption_OnQueue_VictimsAvailable_LowerPriority(t *testing.T) {
        ask1 := newAllocationAsk("alloc1", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
        ask1.createTime = time.Now().Add(-2 * time.Minute)
        assert.NilError(t, app1.AddAllocationAsk(ask1))
-
        // High priority ask, should not be considered as victim
        ask2 := newAllocationAsk("alloc2", appID1, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 5}))
        ask2.createTime = time.Now().Add(-1 * time.Minute)
@@ -854,11 +781,9 @@ func 
TestTryPreemption_OnQueue_VictimsAvailable_LowerPriority(t *testing.T) {
        assert.Check(t, node2.TryAddAllocation(alloc4), "node alloc2 failed")
        assert.NilError(t, 
childQ3.TryIncAllocatedResource(ask4.GetAllocatedResource()))
 
-       app2 := newApplication(appID2, "default", "root.parent.child2")
-       app2.SetQueue(childQ2)
-       childQ2.applications[appID2] = app2
-       ask3 := newAllocationAsk("alloc3", appID2, 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10}))
-       assert.NilError(t, app2.AddAllocationAsk(ask3))
+       app2, ask3, err := creatApp2(childQ2, 
map[string]resources.Quantity{"first": 10}, "alloc3")
+       assert.NilError(t, err)
+
        headRoom := 
resources.NewResourceFromMap(map[string]resources.Quantity{"first": 10, "pods": 
3})
        preemptor := NewPreemptor(app2, headRoom, 30*time.Second, ask3, 
iterator(), false)
 


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

Reply via email to