-
Notifications
You must be signed in to change notification settings - Fork 580
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
127 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
package mock | ||
|
||
import ( | ||
"context" | ||
|
||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
|
||
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types" | ||
) | ||
|
||
// IBCAppV2 contains IBCModuleV2 application module callbacks as defined in 05-port. | ||
type IBCAppV2 struct { | ||
OnSendPacketV2 func( | ||
ctx context.Context, | ||
sourceID string, | ||
sequence uint64, | ||
timeoutTimestamp uint64, | ||
payload channeltypes.Payload, | ||
signer sdk.AccAddress, | ||
) error | ||
|
||
OnRecvPacketV2 func( | ||
ctx context.Context, | ||
packet channeltypes.PacketV2, | ||
payload channeltypes.Payload, | ||
relayer sdk.AccAddress, | ||
) channeltypes.RecvPacketResult | ||
|
||
OnAcknowledgementPacketV2 func( | ||
ctx context.Context, | ||
packet channeltypes.PacketV2, | ||
payload channeltypes.Payload, | ||
recvPacketResult channeltypes.RecvPacketResult, | ||
relayer sdk.AccAddress, | ||
) error | ||
|
||
OnTimeoutPacketV2 func( | ||
ctx context.Context, | ||
packet channeltypes.PacketV2, | ||
payload channeltypes.Payload, | ||
relayer sdk.AccAddress, | ||
) error | ||
} | ||
|
||
// NewIBCV2App returns a IBCAppV2. | ||
func NewIBCV2App() *IBCAppV2 { | ||
return &IBCAppV2{} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
package mock | ||
|
||
import ( | ||
"bytes" | ||
"context" | ||
|
||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
|
||
channeltypes "github.com/cosmos/ibc-go/v9/modules/core/04-channel/types" | ||
porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types" | ||
) | ||
|
||
var _ porttypes.IBCModuleV2 = (*IBCModuleV2)(nil) | ||
|
||
// IBCModuleV2 implements the IBCModuleV2 interface for testing v2 of the IBC module. | ||
type IBCModuleV2 struct { | ||
IBCApp *IBCAppV2 // base application of an IBC middleware stack | ||
} | ||
|
||
func (im IBCModuleV2) OnSendPacketV2(ctx context.Context, sourceID string, sequence uint64, timeoutTimestamp uint64, payload channeltypes.Payload, signer sdk.AccAddress) error { | ||
if im.IBCApp.OnSendPacketV2 != nil { | ||
return im.IBCApp.OnSendPacketV2(ctx, sourceID, sequence, timeoutTimestamp, payload, signer) | ||
} | ||
|
||
return nil | ||
} | ||
|
||
func (im IBCModuleV2) OnRecvPacketV2(ctx context.Context, packet channeltypes.PacketV2, payload channeltypes.Payload, relayer sdk.AccAddress) channeltypes.RecvPacketResult { | ||
if im.IBCApp.OnRecvPacketV2 != nil { | ||
return im.IBCApp.OnRecvPacketV2(ctx, packet, payload, relayer) | ||
} | ||
|
||
sdkCtx := sdk.UnwrapSDKContext(ctx) | ||
sdkCtx.EventManager().EmitEvent(NewMockRecvPacketEvent()) | ||
|
||
status := channeltypes.PacketStatus_Success | ||
ack := MockAcknowledgement.Acknowledgement() | ||
|
||
if bytes.Equal(payload.Value, MockFailPacketData) { | ||
status = channeltypes.PacketStatus_Failure | ||
ack = MockFailAcknowledgement.Acknowledgement() | ||
} else if bytes.Equal(payload.Value, MockAsyncPacketData) { | ||
status = channeltypes.PacketStatus_Async | ||
ack = nil | ||
} | ||
|
||
return channeltypes.RecvPacketResult{ | ||
Status: status, | ||
Acknowledgement: ack, | ||
} | ||
} | ||
|
||
func (im IBCModuleV2) OnAcknowledgementPacketV2(ctx context.Context, packet channeltypes.PacketV2, payload channeltypes.Payload, recvPacketResult channeltypes.RecvPacketResult, relayer sdk.AccAddress) error { | ||
if im.IBCApp.OnAcknowledgementPacketV2 != nil { | ||
return im.IBCApp.OnAcknowledgementPacketV2(ctx, packet, payload, recvPacketResult, relayer) | ||
} | ||
|
||
sdkCtx := sdk.UnwrapSDKContext(ctx) | ||
sdkCtx.EventManager().EmitEvent(NewMockAckPacketEvent()) | ||
return nil | ||
} | ||
|
||
func (im IBCModuleV2) OnTimeoutPacketV2(ctx context.Context, packet channeltypes.PacketV2, payload channeltypes.Payload, relayer sdk.AccAddress) error { | ||
if im.IBCApp.OnTimeoutPacketV2 != nil { | ||
return im.IBCApp.OnTimeoutPacketV2(ctx, packet, payload, relayer) | ||
} | ||
|
||
sdkCtx := sdk.UnwrapSDKContext(ctx) | ||
sdkCtx.EventManager().EmitEvent(NewMockTimeoutPacketEvent()) | ||
|
||
return nil | ||
} | ||
|
||
// NewIBCModuleV2 creates a new IBCModule given the underlying mock IBC application and scopedKeeper. | ||
func NewIBCModuleV2(app *IBCAppV2) IBCModuleV2 { | ||
return IBCModuleV2{ | ||
IBCApp: app, | ||
} | ||
} |