@@ -18,8 +18,14 @@ package handlers
18
18
19
19
import (
20
20
"testing"
21
+ "time"
22
+
23
+ corev1 "k8s.io/api/core/v1"
24
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21
25
22
26
"sigs.k8s.io/gateway-api-inference-extension/api/v1alpha2"
27
+ "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend/metrics"
28
+ "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datastore"
23
29
logutil "sigs.k8s.io/gateway-api-inference-extension/pkg/epp/util/logging"
24
30
)
25
31
@@ -126,6 +132,55 @@ func TestRandomWeightedDraw(t *testing.T) {
126
132
}
127
133
}
128
134
135
+ func TestGetRandomPod (t * testing.T ) {
136
+ tests := []struct {
137
+ name string
138
+ storePods []* corev1.Pod
139
+ expectNil bool
140
+ }{
141
+ {
142
+ name : "No pods available" ,
143
+ storePods : []* corev1.Pod {},
144
+ expectNil : true ,
145
+ },
146
+ {
147
+ name : "Single pod available" ,
148
+ storePods : []* corev1.Pod {
149
+ {ObjectMeta : metav1.ObjectMeta {Name : "pod1" }},
150
+ },
151
+ expectNil : false ,
152
+ },
153
+ {
154
+ name : "Multiple pods available" ,
155
+ storePods : []* corev1.Pod {
156
+ {ObjectMeta : metav1.ObjectMeta {Name : "pod1" }},
157
+ {ObjectMeta : metav1.ObjectMeta {Name : "pod2" }},
158
+ {ObjectMeta : metav1.ObjectMeta {Name : "pod3" }},
159
+ },
160
+ expectNil : false ,
161
+ },
162
+ }
163
+
164
+ for _ , test := range tests {
165
+ t .Run (test .name , func (t * testing.T ) {
166
+ pmf := metrics .NewPodMetricsFactory (& metrics.FakePodMetricsClient {}, time .Millisecond )
167
+ ds := datastore .NewDatastore (t .Context (), pmf )
168
+ for _ , pod := range test .storePods {
169
+ ds .PodUpdateOrAddIfNotExist (pod )
170
+ }
171
+
172
+ gotPod := GetRandomPod (ds )
173
+
174
+ if test .expectNil && gotPod != nil {
175
+ t .Errorf ("expected nil pod, got: %v" , gotPod )
176
+ }
177
+ if ! test .expectNil && gotPod == nil {
178
+ t .Errorf ("expected non-nil pod, got nil" )
179
+ }
180
+ })
181
+ }
182
+ }
183
+
129
184
func pointer (v int32 ) * int32 {
130
185
return & v
131
186
}
0 commit comments