mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 11:24: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
|
package mtglib
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/mock"
|
||||||
|
)
|
||||||
|
|
||||||
type NoopLogger struct{}
|
type NoopLogger struct{}
|
||||||
|
|
||||||
func (n NoopLogger) Named(_ string) Logger { return n }
|
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) InfoError(_ string, _ error) {}
|
||||||
func (n NoopLogger) WarningError(_ string, _ error) {}
|
func (n NoopLogger) WarningError(_ string, _ error) {}
|
||||||
func (n NoopLogger) DebugError(_ 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