Skip to content

Commit

Permalink
Add fnsa to csms
Browse files Browse the repository at this point in the history
  • Loading branch information
ulbqb committed Aug 2, 2023
1 parent 273a9e0 commit fd6e9f4
Show file tree
Hide file tree
Showing 8 changed files with 172 additions and 106 deletions.
11 changes: 5 additions & 6 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,11 @@ jobs:
go-version: '1.20'
- name: Display go version
run: go version
- name: Install relayer and simapp
- name: Test finschia to finschia
run: |
cd e2e
sudo make install-relayer
make install-simapp
- name: Test e2e
make test-fnsa-fnsa
- name: Test finschia to cosmos
run: |
cd e2e
make test-e2e
cd e2e
make test-fnsa-csms
2 changes: 2 additions & 0 deletions e2e/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bin
data
46 changes: 34 additions & 12 deletions e2e/Makefile
Original file line number Diff line number Diff line change
@@ -1,19 +1,41 @@
RLY_VERSION := 2.3.1
CSMS_VERSION := 4.3.1
ARCH := $(shell dpkg --print-architecture)
PATH := $(shell pwd)/bin:$(PATH)

install-relayer:
@curl -L https://github.com/cosmos/relayer/releases/download/v$(RLY_VERSION)/Cosmos.Relayer_$(RLY_VERSION)_linux_$(ARCH).tar.gz --output relayer.tar.gz
@tar -xf relayer.tar.gz --transform 's!^[^/]*!relayer_archive!'
@mv relayer_archive/rly /usr/bin
bin/simd:
@mkdir -p bin && \
cd ../ && \
make build && \
mv build/simd e2e/bin
@fnsasimd version --long

bin/csmssimd:
@mkdir -p bin/cosmos && \
cd bin/cosmos && \
curl -L https://github.com/cosmos/ibc-go/releases/download/v$(CSMS_VERSION)/ibc-go_simd_v$(CSMS_VERSION)_linux_$(ARCH).tar.gz --output cosmos_simd.tar.gz && \
tar -xf cosmos_simd.tar.gz && \
mv simd ../csmssimd
@csmssimd version --long --log_level=info

bin/rly:
@mkdir -p bin/relayer && \
cd bin/relayer && \
curl -L https://github.com/cosmos/relayer/releases/download/v$(RLY_VERSION)/Cosmos.Relayer_$(RLY_VERSION)_linux_$(ARCH).tar.gz --output relayer.tar.gz && \
tar -xf relayer.tar.gz --transform 's!^[^/]*!relayer_archive!' && \
mv relayer_archive/rly ../
@rly version
@rm -rf relayer.tar.gz relayer_archive

install-simapp:
@cd ../ && \
make install
@simd version --long
test-fnsa-fnsa: bin/rly bin/simd
@./e2e fnsa-fnsa fnsa-0 simd 438 fnsa-1 simd 438 "skip"

test-fnsa-csms: bin/rly bin/simd bin/csmssimd
@./e2e fnsa-csms fnsa-0 simd 438 csms-1 csmssimd 118 "skip"

clean-all:
@rm -rf bin data

test-e2e:
@./e2e
clean-data:
@rm -rf data

.PHONY: install-relayer install-simapp test-e2e
.PHONY: test-fnsa-fnsa test-fnsa-csms clean-all clean-data
18 changes: 18 additions & 0 deletions e2e/configs/chains/csms-1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"type": "cosmos",
"value": {
"key": "testkey",
"chain-id": "csms-1",
"rpc-addr": "http://localhost:26557",
"grpc-addr": "",
"account-prefix": "cosmos",
"keyring-backend": "test",
"gas-adjustment": 1.5,
"gas-prices": "0.025rice",
"debug": true,
"timeout": "10s",
"output-format": "json",
"sign-mode": "direct"
}
}

12 changes: 12 additions & 0 deletions e2e/configs/paths/fnsa-csms.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"src": {
"chain-id": "fnsa-0"
},
"dst": {
"chain-id": "csms-1"
},
"src-channel-filter": {
"rule": null,
"channel-list": []
}
}
50 changes: 28 additions & 22 deletions e2e/e2e
Original file line number Diff line number Diff line change
@@ -1,32 +1,37 @@
#!/bin/bash -e
RELAYER_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
RELAYER_CONF="$HOME/.relayer"
FNSA_CONF="$(pwd)/data"
HOME_DIR="$(pwd)/data"
RLY_HOME="$HOME_DIR/relayer"

