Skip to content

Commit 1cf8491

Browse files
author
Daisuke Kanda
committed
support fakelost
Signed-off-by: Daisuke Kanda <daisuke.kanda@datachain.jp>
1 parent e724c20 commit 1cf8491

File tree

7 files changed

+169
-12
lines changed

7 files changed

+169
-12
lines changed

tests/cases/tm2eth/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
include ../../docker.mk
22

3+
export USE_FAKELOST ?= yes
4+
35
.PHONY: network
46
network:
57
TAG=${DOCKER_TAG} $(DOCKER_COMPOSE) \
@@ -15,6 +17,7 @@ test:
1517
./scripts/test-channel-upgrade
1618
./scripts/test-mockapp-packet-relay
1719
./scripts/test-ics20-packet-relay
20+
./scripts/test-service
1821

1922
.PHONY: network-down
2023
network-down:

tests/cases/tm2eth/scripts/handshake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ RLYKEY=testkey
1414
MOCKAPP_PATH=mockapp-path
1515
ICS20_PATH=ics20-path
1616

17+
if [ "USE_FAKELOST-$USE_FAKELOST" = "USE_FAKELOST-yes" ]; then
18+
export DEBUG_RELAYER_PRUNE_AFTER_BLOCKS_CHAIN_ibc1="10"
19+
export DEBUG_RELAYER_PRUNE_AFTER_BLOCKS_PROVER_ibc1="10"
20+
export DEBUG_RELAYER_SHFU_WAIT_ibc0="20"
21+
fi
22+
1723

1824
# add a path between chain0 and chain1
1925
$RLY paths add $CHAINID_ONE $CHAINID_TWO $MOCKAPP_PATH --file=./configs/mockapp-path.json

tests/cases/tm2eth/scripts/test-channel-upgrade

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ RELAYER_CONF="$HOME/.yui-relayer"
1111
RLY_BINARY=${SCRIPT_DIR}/../../../../build/yrly
1212
RLY="${RLY_BINARY} --debug"
1313

14+
if [ "USE_FAKELOST-$USE_FAKELOST" = "USE_FAKELOST-yes" ]; then
15+
export DEBUG_RELAYER_PRUNE_AFTER_BLOCKS_CHAIN_ibc1="10"
16+
export DEBUG_RELAYER_PRUNE_AFTER_BLOCKS_PROVER_ibc1="10"
17+
export DEBUG_RELAYER_SHFU_WAIT_ibc0="20"
18+
fi
19+
1420
PATH_NAME=mockapp-path
1521

