chore: remove baseapp from x/accounts (#23355)

Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
This commit is contained in:
Alex | Interchain Labs 2025-01-16 13:52:36 -05:00 committed by GitHub
parent 9a27317209
commit 952db2b320
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
28 changed files with 204 additions and 151 deletions

View File

@ -165,7 +165,10 @@ require (
pgregory.net/rapid v1.1.0 // indirect
)
replace github.com/cosmos/cosmos-sdk => ./../../
replace (
cosmossdk.io/core/testing => ../../core/testing
github.com/cosmos/cosmos-sdk => ./../../
)
// TODO remove post spinning out all modules
replace (

View File

@ -10,8 +10,6 @@ cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
cosmossdk.io/core v1.0.0/go.mod h1:mKIp3RkoEmtqdEdFHxHwWAULRe+79gfdOvmArrLDbDc=
cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=

View File

@ -1,11 +1,23 @@
module cosmossdk.io/core/testing
go 1.23
go 1.23.1
toolchain go1.23.4
require (
cosmossdk.io/core v1.0.0
github.com/cosmos/gogoproto v1.7.0
github.com/tidwall/btree v1.7.0
go.uber.org/mock v0.5.0
google.golang.org/grpc v1.69.4
)
require cosmossdk.io/schema v1.0.0 // indirect
require (
cosmossdk.io/schema v1.0.0 // indirect
github.com/google/go-cmp v0.6.0 // indirect
golang.org/x/net v0.33.0 // indirect
golang.org/x/sys v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect
google.golang.org/protobuf v1.35.1 // indirect
)

View File

@ -2,7 +2,41 @@ cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
cosmossdk.io/core v1.0.0/go.mod h1:mKIp3RkoEmtqdEdFHxHwWAULRe+79gfdOvmArrLDbDc=
cosmossdk.io/schema v1.0.0 h1:/diH4XJjpV1JQwuIozwr+A4uFuuwanFdnw2kKeiXwwQ=
cosmossdk.io/schema v1.0.0/go.mod h1:RDAhxIeNB4bYqAlF4NBJwRrgtnciMcyyg0DOKnhNZQQ=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI=
github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI=
google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A=
google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=

View File

@ -0,0 +1,50 @@
package msgrouter
import (
"context"
"fmt"
gogoproto "github.com/cosmos/gogoproto/proto"
"cosmossdk.io/core/router"
"cosmossdk.io/core/transaction"
)
// msgTypeURL returns the TypeURL of a proto message.
func msgTypeURL(msg gogoproto.Message) string {
return gogoproto.MessageName(msg)
}
type routerHandler func(context.Context, transaction.Msg) (transaction.Msg, error)
var _ router.Service = &RouterService{}
// custom router service for integration tests
type RouterService struct {
handlers map[string]routerHandler
}
func NewRouterService() *RouterService {
return &RouterService{
handlers: make(map[string]routerHandler),
}
}
func (rs *RouterService) RegisterHandler(handler routerHandler, typeUrl string) {
rs.handlers[typeUrl] = handler
}
func (rs RouterService) CanInvoke(ctx context.Context, typeUrl string) error {
if rs.handlers[typeUrl] == nil {
return fmt.Errorf("no handler for typeURL %s", typeUrl)
}
return nil
}
func (rs RouterService) Invoke(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
typeUrl := msgTypeURL(req)
if rs.handlers[typeUrl] == nil {
return nil, fmt.Errorf("no handler for typeURL %s", typeUrl)
}
return rs.handlers[typeUrl](ctx, req)
}

View File

@ -4,14 +4,9 @@ import (
"context"
"fmt"
abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
gogogrpc "github.com/cosmos/gogoproto/grpc"
"google.golang.org/grpc"
"google.golang.org/grpc/encoding"
"github.com/cosmos/cosmos-sdk/client/grpc/reflection"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
)
var (
@ -19,25 +14,34 @@ var (
_ gogogrpc.Server = &QueryHelper{}
)
// GRPCQueryHandler defines a function type which handles mocked ABCI Query requests
// using gRPC
type GRPCQueryHandler = func(ctx context.Context, req *QueryRequest) (*QueryResponse, error)
// QueryRequest is a light mock of cometbft abci.QueryRequest.
type QueryRequest struct {
Data []byte
Height int64
}
// QueryResponse is a light mock of cometbft abci.QueryResponse.
type QueryResponse struct {
Value []byte
Height int64
}
// QueryHelper is a test utility for building a query client from a proto interface registry.
type QueryHelper struct {
cdc encoding.Codec
routes map[string]GRPCQueryHandler
}
func NewQueryHelper(interfaceRegistry codectypes.InterfaceRegistry) *QueryHelper {
// instantiate the codec
cdc := codec.NewProtoCodec(interfaceRegistry).GRPCCodec()
// Once we have an interface registry, we can register the interface
// registry reflection gRPC service.
func NewQueryHelper(cdc encoding.Codec) *QueryHelper {
qh := &QueryHelper{
cdc: cdc,
routes: map[string]GRPCQueryHandler{},
}
reflection.RegisterReflectionServiceServer(qh, reflection.NewReflectionServiceServer(interfaceRegistry))
return qh
}
@ -52,7 +56,7 @@ func (q *QueryHelper) Invoke(ctx context.Context, method string, args, reply int
return err
}
res, err := querier(ctx, &abci.QueryRequest{Data: reqBz})
res, err := querier(ctx, &QueryRequest{Data: reqBz})
if err != nil {
return err
}
@ -70,10 +74,6 @@ func (q *QueryHelper) NewStream(context.Context, *grpc.StreamDesc, string, ...gr
panic("not implemented")
}
// GRPCQueryHandler defines a function type which handles ABCI Query requests
// using gRPC
type GRPCQueryHandler = func(ctx context.Context, req *abci.QueryRequest) (*abci.QueryResponse, error)
// Route returns the GRPCQueryHandler for a given query route path or nil
// if not found
func (q *QueryHelper) Route(path string) GRPCQueryHandler {
@ -105,7 +105,7 @@ func (q *QueryHelper) registerABCIQueryHandler(sd *grpc.ServiceDesc, method grpc
panic(fmt.Sprintf("handler for %s already registered", fqName))
}
q.routes[fqName] = func(ctx context.Context, req *abci.QueryRequest) (*abci.QueryResponse, error) {
q.routes[fqName] = func(ctx context.Context, req *QueryRequest) (*QueryResponse, error) {
// call the method handler from the service description with the handler object,
// a wrapped sdk.Context with proto-unmarshaled data from the ABCI request data
res, err := methodHandler(handler, ctx, func(i interface{}) error {
@ -123,7 +123,7 @@ func (q *QueryHelper) registerABCIQueryHandler(sd *grpc.ServiceDesc, method grpc
}
// return the result bytes as the response value
return &abci.QueryResponse{
return &QueryResponse{
Height: req.Height,
Value: resBytes,
}, nil

View File

@ -297,6 +297,7 @@ replace (
// server v2 integration
replace (
cosmossdk.io/core/testing => ../../core/testing
cosmossdk.io/indexer/postgres => ../../indexer/postgres
cosmossdk.io/runtime/v2 => ../../runtime/v2
cosmossdk.io/server/v2 => ../../server/v2
@ -304,4 +305,5 @@ replace (
cosmossdk.io/server/v2/cometbft => ../../server/v2/cometbft
cosmossdk.io/server/v2/stf => ../../server/v2/stf
cosmossdk.io/store/v2 => ../../store/v2
)

View File

@ -616,8 +616,6 @@ cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
cosmossdk.io/core v1.0.0/go.mod h1:mKIp3RkoEmtqdEdFHxHwWAULRe+79gfdOvmArrLDbDc=
cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=

View File

@ -6,6 +6,7 @@ require (
cosmossdk.io/api v0.8.2-0.20250114014050-e279d7cec391
cosmossdk.io/collections v1.0.0
cosmossdk.io/core v1.0.0
cosmossdk.io/core/testing v0.0.1
cosmossdk.io/depinject v1.1.0
cosmossdk.io/log v1.5.0
cosmossdk.io/math v1.5.0
@ -24,7 +25,6 @@ require (
)
require (
cosmossdk.io/core/testing v0.0.1
cosmossdk.io/runtime/v2 v2.0.0-20240911143651-72620a577660
cosmossdk.io/server/v2/stf v1.0.0-beta.2
cosmossdk.io/store/v2 v2.0.0-beta.1
@ -270,6 +270,7 @@ replace (
// Below are the long-lived replace for tests.
replace (
cosmossdk.io/core/testing => ../core/testing
github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0
// We always want to test against the latest version of the SDK.
github.com/cosmos/cosmos-sdk => ../.

View File

@ -616,8 +616,6 @@ cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
cosmossdk.io/core v1.0.0/go.mod h1:mKIp3RkoEmtqdEdFHxHwWAULRe+79gfdOvmArrLDbDc=
cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=

View File

@ -8,6 +8,7 @@ import (
"github.com/stretchr/testify/require"
"cosmossdk.io/core/router"
"cosmossdk.io/core/testing/msgrouter"
"cosmossdk.io/core/transaction"
"cosmossdk.io/depinject"
"cosmossdk.io/log"
@ -144,14 +145,14 @@ func initFixture(t *testing.T, f authentiacteFunc) *fixture {
var err error
startupCfg := integration.DefaultStartUpConfig(t)
msgRouterService := integration.NewRouterService()
msgRouterService := msgrouter.NewRouterService()
fixture.registerMsgRouterService(msgRouterService)
var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service {
return msgRouterService
}
queryRouterService := integration.NewRouterService()
queryRouterService := msgrouter.NewRouterService()
fixture.registerQueryRouterService(queryRouterService)
serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService)
@ -188,7 +189,7 @@ func initFixture(t *testing.T, f authentiacteFunc) *fixture {
return fixture
}
func (f *fixture) registerMsgRouterService(router *integration.RouterService) {
func (f *fixture) registerMsgRouterService(router *msgrouter.RouterService) {
// register custom router service
bankSendHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
msg, ok := req.(*banktypes.MsgSend)
@ -203,7 +204,7 @@ func (f *fixture) registerMsgRouterService(router *integration.RouterService) {
router.RegisterHandler(bankSendHandler, "cosmos.bank.v1beta1.MsgSend")
}
func (f *fixture) registerQueryRouterService(router *integration.RouterService) {
func (f *fixture) registerQueryRouterService(router *msgrouter.RouterService) {
// register custom router service
queryHandler := func(ctx context.Context, msg transaction.Msg) (transaction.Msg, error) {
req, ok := msg.(*accountsv1.AccountNumberRequest)

View File

@ -8,6 +8,7 @@ import (
"github.com/stretchr/testify/suite"
"cosmossdk.io/core/router"
"cosmossdk.io/core/testing/msgrouter"
"cosmossdk.io/core/transaction"
"cosmossdk.io/depinject"
"cosmossdk.io/log"
@ -78,14 +79,14 @@ func (s *IntegrationTestSuite) SetupSuite() {
var err error
startupCfg := integration.DefaultStartUpConfig(s.T())
msgRouterService := integration.NewRouterService()
msgRouterService := msgrouter.NewRouterService()
s.registerMsgRouterService(msgRouterService)
var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service {
return msgRouterService
}
queryRouterService := integration.NewRouterService()
queryRouterService := msgrouter.NewRouterService()
s.registerQueryRouterService(queryRouterService)
serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService)
@ -113,7 +114,7 @@ func (s *IntegrationTestSuite) SetupSuite() {
s.ctx = s.app.StateLatestContext(s.T())
}
func (s *IntegrationTestSuite) registerMsgRouterService(router *integration.RouterService) {
func (s *IntegrationTestSuite) registerMsgRouterService(router *msgrouter.RouterService) {
// register custom router service
bankSendHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
msg, ok := req.(*banktypes.MsgSend)
@ -161,7 +162,7 @@ func (s *IntegrationTestSuite) registerMsgRouterService(router *integration.Rout
router.RegisterHandler(distrWithdrawRewardHandler, "cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward")
}
func (s *IntegrationTestSuite) registerQueryRouterService(router *integration.RouterService) {
func (s *IntegrationTestSuite) registerQueryRouterService(router *msgrouter.RouterService) {
// register custom router service
stakingParamsQueryHandler := func(ctx context.Context, msg transaction.Msg) (transaction.Msg, error) {
req, ok := msg.(*stakingtypes.QueryParamsRequest)

View File

@ -6,6 +6,7 @@ import (
"github.com/stretchr/testify/suite"
"cosmossdk.io/core/router"
"cosmossdk.io/core/testing/msgrouter"
"cosmossdk.io/core/transaction"
"cosmossdk.io/depinject"
"cosmossdk.io/log"
@ -73,14 +74,14 @@ func (s *IntegrationTestSuite) SetupSuite() {
var err error
startupCfg := integration.DefaultStartUpConfig(s.T())
msgRouterService := integration.NewRouterService()
msgRouterService := msgrouter.NewRouterService()
s.registerMsgRouterService(msgRouterService)
var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service {
return msgRouterService
}
queryRouterService := integration.NewRouterService()
queryRouterService := msgrouter.NewRouterService()
s.registerQueryRouterService(queryRouterService)
serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService)
@ -115,7 +116,7 @@ func (s *IntegrationTestSuite) SetupSuite() {
}
}
func (s *IntegrationTestSuite) registerMsgRouterService(router *integration.RouterService) {
func (s *IntegrationTestSuite) registerMsgRouterService(router *msgrouter.RouterService) {
// register custom router service
bankSendHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
msg, ok := req.(*banktypes.MsgSend)
@ -142,7 +143,7 @@ func (s *IntegrationTestSuite) registerMsgRouterService(router *integration.Rout
router.RegisterHandler(accountsExeccHandler, "cosmos.accounts.v1.MsgExecute")
}
func (s *IntegrationTestSuite) registerQueryRouterService(router *integration.RouterService) {
func (s *IntegrationTestSuite) registerQueryRouterService(router *msgrouter.RouterService) {
// register custom router service
bankBalanceQueryHandler := func(ctx context.Context, msg transaction.Msg) (transaction.Msg, error) {
req, ok := msg.(*banktypes.QueryBalanceRequest)

View File

@ -7,6 +7,7 @@ import (
"github.com/stretchr/testify/require"
"cosmossdk.io/core/router"
"cosmossdk.io/core/testing/msgrouter"
"cosmossdk.io/core/transaction"
"cosmossdk.io/depinject"
"cosmossdk.io/log"
@ -65,14 +66,14 @@ func createTestSuite(t *testing.T) *suite {
var err error
startupCfg := integration.DefaultStartUpConfig(t)
msgRouterService := integration.NewRouterService()
msgRouterService := msgrouter.NewRouterService()
res.registerMsgRouterService(msgRouterService)
var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service {
return msgRouterService
}
queryRouterService := integration.NewRouterService()
queryRouterService := msgrouter.NewRouterService()
res.registerQueryRouterService(queryRouterService)
serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService)
@ -103,7 +104,7 @@ func createTestSuite(t *testing.T) *suite {
return &res
}
func (s *suite) registerMsgRouterService(router *integration.RouterService) {
func (s *suite) registerMsgRouterService(router *msgrouter.RouterService) {
// register custom router service
bankSendHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
msg, ok := req.(*banktypes.MsgSend)
@ -118,7 +119,7 @@ func (s *suite) registerMsgRouterService(router *integration.RouterService) {
router.RegisterHandler(bankSendHandler, "cosmos.bank.v1beta1.MsgSend")
}
func (s *suite) registerQueryRouterService(router *integration.RouterService) {
func (s *suite) registerQueryRouterService(router *msgrouter.RouterService) {
// register custom router service
queryHandler := func(ctx context.Context, msg transaction.Msg) (transaction.Msg, error) {
req, ok := msg.(*accountsv1.AccountNumberRequest)

View File

@ -9,6 +9,7 @@ import (
"cosmossdk.io/core/comet"
corecontext "cosmossdk.io/core/context"
"cosmossdk.io/core/router"
"cosmossdk.io/core/testing/msgrouter"
"cosmossdk.io/core/transaction"
"cosmossdk.io/depinject"
"cosmossdk.io/log"
@ -88,14 +89,14 @@ func createTestFixture(t *testing.T) *fixture {
var err error
startupCfg := integration.DefaultStartUpConfig(t)
msgRouterService := integration.NewRouterService()
msgRouterService := msgrouter.NewRouterService()
res.registerMsgRouterService(msgRouterService)
var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service {
return msgRouterService
}
queryRouterService := integration.NewRouterService()
queryRouterService := msgrouter.NewRouterService()
res.registerQueryRouterService(queryRouterService)
serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService)
@ -139,7 +140,7 @@ func createTestFixture(t *testing.T) *fixture {
return &res
}
func (s *fixture) registerMsgRouterService(router *integration.RouterService) {
func (s *fixture) registerMsgRouterService(router *msgrouter.RouterService) {
// register custom router service
bankSendHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
msg, ok := req.(*banktypes.MsgSend)
@ -154,6 +155,6 @@ func (s *fixture) registerMsgRouterService(router *integration.RouterService) {
router.RegisterHandler(bankSendHandler, "cosmos.bank.v1beta1.MsgSend")
}
func (s *fixture) registerQueryRouterService(router *integration.RouterService) {
func (s *fixture) registerQueryRouterService(_ *msgrouter.RouterService) {
// register custom router service
}

View File

@ -11,6 +11,7 @@ import (
"gotest.tools/v3/assert"
"cosmossdk.io/core/router"
"cosmossdk.io/core/testing/msgrouter"
"cosmossdk.io/core/transaction"
"cosmossdk.io/depinject"
sdklog "cosmossdk.io/log"
@ -144,14 +145,14 @@ func createTestSuite(t *testing.T, genesisBehavior int) suite {
startupCfg := integration.DefaultStartUpConfig(t)
msgRouterService := integration.NewRouterService()
msgRouterService := msgrouter.NewRouterService()
res.registerMsgRouterService(msgRouterService)
var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service {
return msgRouterService
}
queryRouterService := integration.NewRouterService()
queryRouterService := msgrouter.NewRouterService()
res.registerQueryRouterService(queryRouterService)
serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService)
@ -173,7 +174,7 @@ func createTestSuite(t *testing.T, genesisBehavior int) suite {
return res
}
func (s *suite) registerMsgRouterService(router *integration.RouterService) {
func (s *suite) registerMsgRouterService(router *msgrouter.RouterService) {
// register custom router service
bankSendHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
msg, ok := req.(*banktypes.MsgSend)
@ -202,5 +203,5 @@ func (s *suite) registerMsgRouterService(router *integration.RouterService) {
router.RegisterHandler(govSubmitProposalHandler, "/cosmos.gov.v1.MsgExecLegacyContent")
}
func (f *suite) registerQueryRouterService(router *integration.RouterService) {
func (f *suite) registerQueryRouterService(_ *msgrouter.RouterService) {
}

View File

@ -7,6 +7,7 @@ import (
"github.com/stretchr/testify/require"
"cosmossdk.io/core/router"
"cosmossdk.io/core/testing/msgrouter"
"cosmossdk.io/core/transaction"
"cosmossdk.io/depinject"
"cosmossdk.io/log"
@ -59,14 +60,14 @@ func initFixture(t *testing.T) *fixture {
startupCfg := integration.DefaultStartUpConfig(t)
msgRouterService := integration.NewRouterService()
msgRouterService := msgrouter.NewRouterService()
res.registerMsgRouterService(msgRouterService)
var routerFactory runtime.RouterServiceFactory = func(_ []byte) router.Service {
return msgRouterService
}
queryRouterService := integration.NewRouterService()
queryRouterService := msgrouter.NewRouterService()
res.registerQueryRouterService(queryRouterService)
serviceBuilder := runtime.NewRouterBuilder(routerFactory, queryRouterService)
@ -88,7 +89,7 @@ func initFixture(t *testing.T) *fixture {
return &res
}
func (f *fixture) registerMsgRouterService(router *integration.RouterService) {
func (f *fixture) registerMsgRouterService(router *msgrouter.RouterService) {
// register custom router service
govSubmitProposalHandler := func(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
@ -104,5 +105,5 @@ func (f *fixture) registerMsgRouterService(router *integration.RouterService) {
router.RegisterHandler(govSubmitProposalHandler, "/cosmos.gov.v1.MsgExecLegacyContent")
}
func (f *fixture) registerQueryRouterService(router *integration.RouterService) {
func (f *fixture) registerQueryRouterService(_ *msgrouter.RouterService) {
}

View File

@ -16,7 +16,6 @@ import (
"cosmossdk.io/core/event"
"cosmossdk.io/core/gas"
"cosmossdk.io/core/header"
"cosmossdk.io/core/router"
"cosmossdk.io/core/server"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/core/transaction"
@ -316,45 +315,6 @@ func applyStateChanges(dst, src corestore.WriterMap) error {
return dst.ApplyStateChanges(changes)
}
// msgTypeURL returns the TypeURL of a proto message.
func msgTypeURL(msg gogoproto.Message) string {
return gogoproto.MessageName(msg)
}
type routerHandler func(context.Context, transaction.Msg) (transaction.Msg, error)
var _ router.Service = &RouterService{}
// custom router service for integration tests
type RouterService struct {
handlers map[string]routerHandler
}
func NewRouterService() *RouterService {
return &RouterService{
handlers: make(map[string]routerHandler),
}
}
func (rs *RouterService) RegisterHandler(handler routerHandler, typeUrl string) {
rs.handlers[typeUrl] = handler
}
func (rs RouterService) CanInvoke(ctx context.Context, typeUrl string) error {
if rs.handlers[typeUrl] == nil {
return fmt.Errorf("no handler for typeURL %s", typeUrl)
}
return nil
}
func (rs RouterService) Invoke(ctx context.Context, req transaction.Msg) (transaction.Msg, error) {
typeUrl := msgTypeURL(req)
if rs.handlers[typeUrl] == nil {
return nil, fmt.Errorf("no handler for typeURL %s", typeUrl)
}
return rs.handlers[typeUrl](ctx, req)
}
var _ header.Service = &HeaderService{}
type HeaderService struct{}

View File

@ -165,7 +165,10 @@ require (
sigs.k8s.io/yaml v1.4.0 // indirect
)
replace github.com/cosmos/cosmos-sdk => ../../.
replace (
cosmossdk.io/core/testing => ../../core/testing
github.com/cosmos/cosmos-sdk => ../../.
)
// TODO remove post spinning out all modules
replace (

View File

@ -10,8 +10,6 @@ cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
cosmossdk.io/core v1.0.0/go.mod h1:mKIp3RkoEmtqdEdFHxHwWAULRe+79gfdOvmArrLDbDc=
cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=

View File

@ -9,18 +9,18 @@ import (
"google.golang.org/protobuf/reflect/protoregistry"
bankv1beta1 "cosmossdk.io/api/cosmos/bank/v1beta1"
basev1beta1 "cosmossdk.io/api/cosmos/base/v1beta1"
"cosmossdk.io/core/address"
"cosmossdk.io/core/event"
coretesting "cosmossdk.io/core/testing"
coretransaction "cosmossdk.io/core/transaction"
"cosmossdk.io/core/testing/msgrouter"
"cosmossdk.io/core/transaction"
"cosmossdk.io/math"
"cosmossdk.io/x/accounts/internal/implementation"
banktypes "cosmossdk.io/x/bank/types"
"cosmossdk.io/x/tx/signing"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/codec"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/runtime"
sdk "github.com/cosmos/cosmos-sdk/types"
)
var _ address.Codec = (*addressCodec)(nil)
@ -30,16 +30,6 @@ type addressCodec struct{}
func (a addressCodec) StringToBytes(text string) ([]byte, error) { return []byte(text), nil }
func (a addressCodec) BytesToString(bz []byte) (string, error) { return string(bz), nil }
type eventService struct{}
func (e eventService) Emit(event gogoproto.Message) error { return nil }
func (e eventService) EmitKV(eventType string, attrs ...event.Attribute) error {
return nil
}
func (e eventService) EventManager(ctx context.Context) event.Manager { return e }
func newKeeper(t *testing.T, accounts ...implementation.AccountCreatorFunc) (Keeper, context.Context) {
t.Helper()
@ -56,45 +46,40 @@ func newKeeper(t *testing.T, accounts ...implementation.AccountCreatorFunc) (Kee
if err != nil {
t.Fatal(err)
}
msgRouter := baseapp.NewMsgServiceRouter()
msgRouter.SetInterfaceRegistry(ir)
queryRouter := baseapp.NewGRPCQueryRouter()
queryRouter.SetInterfaceRegistry(ir)
ir.RegisterImplementations((*coretransaction.Msg)(nil),
ir.RegisterImplementations((*transaction.Msg)(nil),
&bankv1beta1.MsgSend{},
&bankv1beta1.MsgBurn{},
&bankv1beta1.MsgSetSendEnabled{},
&bankv1beta1.MsgMultiSend{},
&bankv1beta1.MsgUpdateParams{},
)
queryRouter.RegisterService(&bankv1beta1.Query_ServiceDesc, &bankQueryServer{})
msgRouter.RegisterService(&bankv1beta1.Msg_ServiceDesc, &bankMsgServer{})
ctx := coretesting.Context()
ss := coretesting.KVStoreService(ctx, "test")
env := runtime.NewEnvironment(ss, coretesting.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter))
env.EventService = eventService{}
m, err := NewKeeper(codec.NewProtoCodec(ir), env, addressCodec, ir, nil, accounts...)
msgRouter := msgrouter.NewRouterService()
msgRouter.RegisterHandler(Send, gogoproto.MessageName(&banktypes.MsgSend{}))
queryRouter := msgrouter.NewRouterService()
queryRouter.RegisterHandler(Balance, gogoproto.MessageName(&banktypes.QueryBalanceRequest{}))
ctx, env := coretesting.NewTestEnvironment(coretesting.TestEnvironmentConfig{
ModuleName: "test",
Logger: coretesting.NewNopLogger(),
MsgRouter: msgRouter,
QueryRouter: queryRouter,
})
m, err := NewKeeper(codec.NewProtoCodec(ir), env.Environment, addressCodec, ir, nil, accounts...)
require.NoError(t, err)
return m, ctx
}
type bankQueryServer struct {
bankv1beta1.UnimplementedQueryServer
}
type bankMsgServer struct {
bankv1beta1.UnimplementedMsgServer
}
func (b bankQueryServer) Balance(context.Context, *bankv1beta1.QueryBalanceRequest) (*bankv1beta1.QueryBalanceResponse, error) {
return &bankv1beta1.QueryBalanceResponse{Balance: &basev1beta1.Coin{
func Balance(context.Context, transaction.Msg) (transaction.Msg, error) {
return &banktypes.QueryBalanceResponse{Balance: &sdk.Coin{
Denom: "atom",
Amount: "1000",
Amount: math.NewInt(1000),
}}, nil
}
func (b bankMsgServer) Send(context.Context, *bankv1beta1.MsgSend) (*bankv1beta1.MsgSendResponse, error) {
func Send(context.Context, transaction.Msg) (transaction.Msg, error) {
return &bankv1beta1.MsgSendResponse{}, nil
}

View File

@ -168,7 +168,10 @@ require (
golang.org/x/arch v0.12.0 // indirect
)
replace github.com/cosmos/cosmos-sdk => ../../.
replace (
cosmossdk.io/core/testing => ../../core/testing
github.com/cosmos/cosmos-sdk => ../../
)
// TODO remove post spinning out all modules
replace (

View File

@ -10,8 +10,6 @@ cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
cosmossdk.io/core v1.0.0/go.mod h1:mKIp3RkoEmtqdEdFHxHwWAULRe+79gfdOvmArrLDbDc=
cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=

View File

@ -17,6 +17,7 @@ import (
coreevent "cosmossdk.io/core/event"
"cosmossdk.io/core/header"
coretesting "cosmossdk.io/core/testing"
"cosmossdk.io/core/testing/queryclient"
errorsmod "cosmossdk.io/errors"
"cosmossdk.io/log"
"cosmossdk.io/math"
@ -25,9 +26,9 @@ import (
banktestutil "cosmossdk.io/x/bank/testutil"
banktypes "cosmossdk.io/x/bank/types"
"github.com/cosmos/cosmos-sdk/codec"
codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
"github.com/cosmos/cosmos-sdk/runtime"
"github.com/cosmos/cosmos-sdk/testutil/queryclient"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
@ -186,7 +187,7 @@ func (suite *KeeperTestSuite) SetupTest() {
DefaultSendEnabled: banktypes.DefaultDefaultSendEnabled,
}))
queryHelper := queryclient.NewQueryHelper(encCfg.InterfaceRegistry)
queryHelper := queryclient.NewQueryHelper(codec.NewProtoCodec(encCfg.InterfaceRegistry).GRPCCodec())
banktypes.RegisterQueryServer(queryHelper, suite.bankKeeper)
banktypes.RegisterInterfaces(encCfg.InterfaceRegistry)

View File

@ -172,7 +172,10 @@ require (
golang.org/x/arch v0.12.0 // indirect
)
replace github.com/cosmos/cosmos-sdk => ../../.
replace (
cosmossdk.io/core/testing => ../../core/testing
github.com/cosmos/cosmos-sdk => ../../
)
// TODO remove post spinning out all modules
replace (

View File

@ -10,8 +10,6 @@ cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
cosmossdk.io/core v1.0.0/go.mod h1:mKIp3RkoEmtqdEdFHxHwWAULRe+79gfdOvmArrLDbDc=
cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=

View File

@ -166,7 +166,10 @@ require (
sigs.k8s.io/yaml v1.4.0 // indirect
)
replace github.com/cosmos/cosmos-sdk => ../../
replace (
cosmossdk.io/core/testing => ../../core/testing
github.com/cosmos/cosmos-sdk => ../../
)
// TODO remove post spinning out all modules
replace (

View File

@ -10,8 +10,6 @@ cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
cosmossdk.io/core v1.0.0/go.mod h1:mKIp3RkoEmtqdEdFHxHwWAULRe+79gfdOvmArrLDbDc=
cosmossdk.io/core/testing v0.0.1 h1:gYCTaftcRrz+HoNXmK7r9KgbG1jgBJ8pNzm/Pa/erFQ=
cosmossdk.io/core/testing v0.0.1/go.mod h1:2VDNz/25qtxgPa0+j8LW5e8Ev/xObqoJA7QuJS9/wIQ=
cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E=
cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=