MCPcopy
hub / github.com/baetyl/baetyl / TestReportSync

Function TestReportSync

sync/sync_test.go:25–88  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

23)
24
25func 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)

Callers

nothing calls this directly

Calls 10

EXPECTMethod · 0.95
reportAndDesireMethod · 0.95
NewBoltHoldFunction · 0.92
NewNodeFunction · 0.92
NewMockLinkFunction · 0.92
NewMockPubsubFunction · 0.92
IsAsyncSupportedMethod · 0.65
RequestMethod · 0.65
GetMethod · 0.65
SendMethod · 0.65

Tested by

no test coverage detected