(t *testing.T)
| 23 | ) |
| 24 | |
| 25 | func TestReportSync(t *testing.T) { |
| 26 | f, err := os.CreateTemp("", t.Name()) |
| 27 | assert.NoError(t, err) |
| 28 | assert.NotNil(t, f) |
| 29 | fmt.Println("-->tempfile", f.Name()) |
| 30 | |
| 31 | sto, err := store.NewBoltHold(f.Name()) |
| 32 | assert.NoError(t, err) |
| 33 | assert.NotNil(t, sto) |
| 34 | |
| 35 | nod, err := node.NewNode(sto) |
| 36 | assert.NoError(t, err) |
| 37 | assert.NotNil(t, nod) |
| 38 | |
| 39 | var sc config.Config |
| 40 | err = utils.UnmarshalYAML(nil, &sc) |
| 41 | assert.NoError(t, err) |
| 42 | |
| 43 | mockCtl := gomock.NewController(t) |
| 44 | link := plugin.NewMockLink(mockCtl) |
| 45 | assert.NoError(t, err) |
| 46 | pb := plugin.NewMockPubsub(mockCtl) |
| 47 | syn := &sync{ |
| 48 | link: link, |
| 49 | cfg: sc, |
| 50 | store: sto, |
| 51 | nod: nod, |
| 52 | pb: pb, |
| 53 | log: log.With(log.Any("test", "sync")), |
| 54 | } |
| 55 | link.EXPECT().IsAsyncSupported().Return(false).Times(1) |
| 56 | delta := specv1.Delta{"apps": map[string]interface{}{"app1": "123"}} |
| 57 | |
| 58 | msg := &specv1.Message{Content: specv1.LazyValue{Value: delta}, Kind: specv1.MessageReport} |
| 59 | dt, err := json.Marshal(msg) |
| 60 | assert.NoError(t, err) |
| 61 | m := &specv1.Message{} |
| 62 | err = json.Unmarshal(dt, m) |
| 63 | assert.NoError(t, err) |
| 64 | |
| 65 | link.EXPECT().Request(gomock.Any()).Return(m, nil).Times(1) |
| 66 | err = syn.reportAndDesire() |
| 67 | assert.NoError(t, err) |
| 68 | no, _ := syn.nod.Get() |
| 69 | var desire specv1.Desire = map[string]interface{}{} |
| 70 | desire, err = desire.Patch(delta) |
| 71 | assert.NoError(t, err) |
| 72 | assert.Equal(t, desire, no.Desire) |
| 73 | |
| 74 | link.EXPECT().IsAsyncSupported().Return(true).Times(1) |
| 75 | link.EXPECT().Send(gomock.Any()).Return(nil).Times(1) |
| 76 | err = syn.reportAndDesire() |
| 77 | assert.NoError(t, err) |
| 78 | |
| 79 | link.EXPECT().IsAsyncSupported().Return(false).Times(1) |
| 80 | link.EXPECT().Request(gomock.Any()).Return(nil, errors.New("failed to report")) |
| 81 | err = syn.reportAndDesire() |
| 82 | assert.Error(t, err) |
nothing calls this directly
no test coverage detected