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]

Reply via email to