1622
checkEq() {

tests/cases/tm2eth/scripts/test-ics20-packet-relay

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ RELAYER_CONF="$HOME/.yui-relayer"
99
RLY_BINARY=${SCRIPT_DIR}/../../../../build/yrly
1010
RLY="${RLY_BINARY} --debug"
1111

12+
if [ "USE_FAKELOST-$USE_FAKELOST" = "USE_FAKELOST-yes" ]; then
13+
export DEBUG_RELAYER_PRUNE_AFTER_BLOCKS_CHAIN_ibc1="10"
14+
export DEBUG_RELAYER_PRUNE_AFTER_BLOCKS_PROVER_ibc1="10"
15+
export DEBUG_RELAYER_SHFU_WAIT_ibc0="20"
16+
fi
17+
1218
PATH_NAME=ics20-path
1319

1420
TM_ADDRESS=$(${RLY} tendermint keys show ibc0 testkey)

tests/cases/tm2eth/scripts/test-mockapp-packet-relay

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@
33
set -eux
44

55
SCRIPT_DIR=$(cd $(dirname ${BASH_SOURCE:-$0}); pwd)
6+
source ${SCRIPT_DIR}/utils
67
FIXTURES_DIR=${SCRIPT_DIR}/../fixtures
78

89
RELAYER_CONF="$HOME/.yui-relayer"
910
RLY_BINARY=${SCRIPT_DIR}/../../../../build/yrly
1011
RLY="${RLY_BINARY} --debug"
1112

13+
if [ "USE_FAKELOST-$USE_FAKELOST" = "USE_FAKELOST-yes" ]; then
14+
export DEBUG_RELAYER_PRUNE_AFTER_BLOCKS_CHAIN_ibc1="10"
15+
export DEBUG_RELAYER_PRUNE_AFTER_BLOCKS_PROVER_ibc1="10"
16+
export DEBUG_RELAYER_SHFU_WAIT_ibc0="20"
17+
fi
18+
1219
PATH_NAME=mockapp-path
1320

1421
ADDRESSES_DIR_B="${FIXTURES_DIR}/ethereum/ibc1/addresses"
@@ -31,18 +38,9 @@ ${RLY} tx acks $PATH_NAME --dst-seqs 1
3138
sleep ${TX_INTERVAL}
3239

3340
echo "!!! ibc1 -> ibc0 !!!"
34-
BOB_INDEX=2
35-
cast send \
36-
--rpc-url $RPC_ADDRESS_B \
37-
--mnemonic "$MNEMONIC_B" \
38-
--mnemonic-index ${BOB_INDEX} \
39-
$MOCKAPP_CONTRACT_B \
40-
'sendPacket(bytes,string,string,(uint64,uint64),uint64)' \
41-
$(cast from-utf8 'mock packet data') \
42-
$PORT_B \
43-
$CHANNEL_B \
44-
'(0,100000)' \
45-
$(date -d 1hour +%s%N)
41+
TX_INTERVAL=20
42+
sendPacketToEth $PATH_NAME
43+
4644
sleep ${TX_INTERVAL}
4745
${RLY} tx relay $PATH_NAME --dst-seqs 1
4846
sleep ${TX_INTERVAL}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/bin/bash
2+
3+
: <<'END_COMMENT'
4+
* relay-interval = 20s
5+
* src-relay-optimize-interval = 30s
6+
* src-relay-optimize-count = 3
7+
* dst-relay-optimize-interval = 30s
8+
* dst-relay-optimize-count = 3
9+
END_COMMENT
10+
11+
set -eux
12+
13+
SCRIPT_DIR=$(cd $(dirname $0); pwd)
14+
source $SCRIPT_DIR/utils
15+
RLY_BIN=${SCRIPT_DIR}/../../../../build/yrly
16+
RLY="${RLY_BIN} --debug"
17+
18+
if [ "USE_FAKELOST-$USE_FAKELOST" = "USE_FAKELOST-yes" ]; then
19+
export DEBUG_RELAYER_MISSING_TRIE_NODE_HEIGHT_ibc1="10"
20+
export DEBUG_RELAYER_MISSING_TRIE_NODE_HEIGHT_PROVER_ibc1="10"
21+
export DEBUG_RELAYER_SHFU_WAIT_ibc0="20"
22+
fi
23+
24+
PATH_NAME=mockapp-path
25+
TM_ADDRESS0=$(${RLY} tendermint keys show ibc0 testkey)
26+
27+
expectUnrelayedCount $PATH_NAME "unrelayed-packets" "src" 0
28+
expectUnrelayedCount $PATH_NAME "unrelayed-packets" "dst" 0
29+
expectUnrelayedCount $PATH_NAME "unrelayed-acknowledgements" "src" 0
30+
expectUnrelayedCount $PATH_NAME "unrelayed-acknowledgements" "dst" 0
31+
32+
sendPacketToEth $PATH_NAME
33+
waitUnrelayedCount $PATH_NAME "unrelayed-packets" "dst" 1 300
34+
35+
docker exec tendermint-chain0-mock sh -c "simd --home /root/data/ibc0 tx --keyring-backend=test --from ${TM_ADDRESS0} --chain-id ibc0 mockapp send mockapp channel-0 'mock packet data' --yes"
36+
waitUnrelayedCount $PATH_NAME "unrelayed-packets" "src" 1 30
37+
38+
date; echo " yyyyyyyy Now is @0, Server has started. Both chains already have a message to relay which will be ready after optimize-interval(30s)."
39+
40+
${RLY} service start $PATH_NAME --relay-interval 20s --src-relay-optimize-interval 30s --src-relay-optimize-count 3 --dst-relay-optimize-interval 30s --dst-relay-optimize-count 3 &
41+
RLY_PID=$!
42+
43+
echo "Waiting dst->src packets are relayed. Not that src chain(tendermint) has fast confirmation time"
44+
waitUnrelayedCount $PATH_NAME "unrelayed-packets" "dst" 0 300
45+
echo "Waiting src->dst packets are relayed"
46+
waitUnrelayedCount $PATH_NAME "unrelayed-packets" "src" 0 300
47+
48+
echo "Waiting dst->src ack is relayed. Not that the time of src->dst->src relay and dst->src->dst relay takes nearly same time"
49+
waitUnrelayedCount $PATH_NAME "unrelayed-acknowledgements" "dst" 0 300
50+
echo "Waiting src->dst ack is relayed"
51+
waitUnrelayedCount $PATH_NAME "unrelayed-acknowledgements" "src" 0 300
52+
53+
echo "Finished"
54+
55+
kill $RLY_PID

tests/cases/tm2eth/scripts/utils

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
expectUnrelayedCount() {
2+
local PATH_NAME=$1
3+
local query_type=$2
4+
local filter=".$3 | length"
5+
local expect_count=$4
6+
unrelayed_count=$(${RLY} query ${query_type} $PATH_NAME | jq "${filter}")
7+
if [ "$unrelayed_count" -ne "${expect_count}" ]; then
8+
echo "$query_type: $unrelayed_count"
9+
test -z "$RLY_PID" || kill $RLY_PID
10+
exit 1
11+
fi
12+
}
13+
14+
waitUnrelayedCount() {
15+
local PATH_NAME=$1
16+
local query_type=$2
17+
local chain=$3
18+
local filter=".$chain | length"
19+
local expect_count=$4
20+
timeout=$(( $(date +%s) + $5 ))
21+
unrelayed_count=999
22+
until [ "$unrelayed_count" -eq "$expect_count" ]; do
23+
unrelayed_count=$(${RLY} query ${query_type} $PATH_NAME | jq "${filter}")
24+
date
25+
echo "$0 ${query_type} is $unrelayed_count"
26+
t=$(date +%s)
27+
if [ $t -gt $timeout ]; then
28+
echo "TIMEOUT waitUnrelayedCount: $query_type $chain expect $expect_count but $unrelayed_count"
29+
exit 1
30+
fi
31+
sleep 10
32+
done
33+
}
34+
35+
sendPacketToEth() {
36+
local PATH_NAME=$1
37+
local MOCKAPP_CONTRACT_B=$(cat $(dirname $0)/../fixtures/ethereum/ibc1/addresses/AppV1)
38+
local RPC_ADDRESS_B=$($RLY config show | jq -r '.chains[] | select(.chain.chain_id == "ibc1").chain.rpc_addr')
39+
local PORT_B=$($RLY paths list --json | jq -r --arg path $PATH_NAME '.[$path].dst."port-id"')
40+
local CHANNEL_B=$($RLY paths list --json | jq -r --arg path $PATH_NAME '.[$path].dst."channel-id"')
41+
42+
local MNEMONIC_B=$($RLY config show | jq -r '.chains[] | select(.chain.chain_id == "ibc1").chain.signer.mnemonic')
43+
local SENDER=$(cast wallet address --mnemonic "$MNEMONIC_B" --mnemonic-index 2)
44+
45+
cast balance $SENDER --rpc-url $RPC_ADDRESS_B
46+
cast nonce $SENDER --rpc-url $RPC_ADDRESS_B
47+
cast send \
48+
--rpc-url $RPC_ADDRESS_B \
49+
--mnemonic "$MNEMONIC_B" --mnemonic-index 2 \
50+
--legacy \
51+
$MOCKAPP_CONTRACT_B \
52+
'sendPacket(bytes,string,string,(uint64,uint64),uint64)' \
53+
$(cast from-utf8 'mock packet data') \
54+
$PORT_B \
55+
$CHANNEL_B \
56+
'(0,100000)' \
57+
$(date -d 1hour +%s%N) || exit 1
58+
}
59+
60+
xsendPacketToEth() {
61+
local PATH_NAME=$1
62+
local MOCKAPP_CONTRACT_B=$(cat $(dirname $0)/../fixtures/ethereum/ibc1/addresses/AppV1)
63+
local RPC_ADDRESS_B=$($RLY config show | jq -r '.chains[] | select(.chain.chain_id == "ibc1").chain.rpc_addr')
64+
local PORT_B=$($RLY paths list --json | jq -r --arg path $PATH_NAME '.[$path].dst."port-id"')
65+
local CHANNEL_B=$($RLY paths list --json | jq -r --arg path $PATH_NAME '.[$path].dst."channel-id"')
66+
67+
local MNEMONIC_B=$($RLY config show | jq -r '.chains[] | select(.chain.chain_id == "ibc1").chain.signer.mnemonic')
68+
local SENDER=$(cast wallet address --mnemonic "$MNEMONIC_B" --mnemonic-index 2)
69+
70+
cast balance $SENDER --rpc-url $RPC_ADDRESS_B
71+
cast nonce $SENDER --rpc-url $RPC_ADDRESS_B
72+
echo test: cast send \
73+
--rpc-url $RPC_ADDRESS_B \
74+
--mnemonic "$MNEMONIC_B" --mnemonic-index 2 \
75+
--legacy \
76+
$MOCKAPP_CONTRACT_B \
77+
'sendPacket(bytes,string,string,(uint64,uint64),uint64)' \
78+
$(cast from-utf8 'mock packet data') \
79+
$PORT_B \
80+
$CHANNEL_B \
81+
'(0,100000)' \
82+
$(date -d 1hour +%s%N) || exit 1
83+
}

0 commit comments

Comments
 (0)