mirror of
https://github.com/elyby/chrly.git
synced 2025-05-31 14:11:51 +05:30
Cleanup: remove tests and scripts folders.
Introduce Subscriber interface to make eventsubscriber package independent of package dispatcher.
This commit is contained in:
@@ -11,14 +11,13 @@ import (
|
||||
"github.com/mono83/slf/wd"
|
||||
|
||||
"github.com/elyby/chrly/api/mojang"
|
||||
"github.com/elyby/chrly/dispatcher"
|
||||
)
|
||||
|
||||
type Logger struct {
|
||||
slf.Logger
|
||||
}
|
||||
|
||||
func (l *Logger) ConfigureWithDispatcher(d dispatcher.EventDispatcher) {
|
||||
func (l *Logger) ConfigureWithDispatcher(d Subscriber) {
|
||||
d.Subscribe("skinsystem:after_request", l.handleAfterSkinsystemRequest)
|
||||
|
||||
d.Subscribe("mojang_textures:usernames:after_call", l.createMojangTexturesErrorHandler("usernames"))
|
||||
|
||||
@@ -8,14 +8,55 @@ import (
|
||||
"syscall"
|
||||
"testing"
|
||||
|
||||
"github.com/mono83/slf"
|
||||
"github.com/mono83/slf/params"
|
||||
"github.com/stretchr/testify/mock"
|
||||
|
||||
"github.com/elyby/chrly/api/mojang"
|
||||
"github.com/elyby/chrly/dispatcher"
|
||||
"github.com/elyby/chrly/tests"
|
||||
)
|
||||
|
||||
type LoggerMock struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
func prepareLoggerArgs(message string, params []slf.Param) []interface{} {
|
||||
args := []interface{}{message}
|
||||
for _, v := range params {
|
||||
args = append(args, v.(interface{}))
|
||||
}
|
||||
|
||||
return args
|
||||
}
|
||||
|
||||
func (l *LoggerMock) Trace(message string, params ...slf.Param) {
|
||||
l.Called(prepareLoggerArgs(message, params)...)
|
||||
}
|
||||
|
||||
func (l *LoggerMock) Debug(message string, params ...slf.Param) {
|
||||
l.Called(prepareLoggerArgs(message, params)...)
|
||||
}
|
||||
|
||||
func (l *LoggerMock) Info(message string, params ...slf.Param) {
|
||||
l.Called(prepareLoggerArgs(message, params)...)
|
||||
}
|
||||
|
||||
func (l *LoggerMock) Warning(message string, params ...slf.Param) {
|
||||
l.Called(prepareLoggerArgs(message, params)...)
|
||||
}
|
||||
|
||||
func (l *LoggerMock) Error(message string, params ...slf.Param) {
|
||||
l.Called(prepareLoggerArgs(message, params)...)
|
||||
}
|
||||
|
||||
func (l *LoggerMock) Alert(message string, params ...slf.Param) {
|
||||
l.Called(prepareLoggerArgs(message, params)...)
|
||||
}
|
||||
|
||||
func (l *LoggerMock) Emergency(message string, params ...slf.Param) {
|
||||
l.Called(prepareLoggerArgs(message, params)...)
|
||||
}
|
||||
|
||||
type LoggerTestCase struct {
|
||||
Events [][]interface{}
|
||||
ExpectedCalls [][]interface{}
|
||||
@@ -189,16 +230,16 @@ func init() {
|
||||
func TestLogger(t *testing.T) {
|
||||
for name, c := range loggerTestCases {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
wdMock := &tests.WdMock{}
|
||||
loggerMock := &LoggerMock{}
|
||||
if c.ExpectedCalls != nil {
|
||||
for _, c := range c.ExpectedCalls {
|
||||
topicName, _ := c[0].(string)
|
||||
wdMock.On(topicName, c[1:]...)
|
||||
loggerMock.On(topicName, c[1:]...)
|
||||
}
|
||||
}
|
||||
|
||||
reporter := &Logger{
|
||||
Logger: wdMock,
|
||||
Logger: loggerMock,
|
||||
}
|
||||
|
||||
d := dispatcher.New()
|
||||
@@ -211,7 +252,7 @@ func TestLogger(t *testing.T) {
|
||||
if c.ExpectedCalls != nil {
|
||||
for _, c := range c.ExpectedCalls {
|
||||
topicName, _ := c[0].(string)
|
||||
wdMock.AssertCalled(t, topicName, c[1:]...)
|
||||
loggerMock.AssertCalled(t, topicName, c[1:]...)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
"github.com/mono83/slf"
|
||||
|
||||
"github.com/elyby/chrly/api/mojang"
|
||||
"github.com/elyby/chrly/dispatcher"
|
||||
)
|
||||
|
||||
type StatsReporter struct {
|
||||
@@ -19,7 +18,7 @@ type StatsReporter struct {
|
||||
timersMap sync.Map
|
||||
}
|
||||
|
||||
func (s *StatsReporter) ConfigureWithDispatcher(d dispatcher.EventDispatcher) {
|
||||
func (s *StatsReporter) ConfigureWithDispatcher(d Subscriber) {
|
||||
// Per request events
|
||||
d.Subscribe("skinsystem:before_request", s.handleBeforeRequest)
|
||||
d.Subscribe("skinsystem:after_request", s.handleAfterRequest)
|
||||
|
||||
@@ -4,14 +4,45 @@ import (
|
||||
"errors"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/mock"
|
||||
"github.com/mono83/slf"
|
||||
|
||||
"github.com/elyby/chrly/api/mojang"
|
||||
"github.com/elyby/chrly/dispatcher"
|
||||
"github.com/elyby/chrly/tests"
|
||||
|
||||
"github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
func prepareStatsReporterArgs(name string, value interface{}, params []slf.Param) []interface{} {
|
||||
args := []interface{}{name, value}
|
||||
for _, v := range params {
|
||||
args = append(args, v.(interface{}))
|
||||
}
|
||||
|
||||
return args
|
||||
}
|
||||
|
||||
type StatsReporterMock struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
func (r *StatsReporterMock) IncCounter(name string, value int64, params ...slf.Param) {
|
||||
r.Called(prepareStatsReporterArgs(name, value, params)...)
|
||||
}
|
||||
|
||||
func (r *StatsReporterMock) UpdateGauge(name string, value int64, params ...slf.Param) {
|
||||
r.Called(prepareStatsReporterArgs(name, value, params)...)
|
||||
}
|
||||
|
||||
func (r *StatsReporterMock) RecordTimer(name string, duration time.Duration, params ...slf.Param) {
|
||||
r.Called(prepareStatsReporterArgs(name, duration, params)...)
|
||||
}
|
||||
|
||||
func (r *StatsReporterMock) Timer(name string, params ...slf.Param) slf.Timer {
|
||||
return slf.NewTimer(name, params, r)
|
||||
}
|
||||
|
||||
type StatsReporterTestCase struct {
|
||||
Events map[string][]interface{}
|
||||
ExpectedCalls [][]interface{}
|
||||
@@ -326,16 +357,16 @@ var statsReporterTestCases = []*StatsReporterTestCase{
|
||||
func TestStatsReporter(t *testing.T) {
|
||||
for _, c := range statsReporterTestCases {
|
||||
t.Run("handle events", func(t *testing.T) {
|
||||
wdMock := &tests.WdMock{}
|
||||
statsReporterMock := &StatsReporterMock{}
|
||||
if c.ExpectedCalls != nil {
|
||||
for _, c := range c.ExpectedCalls {
|
||||
topicName, _ := c[0].(string)
|
||||
wdMock.On(topicName, c[1:]...).Once()
|
||||
statsReporterMock.On(topicName, c[1:]...).Once()
|
||||
}
|
||||
}
|
||||
|
||||
reporter := &StatsReporter{
|
||||
Reporter: wdMock,
|
||||
Reporter: statsReporterMock,
|
||||
Prefix: "mock_prefix",
|
||||
}
|
||||
|
||||
@@ -345,7 +376,7 @@ func TestStatsReporter(t *testing.T) {
|
||||
d.Emit(event, args...)
|
||||
}
|
||||
|
||||
wdMock.AssertExpectations(t)
|
||||
statsReporterMock.AssertExpectations(t)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
5
eventsubscribers/subscriber.go
Normal file
5
eventsubscribers/subscriber.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package eventsubscribers
|
||||
|
||||
type Subscriber interface {
|
||||
Subscribe(topic string, fn interface{})
|
||||
}
|
||||
Reference in New Issue
Block a user