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

mani 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 0a050680 [YUNIKORN-2024] clear limits only upon the right queue (#669)
0a050680 is described below

commit 0a05068035b71f1a810fad7c38f8cb0eb7af58f6
Author: DouPache <[email protected]>
AuthorDate: Fri Nov 3 11:17:08 2023 +0530

    [YUNIKORN-2024] clear limits only upon the right queue (#669)
    
    Closes: #669
    
    Signed-off-by: Manikandan R <[email protected]>
---
 pkg/scheduler/ugm/manager_test.go | 97 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 97 insertions(+)

diff --git a/pkg/scheduler/ugm/manager_test.go 
b/pkg/scheduler/ugm/manager_test.go
index 7ce5e72b..99da9444 100644
--- a/pkg/scheduler/ugm/manager_test.go
+++ b/pkg/scheduler/ugm/manager_test.go
@@ -1070,6 +1070,103 @@ func TestUserGroupLimit(t *testing.T) { //nolint:funlen
        }
 }
 
+func TestUserGroupLimitChange(t *testing.T) { //nolint:funlen
+       testCases := []struct {
+               name      string
+               user      security.UserGroup
+               limits    []configs.Limit
+               newLimits []configs.Limit
+       }{
+               {
+                       name: "maxresources with an updated specific group 
limit",
+                       user: security.UserGroup{User: "user1", Groups: 
[]string{"group1"}},
+                       limits: []configs.Limit{
+                               createLimit(nil, []string{"group1"}, 
largeResource, 2),
+                       },
+                       newLimits: []configs.Limit{
+                               createLimit(nil, []string{"group1"}, 
mediumResource, 2),
+                       },
+               },
+       }
+
+       for _, tc := range testCases {
+               t.Run(tc.name, func(t *testing.T) {
+                       setupUGM()
+
+                       manager := GetUserManager()
+                       conf := createConfigWithLimits(tc.limits)
+
+                       assert.NilError(t, manager.UpdateConfig(conf.Queues[0], 
"root"))
+
+                       usage, err := 
resources.NewResourceFromConf(mediumResource)
+                       if err != nil {
+                               t.Errorf("new resource create returned error or 
wrong resource: error %t, res %v", err, usage)
+                       }
+
+                       increased := 
manager.IncreaseTrackedResource(queuePathParent, TestApp1, usage, tc.user)
+                       assert.Equal(t, increased, true, "unable to increase 
tracked resource: queuepath "+queuePathParent+", app "+TestApp1+", res 
"+usage.String())
+
+                       increased = 
manager.IncreaseTrackedResource(queuePathParent, TestApp2, usage, tc.user)
+                       assert.Equal(t, increased, true, "unable to increase 
tracked resource: queuepath "+queuePathParent+", app "+TestApp2+", res 
"+usage.String())
+
+                       decreased := 
manager.DecreaseTrackedResource(queuePathParent, TestApp2, usage, tc.user, true)
+                       assert.Equal(t, decreased, true, "unable to decreased 
tracked resource: queuepath "+queuePathParent+", app "+TestApp2+", res 
"+usage.String())
+
+                       conf.Queues[0].Queues[0].Limits = tc.newLimits
+                       assert.NilError(t, manager.UpdateConfig(conf.Queues[0], 
"root"))
+
+                       increased = 
manager.IncreaseTrackedResource(queuePathParent, TestApp2, usage, tc.user)
+                       assert.Equal(t, increased, false, "should not increase 
tracked resource: queuepath "+queuePathParent+", app "+TestApp2+", res 
"+usage.String())
+               })
+       }
+}
+
+func TestMultipleGroupLimitChange(t *testing.T) {
+       setupUGM()
+
+       manager := GetUserManager()
+       conf := createConfigWithLimits([]configs.Limit{
+               createLimit(nil, []string{"group1", "group2"}, largeResource, 
2),
+               createLimit(nil, []string{"*"}, mediumResource, 1),
+       })
+       assert.NilError(t, manager.UpdateConfig(conf.Queues[0], "root"))
+
+       user1 := security.UserGroup{User: "user1", Groups: []string{"group1"}}
+       user2 := security.UserGroup{User: "user2", Groups: []string{"group2"}}
+       user3 := security.UserGroup{User: "user3", Groups: []string{"group3"}}
+
+       usage, err := resources.NewResourceFromConf(mediumResource)
+       if err != nil {
+               t.Errorf("new resource create returned error or wrong resource: 
error %t, res %v", err, usage)
+       }
+
+       // all users can increate usage within the quota
+       increased := manager.IncreaseTrackedResource(queuePathParent, 
"test-app-1-1", usage, user1)
+       assert.Equal(t, increased, true, "unable to increase tracked resource: 
queuepath "+queuePathParent+", app test-app-1-1, res "+usage.String())
+
+       increased = manager.IncreaseTrackedResource(queuePathParent, 
"test-app-2-1", usage, user2)
+       assert.Equal(t, increased, true, "unable to increase tracked resource: 
queuepath "+queuePathParent+", app test-app-2-1, res "+usage.String())
+
+       increased = manager.IncreaseTrackedResource(queuePathParent, 
"test-app-3-1", usage, user3)
+       assert.Equal(t, increased, true, "unable to increase tracked resource: 
queuepath "+queuePathParent+", app test-app-3-1, res "+usage.String())
+
+       // remove group2 from the specific group
+       conf.Queues[0].Queues[0].Limits[0].Groups = []string{"group1"}
+       assert.NilError(t, manager.UpdateConfig(conf.Queues[0], "root"))
+
+       // user1 still can increase usage within the quota
+       increased = manager.IncreaseTrackedResource(queuePathParent, 
"test-app-1-2", usage, user1)
+       assert.Equal(t, increased, true, "unable to increase tracked resource: 
queuepath "+queuePathParent+", app test-app-1-2, res "+usage.String())
+
+       // user2 can't increase usage more than wildcard limit
+       increased = manager.IncreaseTrackedResource(queuePathParent, 
"test-app-2-2", usage, user2)
+       assert.Equal(t, increased, false, "should not increase tracked 
resource: queuepath "+queuePathParent+", app test-app-2-2, res "+usage.String())
+
+       // user3 can't increase usage more than wildcard limit
+       increased = manager.IncreaseTrackedResource(queuePathParent, 
"test-app-3-2", usage, user3)
+       assert.Equal(t, increased, false, "should not increase tracked 
resource: queuepath "+queuePathParent+", app test-app-3-2, res "+usage.String())
+}
+
 func createLimit(users, groups []string, maxResources map[string]string, 
maxApps uint64) configs.Limit {
        return configs.Limit{
                Users:           users,


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

Reply via email to