FILE / ScuroNeko/mtg

events/noop_test.go

Исходный файл и его история в репозитории.
FILE daa8b9c798fd894646a45c945e950055fae72435
Files
mtg/events/noop_test.go
T
2021-03-29 12:07:18 +03:00

110 lines
2.4 KiB
Go

package events_test
import (
"context"
"net"
"testing"
"time"
"github.com/9seconds/mtg/v2/events"
"github.com/9seconds/mtg/v2/mtglib"
"github.com/stretchr/testify/suite"
)
type NoopTestSuite struct {
suite.Suite
testData map[string]mtglib.Event
ctx context.Context
}
func (suite *NoopTestSuite) SetupSuite() {
suite.testData = map[string]mtglib.Event{
"start": mtglib.EventStart{
CreatedAt: time.Now(),
ConnID: "connID",
RemoteIP: net.ParseIP("127.0.0.1"),
},
"connected-to-dc": mtglib.EventConnectedToDC{
CreatedAt: time.Now(),
ConnID: "connID",
RemoteIP: net.ParseIP("127.1.0.1"),
DC: 2,
},
"domain-fronting": mtglib.EventDomainFronting{
CreatedAt: time.Now(),
ConnID: "connID",
},
"traffic": mtglib.EventTraffic{
CreatedAt: time.Now(),
ConnID: "connID",
Traffic: 1000,
IsRead: true,
},
"finish": mtglib.EventFinish{
CreatedAt: time.Now(),
ConnID: "connID",
},
"concurrency-limited": mtglib.EventConcurrencyLimited{
CreatedAt: time.Now(),
},
"ip-blacklisted": mtglib.EventIPBlocklisted{
RemoteIP: net.ParseIP("10.0.0.10"),
CreatedAt: time.Now(),
},
"replay-attack": mtglib.EventReplayAttack{
CreatedAt: time.Now(),
ConnID: "connID",
},
}
suite.ctx = context.Background()
}
func (suite *NoopTestSuite) TestStream() {
stream := events.NewNoopStream()
for name, v := range suite.testData {
value := v
suite.T().Run(name, func(t *testing.T) {
stream.Send(suite.ctx, value)
})
}
stream.Shutdown()
}
func (suite *NoopTestSuite) TestObserver() {
observer := events.NewNoopObserver()
for name, v := range suite.testData {
value := v
suite.T().Run(name, func(t *testing.T) {
switch typedEvt := value.(type) {
case mtglib.EventStart:
observer.EventStart(typedEvt)
case mtglib.EventConnectedToDC:
observer.EventConnectedToDC(typedEvt)
case mtglib.EventDomainFronting:
observer.EventDomainFronting(typedEvt)
case mtglib.EventFinish:
observer.EventFinish(typedEvt)
case mtglib.EventConcurrencyLimited:
observer.EventConcurrencyLimited(typedEvt)
case mtglib.EventIPBlocklisted:
observer.EventIPBlocklisted(typedEvt)
case mtglib.EventReplayAttack:
observer.EventReplayAttack(typedEvt)
}
})
}
observer.Shutdown()
}
func TestNoop(t *testing.T) {
t.Parallel()
suite.Run(t, &NoopTestSuite{})
}