Refactor RegisterQueryServices -> RegisterServices (#7518)

* Refactor RegisterQueryServices -> RegisterServices

* Fix tests
This commit is contained in:
Aaron Craelius
2020-10-12 16:31:51 +00:00
committed by GitHub
parent 647ad0dd3c
commit 228728cce2
21 changed files with 84 additions and 71 deletions
+27
View File
@@ -0,0 +1,27 @@
package module
import "github.com/gogo/protobuf/grpc"
// Configurator provides the hooks to allow modules to configure and register
// their services in the RegisterServices method. It is designed to eventually
// support module object capabilities isolation as described in
// https://github.com/cosmos/cosmos-sdk/issues/7093
type Configurator interface {
QueryServer() grpc.Server
}
type configurator struct {
queryServer grpc.Server
}
// NewConfigurator returns a new Configurator instance
func NewConfigurator(queryServer grpc.Server) Configurator {
return configurator{queryServer: queryServer}
}
var _ Configurator = configurator{}
// QueryServer implements the Configurator.QueryServer method
func (c configurator) QueryServer() grpc.Server {
return c.queryServer
}
+7 -8
View File
@@ -31,7 +31,6 @@ package module
import (
"encoding/json"
"github.com/gogo/protobuf/grpc"
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/gorilla/mux"
@@ -173,8 +172,8 @@ type AppModule interface {
// Deprecated: use RegisterQueryService
LegacyQuerierHandler(*codec.LegacyAmino) sdk.Querier
// RegisterQueryService allows a module to register a gRPC query service
RegisterQueryService(grpc.Server)
// RegisterServices allows a module to register services
RegisterServices(Configurator)
// ABCI
BeginBlock(sdk.Context, abci.RequestBeginBlock)
@@ -207,8 +206,8 @@ func (GenesisOnlyAppModule) QuerierRoute() string { return "" }
// LegacyQuerierHandler returns an empty module querier
func (gam GenesisOnlyAppModule) LegacyQuerierHandler(*codec.LegacyAmino) sdk.Querier { return nil }
// RegisterQueryService registers all gRPC query services.
func (gam GenesisOnlyAppModule) RegisterQueryService(grpc.Server) {}
// RegisterServices registers all services.
func (gam GenesisOnlyAppModule) RegisterServices(Configurator) {}
// BeginBlock returns an empty module begin-block
func (gam GenesisOnlyAppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) {}
@@ -288,10 +287,10 @@ func (m *Manager) RegisterRoutes(router sdk.Router, queryRouter sdk.QueryRouter,
}
}
// RegisterQueryServices registers all module query services
func (m *Manager) RegisterQueryServices(grpcRouter grpc.Server) {
// RegisterServices registers all module services
func (m *Manager) RegisterServices(cfg Configurator) {
for _, module := range m.Modules {
module.RegisterQueryService(grpcRouter)
module.RegisterServices(cfg)
}
}
+6 -5
View File
@@ -162,10 +162,10 @@ func TestManager_RegisterRoutes(t *testing.T) {
mockAppModule1.EXPECT().QuerierRoute().Times(2).Return("querierRoute1")
mockAppModule2.EXPECT().QuerierRoute().Times(1).Return("")
handler3 := sdk.Querier(nil)
mockAppModule1.EXPECT().NewQuerierHandler().Times(1).Return(handler3)
amino := codec.NewLegacyAmino()
mockAppModule1.EXPECT().LegacyQuerierHandler(amino).Times(1).Return(handler3)
queryRouter.EXPECT().AddRoute(gomock.Eq("querierRoute1"), gomock.Eq(handler3)).Times(1)
amino := codec.NewLegacyAmino()
mm.RegisterRoutes(router, queryRouter, amino)
}
@@ -182,10 +182,11 @@ func TestManager_RegisterQueryServices(t *testing.T) {
require.Equal(t, 2, len(mm.Modules))
queryRouter := mocks.NewMockServer(mockCtrl)
mockAppModule1.EXPECT().RegisterQueryService(queryRouter).Times(1)
mockAppModule2.EXPECT().RegisterQueryService(queryRouter).Times(1)
cfg := module.NewConfigurator(queryRouter)
mockAppModule1.EXPECT().RegisterServices(cfg).Times(1)
mockAppModule2.EXPECT().RegisterServices(cfg).Times(1)
mm.RegisterQueryServices(queryRouter)
mm.RegisterServices(cfg)
}
func TestManager_InitGenesis(t *testing.T) {