From a9eb562eb69f0c01d1daceaed77653a3975edda7 Mon Sep 17 00:00:00 2001 From: James Sturtevant Date: Mon, 30 Sep 2024 11:44:41 -0700 Subject: [PATCH] Fix logic for parsing values Signed-off-by: James Sturtevant --- admission-webhook/main.go | 8 ++-- admission-webhook/main_test.go | 88 ++++++++++++++++++++++++++++++++++ charts/gmsa/values.yaml | 2 +- 3 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 admission-webhook/main_test.go diff --git a/admission-webhook/main.go b/admission-webhook/main.go index fb6a99ab..882138d4 100644 --- a/admission-webhook/main.go +++ b/admission-webhook/main.go @@ -89,10 +89,10 @@ func createKubeClient() (*kubeClient, error) { func env_float(key string, defaultFloat float32) float32 { if v, found := os.LookupEnv(key); found { - if i, err := strconv.ParseFloat(v, 32); err != nil { + if i, err := strconv.ParseFloat(v, 32); err == nil { return float32(i) } - logrus.Warningf("unable to parse environment variable %s; using default value %f", key, defaultFloat) + logrus.Warningf("unable to parse environment variable %s with value %s; using default value %f", key, v, defaultFloat) } return defaultFloat @@ -100,10 +100,10 @@ func env_float(key string, defaultFloat float32) float32 { func env_int(key string, defaultInt int) int { if v, found := os.LookupEnv(key); found { - if i, err := strconv.Atoi(v); err != nil { + if i, err := strconv.Atoi(v); err == nil { return i } - logrus.Warningf("unable to parse environment variable %s; using default value %d", key, defaultInt) + logrus.Warningf("unable to parse environment variable %s with value %s; using default value %d", key, v, defaultInt) } return defaultInt diff --git a/admission-webhook/main_test.go b/admission-webhook/main_test.go new file mode 100644 index 00000000..b83826a7 --- /dev/null +++ b/admission-webhook/main_test.go @@ -0,0 +1,88 @@ +package main + +import ( + "os" + "testing" +) + +func Test_env_float(t *testing.T) { + defaultFloat := float32(5.0) + tests := []struct { + name string + envkey string + envval string + want float32 + }{ + { + name: "Environment variable set to valid float", + envkey: "TEST_ENV_FLOAT", + envval: "3.14", + want: 3.14, + }, + { + name: "Environment variable set to invalid float", + envkey: "TEST_ENV_FLOAT", + envval: "invalid", + want: float32(defaultFloat), + }, + { + name: "Environment variable not set", + envkey: "TEST_ENV_FLOAT", + envval: "", + want: float32(defaultFloat), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.envval != "" { + os.Setenv(tt.envkey, tt.envval) + } else { + os.Unsetenv(tt.envkey) + } + if got := env_float(tt.envkey, defaultFloat); got != tt.want { + t.Errorf("env_float() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_env_int(t *testing.T) { + defaultInt := 5 + tests := []struct { + name string + envkey string + envval string + want int + }{ + { + name: "Environment variable set to valid int", + envkey: "TEST_ENV_INT", + envval: "10", + want: 10, + }, + { + name: "Environment variable set to invalid int", + envkey: "TEST_ENV_INT", + envval: "invalid", + want: defaultInt, + }, + { + name: "Environment variable not set", + envkey: "TEST_ENV_INT", + envval: "", + want: defaultInt, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.envval != "" { + os.Setenv(tt.envkey, tt.envval) + } else { + os.Unsetenv(tt.envkey) + } + if got := env_int(tt.envkey, defaultInt); got != tt.want { + t.Errorf("env_int() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/charts/gmsa/values.yaml b/charts/gmsa/values.yaml index 0aa4fe0d..478303e3 100644 --- a/charts/gmsa/values.yaml +++ b/charts/gmsa/values.yaml @@ -49,5 +49,5 @@ podSecurityContext: {} replicaCount: 2 securityContext: {} tolerations: [] -qps: 30 +qps: 30.0 burst: 50