mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 14:04:02 +03:00
Add test conntraffic
This commit is contained in:
@@ -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{})
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user