Skip to content

Commit 2ca2824

Browse files
rename v2 router api to use portID (#7639)
1 parent 4c6b84a commit 2ca2824

File tree

5 files changed

+36
-61
lines changed

5 files changed

+36
-61
lines changed

modules/core/api/router.go

Lines changed: 14 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ package api
33
import (
44
"errors"
55
"fmt"
6-
"strings"
76

87
sdk "github.com/cosmos/cosmos-sdk/types"
98
)
109

1110
// Router contains all the module-defined callbacks required by IBC Protocol V2.
1211
type Router struct {
12+
// routes is a map from portID to IBCModule
1313
routes map[string]IBCModule
1414
}
1515

@@ -20,50 +20,32 @@ func NewRouter() *Router {
2020
}
2121
}
2222

23-
// AddRoute registers a route for a given module name.
24-
func (rtr *Router) AddRoute(module string, cbs IBCModule) *Router {
25-
if !sdk.IsAlphaNumeric(module) {
23+
// AddRoute registers a route for a given portID to a given IBCModule.
24+
func (rtr *Router) AddRoute(portID string, cbs IBCModule) *Router {
25+
if !sdk.IsAlphaNumeric(portID) {
2626
panic(errors.New("route expressions can only contain alphanumeric characters"))
2727
}
2828

29-
if rtr.HasRoute(module) {
30-
panic(fmt.Errorf("route %s has already been registered", module))
29+
if rtr.HasRoute(portID) {
30+
panic(fmt.Errorf("route %s has already been registered", portID))
3131
}
3232

33-
rtr.routes[module] = cbs
33+
rtr.routes[portID] = cbs
3434

3535
return rtr
3636
}
3737

38-
// Route returns the IBCModule for a given module name.
39-
func (rtr *Router) Route(module string) IBCModule {
40-
route, ok := rtr.routeOrPrefixedRoute(module)
38+
// Route returns the IBCModule for a given portID.
39+
func (rtr *Router) Route(portID string) IBCModule {
40+
route, ok := rtr.routes[portID]
4141
if !ok {
42-
panic(fmt.Sprintf("no route for %s", module))
42+
panic(fmt.Sprintf("no route for %s", portID))
4343
}
4444
return route
4545
}
4646

47-
// HasRoute returns true if the Router has a module registered or false otherwise.
48-
func (rtr *Router) HasRoute(module string) bool {
49-
_, ok := rtr.routeOrPrefixedRoute(module)
47+
// HasRoute returns true if the Router has a module registered for the portID or false otherwise.
48+
func (rtr *Router) HasRoute(portID string) bool {
49+
_, ok := rtr.routes[portID]
5050
return ok
5151
}
52-
53-
// routeOrPrefixedRoute returns the IBCModule for a given module name.
54-
// if an exact match is not found, a route with the provided prefix is searched for instead.
55-
func (rtr *Router) routeOrPrefixedRoute(module string) (IBCModule, bool) {
56-
route, ok := rtr.routes[module]
57-
if ok {
58-
return route, true
59-
}
60-
61-
// it's possible that some routes have been dynamically added e.g. with interchain accounts.
62-
// in this case, we need to check if the module has the specified prefix.
63-
for prefix, ibcModule := range rtr.routes {
64-
if strings.HasPrefix(module, prefix) {
65-
return ibcModule, true
66-
}
67-
}
68-
return nil, false
69-
}

modules/core/api/router_test.go

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,53 +16,42 @@ func (suite *APITestSuite) TestRouter() {
1616
{
1717
name: "success",
1818
malleate: func() {
19-
router.AddRoute("module01", &mockv2.IBCModule{})
19+
router.AddRoute("port01", &mockv2.IBCModule{})
2020
},
2121
assertionFn: func() {
22-
suite.Require().True(router.HasRoute("module01"))
22+
suite.Require().True(router.HasRoute("port01"))
2323
},
2424
},
2525
{
2626
name: "success: multiple modules",
2727
malleate: func() {
28-
router.AddRoute("module01", &mockv2.IBCModule{})
29-
router.AddRoute("module02", &mockv2.IBCModule{})
30-
router.AddRoute("module03", &mockv2.IBCModule{})
28+
router.AddRoute("port01", &mockv2.IBCModule{})
29+
router.AddRoute("port02", &mockv2.IBCModule{})
30+
router.AddRoute("port03", &mockv2.IBCModule{})
3131
},
3232
assertionFn: func() {
33-
suite.Require().True(router.HasRoute("module01"))
34-
suite.Require().True(router.HasRoute("module02"))
35-
suite.Require().True(router.HasRoute("module03"))
36-
},
37-
},
38-
{
39-
name: "success: find by prefix",
40-
malleate: func() {
41-
router.AddRoute("module01", &mockv2.IBCModule{})
42-
},
43-
assertionFn: func() {
44-
suite.Require().True(router.HasRoute("module01-foo"))
33+
suite.Require().True(router.HasRoute("port01"))
34+
suite.Require().True(router.HasRoute("port02"))
35+
suite.Require().True(router.HasRoute("port03"))
4536
},
4637
},
4738
{
4839
name: "failure: panics on duplicate module",
4940
malleate: func() {
50-
router.AddRoute("module01", &mockv2.IBCModule{})
41+
router.AddRoute("port01", &mockv2.IBCModule{})
5142
},
5243
assertionFn: func() {
53-
suite.Require().PanicsWithError("route module01 has already been registered", func() {
54-
router.AddRoute("module01", &mockv2.IBCModule{})
44+
suite.Require().PanicsWithError("route port01 has already been registered", func() {
45+
router.AddRoute("port01", &mockv2.IBCModule{})
5546
})
5647
},
5748
},
5849
{
59-
name: "failure: panics invalid-name",
60-
malleate: func() {
61-
router.AddRoute("module01", &mockv2.IBCModule{})
62-
},
50+
name: "failure: panics invalid-name",
51+
malleate: func() {},
6352
assertionFn: func() {
6453
suite.Require().PanicsWithError("route expressions can only contain alphanumeric characters", func() {
65-
router.AddRoute("module-02", &mockv2.IBCModule{})
54+
router.AddRoute("port-02", &mockv2.IBCModule{})
6655
})
6756
},
6857
},

modules/light-clients/08-wasm/testing/simapp/app.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ func NewSimApp(
570570

571571
// register the transfer v2 module.
572572
app.TransferKeeperV2 = ibctransferkeeperv2.NewKeeper(app.TransferKeeper, app.IBCKeeper.ChannelKeeperV2)
573-
ibcRouterV2.AddRoute(ibctransfertypes.ModuleName, transferv2.NewIBCModule(app.TransferKeeperV2))
573+
ibcRouterV2.AddRoute(ibctransfertypes.PortID, transferv2.NewIBCModule(app.TransferKeeperV2))
574574

575575
// Seal the IBC Routers.
576576
app.IBCKeeper.SetRouter(ibcRouter)

testing/mock/v2/ibc_module.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ const (
1616
ModuleNameA = ModuleName + "A"
1717
// ModuleNameB is a name that can be used for the second mock application.
1818
ModuleNameB = ModuleName + "B"
19+
// PortIDA is a port ID that can be used for the first mock application.
20+
PortIDA = ModuleNameA
21+
// PortIDB is a port ID that can be used for the second mock application.
22+
PortIDB = ModuleNameB
1923
)
2024

2125
// IBCModule is a mock implementation of the IBCModule interface.

testing/simapp/app.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -480,16 +480,16 @@ func NewSimApp(
480480

481481
// create two separate mock v2 applications so that it is possible to test multi packet data.
482482
mockV2A := mockv2.NewIBCModule()
483-
ibcRouterV2.AddRoute(mockv2.ModuleNameA, mockV2A)
483+
ibcRouterV2.AddRoute(mockv2.PortIDA, mockV2A)
484484
app.MockModuleV2A = mockV2A
485485

486486
mockV2B := mockv2.NewIBCModule()
487-
ibcRouterV2.AddRoute(mockv2.ModuleNameB, mockV2B)
487+
ibcRouterV2.AddRoute(mockv2.PortIDB, mockV2B)
488488
app.MockModuleV2B = mockV2B
489489

490490
// register the transfer v2 module.
491491
app.TransferKeeperV2 = ibctransferkeeperv2.NewKeeper(app.TransferKeeper, app.IBCKeeper.ChannelKeeperV2)
492-
ibcRouterV2.AddRoute(ibctransfertypes.ModuleName, transferv2.NewIBCModule(app.TransferKeeperV2))
492+
ibcRouterV2.AddRoute(ibctransfertypes.PortID, transferv2.NewIBCModule(app.TransferKeeperV2))
493493

494494
// Seal the IBC Router
495495
app.IBCKeeper.SetRouter(ibcRouter)

0 commit comments

Comments
 (0)