MCPcopy
hub / github.com/baetyl/baetyl / TestReportAndApply

Function TestReportAndApply

engine/engine_test.go:249–313  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

247}
248
249func TestReportAndApply(t *testing.T) {
250 nod, _, sto := prepare(t)
251 mockCtl := gomock.NewController(t)
252 defer mockCtl.Finish()
253 mockAmi := mock.NewMockAMI(mockCtl)
254 mockSync := mock.NewMockSync(mockCtl)
255 eng := engineImpl{
256 ami: mockAmi,
257 cfg: config.Config{},
258 sto: sto,
259 syn: mockSync,
260 nod: nod,
261 log: log.With(log.Any("engine", "test")),
262 }
263 assert.NotNil(t, eng)
264 infos := map[string]interface{}{}
265 stats := map[string]interface{}{}
266
267 t.Setenv(kube.KubeNodeName, "knn")
268 mockAmi.EXPECT().CollectNodeInfo().Return(infos, nil)
269 mockAmi.EXPECT().CollectNodeStats().Return(stats, nil)
270 appStats := []specv1.AppStats{{AppInfo: specv1.AppInfo{Name: "app1", Version: "v1"}}, {AppInfo: specv1.AppInfo{Name: "app2", Version: "v2"}}}
271 mockAmi.EXPECT().StatsApps(gomock.Any()).Return(appStats, nil)
272 mockAmi.EXPECT().GetModeInfo().Return("modeinfo", nil)
273
274 reApp := specv1.Report{
275 "apps": []specv1.AppInfo{{Name: "app1", Version: "v1"}, {Name: "app2", Version: "v2"}},
276 }
277 deApp := specv1.Desire{
278 "apps": []specv1.AppInfo{{Name: "app2", Version: "v2"}, {Name: "app3", Version: "v3"}},
279 }
280 _, err := nod.Report(reApp, false)
281 assert.NoError(t, err)
282 _, err = nod.Desire(deApp, false)
283 assert.NoError(t, err)
284
285 app1 := specv1.Application{Name: "app1", Version: "v1"}
286 err = sto.Upsert(makeKey(specv1.KindApplication, "app1", "v1"), app1)
287 assert.NoError(t, err)
288 app3 := specv1.Application{Name: "app3", Version: "v3"}
289 err = sto.Upsert(makeKey(specv1.KindApplication, "app3", "v3"), app3)
290 mockSync.EXPECT().SyncResource(gomock.Any()).Return(nil)
291 mockSync.EXPECT().SyncApps(gomock.Any()).Return(nil, nil)
292 mockAmi.EXPECT().ApplyApp(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
293 mockAmi.EXPECT().DeleteApp(gomock.Any(), gomock.Any()).Return(nil)
294 err = eng.reportAndApply(false, true, nil)
295 assert.NoError(t, err)
296
297 // desire app is nil
298 mockAmi.EXPECT().CollectNodeInfo().Return(nil, nil)
299 mockAmi.EXPECT().CollectNodeStats().Return(nil, nil)
300 appStats = []specv1.AppStats{{AppInfo: specv1.AppInfo{Name: "app1", Version: "v1"}}}
301 mockAmi.EXPECT().StatsApps(gomock.Any()).Return(appStats, nil)
302 mockAmi.EXPECT().GetModeInfo().Return("modeinfo", nil)
303 reApp = specv1.Report{
304 "apps": []specv1.AppInfo{{Name: "app1", Version: "v1"}},
305 }
306 deApp = specv1.Desire{"apps": nil}

Callers

nothing calls this directly

Calls 15

EXPECTMethod · 0.95
EXPECTMethod · 0.95
reportAndApplyMethod · 0.95
NewMockAMIFunction · 0.92
NewMockSyncFunction · 0.92
prepareFunction · 0.85
makeKeyFunction · 0.70
CollectNodeInfoMethod · 0.65
CollectNodeStatsMethod · 0.65
StatsAppsMethod · 0.65
GetModeInfoMethod · 0.65
ReportMethod · 0.65

Tested by

no test coverage detected