github.com/netdata/go.d.plugin@v0.58.1/modules/zookeeper/fetcher_test.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package zookeeper
     4  
     5  import (
     6  	"testing"
     7  
     8  	"github.com/netdata/go.d.plugin/pkg/socket"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func Test_clientFetch(t *testing.T) {
    13  	c := &zookeeperFetcher{Client: &mockSocket{rowsNumResp: 10}}
    14  
    15  	rows, err := c.fetch("whatever\n")
    16  	assert.NoError(t, err)
    17  	assert.Len(t, rows, 10)
    18  
    19  	rows, err = c.fetch("whatever\n")
    20  	assert.NoError(t, err)
    21  	assert.Len(t, rows, 10)
    22  }
    23  
    24  func Test_clientFetchReadLineLimitExceeded(t *testing.T) {
    25  	c := &zookeeperFetcher{Client: &mockSocket{rowsNumResp: limitReadLines + 1}}
    26  
    27  	rows, err := c.fetch("whatever\n")
    28  	assert.Error(t, err)
    29  	assert.Len(t, rows, 0)
    30  }
    31  
    32  type mockSocket struct {
    33  	rowsNumResp int
    34  }
    35  
    36  func (m *mockSocket) Connect() error {
    37  	return nil
    38  }
    39  
    40  func (m *mockSocket) Disconnect() error {
    41  	return nil
    42  }
    43  
    44  func (m *mockSocket) Command(command string, process socket.Processor) error {
    45  	for i := 0; i < m.rowsNumResp; i++ {
    46  		process([]byte(command))
    47  	}
    48  	return nil
    49  }