(t *testing.T)
| 247 | } |
| 248 | |
| 249 | func 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} |
nothing calls this directly
no test coverage detected