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