Add RegisterQueryService to AppModule (#6336)

* Add RegisterQueryService to AppModule

* Update CHANGELOG.md

* Update CHANGELOG.md

* Wire up BaseApp, fix tests

* Add mock test

* add missing file

* Update types/module/module.go

* Update CHANGELOG.md

Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
Aaron Craelius
2020-06-06 07:59:57 +00:00
committed by GitHub
co-authored by Alexander Bezobchuk mergify[bot]
parent 7eeb086d3a
commit 43947ca2ef
21 changed files with 154 additions and 4 deletions
+15
View File
@@ -31,6 +31,8 @@ package module
import (
"encoding/json"
"github.com/gogo/protobuf/grpc"
"github.com/gorilla/mux"
"github.com/spf13/cobra"
abci "github.com/tendermint/tendermint/abci/types"
@@ -141,8 +143,12 @@ type AppModule interface {
// routes
Route() string
NewHandler() sdk.Handler
// Deprecated: use RegisterQueryService
QuerierRoute() string
// Deprecated: use RegisterQueryService
NewQuerierHandler() sdk.Querier
// RegisterQueryService allows a module to register a gRPC query service
RegisterQueryService(grpc.Server)
// ABCI
BeginBlock(sdk.Context, abci.RequestBeginBlock)
@@ -178,6 +184,8 @@ func (GenesisOnlyAppModule) QuerierRoute() string { return "" }
// NewQuerierHandler returns an empty module querier
func (gam GenesisOnlyAppModule) NewQuerierHandler() sdk.Querier { return nil }
func (gam GenesisOnlyAppModule) RegisterQueryService(grpc.Server) {}
// BeginBlock returns an empty module begin-block
func (gam GenesisOnlyAppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) {}
@@ -256,6 +264,13 @@ func (m *Manager) RegisterRoutes(router sdk.Router, queryRouter sdk.QueryRouter)
}
}
// RegisterQueryServices registers all module query services
func (m *Manager) RegisterQueryServices(grpcRouter grpc.Server) {
for _, module := range m.Modules {
module.RegisterQueryService(grpcRouter)
}
}
// InitGenesis performs init genesis functionality for modules
func (m *Manager) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, genesisData map[string]json.RawMessage) abci.ResponseInitChain {
var validatorUpdates []abci.ValidatorUpdate
+19
View File
@@ -159,6 +159,25 @@ func TestManager_RegisterRoutes(t *testing.T) {
mm.RegisterRoutes(router, queryRouter)
}
func TestManager_RegisterQueryServices(t *testing.T) {
mockCtrl := gomock.NewController(t)
t.Cleanup(mockCtrl.Finish)
mockAppModule1 := mocks.NewMockAppModule(mockCtrl)
mockAppModule2 := mocks.NewMockAppModule(mockCtrl)
mockAppModule1.EXPECT().Name().Times(2).Return("module1")
mockAppModule2.EXPECT().Name().Times(2).Return("module2")
mm := module.NewManager(mockAppModule1, mockAppModule2)
require.NotNil(t, mm)
require.Equal(t, 2, len(mm.Modules))
queryRouter := mocks.NewMockServer(mockCtrl)
mockAppModule1.EXPECT().RegisterQueryService(queryRouter).Times(1)
mockAppModule2.EXPECT().RegisterQueryService(queryRouter).Times(1)
mm.RegisterQueryServices(queryRouter)
}
func TestManager_InitGenesis(t *testing.T) {
mockCtrl := gomock.NewController(t)
t.Cleanup(mockCtrl.Finish)