github.com/Axway/agent-sdk@v1.1.101/pkg/transaction/metric/mockclient_test.go (about) 1 package metric 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/Axway/agent-sdk/pkg/traceability" 8 "github.com/Axway/agent-sdk/pkg/util/log" 9 "github.com/elastic/beats/v7/libbeat/outputs" 10 beatPub "github.com/elastic/beats/v7/libbeat/publisher" 11 ) 12 13 type MockClient struct { 14 outputs.NetworkClient 15 16 retry int 17 pubCount int 18 eventsAcked int 19 } 20 21 func (m *MockClient) Close() error { return nil } 22 func (m *MockClient) Connect() error { return nil } 23 func (m *MockClient) Publish(_ context.Context, batch beatPub.Batch) error { 24 m.pubCount++ 25 switch { 26 case m.retry >= m.pubCount: 27 batch.Retry() 28 case m.retry < m.pubCount && m.retry > 3: 29 return fmt.Errorf("") 30 default: 31 m.eventsAcked = len(batch.Events()) 32 batch.ACK() 33 } 34 return nil 35 } 36 func (m *MockClient) String() string { 37 return "" 38 } 39 40 var myMockClient outputs.Client 41 42 func mockGetClient() (*traceability.Client, error) { 43 tpClient := &traceability.Client{} 44 tpClient.SetTransportClient(myMockClient) 45 tpClient.SetLogger(log.NewFieldLogger()) 46 return tpClient, nil 47 } 48 49 func setupMockClient(retries int) { 50 myMockClient = &MockClient{ 51 pubCount: 0, 52 retry: retries, 53 eventsAcked: 0, 54 } 55 traceability.GetClient = mockGetClient 56 }