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-k8shim.git


The following commit(s) were added to refs/heads/master by this push:
     new 498b8eac [YUNIKORN-2765] Improve si_helper & resource funtion's test 
coverage (#881)
498b8eac is described below

commit 498b8eac40147740107b20eaf227266bac0f6d74
Author: SP12893678 <36910625+sp12893...@users.noreply.github.com>
AuthorDate: Thu Jul 25 19:26:07 2024 +0200

    [YUNIKORN-2765] Improve si_helper & resource funtion's test coverage (#881)
    
    Closes: #881
    
    Signed-off-by: Peter Bacsko <bacs...@gmail.com>
---
 pkg/common/resource_test.go  | 141 +++++++++++++++++++++++++++++++++++++++++++
 pkg/common/si_helper_test.go |  16 +++++
 2 files changed, 157 insertions(+)

diff --git a/pkg/common/resource_test.go b/pkg/common/resource_test.go
index 5adbf8c8..204086f2 100644
--- a/pkg/common/resource_test.go
+++ b/pkg/common/resource_test.go
@@ -510,6 +510,31 @@ func TestGetPodResourcesWithInPlacePodVerticalScaling(t 
*testing.T) {
        assert.Equal(t, res.Resources[siCommon.CPU].GetValue(), int64(4000))
        assert.Equal(t, res.Resources["nvidia.com/gpu"].GetValue(), int64(5))
        assert.Equal(t, res.Resources["pods"].GetValue(), int64(1))
+
+       // case: requested resource types are fewer than allocated types
+       containers = make([]v1.Container, 0)
+       c1Resources = make(map[v1.ResourceName]resource.Quantity)
+       containers = append(containers, v1.Container{
+               Name: "container-01",
+               Resources: v1.ResourceRequirements{
+                       Requests: c1Resources,
+               },
+       })
+       pod.Spec.Containers = containers
+
+       c1Allocated[v1.ResourceMemory] = resource.MustParse("500M")
+       c1Allocated[v1.ResourceCPU] = resource.MustParse("2")
+       pod.Status.ContainerStatuses = []v1.ContainerStatus{
+               {AllocatedResources: c1Allocated},
+               {AllocatedResources: c2Allocated},
+       }
+       pod.Status.Resize = v1.PodResizeStatusProposed
+
+       res = GetPodResource(pod)
+       assert.Equal(t, res.Resources[siCommon.Memory].GetValue(), 
int64(500*1000*1000))
+       assert.Equal(t, res.Resources[siCommon.CPU].GetValue(), int64(2000))
+       assert.Equal(t, res.Resources["nvidia.com/gpu"].GetValue(), int64(1))
+       assert.Equal(t, res.Resources["pods"].GetValue(), int64(1))
 }
 
 func TestBestEffortPod(t *testing.T) {
@@ -741,3 +766,119 @@ func TestParseResourceString(t *testing.T) {
                })
        }
 }
