Skip to content

Commit

Permalink
Merge pull request #146 from topfreegames/nested-configs
Browse files Browse the repository at this point in the history
Refactor configs to allow unmarshalling instead of accessing them by string paths
  • Loading branch information
henriqueoelze committed Jul 29, 2021
2 parents 67305a9 + b598f74 commit 74bc847
Show file tree
Hide file tree
Showing 35 changed files with 649 additions and 504 deletions.
2 changes: 1 addition & 1 deletion acceptorwrapper/rate_limiting_wrapper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func TestNewRateLimitingWrapper(t *testing.T) {

reporters := []metrics.Reporter{}

rateLimitingWrapper := NewRateLimitingWrapper(reporters, config.NewDefaultRateLimitingConfig())
rateLimitingWrapper := NewRateLimitingWrapper(reporters, *config.NewDefaultRateLimitingConfig())
expected := NewRateLimiter(reporters, nil, 20, time.Second, false)
assert.Equal(t, expected, rateLimitingWrapper.wrapConn(nil))
}
8 changes: 4 additions & 4 deletions app.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ func NewApp(
sessionPool: sessionPool,
}
if app.heartbeat == time.Duration(0) {
app.heartbeat = config.HearbeatInterval
app.heartbeat = config.Heartbeat.Interval
}

app.initSysRemotes()
Expand Down Expand Up @@ -274,7 +274,7 @@ func (app *App) initSysRemotes() {
}