CHAIN_PATH=$1
CHAIN0_ID=$2
CHAIN0_BIN=$3
CHAIN0_COINID=$4
CHAIN1_ID=$5
CHAIN1_BIN=$6
CHAIN1_COINID=$7

# Ensure user understands what will be deleted
if ([[ -d $RELAYER_CONF ]] || [[ -d $FNSA_CONF ]]) && [[ ! "$1" == "skip" ]]; then
if ([[ -d $HOME_DIR ]]) && [[ ! "$8" == "skip" ]]; then
read -p "$0 will delete \$HOME/.relayer and \$(pwd)/data folder. Do you wish to continue? (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi

cd $RELAYER_DIR
rm -rf $RELAYER_CONF &> /dev/null
pwd
# spin up two ibc enabled chains and add relevant config info for relaying
bash scripts/fnsa-chainz "skip"
bash scripts/chainz $CHAIN0_ID $CHAIN0_BIN $CHAIN0_COINID $CHAIN1_ID $CHAIN1_BIN $CHAIN1_COINID "$8"

echo "waiting for blocks..."
sleep 3

# creates clients, connections and channels (all this happens in rly tx command)
rly tx link fnsa-fnsa -d -t 3s
rly --home $RLY_HOME tx link $CHAIN_PATH -d -t 3s
sleep 2

BAL0=$(rly q bal fnsa-0)
BAL1=$(rly q bal fnsa-1)
BAL0=$(rly --home $RLY_HOME q bal $CHAIN0_ID)
BAL1=$(rly --home $RLY_HOME q bal $CHAIN1_ID)

echo "-- Initial balances --"
echo "balance 0 $BAL0"
Expand All @@ -42,19 +47,19 @@ if [[ "$BAL1" != *"100000000000beans"* ]]; then
fi

echo "-- Sending IBC transaction... --"
rly tx transfer fnsa-0 fnsa-1 100000samoleans "$(rly keys show fnsa-1)" channel-0 -d
rly --home $RLY_HOME tx transfer $CHAIN0_ID $CHAIN1_ID 100000samoleans "$(rly --home $RLY_HOME keys show $CHAIN1_ID)" channel-0 -d
sleep 5

# relay remaining packets -- (could also be accomplished by running: `rly start`)
rly tx relay-packets fnsa-fnsa channel-0 -d
rly --home $RLY_HOME tx relay-packets $CHAIN_PATH channel-0 -d
sleep 5

# relay remaining acknowledgments -- (could also be accomplished by running: `rly start`)
rly tx relay-acknowledgements fnsa-fnsa channel-0 -d
rly --home $RLY_HOME tx relay-acknowledgements $CHAIN_PATH channel-0 -d
sleep 5

BAL0=$(rly q bal fnsa-0)
BAL1=$(rly q bal fnsa-1)
BAL0=$(rly --home $RLY_HOME q bal $CHAIN0_ID)
BAL1=$(rly --home $RLY_HOME q bal $CHAIN1_ID)

echo "-- Balances after packets are sent --"
echo "balance 0 $BAL0"
Expand All @@ -70,23 +75,23 @@ if [[ "$BAL1" != *"100000000000beans,100000transfer/channel-0/samoleans"* ]]; th
fi

echo "-- Sending tokens back to original wallet... --"
rly tx transfer fnsa-1 fnsa-0 100000transfer/channel-0/samoleans "$(rly keys show fnsa-0)" channel-0 -d
rly --home $RLY_HOME tx transfer $CHAIN1_ID $CHAIN0_ID 100000transfer/channel-0/samoleans "$(rly --home $RLY_HOME keys show $CHAIN0_ID)" channel-0 -d
sleep 5

rly tx relay-packets fnsa-fnsa channel-0 -d
rly --home $RLY_HOME tx relay-packets $CHAIN_PATH channel-0 -d
sleep 5

rly tx relay-acknowledgements fnsa-fnsa channel-0 -d
rly --home $RLY_HOME tx relay-acknowledgements $CHAIN_PATH channel-0 -d
sleep 5

