This is an automated email from the ASF dual-hosted git repository.
pbacsko 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 5e3535c2 [YUNIKORN-2680] Improve placement rule funtion's test
coverage (#895)
5e3535c2 is described below
commit 5e3535c219d7d15d5588c92008ec5cc32ab1c2fe
Author: SP12893678 <[email protected]>
AuthorDate: Tue Jun 18 15:58:08 2024 +0200
[YUNIKORN-2680] Improve placement rule funtion's test coverage (#895)
Closes: #895
Signed-off-by: Peter Bacsko <[email protected]>
---
pkg/scheduler/placement/fixed_rule_test.go | 58 ++++++++++++++++++++++++++
pkg/scheduler/placement/tag_rule_test.go | 67 ++++++++++++++++++++++++++++++
pkg/scheduler/placement/user_rule_test.go | 59 ++++++++++++++++++++++++++
3 files changed, 184 insertions(+)
diff --git a/pkg/scheduler/placement/fixed_rule_test.go
b/pkg/scheduler/placement/fixed_rule_test.go
index 71b78b77..ce45c6d4 100644
--- a/pkg/scheduler/placement/fixed_rule_test.go
+++ b/pkg/scheduler/placement/fixed_rule_test.go
@@ -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) {
@@ -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) {
diff --git a/pkg/scheduler/placement/tag_rule_test.go
b/pkg/scheduler/placement/tag_rule_test.go
index 527ea736..1c0e4909 100644
--- a/pkg/scheduler/placement/tag_rule_test.go
+++ b/pkg/scheduler/placement/tag_rule_test.go
@@ -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) {
@@ -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) {
diff --git a/pkg/scheduler/placement/user_rule_test.go
b/pkg/scheduler/placement/user_rule_test.go
index 62b099e8..b8d04048 100644
--- a/pkg/scheduler/placement/user_rule_test.go
+++ b/pkg/scheduler/placement/user_rule_test.go
@@ -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) {
@@ -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) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]