Fix AcknowledgePacket and AcknowledgementExecuted bug + update testing pkg (#7170)
* upstream cosm wasm testing pkg fixes * fix bug, tests and undo rand addition * fix lint * go mod tidy
This commit is contained in:
parent
831b3d0574
commit
e09c8d9360
2
go.mod
2
go.mod
@ -24,6 +24,8 @@ require (
|
||||
github.com/hashicorp/golang-lru v0.5.4
|
||||
github.com/magiconair/properties v1.8.2
|
||||
github.com/mattn/go-isatty v0.0.12
|
||||
github.com/onsi/ginkgo v1.8.0 // indirect
|
||||
github.com/onsi/gomega v1.5.0 // indirect
|
||||
github.com/otiai10/copy v1.2.0
|
||||
github.com/pelletier/go-toml v1.8.0 // indirect
|
||||
github.com/pkg/errors v0.9.1
|
||||
|
||||
7
go.sum
7
go.sum
@ -388,8 +388,12 @@ github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:v
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w=
|
||||
github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo=
|
||||
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
|
||||
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
|
||||
github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
|
||||
@ -775,14 +779,17 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
|
||||
gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
|
||||
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
|
||||
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
||||
|
||||
@ -535,7 +535,7 @@ func (suite *KeeperTestSuite) TestConnOpenConfirm() {
|
||||
tc.malleate()
|
||||
|
||||
connA := suite.chainA.GetFirstTestConnection(clientA, clientB)
|
||||
connB := suite.chainA.GetFirstTestConnection(clientB, clientA)
|
||||
connB := suite.chainB.GetFirstTestConnection(clientB, clientA)
|
||||
|
||||
connectionKey := host.KeyConnection(connA.ID)
|
||||
proofAck, proofHeight := suite.chainA.QueryProof(connectionKey)
|
||||
|
||||
@ -64,7 +64,7 @@ func (suite *KeeperTestSuite) TestQueryChannel() {
|
||||
func() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
// init channel
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
expChannel = suite.chainA.GetChannel(channelA)
|
||||
@ -134,7 +134,7 @@ func (suite *KeeperTestSuite) TestQueryChannels() {
|
||||
}
|
||||
|
||||
// channel1 is second channel on first connection on chainA
|
||||
testchannel1, _ := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA0, connB0, types.ORDERED)
|
||||
testchannel1, _ := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA0, connB0, types.ORDERED)
|
||||
counterparty1 := types.Counterparty{
|
||||
PortId: connB0.Channels[1].PortID,
|
||||
ChannelId: connB0.Channels[1].ID,
|
||||
@ -142,11 +142,11 @@ func (suite *KeeperTestSuite) TestQueryChannels() {
|
||||
|
||||
channel0 := types.NewChannel(
|
||||
types.OPEN, types.UNORDERED,
|
||||
counterparty0, []string{connA0.ID}, ibctesting.ChannelVersion,
|
||||
counterparty0, []string{connA0.ID}, testchannel0.Version,
|
||||
)
|
||||
channel1 := types.NewChannel(
|
||||
types.OPEN, types.ORDERED,
|
||||
counterparty1, []string{connA0.ID}, ibctesting.ChannelVersion,
|
||||
counterparty1, []string{connA0.ID}, testchannel1.Version,
|
||||
)
|
||||
|
||||
idCh0 := types.NewIdentifiedChannel(testchannel0.PortID, testchannel0.ID, channel0)
|
||||
@ -225,7 +225,7 @@ func (suite *KeeperTestSuite) TestQueryConnectionChannels() {
|
||||
}
|
||||
|
||||
// channel1 is second channel on first connection on chainA
|
||||
testchannel1, _ := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA0, connB0, types.ORDERED)
|
||||
testchannel1, _ := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA0, connB0, types.ORDERED)
|
||||
counterparty1 := types.Counterparty{
|
||||
PortId: connB0.Channels[1].PortID,
|
||||
ChannelId: connB0.Channels[1].ID,
|
||||
@ -233,11 +233,11 @@ func (suite *KeeperTestSuite) TestQueryConnectionChannels() {
|
||||
|
||||
channel0 := types.NewChannel(
|
||||
types.OPEN, types.UNORDERED,
|
||||
counterparty0, []string{connA0.ID}, ibctesting.ChannelVersion,
|
||||
counterparty0, []string{connA0.ID}, testchannel0.Version,
|
||||
)
|
||||
channel1 := types.NewChannel(
|
||||
types.OPEN, types.ORDERED,
|
||||
counterparty1, []string{connA0.ID}, ibctesting.ChannelVersion,
|
||||
counterparty1, []string{connA0.ID}, testchannel1.Version,
|
||||
)
|
||||
|
||||
idCh0 := types.NewIdentifiedChannel(testchannel0.PortID, testchannel0.ID, channel0)
|
||||
@ -246,7 +246,7 @@ func (suite *KeeperTestSuite) TestQueryConnectionChannels() {
|
||||
expChannels = []*types.IdentifiedChannel{&idCh0, &idCh1}
|
||||
|
||||
req = &types.QueryConnectionChannelsRequest{
|
||||
Connection: connB0.ID,
|
||||
Connection: connA0.ID,
|
||||
Pagination: &query.PageRequest{
|
||||
Key: nil,
|
||||
Limit: 2,
|
||||
@ -379,7 +379,7 @@ func (suite *KeeperTestSuite) TestQueryChannelClientState() {
|
||||
func() {
|
||||
clientA, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
// init channel
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
expClientState := suite.chainA.GetClientState(clientA)
|
||||
@ -502,7 +502,7 @@ func (suite *KeeperTestSuite) TestQueryChannelConsensusState() {
|
||||
func() {
|
||||
clientA, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
// init channel
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
clientState := suite.chainA.GetClientState(clientA)
|
||||
|
||||
@ -33,8 +33,8 @@ func (suite *KeeperTestSuite) TestChanOpenInit() {
|
||||
{"success", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
features = []string{"ORDER_ORDERED", "ORDER_UNORDERED"}
|
||||
suite.chainA.CreatePortCapability(connA.NextTestChannel().PortID)
|
||||
portCap = suite.chainA.GetPortCapability(connA.NextTestChannel().PortID)
|
||||
suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
}, true},
|
||||
{"channel already exists", func() {
|
||||
_, _, connA, connB, _, _ = suite.coordinator.Setup(suite.chainA, suite.chainB)
|
||||
@ -76,8 +76,8 @@ func (suite *KeeperTestSuite) TestChanOpenInit() {
|
||||
connA.ID, conn,
|
||||
)
|
||||
features = []string{"ORDER_ORDERED", "ORDER_UNORDERED"}
|
||||
suite.chainA.CreatePortCapability(connA.NextTestChannel().PortID)
|
||||
portCap = suite.chainA.GetPortCapability(connA.NextTestChannel().PortID)
|
||||
suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
}, false},
|
||||
{"connection does not support ORDERED channels", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
@ -95,8 +95,8 @@ func (suite *KeeperTestSuite) TestChanOpenInit() {
|
||||
)
|
||||
// NOTE: Opening UNORDERED channels is still expected to pass but ORDERED channels should fail
|
||||
features = []string{"ORDER_UNORDERED"}
|
||||
suite.chainA.CreatePortCapability(connA.NextTestChannel().PortID)
|
||||
portCap = suite.chainA.GetPortCapability(connA.NextTestChannel().PortID)
|
||||
suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
}, true},
|
||||
}
|
||||
|
||||
@ -108,12 +108,12 @@ func (suite *KeeperTestSuite) TestChanOpenInit() {
|
||||
suite.SetupTest() // reset
|
||||
tc.malleate()
|
||||
|
||||
counterparty := types.NewCounterparty(connB.FirstOrNextTestChannel().PortID, connB.FirstOrNextTestChannel().ID)
|
||||
channelA := connA.FirstOrNextTestChannel()
|
||||
counterparty := types.NewCounterparty(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID, connB.FirstOrNextTestChannel(ibctesting.TransferPort).ID)
|
||||
channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
cap, err := suite.chainA.App.IBCKeeper.ChannelKeeper.ChanOpenInit(
|
||||
suite.chainA.GetContext(), order, []string{connA.ID},
|
||||
channelA.PortID, channelA.ID, portCap, counterparty, ibctesting.ChannelVersion,
|
||||
channelA.PortID, channelA.ID, portCap, counterparty, channelA.Version,
|
||||
)
|
||||
|
||||
// check if order is supported by channel to determine expected behaviour
|
||||
@ -159,16 +159,16 @@ func (suite *KeeperTestSuite) TestChanOpenTry() {
|
||||
testCases := []testCase{
|
||||
{"success", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
|
||||
suite.chainB.CreatePortCapability(connB.NextTestChannel().PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.NextTestChannel().PortID)
|
||||
suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
}, true},
|
||||
{"previous channel with invalid state", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
|
||||
// make previous channel have wrong ordering
|
||||
suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, types.UNORDERED)
|
||||
suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.TransferPort, ibctesting.TransferPort, types.UNORDERED)
|
||||
}, false},
|
||||
{"connection doesn't exist", func() {
|
||||
// any non-nil values of connA and connB are acceptable
|
||||
@ -176,14 +176,14 @@ func (suite *KeeperTestSuite) TestChanOpenTry() {
|
||||
suite.Require().NotNil(connB)
|
||||
|
||||
// pass capability check
|
||||
suite.chainB.CreatePortCapability(connB.FirstOrNextTestChannel().PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.FirstOrNextTestChannel().PortID)
|
||||
suite.chainB.CreatePortCapability(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID)
|
||||
}, false},
|
||||
{"connection is not OPEN", func() {
|
||||
clientA, clientB := suite.coordinator.SetupClients(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
// pass capability check
|
||||
suite.chainB.CreatePortCapability(connB.FirstOrNextTestChannel().PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.FirstOrNextTestChannel().PortID)
|
||||
suite.chainB.CreatePortCapability(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.FirstOrNextTestChannel(ibctesting.TransferPort).PortID)
|
||||
|
||||
var err error
|
||||
connB, connA, err = suite.coordinator.ConnOpenInit(suite.chainB, suite.chainA, clientB, clientA)
|
||||
@ -191,27 +191,27 @@ func (suite *KeeperTestSuite) TestChanOpenTry() {
|
||||
}, false},
|
||||
{"consensus state not found", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
|
||||
suite.chainB.CreatePortCapability(connB.NextTestChannel().PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.NextTestChannel().PortID)
|
||||
suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
|
||||
heightDiff = 3 // consensus state doesn't exist at this height
|
||||
}, false},
|
||||
{"channel verification failed", func() {
|
||||
// not creating a channel on chainA will result in an invalid proof of existence
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
portCap = suite.chainB.GetPortCapability(connB.NextTestChannel().PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
}, false},
|
||||
{"port capability not found", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
|
||||
portCap = capabilitytypes.NewCapability(3)
|
||||
}, false},
|
||||
{"connection version not negotiated", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
|
||||
// modify connB versions
|
||||
conn := suite.chainB.GetConnection(connB)
|
||||
@ -224,12 +224,12 @@ func (suite *KeeperTestSuite) TestChanOpenTry() {
|
||||
suite.chainB.GetContext(),
|
||||
connB.ID, conn,
|
||||
)
|
||||
suite.chainB.CreatePortCapability(connB.NextTestChannel().PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.NextTestChannel().PortID)
|
||||
suite.chainB.CreatePortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainB.GetPortCapability(connB.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
}, false},
|
||||
{"connection does not support ORDERED channels", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
|
||||
// modify connA versions to only support UNORDERED channels
|
||||
conn := suite.chainA.GetConnection(connA)
|
||||
@ -242,8 +242,8 @@ func (suite *KeeperTestSuite) TestChanOpenTry() {
|
||||
suite.chainA.GetContext(),
|
||||
connA.ID, conn,
|
||||
)
|
||||
suite.chainA.CreatePortCapability(connA.NextTestChannel().PortID)
|
||||
portCap = suite.chainA.GetPortCapability(connA.NextTestChannel().PortID)
|
||||
suite.chainA.CreatePortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
portCap = suite.chainA.GetPortCapability(connA.NextTestChannel(ibctesting.TransferPort).PortID)
|
||||
}, false},
|
||||
}
|
||||
|
||||
@ -254,15 +254,15 @@ func (suite *KeeperTestSuite) TestChanOpenTry() {
|
||||
heightDiff = 0 // must be explicitly changed in malleate
|
||||
|
||||
tc.malleate()
|
||||
counterparty := types.NewCounterparty(connA.FirstOrNextTestChannel().PortID, connA.FirstOrNextTestChannel().ID)
|
||||
channelB := connB.FirstOrNextTestChannel()
|
||||
counterparty := types.NewCounterparty(connA.FirstOrNextTestChannel(ibctesting.TransferPort).PortID, connA.FirstOrNextTestChannel(ibctesting.TransferPort).ID)
|
||||
channelB := connB.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
channelKey := host.KeyChannel(counterparty.PortId, counterparty.ChannelId)
|
||||
proof, proofHeight := suite.chainA.QueryProof(channelKey)
|
||||
|
||||
cap, err := suite.chainB.App.IBCKeeper.ChannelKeeper.ChanOpenTry(
|
||||
suite.chainB.GetContext(), types.ORDERED, []string{connB.ID},
|
||||
channelB.PortID, channelB.ID, portCap, counterparty, ibctesting.ChannelVersion, ibctesting.ChannelVersion,
|
||||
channelB.PortID, channelB.ID, portCap, counterparty, channelB.Version, connA.FirstOrNextTestChannel(ibctesting.TransferPort).Version,
|
||||
proof, proofHeight+heightDiff,
|
||||
)
|
||||
|
||||
@ -297,7 +297,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() {
|
||||
testCases := []testCase{
|
||||
{"success", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -314,7 +314,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() {
|
||||
}, false},
|
||||
{"connection not found", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -335,7 +335,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() {
|
||||
suite.Require().NoError(err)
|
||||
|
||||
// create channel in init
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID)
|
||||
@ -343,7 +343,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() {
|
||||
}, false},
|
||||
{"consensus state not found", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -356,7 +356,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() {
|
||||
{"channel verification failed", func() {
|
||||
// chainB is INIT, chainA in TRYOPEN
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelB, channelA, err := suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, types.ORDERED)
|
||||
channelB, channelA, err := suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainA, suite.chainB, channelA, channelB, connA, types.ORDERED)
|
||||
@ -366,7 +366,7 @@ func (suite *KeeperTestSuite) TestChanOpenAck() {
|
||||
}, false},
|
||||
{"channel capability not found", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -383,14 +383,14 @@ func (suite *KeeperTestSuite) TestChanOpenAck() {
|
||||
|
||||
tc.malleate()
|
||||
|
||||
channelA := connA.FirstOrNextTestChannel()
|
||||
channelB := connB.FirstOrNextTestChannel()
|
||||
channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
channelB := connB.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
channelKey := host.KeyChannel(channelB.PortID, channelB.ID)
|
||||
proof, proofHeight := suite.chainB.QueryProof(channelKey)
|
||||
|
||||
err := suite.chainA.App.IBCKeeper.ChannelKeeper.ChanOpenAck(
|
||||
suite.chainA.GetContext(), channelA.PortID, channelA.ID, channelCap, ibctesting.ChannelVersion,
|
||||
suite.chainA.GetContext(), channelA.PortID, channelA.ID, channelCap, channelB.Version,
|
||||
proof, proofHeight+heightDiff,
|
||||
)
|
||||
|
||||
@ -416,7 +416,7 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() {
|
||||
testCases := []testCase{
|
||||
{"success", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -436,7 +436,7 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() {
|
||||
}, false},
|
||||
{"connection not found", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -458,13 +458,13 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() {
|
||||
var err error
|
||||
connA, connB, err = suite.coordinator.ConnOpenInit(suite.chainB, suite.chainA, clientB, clientA)
|
||||
suite.Require().NoError(err)
|
||||
channelB := connB.FirstOrNextTestChannel()
|
||||
channelB := connB.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
suite.chainB.CreateChannelCapability(channelB.PortID, channelB.ID)
|
||||
channelCap = suite.chainB.GetChannelCapability(channelB.PortID, channelB.ID)
|
||||
}, false},
|
||||
{"consensus state not found", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -480,7 +480,7 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() {
|
||||
{"channel verification failed", func() {
|
||||
// chainA is INIT, chainB in TRYOPEN
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -490,7 +490,7 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() {
|
||||
}, false},
|
||||
{"channel capability not found", func() {
|
||||
_, _, connA, connB = suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
err = suite.coordinator.ChanOpenTry(suite.chainB, suite.chainA, channelB, channelA, connB, types.ORDERED)
|
||||
@ -511,8 +511,8 @@ func (suite *KeeperTestSuite) TestChanOpenConfirm() {
|
||||
|
||||
tc.malleate()
|
||||
|
||||
channelA := connA.FirstOrNextTestChannel()
|
||||
channelB := connB.FirstOrNextTestChannel()
|
||||
channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
channelB := connB.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
channelKey := host.KeyChannel(channelA.PortID, channelA.ID)
|
||||
proof, proofHeight := suite.chainA.QueryProof(channelKey)
|
||||
@ -550,7 +550,7 @@ func (suite *KeeperTestSuite) TestChanCloseInit() {
|
||||
// any non-nil values work for connections
|
||||
suite.Require().NotNil(connA)
|
||||
suite.Require().NotNil(connB)
|
||||
channelA := connA.FirstOrNextTestChannel()
|
||||
channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
// ensure channel capability check passes
|
||||
suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID)
|
||||
@ -583,7 +583,7 @@ func (suite *KeeperTestSuite) TestChanCloseInit() {
|
||||
suite.Require().NoError(err)
|
||||
|
||||
// create channel in init
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
|
||||
// ensure channel capability check passes
|
||||
suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID)
|
||||
@ -602,7 +602,7 @@ func (suite *KeeperTestSuite) TestChanCloseInit() {
|
||||
|
||||
tc.malleate()
|
||||
|
||||
channelA := connA.FirstOrNextTestChannel()
|
||||
channelA := connA.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
err := suite.chainA.App.IBCKeeper.ChannelKeeper.ChanCloseInit(
|
||||
suite.chainA.GetContext(), channelA.PortID, channelA.ID, channelCap,
|
||||
@ -642,7 +642,7 @@ func (suite *KeeperTestSuite) TestChanCloseConfirm() {
|
||||
// any non-nil values work for connections
|
||||
suite.Require().NotNil(connA)
|
||||
suite.Require().NotNil(connB)
|
||||
channelB = connB.FirstOrNextTestChannel()
|
||||
channelB = connB.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
// ensure channel capability check passes
|
||||
suite.chainB.CreateChannelCapability(channelB.PortID, channelB.ID)
|
||||
@ -672,7 +672,7 @@ func (suite *KeeperTestSuite) TestChanCloseConfirm() {
|
||||
suite.Require().NoError(err)
|
||||
|
||||
// create channel in init
|
||||
channelB, _, err := suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, types.ORDERED)
|
||||
channelB, _, err := suite.coordinator.ChanOpenInit(suite.chainB, suite.chainA, connB, connA, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
// ensure channel capability check passes
|
||||
@ -712,8 +712,8 @@ func (suite *KeeperTestSuite) TestChanCloseConfirm() {
|
||||
|
||||
tc.malleate()
|
||||
|
||||
channelA = connA.FirstOrNextTestChannel()
|
||||
channelB = connB.FirstOrNextTestChannel()
|
||||
channelA = connA.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
channelB = connB.FirstOrNextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
channelKey := host.KeyChannel(channelA.PortID, channelA.ID)
|
||||
proof, proofHeight := suite.chainA.QueryProof(channelKey)
|
||||
|
||||
@ -40,12 +40,12 @@ func (suite *KeeperTestSuite) TestSetChannel() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
|
||||
// check for channel to be created on chainB
|
||||
channelA := connA.NextTestChannel()
|
||||
channelA := connA.NextTestChannel(ibctesting.TransferPort)
|
||||
_, found := suite.chainA.App.IBCKeeper.ChannelKeeper.GetChannel(suite.chainA.GetContext(), channelA.PortID, channelA.ID)
|
||||
suite.False(found)
|
||||
|
||||
// init channel
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA, connB, ibctesting.TransferPort, ibctesting.TransferPort, types.ORDERED)
|
||||
suite.NoError(err)
|
||||
|
||||
storedChannel, found := suite.chainA.App.IBCKeeper.ChannelKeeper.GetChannel(suite.chainA.GetContext(), channelA.PortID, channelA.ID)
|
||||
@ -68,7 +68,7 @@ func (suite KeeperTestSuite) TestGetAllChannels() {
|
||||
}
|
||||
|
||||
// channel1 is second channel on first connection on chainA
|
||||
testchannel1, _ := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA0, connB0, types.ORDERED)
|
||||
testchannel1, _ := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA0, connB0, types.ORDERED)
|
||||
counterparty1 := types.Counterparty{
|
||||
PortId: connB0.Channels[1].PortID,
|
||||
ChannelId: connB0.Channels[1].ID,
|
||||
@ -77,7 +77,7 @@ func (suite KeeperTestSuite) TestGetAllChannels() {
|
||||
connA1, connB1 := suite.coordinator.CreateConnection(suite.chainA, suite.chainB, clientA, clientB)
|
||||
|
||||
// channel2 is on a second connection on chainA
|
||||
testchannel2, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA1, connB1, types.UNORDERED)
|
||||
testchannel2, _, err := suite.coordinator.ChanOpenInit(suite.chainA, suite.chainB, connA1, connB1, ibctesting.TransferPort, ibctesting.TransferPort, types.UNORDERED)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
counterparty2 := types.Counterparty{
|
||||
@ -87,15 +87,15 @@ func (suite KeeperTestSuite) TestGetAllChannels() {
|
||||
|
||||
channel0 := types.NewChannel(
|
||||
types.OPEN, types.UNORDERED,
|
||||
counterparty0, []string{connB0.ID}, ibctesting.ChannelVersion,
|
||||
counterparty0, []string{connA0.ID}, testchannel0.Version,
|
||||
)
|
||||
channel1 := types.NewChannel(
|
||||
types.OPEN, types.ORDERED,
|
||||
counterparty1, []string{connB0.ID}, ibctesting.ChannelVersion,
|
||||
counterparty1, []string{connA0.ID}, testchannel1.Version,
|
||||
)
|
||||
channel2 := types.NewChannel(
|
||||
types.INIT, types.UNORDERED,
|
||||
counterparty2, []string{connB1.ID}, ibctesting.ChannelVersion,
|
||||
counterparty2, []string{connA1.ID}, testchannel2.Version,
|
||||
)
|
||||
|
||||
expChannels := []types.IdentifiedChannel{
|
||||
@ -115,7 +115,7 @@ func (suite KeeperTestSuite) TestGetAllChannels() {
|
||||
// tests their retrieval.
|
||||
func (suite KeeperTestSuite) TestGetAllSequences() {
|
||||
_, _, connA, connB, channelA0, _ := suite.coordinator.Setup(suite.chainA, suite.chainB)
|
||||
channelA1, _ := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.UNORDERED)
|
||||
channelA1, _ := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.UNORDERED)
|
||||
|
||||
seq1 := types.NewPacketSequence(channelA0.PortID, channelA0.ID, 1)
|
||||
seq2 := types.NewPacketSequence(channelA0.PortID, channelA0.ID, 2)
|
||||
@ -148,7 +148,7 @@ func (suite KeeperTestSuite) TestGetAllSequences() {
|
||||
// channels on chain A and tests their retrieval.
|
||||
func (suite KeeperTestSuite) TestGetAllCommitmentsAcks() {
|
||||
_, _, connA, connB, channelA0, _ := suite.coordinator.Setup(suite.chainA, suite.chainB)
|
||||
channelA1, _ := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.UNORDERED)
|
||||
channelA1, _ := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.UNORDERED)
|
||||
|
||||
// channel 0 acks
|
||||
ack1 := types.NewPacketAckCommitment(channelA0.PortID, channelA0.ID, 1, []byte("ack"))
|
||||
@ -240,7 +240,7 @@ func (suite *KeeperTestSuite) TestGetAllPacketCommitmentsAtChannel() {
|
||||
_, _, connA, connB, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB)
|
||||
|
||||
// create second channel
|
||||
channelA1, _ := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.UNORDERED)
|
||||
channelA1, _ := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.UNORDERED)
|
||||
|
||||
ctxA := suite.chainA.GetContext()
|
||||
expectedSeqs := make(map[uint64]bool)
|
||||
|
||||
@ -403,11 +403,11 @@ func (k Keeper) AcknowledgePacket(
|
||||
|
||||
// assert packets acknowledged in order
|
||||
if channel.Ordering == types.ORDERED {
|
||||
nextSequenceAck, found := k.GetNextSequenceAck(ctx, packet.GetDestPort(), packet.GetDestChannel())
|
||||
nextSequenceAck, found := k.GetNextSequenceAck(ctx, packet.GetSourcePort(), packet.GetSourceChannel())
|
||||
if !found {
|
||||
return sdkerrors.Wrapf(
|
||||
types.ErrSequenceAckNotFound,
|
||||
"destination port: %s, destination channel: %s", packet.GetDestPort(), packet.GetDestChannel(),
|
||||
"source port: %s, source channel: %s", packet.GetSourcePort(), packet.GetSourceChannel(),
|
||||
)
|
||||
}
|
||||
|
||||
@ -452,11 +452,11 @@ func (k Keeper) AcknowledgementExecuted(
|
||||
|
||||
// increment NextSequenceAck
|
||||
if channel.Ordering == types.ORDERED {
|
||||
nextSequenceAck, found := k.GetNextSequenceAck(ctx, packet.GetDestPort(), packet.GetDestChannel())
|
||||
nextSequenceAck, found := k.GetNextSequenceAck(ctx, packet.GetSourcePort(), packet.GetSourceChannel())
|
||||
if !found {
|
||||
return sdkerrors.Wrapf(
|
||||
types.ErrSequenceAckNotFound,
|
||||
"destination port: %s, destination channel: %s", packet.GetDestPort(), packet.GetDestChannel(),
|
||||
"source port: %s, source channel: %s", packet.GetSourcePort(), packet.GetSourceChannel(),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ func (suite *KeeperTestSuite) TestSendPacket() {
|
||||
}, true},
|
||||
{"success: ORDERED channel", func() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
channelCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID)
|
||||
}, true},
|
||||
@ -55,7 +55,7 @@ func (suite *KeeperTestSuite) TestSendPacket() {
|
||||
}, false},
|
||||
{"sending packet out of order on ORDERED channel", func() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 5, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
channelCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID)
|
||||
}, false},
|
||||
@ -96,7 +96,7 @@ func (suite *KeeperTestSuite) TestSendPacket() {
|
||||
suite.chainA.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainA.GetContext(),
|
||||
channelA.PortID, channelA.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connIDA}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connIDA}, channelA.Version),
|
||||
)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID)
|
||||
@ -114,7 +114,7 @@ func (suite *KeeperTestSuite) TestSendPacket() {
|
||||
suite.chainA.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainA.GetContext(),
|
||||
channelA.PortID, channelA.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connIDA}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connIDA}, channelA.Version),
|
||||
)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID)
|
||||
@ -151,14 +151,14 @@ func (suite *KeeperTestSuite) TestSendPacket() {
|
||||
}, false},
|
||||
{"next sequence send not found", func() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA := connA.NextTestChannel()
|
||||
channelB := connB.NextTestChannel()
|
||||
channelA := connA.NextTestChannel(ibctesting.TransferPort)
|
||||
channelB := connB.NextTestChannel(ibctesting.TransferPort)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
// manually creating channel prevents next sequence from being set
|
||||
suite.chainA.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainA.GetContext(),
|
||||
channelA.PortID, channelA.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connA.ID}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connA.ID}, channelA.Version),
|
||||
)
|
||||
suite.chainA.CreateChannelCapability(channelA.PortID, channelA.ID)
|
||||
channelCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID)
|
||||
@ -206,7 +206,7 @@ func (suite *KeeperTestSuite) TestRecvPacket() {
|
||||
testCases := []testCase{
|
||||
{"success: ORDERED channel", func() {
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
err := suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
suite.Require().NoError(err)
|
||||
@ -234,7 +234,7 @@ func (suite *KeeperTestSuite) TestRecvPacket() {
|
||||
}, true},
|
||||
{"out of order packet failure with ORDERED channel", func() {
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
|
||||
// send 2 packets
|
||||
@ -275,7 +275,7 @@ func (suite *KeeperTestSuite) TestRecvPacket() {
|
||||
suite.chainB.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainB.GetContext(),
|
||||
channelB.PortID, channelB.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connIDB}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connIDB}, channelB.Version),
|
||||
)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
}, false},
|
||||
@ -285,13 +285,13 @@ func (suite *KeeperTestSuite) TestRecvPacket() {
|
||||
connB, connA, err := suite.coordinator.ConnOpenInit(suite.chainB, suite.chainA, clientB, clientA)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
channelA := connA.NextTestChannel()
|
||||
channelB := connB.NextTestChannel()
|
||||
channelA := connA.NextTestChannel(ibctesting.TransferPort)
|
||||
channelB := connB.NextTestChannel(ibctesting.TransferPort)
|
||||
// pass channel check
|
||||
suite.chainB.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainB.GetContext(),
|
||||
channelB.PortID, channelB.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connB.ID}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connB.ID}, channelB.Version),
|
||||
)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
}, false},
|
||||
@ -314,14 +314,14 @@ func (suite *KeeperTestSuite) TestRecvPacket() {
|
||||
}, false},
|
||||
{"next receive sequence is not found", func() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA := connA.NextTestChannel()
|
||||
channelB := connB.NextTestChannel()
|
||||
channelA := connA.NextTestChannel(ibctesting.TransferPort)
|
||||
channelB := connB.NextTestChannel(ibctesting.TransferPort)
|
||||
|
||||
// manually creating channel prevents next recv sequence from being set
|
||||
suite.chainB.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainB.GetContext(),
|
||||
channelB.PortID, channelB.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connB.ID}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connB.ID}, channelB.Version),
|
||||
)
|
||||
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
@ -376,7 +376,7 @@ func (suite *KeeperTestSuite) TestPacketExecuted() {
|
||||
}, true},
|
||||
{"success: ORDERED", func() {
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
channelCap = suite.chainB.GetChannelCapability(channelB.PortID, channelB.ID)
|
||||
@ -396,21 +396,21 @@ func (suite *KeeperTestSuite) TestPacketExecuted() {
|
||||
}, false},
|
||||
{"next sequence receive not found", func() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA := connA.NextTestChannel()
|
||||
channelB := connB.NextTestChannel()
|
||||
channelA := connA.NextTestChannel(ibctesting.TransferPort)
|
||||
channelB := connB.NextTestChannel(ibctesting.TransferPort)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
// manually creating channel prevents next sequence receive from being set
|
||||
suite.chainB.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainB.GetContext(),
|
||||
channelB.PortID, channelB.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connB.ID}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connB.ID}, channelB.Version),
|
||||
)
|
||||
suite.chainB.CreateChannelCapability(channelB.PortID, channelB.ID)
|
||||
channelCap = suite.chainB.GetChannelCapability(channelB.PortID, channelB.ID)
|
||||
}, false},
|
||||
{"capability not found", func() {
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
|
||||
@ -458,7 +458,7 @@ func (suite *KeeperTestSuite) TestAcknowledgePacket() {
|
||||
testCases := []testCase{
|
||||
{"success on ordered channel", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
// create packet commitment
|
||||
err := suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
@ -510,7 +510,7 @@ func (suite *KeeperTestSuite) TestAcknowledgePacket() {
|
||||
suite.chainB.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainB.GetContext(),
|
||||
channelB.PortID, channelB.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connIDB}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelA.PortID, channelA.ID), []string{connIDB}, channelB.Version),
|
||||
)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
}, false},
|
||||
@ -520,13 +520,13 @@ func (suite *KeeperTestSuite) TestAcknowledgePacket() {
|
||||
connA, connB, err := suite.coordinator.ConnOpenInit(suite.chainA, suite.chainB, clientA, clientB)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
channelA := connA.NextTestChannel()
|
||||
channelB := connB.NextTestChannel()
|
||||
channelA := connA.NextTestChannel(ibctesting.TransferPort)
|
||||
channelB := connB.NextTestChannel(ibctesting.TransferPort)
|
||||
// pass channel check
|
||||
suite.chainA.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainA.GetContext(),
|
||||
channelA.PortID, channelA.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connA.ID}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connA.ID}, channelA.Version),
|
||||
)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
}, false},
|
||||
@ -545,14 +545,14 @@ func (suite *KeeperTestSuite) TestAcknowledgePacket() {
|
||||
}, false},
|
||||
{"next ack sequence not found", func() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA := connA.NextTestChannel()
|
||||
channelB := connB.NextTestChannel()
|
||||
channelA := connA.NextTestChannel(ibctesting.TransferPort)
|
||||
channelB := connB.NextTestChannel(ibctesting.TransferPort)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
// manually creating channel prevents next sequence acknowledgement from being set
|
||||
suite.chainA.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainA.GetContext(),
|
||||
channelA.PortID, channelA.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connA.ID}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connA.ID}, channelA.Version),
|
||||
)
|
||||
// manually set packet commitment
|
||||
suite.chainA.App.IBCKeeper.ChannelKeeper.SetPacketCommitment(suite.chainA.GetContext(), channelA.PortID, channelA.ID, packet.GetSequence(), ibctesting.TestHash)
|
||||
@ -562,7 +562,7 @@ func (suite *KeeperTestSuite) TestAcknowledgePacket() {
|
||||
}, false},
|
||||
{"next ack sequence mismatch", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
// create packet commitment
|
||||
err := suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
|
||||
@ -25,7 +25,7 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() {
|
||||
ordered = true
|
||||
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
// need to update chainA's client representing chainB to prove missing ack
|
||||
@ -69,13 +69,13 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() {
|
||||
suite.chainA.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainA.GetContext(),
|
||||
channelA.PortID, channelA.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connIDA}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connIDA}, channelA.Version),
|
||||
)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
}, false},
|
||||
{"timeout", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, clientexported.Tendermint)
|
||||
@ -85,14 +85,14 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() {
|
||||
nextSeqRecv = 2
|
||||
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, clientexported.Tendermint)
|
||||
}, false},
|
||||
{"packet hasn't been sent", func() {
|
||||
clientA, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, clientexported.Tendermint)
|
||||
}, false},
|
||||
@ -101,7 +101,7 @@ func (suite *KeeperTestSuite) TestTimeoutPacket() {
|
||||
ordered = false
|
||||
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), disabledTimeoutTimestamp)
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
suite.coordinator.UpdateClient(suite.chainA, suite.chainB, clientA, clientexported.Tendermint)
|
||||
@ -160,7 +160,7 @@ func (suite *KeeperTestSuite) TestTimeoutExecuted() {
|
||||
testCases := []testCase{
|
||||
{"success ORDERED", func() {
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
|
||||
@ -173,7 +173,7 @@ func (suite *KeeperTestSuite) TestTimeoutExecuted() {
|
||||
}, false},
|
||||
{"incorrect capability", func() {
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
|
||||
@ -215,7 +215,7 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() {
|
||||
{"success: ORDERED", func() {
|
||||
ordered = true
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB)
|
||||
@ -259,7 +259,7 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() {
|
||||
suite.chainA.App.IBCKeeper.ChannelKeeper.SetChannel(
|
||||
suite.chainA.GetContext(),
|
||||
channelA.PortID, channelA.ID,
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connIDA}, ibctesting.ChannelVersion),
|
||||
types.NewChannel(types.OPEN, types.ORDERED, types.NewCounterparty(channelB.PortID, channelB.ID), []string{connIDA}, channelA.Version),
|
||||
)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, disabledTimeoutTimestamp)
|
||||
|
||||
@ -269,7 +269,7 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() {
|
||||
}, false},
|
||||
{"packet hasn't been sent", func() {
|
||||
_, _, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID)
|
||||
}, false},
|
||||
@ -277,7 +277,7 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() {
|
||||
nextSeqRecv = 2
|
||||
ordered = true
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB)
|
||||
@ -289,7 +289,7 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() {
|
||||
{"channel verification failed", func() {
|
||||
ordered = true
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
chanCap = suite.chainA.GetChannelCapability(channelA.PortID, channelA.ID)
|
||||
@ -298,7 +298,7 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() {
|
||||
// set ordered to false providing the wrong proof for ORDERED case
|
||||
ordered = false
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB)
|
||||
@ -318,7 +318,7 @@ func (suite *KeeperTestSuite) TestTimeoutOnClose() {
|
||||
{"channel capability not found", func() {
|
||||
ordered = true
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, types.ORDERED)
|
||||
packet = types.NewPacket(validPacketData, 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
suite.coordinator.SetChannelClosed(suite.chainB, suite.chainA, channelB)
|
||||
|
||||
@ -56,7 +56,7 @@ func (suite *HandlerTestSuite) TestHandleRecvPacket() {
|
||||
}{
|
||||
{"success: ORDERED", func() {
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
packet = channeltypes.NewPacket(suite.chainA.GetPacketData(suite.chainB), 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, 0)
|
||||
|
||||
err := suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
@ -83,7 +83,7 @@ func (suite *HandlerTestSuite) TestHandleRecvPacket() {
|
||||
}, true},
|
||||
{"failure: ORDERED out of order packet", func() {
|
||||
_, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
|
||||
// attempts to receive packet with sequence 10 without receiving packet with sequence 1
|
||||
for i := uint64(1); i < 10; i++ {
|
||||
@ -103,7 +103,7 @@ func (suite *HandlerTestSuite) TestHandleRecvPacket() {
|
||||
}, false},
|
||||
{"ORDERED: packet already received (replay)", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
packet = channeltypes.NewPacket(suite.chainA.GetPacketData(suite.chainB), 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, 0)
|
||||
|
||||
err := suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
@ -179,7 +179,7 @@ func (suite *HandlerTestSuite) TestHandleAcknowledgePacket() {
|
||||
}{
|
||||
{"success: ORDERED", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
packet = channeltypes.NewPacket(suite.chainA.GetPacketData(suite.chainB), 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, 0)
|
||||
|
||||
err := suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
@ -216,7 +216,7 @@ func (suite *HandlerTestSuite) TestHandleAcknowledgePacket() {
|
||||
}, true},
|
||||
{"failure: ORDERED acknowledge out of order packet", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
|
||||
// attempts to acknowledge ack with sequence 10 without acknowledging ack with sequence 1 (removing packet commitment
|
||||
for i := uint64(1); i < 10; i++ {
|
||||
@ -242,7 +242,7 @@ func (suite *HandlerTestSuite) TestHandleAcknowledgePacket() {
|
||||
}, false},
|
||||
{"ORDERED: packet already acknowledged (replay)", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
packet = channeltypes.NewPacket(suite.chainA.GetPacketData(suite.chainB), 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, 0)
|
||||
|
||||
err := suite.coordinator.SendPacket(suite.chainA, suite.chainB, packet, clientB)
|
||||
@ -326,7 +326,7 @@ func (suite *HandlerTestSuite) TestHandleTimeoutPacket() {
|
||||
}{
|
||||
{"success: ORDERED", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
packet = channeltypes.NewPacket(suite.chainA.GetPacketData(suite.chainB), 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, uint64(suite.chainB.GetContext().BlockHeight()), uint64(suite.chainB.GetContext().BlockTime().UnixNano()))
|
||||
|
||||
// send from chainA to chainB
|
||||
@ -376,7 +376,7 @@ func (suite *HandlerTestSuite) TestHandleTimeoutPacket() {
|
||||
}, true},
|
||||
{"success: ORDERED timeout out of order packet", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
|
||||
msgs := make([]sdk.Msg, totalPackets)
|
||||
// attempts to timeout the last packet sent without timing out the first packet
|
||||
@ -461,7 +461,7 @@ func (suite *HandlerTestSuite) TestHandleTimeoutOnClosePacket() {
|
||||
}{
|
||||
{"success: ORDERED", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
packet = channeltypes.NewPacket(suite.chainA.GetPacketData(suite.chainB), 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, 0)
|
||||
counterpartyChannel = ibctesting.TestChannel{
|
||||
PortID: channelB.PortID,
|
||||
@ -537,7 +537,7 @@ func (suite *HandlerTestSuite) TestHandleTimeoutOnClosePacket() {
|
||||
}, true},
|
||||
{"success: ORDERED timeout out of order packet", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
counterpartyChannel = ibctesting.TestChannel{
|
||||
PortID: channelB.PortID,
|
||||
ID: channelB.ID,
|
||||
@ -586,7 +586,7 @@ func (suite *HandlerTestSuite) TestHandleTimeoutOnClosePacket() {
|
||||
}, false},
|
||||
{"ORDERED: channel not closed", func() {
|
||||
clientA, clientB, connA, connB := suite.coordinator.SetupClientConnections(suite.chainA, suite.chainB, clientexported.Tendermint)
|
||||
channelA, channelB := suite.coordinator.CreateChannel(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
channelA, channelB := suite.coordinator.CreateTransferChannels(suite.chainA, suite.chainB, connA, connB, channeltypes.ORDERED)
|
||||
packet = channeltypes.NewPacket(suite.chainA.GetPacketData(suite.chainB), 1, channelA.PortID, channelA.ID, channelB.PortID, channelB.ID, timeoutHeight, 0)
|
||||
counterpartyChannel = ibctesting.TestChannel{
|
||||
PortID: channelB.PortID,
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package testing
|
||||
package ibctesting
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@ -41,10 +41,13 @@ const (
|
||||
UnbondingPeriod time.Duration = time.Hour * 24 * 7 * 3
|
||||
MaxClockDrift time.Duration = time.Second * 10
|
||||
|
||||
ChannelVersion = ibctransfertypes.Version
|
||||
InvalidID = "IDisInvalid"
|
||||
DefaultChannelVersion = ibctransfertypes.Version
|
||||
InvalidID = "IDisInvalid"
|
||||
|
||||
ConnectionIDPrefix = "connectionid"
|
||||
ConnectionIDPrefix = "conn"
|
||||
ChannelIDPrefix = "chan"
|
||||
|
||||
TransferPort = ibctransfertypes.ModuleName
|
||||
)
|
||||
|
||||
// Default params variables used to create a TM client
|
||||
@ -221,10 +224,17 @@ func (chain *TestChain) NextBlock() {
|
||||
|
||||
}
|
||||
|
||||
// sendMsgs delivers a transaction through the application without returning the result.
|
||||
func (chain *TestChain) sendMsgs(msgs ...sdk.Msg) error {
|
||||
_, err := chain.SendMsgs(msgs...)
|
||||
return err
|
||||
}
|
||||
|
||||
// SendMsgs delivers a transaction through the application. It updates the senders sequence
|
||||
// number and updates the TestChain's headers.
|
||||
func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) error {
|
||||
_, _, err := simapp.SignCheckDeliver(
|
||||
// number and updates the TestChain's headers. It returns the result and error if one
|
||||
// occurred.
|
||||
func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) (*sdk.Result, error) {
|
||||
_, r, err := simapp.SignCheckDeliver(
|
||||
chain.t,
|
||||
chain.TxConfig,
|
||||
chain.App.BaseApp,
|
||||
@ -236,7 +246,7 @@ func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) error {
|
||||
true, true, chain.senderPrivKey,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// SignCheckDeliver calls app.Commit()
|
||||
@ -245,7 +255,7 @@ func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) error {
|
||||
// increment sequence for successful transaction execution
|
||||
chain.SenderAccount.SetSequence(chain.SenderAccount.GetSequence() + 1)
|
||||
|
||||
return nil
|
||||
return r, nil
|
||||
}
|
||||
|
||||
// GetClientState retrieves the client state for the provided clientID. The client is
|
||||
@ -326,13 +336,13 @@ func (chain *TestChain) AddTestConnection(clientID, counterpartyClientID string)
|
||||
|
||||
// ConstructNextTestConnection constructs the next test connection to be
|
||||
// created given a clientID and counterparty clientID. The connection id
|
||||
// format:
|
||||
// connectionid<index>
|
||||
// format: <chainID>-conn<index>
|
||||
func (chain *TestChain) ConstructNextTestConnection(clientID, counterpartyClientID string) *TestConnection {
|
||||
connectionID := ConnectionIDPrefix + strconv.Itoa(len(chain.Connections))
|
||||
connectionID := fmt.Sprintf("%s-%s%d", chain.ChainID, ConnectionIDPrefix, len(chain.Connections))
|
||||
return &TestConnection{
|
||||
ID: connectionID,
|
||||
ClientID: clientID,
|
||||
NextChannelVersion: DefaultChannelVersion,
|
||||
CounterpartyClientID: counterpartyClientID,
|
||||
}
|
||||
}
|
||||
@ -360,7 +370,7 @@ func (chain *TestChain) ConstructMsgCreateClient(counterparty *TestChain, client
|
||||
func (chain *TestChain) CreateTMClient(counterparty *TestChain, clientID string) error {
|
||||
// construct MsgCreateClient using counterparty
|
||||
msg := chain.ConstructMsgCreateClient(counterparty, clientID)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// UpdateTMClient will construct and execute a 07-tendermint MsgUpdateClient. The counterparty
|
||||
@ -403,7 +413,7 @@ func (chain *TestChain) UpdateTMClient(counterparty *TestChain, clientID string)
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// CreateTMClientHeader creates a TM header to update the TM client.
|
||||
@ -474,7 +484,7 @@ func (chain *TestChain) ConnectionOpenInit(
|
||||
counterparty.GetPrefix(),
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// ConnectionOpenTry will construct and execute a MsgConnectionOpenTry.
|
||||
@ -497,7 +507,7 @@ func (chain *TestChain) ConnectionOpenTry(
|
||||
proofHeight, consensusHeight,
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// ConnectionOpenAck will construct and execute a MsgConnectionOpenAck.
|
||||
@ -519,7 +529,7 @@ func (chain *TestChain) ConnectionOpenAck(
|
||||
ConnectionVersion,
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// ConnectionOpenConfirm will construct and execute a MsgConnectionOpenConfirm.
|
||||
@ -535,7 +545,7 @@ func (chain *TestChain) ConnectionOpenConfirm(
|
||||
proof, height,
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// CreatePortCapability binds and claims a capability for the given portID if it does not
|
||||
@ -599,11 +609,11 @@ func (chain *TestChain) ChanOpenInit(
|
||||
) error {
|
||||
msg := channeltypes.NewMsgChannelOpenInit(
|
||||
ch.PortID, ch.ID,
|
||||
ChannelVersion, order, []string{connectionID},
|
||||
ch.Version, order, []string{connectionID},
|
||||
counterparty.PortID, counterparty.ID,
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// ChanOpenTry will construct and execute a MsgChannelOpenTry.
|
||||
@ -617,13 +627,13 @@ func (chain *TestChain) ChanOpenTry(
|
||||
|
||||
msg := channeltypes.NewMsgChannelOpenTry(
|
||||
ch.PortID, ch.ID,
|
||||
ChannelVersion, order, []string{connectionID},
|
||||
ch.Version, order, []string{connectionID},
|
||||
counterpartyCh.PortID, counterpartyCh.ID,
|
||||
ChannelVersion,
|
||||
counterpartyCh.Version,
|
||||
proof, height,
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// ChanOpenAck will construct and execute a MsgChannelOpenAck.
|
||||
@ -635,11 +645,11 @@ func (chain *TestChain) ChanOpenAck(
|
||||
|
||||
msg := channeltypes.NewMsgChannelOpenAck(
|
||||
ch.PortID, ch.ID,
|
||||
ChannelVersion,
|
||||
counterpartyCh.Version,
|
||||
proof, height,
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// ChanOpenConfirm will construct and execute a MsgChannelOpenConfirm.
|
||||
@ -654,7 +664,7 @@ func (chain *TestChain) ChanOpenConfirm(
|
||||
proof, height,
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// ChanCloseInit will construct and execute a MsgChannelCloseInit.
|
||||
@ -668,7 +678,7 @@ func (chain *TestChain) ChanCloseInit(
|
||||
channel.PortID, channel.ID,
|
||||
chain.SenderAccount.GetAddress(),
|
||||
)
|
||||
return chain.SendMsgs(msg)
|
||||
return chain.sendMsgs(msg)
|
||||
}
|
||||
|
||||
// GetPacketData returns a ibc-transfer marshalled packet to be used for
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package testing
|
||||
package ibctesting
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@ -45,15 +45,15 @@ func NewCoordinator(t *testing.T, n int) *Coordinator {
|
||||
}
|
||||
|
||||
// Setup constructs a TM client, connection, and channel on both chains provided. It will
|
||||
// fails if any error occurs. The clientID's, TestConnections, and TestChannels are returned
|
||||
// for both chains.
|
||||
// fail if any error occurs. The clientID's, TestConnections, and TestChannels are returned
|
||||
// for both chains. The channels created are connected to the ibc-transfer application.
|
||||
func (coord *Coordinator) Setup(
|
||||
chainA, chainB *TestChain,
|
||||
) (string, string, *TestConnection, *TestConnection, TestChannel, TestChannel) {
|
||||
clientA, clientB, connA, connB := coord.SetupClientConnections(chainA, chainB, clientexported.Tendermint)
|
||||
|
||||
// channels can also be referenced through the returned connections
|
||||
channelA, channelB := coord.CreateChannel(chainA, chainB, connA, connB, channeltypes.UNORDERED)
|
||||
channelA, channelB := coord.CreateTransferChannels(chainA, chainB, connA, connB, channeltypes.UNORDERED)
|
||||
|
||||
return clientA, clientB, connA, connB, channelA, channelB
|
||||
}
|
||||
@ -164,16 +164,28 @@ func (coord *Coordinator) CreateConnection(
|
||||
return connA, connB
|
||||
}
|
||||
|
||||
// CreateTransferChannels constructs and executes channel handshake messages to create OPEN
|
||||
// ibc-transfer channels on chainA and chainB. The function expects the channels to be
|
||||
// successfully opened otherwise testing will fail.
|
||||
func (coord *Coordinator) CreateTransferChannels(
|
||||
chainA, chainB *TestChain,
|
||||
connA, connB *TestConnection,
|
||||
order channeltypes.Order,
|
||||
) (TestChannel, TestChannel) {
|
||||
return coord.CreateChannel(chainA, chainB, connA, connB, TransferPort, TransferPort, order)
|
||||
}
|
||||
|
||||
// CreateChannel constructs and executes channel handshake messages in order to create
|
||||
// OPEN channels on chainA and chainB. The function expects the channels to be successfully
|
||||
// opened otherwise testing will fail.
|
||||
func (coord *Coordinator) CreateChannel(
|
||||
chainA, chainB *TestChain,
|
||||
connA, connB *TestConnection,
|
||||
sourcePortID, counterpartyPortID string,
|
||||
order channeltypes.Order,
|
||||
) (TestChannel, TestChannel) {
|
||||
|
||||
channelA, channelB, err := coord.ChanOpenInit(chainA, chainB, connA, connB, order)
|
||||
channelA, channelB, err := coord.ChanOpenInit(chainA, chainB, connA, connB, sourcePortID, counterpartyPortID, order)
|
||||
require.NoError(coord.t, err)
|
||||
|
||||
err = coord.ChanOpenTry(chainB, chainA, channelB, channelA, connB, order)
|
||||
@ -207,6 +219,23 @@ func (coord *Coordinator) SendPacket(
|
||||
)
|
||||
}
|
||||
|
||||
// RecvPacket receives a channel packet on the counterparty chain and updates
|
||||
// the client on the source chain representing the counterparty.
|
||||
func (coord *Coordinator) RecvPacket(
|
||||
source, counterparty *TestChain,
|
||||
sourceClient string,
|
||||
packet channeltypes.Packet,
|
||||
) error {
|
||||
// get proof of packet commitment on source
|
||||
packetKey := host.KeyPacketCommitment(packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence())
|
||||
proof, proofHeight := source.QueryProof(packetKey)
|
||||
|
||||
recvMsg := channeltypes.NewMsgRecvPacket(packet, proof, proofHeight, counterparty.SenderAccount.GetAddress())
|
||||
|
||||
// receive on counterparty and update source client
|
||||
return coord.SendMsgs(counterparty, source, sourceClient, []sdk.Msg{recvMsg})
|
||||
}
|
||||
|
||||
// PacketExecuted receives a packet through the channel keeper on the source chain and updates the
|
||||
// counterparty client for the source chain.
|
||||
func (coord *Coordinator) PacketExecuted(
|
||||
@ -226,6 +255,24 @@ func (coord *Coordinator) PacketExecuted(
|
||||
)
|
||||
}
|
||||
|
||||
// AcknowledgePacket acknowledges on the source chain the packet received on
|
||||
// the counterparty chain and updates the client on the counterparty representing
|
||||
// the source chain.
|
||||
// TODO: add a query for the acknowledgement by events
|
||||
// - https://github.com/cosmos/cosmos-sdk/issues/6509
|
||||
func (coord *Coordinator) AcknowledgePacket(
|
||||
source, counterparty *TestChain,
|
||||
counterpartyClient string,
|
||||
packet channeltypes.Packet, ack []byte,
|
||||
) error {
|
||||
// get proof of acknowledgement on counterparty
|
||||
packetKey := host.KeyPacketAcknowledgement(packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence())
|
||||
proof, proofHeight := counterparty.QueryProof(packetKey)
|
||||
|
||||
ackMsg := channeltypes.NewMsgAcknowledgement(packet, ack, proof, proofHeight, source.SenderAccount.GetAddress())
|
||||
return coord.SendMsgs(source, counterparty, counterpartyClient, []sdk.Msg{ackMsg})
|
||||
}
|
||||
|
||||
// AcknowledgementExecuted deletes the packet commitment with the given
|
||||
// packet sequence since the acknowledgement has been verified.
|
||||
func (coord *Coordinator) AcknowledgementExecuted(
|
||||
@ -245,41 +292,6 @@ func (coord *Coordinator) AcknowledgementExecuted(
|
||||
)
|
||||
}
|
||||
|
||||
// RecvPacket receives a channel packet on the counterparty chain and updates
|
||||
// the client on the source chain representing the counterparty.
|
||||
func (coord *Coordinator) RecvPacket(
|
||||
source, counterparty *TestChain,
|
||||
sourceClient string,
|
||||
packet channeltypes.Packet,
|
||||
) error {
|
||||
// get proof of packet commitment on source
|
||||
packetKey := host.KeyPacketCommitment(packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence())
|
||||
proof, proofHeight := source.QueryProof(packetKey)
|
||||
|
||||
recvMsg := channeltypes.NewMsgRecvPacket(packet, proof, proofHeight, counterparty.SenderAccount.GetAddress())
|
||||
|
||||
// receive on counterparty and update source client
|
||||
return coord.SendMsgs(counterparty, source, sourceClient, []sdk.Msg{recvMsg})
|
||||
}
|
||||
|
||||
// AcknowledgePacket acknowledges on the source chain the packet received on
|
||||
// the counterparty chain and updates the client on the counterparty representing
|
||||
// the source chain.
|
||||
// TODO: add a query for the acknowledgement by events
|
||||
// - https://github.com/cosmos/cosmos-sdk/issues/6509
|
||||
func (coord *Coordinator) AcknowledgePacket(
|
||||
source, counterparty *TestChain,
|
||||
counterpartyClient string,
|
||||
packet channeltypes.Packet, ack []byte,
|
||||
) error {
|
||||
// get proof of acknowledgement on counterparty
|
||||
packetKey := host.KeyPacketAcknowledgement(packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence())
|
||||
proof, proofHeight := counterparty.QueryProof(packetKey)
|
||||
|
||||
ackMsg := channeltypes.NewMsgAcknowledgement(packet, ack, proof, proofHeight, source.SenderAccount.GetAddress())
|
||||
return coord.SendMsgs(source, counterparty, counterpartyClient, []sdk.Msg{ackMsg})
|
||||
}
|
||||
|
||||
// RelayPacket receives a channel packet on counterparty, queries the ack
|
||||
// and acknowledges the packet on source. The clients are updated as needed.
|
||||
func (coord *Coordinator) RelayPacket(
|
||||
@ -314,7 +326,7 @@ func (coord *Coordinator) SendMsg(source, counterparty *TestChain, counterpartyC
|
||||
// SendMsgs delivers the provided messages to the chain. The counterparty
|
||||
// client is updated with the new source consensus state.
|
||||
func (coord *Coordinator) SendMsgs(source, counterparty *TestChain, counterpartyClientID string, msgs []sdk.Msg) error {
|
||||
if err := source.SendMsgs(msgs...); err != nil {
|
||||
if err := source.sendMsgs(msgs...); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -454,10 +466,11 @@ func (coord *Coordinator) ConnOpenConfirm(
|
||||
func (coord *Coordinator) ChanOpenInit(
|
||||
source, counterparty *TestChain,
|
||||
connection, counterpartyConnection *TestConnection,
|
||||
sourcePortID, counterpartyPortID string,
|
||||
order channeltypes.Order,
|
||||
) (TestChannel, TestChannel, error) {
|
||||
sourceChannel := connection.AddTestChannel()
|
||||
counterpartyChannel := counterpartyConnection.AddTestChannel()
|
||||
sourceChannel := connection.AddTestChannel(sourcePortID)
|
||||
counterpartyChannel := counterpartyConnection.AddTestChannel(counterpartyPortID)
|
||||
|
||||
// create port capability
|
||||
source.CreatePortCapability(sourceChannel.PortID)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package testing
|
||||
package ibctesting
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
@ -1,26 +1,24 @@
|
||||
package testing
|
||||
package ibctesting
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// TestConnection is a testing helper struct to keep track of the connectionID, source clientID,
|
||||
// and counterparty clientID used in creating and interacting with a connection.
|
||||
// counterparty clientID, and the next channel version used in creating and interacting with a
|
||||
// connection.
|
||||
type TestConnection struct {
|
||||
ID string
|
||||
ClientID string
|
||||
CounterpartyClientID string
|
||||
NextChannelVersion string
|
||||
Channels []TestChannel
|
||||
}
|
||||
|
||||
// AddTestChannel appends a new TestChannel which contains references to the port and channel ID
|
||||
// used for channel creation and interaction.
|
||||
//
|
||||
// channel ID format: connectionid-<channel-index>
|
||||
// the port is set to "transfer" to be compatible with the ICS-transfer module, this should
|
||||
// eventually be updated as described in the issue: https://github.com/cosmos/cosmos-sdk/issues/6509
|
||||
func (conn *TestConnection) AddTestChannel() TestChannel {
|
||||
channel := conn.NextTestChannel()
|
||||
// used for channel creation and interaction. See 'NextTestChannel' for channel ID naming format.
|
||||
func (conn *TestConnection) AddTestChannel(portID string) TestChannel {
|
||||
channel := conn.NextTestChannel(portID)
|
||||
conn.Channels = append(conn.Channels, channel)
|
||||
return channel
|
||||
}
|
||||
@ -29,14 +27,18 @@ func (conn *TestConnection) AddTestChannel() TestChannel {
|
||||
// add it to the list of created channels. This function is expected to be used when the caller
|
||||
// has not created the associated channel in app state, but would still like to refer to the
|
||||
// non-existent channel usually to test for its non-existence.
|
||||
func (conn *TestConnection) NextTestChannel() TestChannel {
|
||||
portID := "transfer"
|
||||
channelID := fmt.Sprintf("%s%d", conn.ID, len(conn.Channels))
|
||||
//
|
||||
// channel ID format: <connectionid>-chan<channel-index>
|
||||
//
|
||||
// The port is passed in by the caller.
|
||||
func (conn *TestConnection) NextTestChannel(portID string) TestChannel {
|
||||
channelID := fmt.Sprintf("%s-%s%d", conn.ID, ChannelIDPrefix, len(conn.Channels))
|
||||
return TestChannel{
|
||||
PortID: portID,
|
||||
ID: channelID,
|
||||
ClientID: conn.ClientID,
|
||||
CounterpartyClientID: conn.CounterpartyClientID,
|
||||
Version: conn.NextChannelVersion,
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,11 +46,11 @@ func (conn *TestConnection) NextTestChannel() TestChannel {
|
||||
// returns the next test channel to be created. This function is expected to be used
|
||||
// when the caller does not know if the channel has or has not been created in app
|
||||
// state, but would still like to refer to it to test existence or non-existence.
|
||||
func (conn *TestConnection) FirstOrNextTestChannel() TestChannel {
|
||||
func (conn *TestConnection) FirstOrNextTestChannel(portID string) TestChannel {
|
||||
if len(conn.Channels) > 0 {
|
||||
return conn.Channels[0]
|
||||
}
|
||||
return conn.NextTestChannel()
|
||||
return conn.NextTestChannel(portID)
|
||||
}
|
||||
|
||||
// TestChannel is a testing helper struct to keep track of the portID and channelID
|
||||
@ -59,4 +61,5 @@ type TestChannel struct {
|
||||
ID string
|
||||
ClientID string
|
||||
CounterpartyClientID string
|
||||
Version string
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user