Skip to content

Commit

Permalink
[YUNIKORN-2680] Improve placement rule funtion's test coverage (#895)
Browse files Browse the repository at this point in the history
Closes: #895

Signed-off-by: Peter Bacsko <pbacsko@cloudera.com>
  • Loading branch information
SP12893678 authored and pbacsko committed Jun 18, 2024
1 parent 5706b54 commit 5e3535c
Show file tree
Hide file tree
Showing 3 changed files with 184 additions and 0 deletions.
58 changes: 58 additions & 0 deletions pkg/scheduler/placement/fixed_rule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,23 @@ partitions:
if queue != "root.testparent.testchild" || err != nil {
t.Errorf("fixed rule with parent queue should not have failed '%s', error %v", queue, err)
}

// deny filter type should got got empty queue
conf = configs.PlacementRule{
Name: "fixed",
Value: "testchild",
Filter: configs.Filter{
Type: filterDeny,
},
}
fr, err = newRule(conf)
if err != nil || fr == nil {
t.Errorf("fixed rule create failed with queue name, err %v", err)
}
queue, err = fr.placeApplication(app, queueFunc)
if queue != "" || err != nil {
t.Errorf("fixed rule with deny filter type should got empty queue, err nil")
}
}

func TestFixedRuleParent(t *testing.T) {
Expand Down Expand Up @@ -249,6 +266,47 @@ func TestFixedRuleParent(t *testing.T) {
if queue != "" || err == nil {
t.Errorf("fixed rule with parent declared as leaf should have failed '%s', error %v", queue, err)
}

// failed parent rule
conf = configs.PlacementRule{
Name: "fixed",
Value: "testchild",
Parent: &configs.PlacementRule{
Name: "fixed",
Value: "testchild",
Parent: &configs.PlacementRule{
Name: "fixed",
Value: "testchild",
},
},
}
fr, err = newRule(conf)
if err != nil || fr == nil {
t.Errorf("fixed rule create failed with queue name, err %v", err)
}
queue, err = fr.placeApplication(app, queueFunc)
if queue != "" || err == nil {
t.Errorf("fixed rule with parent declared as leaf should have failed '%s', error %v", queue, err)
}

// parent name not has prefix
conf = configs.PlacementRule{
Name: "fixed",
Value: "testchild",
Create: true,
Parent: &configs.PlacementRule{
Name: "fixed",
Value: "root",
},
}
fr, err = newRule(conf)
if err != nil || fr == nil {
t.Errorf("fixed rule create failed with queue name, err %v", err)
}
queue, err = fr.placeApplication(app, queueFunc)
if queue != "root.root.testchild" || err != nil {
t.Errorf("fixed rule with parent declared as leaf should have failed '%s', error %v", queue, err)
}
}

func Test_fixedRule_ruleDAO(t *testing.T) {
Expand Down
67 changes: 67 additions & 0 deletions pkg/scheduler/placement/tag_rule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,24 @@ partitions:
if queue != "root.testparent.testchild" || err != nil {
t.Errorf("tag rule with parent queue incorrect queue '%s', error %v", queue, err)
}

// deny filter type should got got empty queue
conf = configs.PlacementRule{
Name: "tag",
Value: "label1",
Filter: configs.Filter{
Type: filterDeny,
},
}
tr, err = newRule(conf)
if err != nil || tr == nil {
t.Errorf("tag rule create failed with parent rule and qualified value, err %v", err)
}
appInfo = newApplication("app1", "default", "ignored", user, tags, nil, "")
queue, err = tr.placeApplication(appInfo, queueFunc)
if queue != "" || err != nil {
t.Errorf("tag rule with deny filter type should got empty queue, err nil")
}
}

func TestTagRuleParent(t *testing.T) {
Expand Down Expand Up @@ -251,6 +269,55 @@ func TestTagRuleParent(t *testing.T) {
if queue != "" || err == nil {
t.Errorf("tag rule placed app in incorrect queue '%s', err %v", queue, err)
}

// failed parent rule
conf = configs.PlacementRule{
Name: "tag",
Value: "label2",
Parent: &configs.PlacementRule{
Name: "tag",
Value: "label1",
Parent: &configs.PlacementRule{
Name: "tag",
Value: "label1",
},
},
}
ur, err = newRule(conf)
if err != nil || ur == nil {
t.Errorf("tag rule create failed, err %v", err)
}

appInfo = newApplication("app1", "default", "unknown", user, tags, nil, "")
queue, err = ur.placeApplication(appInfo, queueFunc)
if queue != "" || err == nil {
t.Errorf("tag rule placed app in incorrect queue '%s', err %v", queue, err)
}

// parent name not has prefix
conf = configs.PlacementRule{
Name: "tag",
Value: "label2",
Create: true,
Parent: &configs.PlacementRule{
Name: "tag",
Value: "label2",
Create: true,
Parent: &configs.PlacementRule{
Name: "fixed",
Value: "root",
},
},
}
ur, err = newRule(conf)
if err != nil || ur == nil {
t.Errorf("tag rule create failed, err %v", err)
}
appInfo = newApplication("app1", "default", "unknown", user, tags, nil, "")
queue, err = ur.placeApplication(appInfo, queueFunc)
if queue != "root.root.testparentnew.testparentnew" || err != nil {
t.Errorf("tag rule placed app in incorrect queue '%s', err %v", queue, err)
}
}

func Test_tagRule_ruleDAO(t *testing.T) {
Expand Down
59 changes: 59 additions & 0 deletions pkg/scheduler/placement/user_rule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,23 @@ partitions:
if queue != "root.unknown" || err != nil {
t.Errorf("user rule placed in to be created queue with create false '%s', err %v", queue, err)
}

// deny filter type should got got empty queue
conf = configs.PlacementRule{
Name: "user",
Filter: configs.Filter{
Type: filterDeny,
},
}
ur, err = newRule(conf)
if err != nil || ur == nil {
t.Errorf("user rule create failed with queue name, err %v", err)
}
appInfo = newApplication("app1", "default", "ignored", user, tags, nil, "")
queue, err = ur.placeApplication(appInfo, queueFunc)
if queue != "" || err != nil {
t.Errorf("user rule with deny filter type should got empty queue, err nil")
}
}

func TestUserRuleParent(t *testing.T) {
Expand Down Expand Up @@ -219,6 +236,48 @@ func TestUserRuleParent(t *testing.T) {
if queue != "" || err == nil {
t.Errorf("user rule placed app in incorrect queue '%s', err %v", queue, err)
}

// failed parent rule
conf = configs.PlacementRule{
Name: "user",
Create: true,
Parent: &configs.PlacementRule{
Name: "fixed",
Value: "testchild",
Parent: &configs.PlacementRule{
Name: "fixed",
Value: "testchild",
},
},
}
ur, err = newRule(conf)
if err != nil || ur == nil {
t.Errorf("user rule create failed, err %v", err)
}
appInfo = newApplication("app1", "default", "unknown", user, tags, nil, "")
queue, err = ur.placeApplication(appInfo, queueFunc)
if queue != "" || err == nil {
t.Errorf("user rule placed app in incorrect queue '%s', err %v", queue, err)
}

// parent name not has prefix
conf = configs.PlacementRule{
Name: "user",
Create: true,
Parent: &configs.PlacementRule{
Name: "fixed",
Value: "root",
},
}
ur, err = newRule(conf)
if err != nil || ur == nil {
t.Errorf("user rule create failed, err %v", err)
}
appInfo = newApplication("app1", "default", "unknown", user, tags, nil, "")
queue, err = ur.placeApplication(appInfo, queueFunc)
if queue != "root.root.testchild" || err != nil {
t.Errorf("user rule placed app in incorrect queue '%s', err %v", queue, err)
}
}

func Test_userRule_ruleDAO(t *testing.T) {
Expand Down

0 comments on commit 5e3535c

Please sign in to comment.