github.com/Axway/agent-sdk@v1.1.101/pkg/agent/eventsync_test.go (about) 1 package agent 2 3 import ( 4 "encoding/json" 5 "strings" 6 "testing" 7 8 "github.com/Axway/agent-sdk/pkg/agent/resource" 9 "github.com/Axway/agent-sdk/pkg/api" 10 apiv1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 11 management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1" 12 "github.com/Axway/agent-sdk/pkg/apic/mock" 13 "github.com/Axway/agent-sdk/pkg/config" 14 "github.com/Axway/agent-sdk/pkg/watchmanager/proto" 15 "github.com/stretchr/testify/assert" 16 ) 17 18 func TestEventSync_pollMode(t *testing.T) { 19 cfg := createCentralCfg("https://abc.com", "mockenv") 20 err := Initialize(cfg) 21 cfg.AgentName = "Test-DA" 22 agentRes := createDiscoveryAgentRes("111", "Test-DA", "test-dataplane", "") 23 24 mc := &mock.Client{ 25 ExecuteAPIMock: func(method, url string, queryParam map[string]string, buffer []byte) ([]byte, error) { 26 if method == api.PUT { 27 return buffer, nil 28 } 29 return json.Marshal(agentRes) 30 }, 31 GetResourceMock: func(url string) (*apiv1.ResourceInstance, error) { 32 if strings.Contains(url, "/discoveryagents") { 33 return agentRes, nil 34 } 35 wt := management.NewWatchTopic("mock-wt") 36 ri, err := wt.AsInstance() 37 return ri, err 38 }, 39 } 40 41 m, _ := resource.NewAgentResourceManager(cfg, mc, nil) 42 agent.agentResourceManager = m 43 44 InitializeForTest(mc) 45 assert.Nil(t, err) 46 47 es, err := NewEventSync() 48 assert.Nil(t, err) 49 assert.NotNil(t, es.watchTopic) 50 assert.NotNil(t, es.discoveryCache) 51 assert.NotNil(t, es.sequence) 52 assert.NotNil(t, es.harvester) 53 54 es.harvester = &mockHarvester{} 55 err = es.SyncCache() 56 assert.Nil(t, err) 57 } 58 59 func TestEventSync_streamMode(t *testing.T) { 60 cfg := createCentralCfg("https://abc.com", "mockenv") 61 cfg.GRPCCfg = config.GRPCConfig{ 62 Enabled: true, 63 Insecure: true, 64 } 65 err := Initialize(cfg) 66 agent.agentFeaturesCfg = &config.AgentFeaturesConfiguration{ 67 ConnectToCentral: true, 68 ProcessSystemSignals: true, 69 VersionChecker: false, 70 PersistCache: true, 71 } 72 73 cfg.AgentName = "Test-DA" 74 agentRes := createDiscoveryAgentRes("111", "Test-DA", "test-dataplane", "") 75 mc := &mock.Client{ 76 ExecuteAPIMock: func(method, url string, queryParam map[string]string, buffer []byte) ([]byte, error) { 77 if method == api.PUT { 78 return buffer, nil 79 } 80 return json.Marshal(agentRes) 81 }, 82 GetResourceMock: func(url string) (*apiv1.ResourceInstance, error) { 83 if strings.Contains(url, "/discoveryagents") { 84 return agentRes, nil 85 } 86 wt := management.NewWatchTopic("mock-wt") 87 ri, err := wt.AsInstance() 88 return ri, err 89 }, 90 } 91 92 m, _ := resource.NewAgentResourceManager(cfg, mc, nil) 93 agent.agentResourceManager = m 94 95 InitializeForTest(mc) 96 assert.Nil(t, err) 97 98 es, err := NewEventSync() 99 assert.Nil(t, err) 100 assert.NotNil(t, es.watchTopic) 101 assert.NotNil(t, es.discoveryCache) 102 assert.NotNil(t, es.sequence) 103 assert.NotNil(t, es.harvester) 104 105 es.harvester = &mockHarvester{} 106 err = es.SyncCache() 107 assert.Nil(t, err) 108 } 109 110 type mockHarvester struct{} 111 112 func (m mockHarvester) EventCatchUp(link string, events chan *proto.Event) error { 113 return nil 114 } 115 116 func (m mockHarvester) ReceiveSyncEvents(topicSelfLink string, sequenceID int64, eventCh chan *proto.Event) (int64, error) { 117 return 1, nil 118 }