cosmos / ibc-go

Inter-Blockchain Communication Protocol (IBC) implementation in Golang.

Home Page:https://ibc.cosmos.network/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ICS20-V2 Path Forwarding E2E Tests

chatton opened this issue · comments

Summary

Tracking issue for ICS20-V2 Path Forwarding E2E tests

Tests:

  • Given 3 chains with ics20-2 channels between A and B, and between B and C, perform a successful transfer of tokens from A to C through B. [Nikolas] #6758
  • Given 3 chains with ics20-2 channels between A and B, and between B and C, send first tokens from A to B, and then perform a successful unwind + forward transfer of the IBC tokens from B to C through A. Topology: A -> B -> C, and A -> C. [Nikolas] #6778
  • Given 3 chains with ics20-2 channels between A and B, and between B and C, perform a transfer of tokens from A to C through B, where the hop between B and C will time out.
  • Given 3 chains with ics20-1 channels between A and B and B and C, perform a successful channel upgrade from v1 to v2 for both channels and send tokens from A to C through B. [Nikolas] #6793
  • Integration test: a test where the memo triggers the execution of a callback only on the final destination. [Nikolas]

For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged/assigned

I'll start by taking the following one:

Given 3 chains with ics20-2 channels between A and B, and between B and C, perform a successful transfer of tokens from A to C through B.

Just a note to remember to update the unreleased compatibility tests when we have all the e2e tests ready.

Given 3 chains with ics20-2 channels between A and B, and between B and C, perform a transfer of tokens from A to C through B, where the hop between B and C will time out. [Nikolas]

I discussed with @chatton on this one and it doesn't seem like we have a way to cause a timeout on e2e tests. We could arrange something like creating a relayer that only watches A->B, wait for timeout, and then update it to watch B to C, but that would be ugly and not possible to do cleanly right now. Right now we do have an integration timeout test (TestOnTimeoutPacketForwarding) which might be enough. @crodriguezvega what do you think?