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:
co-authored by
Alexander Bezobchuk
mergify[bot]
parent
7eeb086d3a
commit
43947ca2ef
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user