Add test conntraffic

This commit is contained in:
9seconds
2021-04-02 12:40:22 +03:00
parent 784a5818c8
commit 7e7823118e
2 changed files with 164 additions and 0 deletions
+150
View File
@@ -0,0 +1,150 @@
package mtglib
import (
"context"
"errors"
"io"
"testing"
"time"
"github.com/9seconds/mtg/v2/testlib"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/suite"
)
type ConnTrafficTestSuite struct {
suite.Suite
eventStreamMock *EventStreamMock
connMock *testlib.NetConnMock
conn io.ReadWriter
}
func (suite *ConnTrafficTestSuite) SetupTest() {
suite.eventStreamMock = &EventStreamMock{}
suite.connMock = &testlib.NetConnMock{}
suite.conn = connTraffic{
Conn: suite.connMock,
connID: "CONNID",
ctx: context.Background(),
stream: suite.eventStreamMock,
}
}
func (suite *ConnTrafficTestSuite) TearDownTest() {
suite.eventStreamMock.AssertExpectations(suite.T())
suite.connMock.AssertExpectations(suite.T())
}
func (suite *ConnTrafficTestSuite) TestReadOk() {
suite.eventStreamMock.
On("Send", mock.Anything, mock.Anything).
Once().
Run(func(args mock.Arguments) {
evt := args.Get(1).(EventTraffic)
suite.Equal("CONNID", evt.StreamID())
suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
suite.EqualValues(10, evt.Traffic)
suite.True(evt.IsRead)
})
suite.connMock.On("Read", mock.Anything).Once().Return(10, nil)
n, err := suite.conn.Read(make([]byte, 10))
suite.NoError(err)
suite.Equal(10, n)
}
func (suite *ConnTrafficTestSuite) TestReadErr() {
suite.eventStreamMock.
On("Send", mock.Anything, mock.Anything).
Once().
Run(func(args mock.Arguments) {
evt := args.Get(1).(EventTraffic)
suite.Equal("CONNID", evt.StreamID())
suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
suite.EqualValues(10, evt.Traffic)
suite.True(evt.IsRead)
})
suite.connMock.On("Read", mock.Anything).Once().Return(10, io.EOF)
n, err := suite.conn.Read(make([]byte, 10))
suite.True(errors.Is(err, io.EOF))
suite.Equal(10, n)
}
func (suite *ConnTrafficTestSuite) TestReadNothingOk() {
suite.connMock.On("Read", mock.Anything).Once().Return(0, nil)
n, err := suite.conn.Read(make([]byte, 10))
suite.NoError(err)
suite.Equal(0, n)
}
func (suite *ConnTrafficTestSuite) TestReadNothingErr() {
suite.connMock.On("Read", mock.Anything).Once().Return(0, io.EOF)
n, err := suite.conn.Read(make([]byte, 10))
suite.True(errors.Is(err, io.EOF))
suite.Equal(0, n)
}
func (suite *ConnTrafficTestSuite) TestWriteOk() {
suite.eventStreamMock.
On("Send", mock.Anything, mock.Anything).
Once().
Run(func(args mock.Arguments) {
evt := args.Get(1).(EventTraffic)
suite.Equal("CONNID", evt.StreamID())
suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
suite.EqualValues(10, evt.Traffic)
suite.False(evt.IsRead)
})
suite.connMock.On("Write", mock.Anything).Once().Return(10, nil)
n, err := suite.conn.Write(make([]byte, 10))
suite.NoError(err)
suite.Equal(10, n)
}
func (suite *ConnTrafficTestSuite) TestWriteErr() {
suite.eventStreamMock.
On("Send", mock.Anything, mock.Anything).
Once().
Run(func(args mock.Arguments) {
evt := args.Get(1).(EventTraffic)
suite.Equal("CONNID", evt.StreamID())
suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
suite.EqualValues(10, evt.Traffic)
suite.False(evt.IsRead)
})
suite.connMock.On("Write", mock.Anything).Once().Return(10, io.EOF)
n, err := suite.conn.Write(make([]byte, 10))
suite.True(errors.Is(err, io.EOF))
suite.Equal(10, n)
}
func (suite *ConnTrafficTestSuite) TestWriteNothingOk() {
suite.connMock.On("Write", mock.Anything).Once().Return(0, nil)
n, err := suite.conn.Write(make([]byte, 10))
suite.NoError(err)
suite.Equal(0, n)
}
func (suite *ConnTrafficTestSuite) TestWriteNothingErr() {
suite.connMock.On("Write", mock.Anything).Once().Return(0, io.EOF)
n, err := suite.conn.Write(make([]byte, 10))
suite.True(errors.Is(err, io.EOF))
suite.Equal(0, n)
}
func TestConnTraffic(t *testing.T) {
t.Parallel()
suite.Run(t, &ConnTrafficTestSuite{})
}
+14
View File
@@ -1,5 +1,11 @@
package mtglib
import (
"context"
"github.com/stretchr/testify/mock"
)
type NoopLogger struct{}
func (n NoopLogger) Named(_ string) Logger { return n }
@@ -12,3 +18,11 @@ func (n NoopLogger) Debug(_ string) {}
func (n NoopLogger) InfoError(_ string, _ error) {}
func (n NoopLogger) WarningError(_ string, _ error) {}
func (n NoopLogger) DebugError(_ string, _ error) {}
type EventStreamMock struct {
mock.Mock
}
func (e *EventStreamMock) Send(ctx context.Context, evt Event) {
e.Called(ctx, evt)
}