+
+func TestGetResource(t *testing.T) {
+       tests := []struct {
+               name        string
+               resMap      map[string]string
+               expectedRes map[string]int64
+       }{
+               {
+                       name:        "empty resMap",
+                       resMap:      map[string]string{},
+                       expectedRes: map[string]int64{},
+               },
+               {
+                       name: "single resource",
+                       resMap: map[string]string{
+                               v1.ResourceCPU.String(): "100m",
+                       },
+                       expectedRes: map[string]int64{
+                               siCommon.CPU: 100,
+                       },
+               },
+               {
+                       name: "multiple resources",
+                       resMap: map[string]string{
+                               v1.ResourceCPU.String():    "1",
+                               v1.ResourceMemory.String(): "1G",
+                       },
+                       expectedRes: map[string]int64{
+                               siCommon.CPU:    1000,
+                               siCommon.Memory: 1000 * 1000 * 1000,
+                       },
+               },
+               {
+                       name: "invalid cpu resources",
+                       resMap: map[string]string{
+                               v1.ResourceCPU.String(): "xyz",
+                       },
+                       expectedRes: nil,
+               },
+               {
+                       name: "invalid memory resources",
+                       resMap: map[string]string{
+                               v1.ResourceMemory.String(): "64MiB",
+                       },
+                       expectedRes: nil,
+               },
+       }
+
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       actualRes := GetResource(tt.resMap)
+                       if tt.expectedRes == nil {
+                               assert.Assert(t, actualRes == nil)
+                       } else {
+                               assert.Equal(t, len(actualRes.Resources), 
len(tt.expectedRes))
+                               if len(tt.expectedRes) > 0 {
+                                       for name, value := range tt.expectedRes 
{
+                                               assert.Equal(t, 
actualRes.Resources[name].GetValue(), value)
+                                       }
+                               }
+                       }
+               })
+       }
+}
+
+func TestGetTGResource(t *testing.T) {
+       tests := []struct {
+               name        string
+               resMap      map[string]resource.Quantity
+               members     int64
+               expectedRes map[string]int64
+       }{
+               {
+                       name:    "empty resMap",
+                       resMap:  map[string]resource.Quantity{},
+                       members: 2,
+                       expectedRes: map[string]int64{
+                               "pods": 2,
+                       },
+               },
+               {
+                       name: "single resource",
+                       resMap: map[string]resource.Quantity{
+                               v1.ResourceCPU.String(): 
resource.MustParse("100m"),
+                       },
+                       members: 2,
+                       expectedRes: map[string]int64{
+                               "pods":       2,
+                               siCommon.CPU: 2 * 100,
+                       },
+               },
+               {
+                       name: "multiple resources",
+                       resMap: map[string]resource.Quantity{
+                               v1.ResourceCPU.String():    
resource.MustParse("1"),
+                               v1.ResourceMemory.String(): 
resource.MustParse("1G"),
+                       },
+                       members: 2,
+                       expectedRes: map[string]int64{
+                               "pods":          2,
+                               siCommon.CPU:    2 * 1000,
+                               siCommon.Memory: 2 * 1000 * 1000 * 1000,
+                       },
+               },
+       }
+
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       actualRes := GetTGResource(tt.resMap, tt.members)
+                       assert.Equal(t, len(actualRes.Resources), 
len(tt.expectedRes))
+                       for name, value := range tt.expectedRes {
+                               assert.Equal(t, 
actualRes.Resources[name].GetValue(), value)
+                       }
+               })
+       }
+}
diff --git a/pkg/common/si_helper_test.go b/pkg/common/si_helper_test.go
index 67be6147..63c603f7 100644
--- a/pkg/common/si_helper_test.go
+++ b/pkg/common/si_helper_test.go
@@ -45,6 +45,7 @@ func TestCreateReleaseRequestForTask(t *testing.T) {
        assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].ApplicationID, "app01")
        assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].AllocationKey, "task01")
        assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].PartitionName, "default")
+       assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].TerminationType, 
si.TerminationType_UNKNOWN_TERMINATION_TYPE)
 
        // without allocationKey
        request = CreateReleaseRequestForTask("app01", "task01", "", "default", 
"STOPPED_BY_RM")
@@ -56,6 +57,21 @@ func TestCreateReleaseRequestForTask(t *testing.T) {
        assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].ApplicationID, "app01")
        assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].AllocationKey, "task01")
        assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].PartitionName, "default")
+       assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].TerminationType, 
si.TerminationType_UNKNOWN_TERMINATION_TYPE)
+
+       request = CreateReleaseRequestForTask("app01", "task01", "task01", 
"default", "UNKNOWN")
+       assert.Assert(t, request.Releases != nil)
+       assert.Assert(t, request.Releases.AllocationsToRelease != nil)
+       assert.Assert(t, request.Releases.AllocationAsksToRelease != nil)
+       assert.Equal(t, len(request.Releases.AllocationsToRelease), 1)
+       assert.Equal(t, len(request.Releases.AllocationAsksToRelease), 1)
+       assert.Equal(t, request.Releases.AllocationsToRelease[0].ApplicationID, 
"app01")
+       assert.Equal(t, request.Releases.AllocationsToRelease[0].AllocationKey, 
"task01")
+       assert.Equal(t, request.Releases.AllocationsToRelease[0].PartitionName, 
"default")
+       assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].ApplicationID, "app01")
+       assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].AllocationKey, "task01")
+       assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].PartitionName, "default")
+       assert.Equal(t, 
request.Releases.AllocationAsksToRelease[0].TerminationType, 
si.TerminationType_UNKNOWN_TERMINATION_TYPE)
 }
 
 func TestCreateUpdateRequestForRemoveApplication(t *testing.T) {


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@yunikorn.apache.org
For additional commands, e-mail: issues-h...@yunikorn.apache.org

Reply via email to