BAL0=$(rly q bal fnsa-0)
BAL1=$(rly q bal fnsa-1)
BAL0=$(rly --home $RLY_HOME q bal $CHAIN0_ID)
BAL1=$(rly --home $RLY_HOME q bal $CHAIN1_ID)

echo "-- Balances after sending packets back --"
echo "balance 0 $BAL0"
echo "balance 1 $BAL1"

if [[ "$BAL0" != *"{100000000000samoleans"* ]]; then
if [[ "$BAL0" != *"100000000000samoleans"* ]]; then
echo "balance 0 is wrong"
exit 1
fi
Expand All @@ -95,4 +100,5 @@ if [[ "$BAL1" != *"100000000000beans"* ]]; then
exit 1
fi

killall simd &> /dev/null
killall simd &> /dev/null || true
killall csmssimd &> /dev/null || true
73 changes: 73 additions & 0 deletions e2e/scripts/chainz
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/bin/bash
# two-chainz creates two chains and configures the relayer to

SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
HOME_DIR="$(pwd)/data"
RLY_HOME="$HOME_DIR/relayer"

CHAIN0_ID=$1
CHAIN0_BIN=$2
CHAIN0_COINID=$3
CHAIN1_ID=$4
CHAIN1_BIN=$5
CHAIN1_COINID=$6

# Ensure binary is installed
if ! [ -x "$(which $CHAIN0_BIN)" ]; then
echo "Error: $CHAIN0_BIN is not installed. Try running 'make bin/$CHAIN0_BIN'" >&2
exit 1
fi
if ! [ -x "$(which $CHAIN1_BIN)" ]; then
echo "Error: $CHAIN1_BIN is not installed. Try running 'make bin/$CHAIN1_BIN'" >&2
exit 1
fi

# Display software version for testers
echo "BINARY VERSION INFO:"
$CHAIN0_BIN version --long --log_level=info
$CHAIN1_BIN version --long --log_level=info

# Ensure jq is installed
if [[ ! -x "$(which jq)" ]]; then
echo "jq (a tool for parsing json in the command line) is required..."
echo "https://stedolan.github.io/jq/download/"
exit 1
fi

# Ensure user understands what will be deleted
if [[ -d $HOME_DIR ]] && [[ ! "$7" == "skip" ]]; then
read -p "$(basename $0) will delete \$(pwd)/data and \$HOME/.relayer folders. Do you wish to continue? (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi

# Delete data from old runs
rm -rf $HOME_DIR &> /dev/null

# Stop existing binary processes
killall simd &> /dev/null
killall csmssimd &> /dev/null

set -e

echo "Generating fnsa configurations..."
mkdir -p $HOME_DIR && cd $HOME_DIR && cd ../
./scripts/one-chain $CHAIN0_BIN $CHAIN0_ID $HOME_DIR 26657 26656 6060 9090 stake samoleans
./scripts/one-chain $CHAIN1_BIN $CHAIN1_ID $HOME_DIR 26557 26556 6061 9091 rice beans

[ -f $HOME_DIR/$CHAIN0_ID.log ] && echo "$CHAIN0_ID initialized. Watch file $HOME_DIR/$CHAIN0_ID.log to see its execution."
[ -f $HOME_DIR/$CHAIN1_ID.log ] && echo "$CHAIN1_ID initialized. Watch file $HOME_DIR/$CHAIN1_ID.log to see its execution."

echo "Generating rly configurations..."
rly --home $RLY_HOME config init
rly --home $RLY_HOME chains add-dir configs/chains

SEED0=$(jq -r '.mnemonic' $HOME_DIR/$CHAIN0_ID/key_seed.json)
SEED1=$(jq -r '.mnemonic' $HOME_DIR/$CHAIN1_ID/key_seed.json)

echo "Key $(rly --home $RLY_HOME keys restore $CHAIN0_ID testkey "$SEED0" --coin-type $CHAIN0_COINID) imported from CHAIN0_ID to relayer..."
echo "Key $(rly --home $RLY_HOME keys restore $CHAIN1_ID testkey "$SEED1" --coin-type $CHAIN1_COINID) imported from CHAIN1_ID to relayer..."

rly --home $RLY_HOME paths add-dir configs/paths
66 changes: 0 additions & 66 deletions e2e/scripts/fnsa-chainz

This file was deleted.

0 comments on commit fd6e9f4

Please sign in to comment.