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  }