1package statsd
2
3import (
4	"testing"
5	"time"
6
7	"github.com/stretchr/testify/assert"
8	"github.com/stretchr/testify/mock"
9)
10
11type mockedWriter struct {
12	mock.Mock
13}
14
15func (w *mockedWriter) Write(data []byte) (n int, err error) {
16	args := w.Called(data)
17	return args.Int(0), args.Error(1)
18}
19func (w *mockedWriter) SetWriteTimeout(d time.Duration) error {
20	args := w.Called(d)
21	return args.Error(0)
22}
23func (w *mockedWriter) Close() error {
24	args := w.Called()
25	return args.Error(0)
26}
27
28func TestSender(t *testing.T) {
29	writer := new(mockedWriter)
30	writer.On("Write", mock.Anything).Return(0, nil)
31	writer.On("Close").Return(nil)
32	pool := newBufferPool(10, 1024, 1)
33	sender := newSender(writer, 10, pool)
34	buffer := pool.borrowBuffer()
35
36	sender.send(buffer)
37
38	err := sender.close()
39	assert.Nil(t, err)
40	writer.AssertCalled(t, "Write", buffer.bytes())
41	assert.Equal(t, 10, len(pool.pool))
42}
43