Skip to content

Commit f6596b7

Browse files
liu-congrlakhtakia
authored andcommitted
Add GetEnvString helper function (kubernetes-sigs#758)
1 parent b92d0e6 commit f6596b7

File tree

2 files changed

+78
-7
lines changed

2 files changed

+78
-7
lines changed

pkg/epp/util/env/env.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,25 @@ import (
55
"strconv"
66

77
"github.com/go-logr/logr"
8-
logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
98
)
109

1110
// getEnvFloat gets a float64 from an environment variable with a default value
1211
func GetEnvFloat(key string, defaultVal float64, logger logr.Logger) float64 {
1312
val, exists := os.LookupEnv(key)
1413
if !exists {
15-
logger.V(logutil.VERBOSE).Info("Environment variable not set, using default value",
14+
logger.Info("Environment variable not set, using default value",
1615
"key", key, "defaultValue", defaultVal)
1716
return defaultVal
1817
}
1918

2019
floatVal, err := strconv.ParseFloat(val, 64)
2120
if err != nil {
22-
logger.V(logutil.VERBOSE).Info("Failed to parse environment variable as float, using default value",
21+
logger.Info("Failed to parse environment variable as float, using default value",
2322
"key", key, "value", val, "error", err, "defaultValue", defaultVal)
2423
return defaultVal
2524
}
2625

27-
logger.V(logutil.VERBOSE).Info("Successfully loaded environment variable",
26+
logger.Info("Successfully loaded environment variable",
2827
"key", key, "value", floatVal)
2928
return floatVal
3029
}
@@ -33,19 +32,30 @@ func GetEnvFloat(key string, defaultVal float64, logger logr.Logger) float64 {
3332
func GetEnvInt(key string, defaultVal int, logger logr.Logger) int {
3433
val, exists := os.LookupEnv(key)
3534
if !exists {
36-
logger.V(logutil.VERBOSE).Info("Environment variable not set, using default value",
35+
logger.Info("Environment variable not set, using default value",
3736
"key", key, "defaultValue", defaultVal)
3837
return defaultVal
3938
}
4039

4140
intVal, err := strconv.Atoi(val)
4241
if err != nil {
43-
logger.V(logutil.VERBOSE).Info("Failed to parse environment variable as int, using default value",
42+
logger.Info("Failed to parse environment variable as int, using default value",
4443
"key", key, "value", val, "error", err, "defaultValue", defaultVal)
4544
return defaultVal
4645
}
4746

48-
logger.V(logutil.VERBOSE).Info("Successfully loaded environment variable",
47+
logger.Info("Successfully loaded environment variable",
4948
"key", key, "value", intVal)
5049
return intVal
5150
}
51+
52+
// GetEnvString gets a string from an environment variable with a default value
53+
func GetEnvString(key string, defaultVal string, logger logr.Logger) string {
54+
val, exists := os.LookupEnv(key)
55+
if !exists {
56+
logger.Info("Environment variable not set, using default value",
57+
"key", key, "defaultValue", defaultVal)
58+
return defaultVal
59+
}
60+
return val
61+
}

pkg/epp/util/env/env_test.go

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,3 +142,64 @@ func TestGetEnvInt(t *testing.T) {
142142
})
143143
}
144144
}
145+
146+
func TestGetEnvString(t *testing.T) {
147+
logger := testr.New(t)
148+
149+
tests := []struct {
150+
name string
151+
key string
152+
value string
153+
defaultVal string
154+
expected string
155+
setup func()
156+
teardown func()
157+
}{
158+
{
159+
name: "env variable exists and is valid",
160+
key: "TEST_STR",
161+
value: "123",
162+
defaultVal: "default",
163+
expected: "123",
164+
setup: func() {
165+
os.Setenv("TEST_STR", "123")
166+
},
167+
teardown: func() {
168+
os.Unsetenv("TEST_STR")
169+
},
170+
},
171+
{
172+
name: "env variable does not exist",
173+
key: "TEST_STR_MISSING",
174+
defaultVal: "default",
175+
expected: "default",
176+
setup: func() {},
177+
teardown: func() {},
178+
},
179+
{
180+
name: "env variable is empty string",
181+
key: "TEST_STR_EMPTY",
182+
value: "",
183+
defaultVal: "default",
184+
expected: "",
185+
setup: func() {
186+
os.Setenv("TEST_STR_EMPTY", "")
187+
},
188+
teardown: func() {
189+
os.Unsetenv("TEST_STR_EMPTY")
190+
},
191+
},
192+
}
193+
194+
for _, tc := range tests {
195+
t.Run(tc.name, func(t *testing.T) {
196+
tc.setup()
197+
defer tc.teardown()
198+
199+
result := GetEnvString(tc.key, tc.defaultVal, logger.V(logutil.VERBOSE))
200+
if result != tc.expected {
201+
t.Errorf("GetEnvString(%s, %s) = %s, expected %s", tc.key, tc.defaultVal, result, tc.expected)
202+
}
203+
})
204+
}
205+
}

0 commit comments

Comments
 (0)