func (app *App) periodicMetrics() {
period := app.config.MetricsPeriod
period := app.config.Metrics.Period
go metrics.ReportSysMetrics(app.metricsReporters, period)

if app.worker.Started() {
Expand Down Expand Up @@ -346,7 +346,7 @@ func (app *App) listen() {
timer.GlobalTicker = time.NewTicker(timer.Precision)

logger.Log.Infof("starting server %s:%s", app.server.Type, app.server.ID)
for i := 0; i < app.config.ConcurrencyHandlerDispatch; i++ {
for i := 0; i < app.config.Concurrency.Handler.Dispatch; i++ {
go app.handlerService.Dispatch(i)
}
for _, acc := range app.acceptors {
Expand All @@ -364,7 +364,7 @@ func (app *App) listen() {
logger.Log.Infof("listening with acceptor %s on addr %s", reflect.TypeOf(a), a.GetAddr())
}

if app.serverMode == Cluster && app.server.Frontend && app.config.SessionUnique {
if app.serverMode == Cluster && app.server.Frontend && app.config.Session.Unique {
unique := mods.NewUniqueSession(app.server, app.rpcServer, app.rpcClient, app.sessionPool)
app.remoteService.AddRemoteBindingListener(unique)
app.RegisterModule(unique, "uniqueSession")
Expand Down
66 changes: 33 additions & 33 deletions app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ func TestNewApp(t *testing.T) {
for _, table := range tables {
t.Run(table.serverType, func(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(table.isFrontend, table.serverType, table.serverMode, table.serverMetadata, builderConfig).(*App)
app := NewDefaultApp(table.isFrontend, table.serverType, table.serverMode, table.serverMetadata, *builderConfig).(*App)
assert.Equal(t, table.isFrontend, app.server.Frontend)
assert.Equal(t, table.serverType, app.server.Type)
assert.Equal(t, table.serverMode, app.serverMode)
Expand All @@ -86,7 +86,7 @@ func TestAddAcceptor(t *testing.T) {
for _, table := range tables {
t.Run(table.serverType, func(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
builder := NewDefaultBuilder(table.isFrontend, table.serverType, table.serverMode, table.serverMetadata, builderConfig)
builder := NewDefaultBuilder(table.isFrontend, table.serverType, table.serverMode, table.serverMetadata, *builderConfig)
builder.AddAcceptor(acc)
app := builder.Build().(*App)
if table.isFrontend {
Expand All @@ -100,7 +100,7 @@ func TestAddAcceptor(t *testing.T) {

func TestSetDebug(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
app.SetDebug(true)
assert.Equal(t, true, app.debug)
app.SetDebug(false)
Expand All @@ -115,32 +115,32 @@ func TestSetLogger(t *testing.T) {

func TestGetDieChan(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
assert.Equal(t, app.dieChan, app.GetDieChan())
}

func TestGetSever(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
assert.Equal(t, app.server, app.GetServer())
}

func TestGetMetricsReporters(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
assert.Equal(t, app.metricsReporters, app.GetMetricsReporters())
}
func TestGetServerByID(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig)
s, err := app.GetServerByID("id")
assert.Nil(t, s)
assert.EqualError(t, constants.ErrNoServerWithID, err.Error())
}

func TestGetServersByType(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig)
s, err := app.GetServersByType("id")
assert.Nil(t, s)
assert.EqualError(t, constants.ErrNoServersAvailableOfType, err.Error())
Expand All @@ -149,21 +149,21 @@ func TestGetServersByType(t *testing.T) {
func TestSetHeartbeatInterval(t *testing.T) {
inter := 35 * time.Millisecond
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
app.SetHeartbeatTime(inter)
assert.Equal(t, inter, app.heartbeat)
}

func TestInitSysRemotes(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
app.initSysRemotes()
assert.NotNil(t, app.remoteComp[0])
}

func TestSetDictionary(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)

dict := map[string]uint16{"someroute": 12}
err := app.SetDictionary(dict)
Expand All @@ -177,7 +177,7 @@ func TestSetDictionary(t *testing.T) {

func TestAddRoute(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
app.router = nil
err := app.AddRoute("somesv", func(ctx context.Context, route *route.Route, payload []byte, servers map[string]*cluster.Server) (*cluster.Server, error) {
return nil, nil
Expand All @@ -199,7 +199,7 @@ func TestAddRoute(t *testing.T) {

func TestShutdown(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
go func() {
app.Shutdown()
}()
Expand All @@ -217,9 +217,9 @@ func TestConfigureDefaultMetricsReporter(t *testing.T) {
for _, table := range tables {
t.Run(fmt.Sprintf("%t", table.enabled), func(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
builderConfig.IsPrometheusEnabled = table.enabled
builderConfig.IsStatsdEnabled = table.enabled
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
builderConfig.Metrics.Prometheus.Enabled = table.enabled
builderConfig.Metrics.Statsd.Enabled = table.enabled
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
// if statsd is enabled there are 2 metricsReporters, prometheus and statsd
assert.Equal(t, table.enabled, len(app.metricsReporters) == 2)
})
Expand All @@ -228,10 +228,10 @@ func TestConfigureDefaultMetricsReporter(t *testing.T) {

func TestDefaultSD(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
assert.NotNil(t, app.serviceDiscovery)

etcdSD, err := cluster.NewEtcdServiceDiscovery(config.NewDefaultEtcdServiceDiscoveryConfig(), app.server, app.dieChan)
etcdSD, err := cluster.NewEtcdServiceDiscovery(*config.NewDefaultEtcdServiceDiscoveryConfig(), app.server, app.dieChan)
assert.NoError(t, err)
typeOfetcdSD := reflect.TypeOf(etcdSD)

Expand All @@ -242,12 +242,12 @@ func TestDefaultRPCServer(t *testing.T) {
ctrl := gomock.NewController(t)

builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
assert.NotNil(t, app.rpcServer)

sessionPool := mocks.NewMockSessionPool(ctrl)

natsRPCServer, err := cluster.NewNatsRPCServer(config.NewDefaultNatsRPCServerConfig(), app.server, nil, app.dieChan, sessionPool)
natsRPCServer, err := cluster.NewNatsRPCServer(*config.NewDefaultNatsRPCServerConfig(), app.server, nil, app.dieChan, sessionPool)
assert.NoError(t, err)
typeOfNatsRPCServer := reflect.TypeOf(natsRPCServer)

Expand All @@ -256,10 +256,10 @@ func TestDefaultRPCServer(t *testing.T) {

func TestDefaultRPCClient(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
assert.NotNil(t, app.rpcClient)

natsRPCClient, err := cluster.NewNatsRPCClient(config.NewDefaultNatsRPCClientConfig(), app.server, nil, app.dieChan)
natsRPCClient, err := cluster.NewNatsRPCClient(*config.NewDefaultNatsRPCClientConfig(), app.server, nil, app.dieChan)
assert.NoError(t, err)
typeOfNatsRPCClient := reflect.TypeOf(natsRPCClient)

Expand All @@ -270,7 +270,7 @@ func TestStartAndListenStandalone(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()

acc := acceptor.NewTCPAcceptor("0.0.0.0:0")
builder := NewDefaultBuilder(true, "testtype", Standalone, map[string]string{}, builderConfig)
builder := NewDefaultBuilder(true, "testtype", Standalone, map[string]string{}, *builderConfig)
builder.AddAcceptor(acc)
app := builder.Build().(*App)

Expand Down Expand Up @@ -299,24 +299,24 @@ func TestStartAndListenCluster(t *testing.T) {
ns := helpers.GetTestNatsServer(t)
nsAddr := ns.Addr().String()

builder := NewDefaultBuilder(true, "testtype", Cluster, map[string]string{}, config.NewDefaultBuilderConfig())
builder := NewDefaultBuilder(true, "testtype", Cluster, map[string]string{}, *config.NewDefaultBuilderConfig())

var err error
natsClientConfig := config.NewDefaultNatsRPCClientConfig()
natsClientConfig := *config.NewDefaultNatsRPCClientConfig()
natsClientConfig.Connect = fmt.Sprintf("nats://%s", nsAddr)
builder.RPCClient, err = cluster.NewNatsRPCClient(natsClientConfig, builder.Server, builder.MetricsReporters, builder.DieChan)
if err != nil {
panic(err.Error())
}

natsServerConfig := config.NewDefaultNatsRPCServerConfig()
natsServerConfig := *config.NewDefaultNatsRPCServerConfig()
natsServerConfig.Connect = fmt.Sprintf("nats://%s", nsAddr)
builder.RPCServer, err = cluster.NewNatsRPCServer(natsServerConfig, builder.Server, builder.MetricsReporters, builder.DieChan, builder.SessionPool)
if err != nil {
panic(err.Error())
}

etcdSD, err := cluster.NewEtcdServiceDiscovery(config.NewDefaultEtcdServiceDiscoveryConfig(), builder.Server, builder.DieChan, cli)
etcdSD, err := cluster.NewEtcdServiceDiscovery(*config.NewDefaultEtcdServiceDiscoveryConfig(), builder.Server, builder.DieChan, cli)
builder.ServiceDiscovery = etcdSD
assert.NoError(t, err)
acc := acceptor.NewTCPAcceptor("0.0.0.0:0")
Expand Down Expand Up @@ -375,7 +375,7 @@ func TestGetSessionFromCtx(t *testing.T) {
ctrl := gomock.NewController(t)
ss := mocks.NewMockSession(ctrl)

app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, config.NewDefaultBuilderConfig())
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *config.NewDefaultBuilderConfig())
ctx := context.WithValue(context.Background(), constants.SessionCtxKey, ss)
s := app.GetSessionFromCtx(ctx)
assert.Equal(t, ss, s)
Expand Down Expand Up @@ -425,7 +425,7 @@ func TestDescriptor(t *testing.T) {

func TestDocumentation(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
app.startupComponents()
doc, err := app.Documentation(false)
assert.NoError(t, err)
Expand Down Expand Up @@ -485,7 +485,7 @@ func TestDocumentation(t *testing.T) {

func TestDocumentationTrue(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)
app.startupComponents()
doc, err := app.Documentation(true)
assert.NoError(t, err)
Expand Down Expand Up @@ -581,7 +581,7 @@ func TestAddGRPCInfoToMetadata(t *testing.T) {

func TestStartWorker(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig).(*App)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig).(*App)

app.StartWorker()
assert.True(t, app.worker.Started())
Expand All @@ -590,7 +590,7 @@ func TestStartWorker(t *testing.T) {
func TestRegisterRPCJob(t *testing.T) {
t.Run("register_once", func(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig)
app.StartWorker()

err := app.RegisterRPCJob(nil)
Expand All @@ -599,7 +599,7 @@ func TestRegisterRPCJob(t *testing.T) {

t.Run("register_twice", func(t *testing.T) {
builderConfig := config.NewDefaultBuilderConfig()
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, builderConfig)
app := NewDefaultApp(true, "testtype", Cluster, map[string]string{}, *builderConfig)
app.StartWorker()

err := app.RegisterRPCJob(nil)
Expand Down
Loading

0 comments on commit 74bc847

Please sign in to comment.