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 }