github.com/verrazzano/verrazzano-monitoring-operator@v0.0.30/pkg/util/memory/podmem_test.go (about)

     1  // Copyright (C) 2021, 2022, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package memory
     5  
     6  import (
     7  	"fmt"
     8  	"github.com/stretchr/testify/assert"
     9  	"testing"
    10  )
    11  
    12  // TestPodMemToJvmHeapArgs tests the conversion of Pod Mem to of JVM heap arg
    13  // GIVEN a pod memory request, like .5Gi
    14  // WHEN PodMemToJvmHeapArgs is called
    15  // THEN ensure the result is a JVM formatted heap string like "-Xms512m -Xmx512m"
    16  func TestPodMemToJvmHeapArgs(t *testing.T) {
    17  	asserts := assert.New(t)
    18  	s, err := PodMemToJvmHeapArgs("500Mi", "")
    19  	asserts.NoError(err, "error converting pod memory to JVM heap arg")
    20  	asserts.Equal("-Xms375m -Xmx375m", s, "incorrect JVM heap arg")
    21  	s, err = PodMemToJvmHeapArgs("1.4Gi", "")
    22  	asserts.NoError(err, "error converting pod memory to JVM heap arg")
    23  	asserts.Equal("-Xms1076m -Xmx1076m", s, "incorrect JVM heap arg")
    24  	s, err = PodMemToJvmHeapArgs("", "-Xms375m -Xmx375m")
    25  	asserts.NoError(err, "error converting pod memory to JVM heap arg")
    26  	asserts.Equal("-Xms375m -Xmx375m", s, "incorrect JVM heap arg")
    27  	_, err = PodMemToJvmHeapArgs("boom!", "-Xms375m -Xmx375m")
    28  	asserts.Error(err)
    29  }
    30  
    31  // TestPodMemToJvmHeap tests the formatting of pod memory requests into JVM heap sizes
    32  // GIVEN a pod memory request, like .5Gi
    33  // WHEN ConvertPodMemToJvmHeap is called
    34  // THEN return the JVM formatted heap size, like 512m
    35  func TestPodMemToJvmHeap(t *testing.T) {
    36  	tests := []struct {
    37  		name     string
    38  		size     string
    39  		expected string
    40  	}{
    41  		{name: "test-K-1", size: "100Ki", expected: "75k"},
    42  		{name: "test-K-3", size: "1500Ki", expected: "1125k"},
    43  		{name: "test-K-4", size: "1024Ki", expected: "768k"},
    44  		{name: "test-K-5", size: ".5Ki", expected: "1k"},
    45  
    46  		{name: "test-M-1", size: "1Mi", expected: "768k"},
    47  		{name: "test-M-2", size: "1.1Mi", expected: "845k"},
    48  		{name: "test-M-3", size: "1500Mi", expected: "1125m"},
    49  		{name: "test-M-4", size: "1024Mi", expected: "768m"},
    50  		{name: "test-M-5", size: ".5Mi", expected: "384k"},
    51  
    52  		{name: "test-G-1", size: "1Gi", expected: "768m"},
    53  		{name: "test-G-2", size: "1.1Gi", expected: "865076k"},
    54  		{name: "test-G-3", size: "1500Gi", expected: "1125g"},
    55  		{name: "test-G-4", size: "1024Gi", expected: "768g"},
    56  		{name: "test-G-5", size: ".5Gi", expected: "384m"},
    57  	}
    58  	for _, test := range tests {
    59  		t.Run(test.name, func(t *testing.T) {
    60  			asserts := assert.New(t)
    61  			n, err := PodMemToJvmHeap(test.size)
    62  			asserts.NoError(err, "GetMaxHeap returned error")
    63  			asserts.Equal(test.expected, n, fmt.Sprintf("%s failed", test.name))
    64  		})
    65  	}
    66  }