@@ -172,19 +172,101 @@ func TestModelsStatusEvents(t *testing.T) {
172
172
}
173
173
174
174
func TestServersStatusStream (t * testing.T ) {
175
+ type serverReplicaRequest struct {
176
+ request * pba.AgentSubscribeRequest
177
+ draining bool
178
+ }
179
+
175
180
g := NewGomegaWithT (t )
176
181
type test struct {
177
182
name string
178
- loadReq * pba. AgentSubscribeRequest
183
+ loadReq [] serverReplicaRequest
179
184
server * SchedulerServer
180
185
err bool
181
186
}
182
187
183
188
tests := []test {
184
189
{
185
- name : "server ok" ,
186
- loadReq : & pba.AgentSubscribeRequest {
187
- ServerName : "foo" ,
190
+ name : "server ok - 1 empty replica" ,
191
+ loadReq : []serverReplicaRequest {
192
+ {
193
+ request : & pba.AgentSubscribeRequest {
194
+ ServerName : "foo" ,
195
+ },
196
+ },
197
+ },
198
+ server : & SchedulerServer {
199
+ modelStore : store .NewMemoryStore (log .New (), store .NewLocalSchedulerStore (), nil ),
200
+ logger : log .New (),
201
+ timeout : 10 * time .Millisecond ,
202
+ },
203
+ },
204
+ {
205
+ name : "server ok - multiple replicas" ,
206
+ loadReq : []serverReplicaRequest {
207
+ {
208
+ request : & pba.AgentSubscribeRequest {
209
+ ServerName : "foo" ,
210
+ ReplicaIdx : 0 ,
211
+ LoadedModels : []* pba.ModelVersion {
212
+ {
213
+ Model : & pb.Model {
214
+ Meta : & pb.MetaData {Name : "foo-model" },
215
+ },
216
+ },
217
+ },
218
+ },
219
+ },
220
+ {
221
+ request : & pba.AgentSubscribeRequest {
222
+ ServerName : "foo" ,
223
+ ReplicaIdx : 1 ,
224
+ LoadedModels : []* pba.ModelVersion {
225
+ {
226
+ Model : & pb.Model {
227
+ Meta : & pb.MetaData {Name : "foo-model" },
228
+ },
229
+ },
230
+ },
231
+ },
232
+ },
233
+ },
234
+ server : & SchedulerServer {
235
+ modelStore : store .NewMemoryStore (log .New (), store .NewLocalSchedulerStore (), nil ),
236
+ logger : log .New (),
237
+ timeout : 10 * time .Millisecond ,
238
+ },
239
+ },
240
+ {
241
+ name : "server ok - multiple replicas with draining" ,
242
+ loadReq : []serverReplicaRequest {
243
+ {
244
+ request : & pba.AgentSubscribeRequest {
245
+ ServerName : "foo" ,
246
+ ReplicaIdx : 0 ,
247
+ LoadedModels : []* pba.ModelVersion {
248
+ {
249
+ Model : & pb.Model {
250
+ Meta : & pb.MetaData {Name : "foo-model" },
251
+ },
252
+ },
253
+ },
254
+ },
255
+ },
256
+ {
257
+ request : & pba.AgentSubscribeRequest {
258
+ ServerName : "foo" ,
259
+ ReplicaIdx : 1 ,
260
+ LoadedModels : []* pba.ModelVersion {
261
+ {
262
+ Model : & pb.Model {
263
+ Meta : & pb.MetaData {Name : "foo-model" },
264
+ },
265
+ },
266
+ },
267
+ },
268
+ draining : true ,
269
+ },
188
270
},
189
271
server : & SchedulerServer {
190
272
modelStore : store .NewMemoryStore (log .New (), store .NewLocalSchedulerStore (), nil ),
@@ -194,8 +276,12 @@ func TestServersStatusStream(t *testing.T) {
194
276
},
195
277
{
196
278
name : "timeout" ,
197
- loadReq : & pba.AgentSubscribeRequest {
198
- ServerName : "foo" ,
279
+ loadReq : []serverReplicaRequest {
280
+ {
281
+ request : & pba.AgentSubscribeRequest {
282
+ ServerName : "foo" ,
283
+ },
284
+ },
199
285
},
200
286
server : & SchedulerServer {
201
287
modelStore : store .NewMemoryStore (log .New (), store .NewLocalSchedulerStore (), nil ),
@@ -208,9 +294,20 @@ func TestServersStatusStream(t *testing.T) {
208
294
209
295
for _ , test := range tests {
210
296
t .Run (test .name , func (t * testing.T ) {
297
+ expectedReplicas := int32 (0 )
298
+ expectedNumLoadedModelReplicas := int32 (0 )
211
299
if test .loadReq != nil {
212
- err := test .server .modelStore .AddServerReplica (test .loadReq )
213
- g .Expect (err ).To (BeNil ())
300
+ for _ , r := range test .loadReq {
301
+ err := test .server .modelStore .AddServerReplica (r .request )
302
+ g .Expect (err ).To (BeNil ())
303
+ if ! r .draining {
304
+ expectedReplicas ++
305
+ expectedNumLoadedModelReplicas += int32 (len (r .request .LoadedModels ))
306
+ } else {
307
+ server , _ := test .server .modelStore .GetServer ("foo" , true , false )
308
+ server .Replicas [int (r .request .ReplicaIdx )].SetIsDraining ()
309
+ }
310
+ }
214
311
}
215
312
216
313
stream := newStubServerStatusServer (1 , 5 * time .Millisecond )
@@ -230,6 +327,8 @@ func TestServersStatusStream(t *testing.T) {
230
327
231
328
g .Expect (ssr ).ToNot (BeNil ())
232
329
g .Expect (ssr .ServerName ).To (Equal ("foo" ))
330
+ g .Expect (ssr .GetAvailableReplicas ()).To (Equal (expectedReplicas ))
331
+ g .Expect (ssr .NumLoadedModelReplicas ).To (Equal (expectedNumLoadedModelReplicas ))
233
332
}
234
333
})
235
334
}
0 commit comments