Skip to content

Commit

Permalink
add test scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
yito88 committed Nov 21, 2023
1 parent 8153fb6 commit 83211e7
Show file tree
Hide file tree
Showing 3 changed files with 494 additions and 0 deletions.
153 changes: 153 additions & 0 deletions e2e/namada-simple-transfers
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
#!/bin/bash

# This script executes simple transfers between Namada instances locally
# `make build-release` and `make build-wasm-scripts` on Namada directory in advance
# Run with `namada-simple-transfers ${namada_dir}`

set -e

NAMADA_DIR=$1
if [ -z "${NAMADA_DIR}" ]
then
echo "ERROR: Namada directory should be given"
exit 1
fi
cd $(dirname $0)
HERMES_DIR=${PWD%/e2e*}

NAMADAC="${NAMADA_DIR}/target/release/namadac"
NAMADAW="${NAMADA_DIR}/target/release/namadaw"
DATA_DIR="${HERMES_DIR}/data"
# IbcToken from `transfer/channel-0/#apfel`
IBC_TOKEN="atest1d93xxw36xqckvdn9vgcxyv3jvyurqdrr89jrwvmxxcexxdnpx5cnyv3ex93kvepnxdjnqvrzucsc73"

LEDGER_ADDR_A="127.0.0.1:27657"
LEDGER_ADDR_B="127.0.0.1:28657"
INITIAL_BALANCE=5000

function init_relayer_balance() {
local suffix=$1
local ledger_addr=$2

local base_dir=${DATA_DIR}/namada-${suffix}/.namada

${NAMADAC} --base-dir ${base_dir} \
transfer \
--source albert \
--target relayer \
--token nam \
--amount ${INITIAL_BALANCE} \
--node ${ledger_addr}
}

# ==== main ====

# Run 2 Namada chains
${HERMES_DIR}/scripts/setup-namada ${NAMADA_DIR}

cd ${HERMES_DIR}
ids=$(grep "id" config_for_namada.toml | awk -F"'" '/^id/ {print $2}')
chain_a=$(echo ${ids} | awk '{print $1}')
chain_b=$(echo ${ids} | awk '{print $2}')

# Initialize the balances
init_relayer_balance "a" ${LEDGER_ADDR_A}
init_relayer_balance "b" ${LEDGER_ADDR_B}

# Create a channel
cargo run --bin hermes -- --config config_for_namada.toml \
create channel \
--a-chain ${chain_a} \
--b-chain ${chain_b} \
--a-port transfer \
--b-port transfer \
--new-client-connection --yes

# faucet apfel on chain_a
base_dir_a=${DATA_DIR}/namada-a/.namada
${NAMADAC} --base-dir ${base_dir_a} transfer \
--source albert \
--target relayer \
--token apfel \
--amount 1000 \
--signing-keys albert-key \
--node ${LEDGER_ADDR_A}

# Get the receiver addresses
receiver_a=$(${NAMADAW} --base-dir ${base_dir_a} address find --alias relayer | awk '{print $4}')
base_dir_b=${DATA_DIR}/namada-b/.namada
receiver_b=$(${NAMADAW} --base-dir ${base_dir_b} address find --alias relayer | awk '{print $4}')

# transfer 100 apfel from chain_a to chain_b
${NAMADAC} --base-dir ${base_dir_a} ibc-transfer \
--source relayer \
--receiver ${receiver_b} \
--token apfel \
--amount 100 \
--signing-keys relayer \
--channel-id channel-0 \
--node ${LEDGER_ADDR_A}

# packet-recv
cargo run --bin hermes -- --config config_for_namada.toml \
tx packet-recv \
--dst-chain ${chain_b} \
--src-chain ${chain_a} \
--src-port transfer \
--src-channel channel-0

# packet-ack
cargo run --bin hermes -- --config config_for_namada.toml \
tx packet-ack \
--dst-chain ${chain_a} \
--src-chain ${chain_b} \
--src-port transfer \
--src-channel channel-0

echo "Balances on chain A"
${NAMADAC} --base-dir ${base_dir_a} balance \
--owner relayer \
--node ${LEDGER_ADDR_A}

echo "Balances on chain B"
${NAMADAC} --base-dir ${base_dir_b} balance \
--owner relayer \
--node ${LEDGER_ADDR_B}

# transfer back 50 apfel from chain_b to chain_a
${NAMADAC} --base-dir ${base_dir_b} ibc-transfer \
--source relayer \
--receiver ${receiver_a} \
--token ${IBC_TOKEN} \
--amount 50 \
--signing-keys relayer \
--channel-id channel-0 \
--node ${LEDGER_ADDR_B}

# packet-recv
cargo run --bin hermes -- --config config_for_namada.toml \
tx packet-recv \
--dst-chain ${chain_a} \
--src-chain ${chain_b} \
--src-port transfer \
--src-channel channel-0

# packet-ack
cargo run --bin hermes -- --config config_for_namada.toml \
tx packet-ack \
--dst-chain ${chain_b} \
--src-chain ${chain_a} \
--src-port transfer \
--src-channel channel-0

echo "Balances on chain A"
${NAMADAC} --base-dir ${base_dir_a} balance \
--owner relayer \
--node ${LEDGER_ADDR_A}

echo "Balances on chain B"
${NAMADAC} --base-dir ${base_dir_b} balance \
--owner relayer \
--node ${LEDGER_ADDR_B}

killall namadan
187 changes: 187 additions & 0 deletions scripts/setup-namada
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
#!/bin/bash

# This script sets up 2 Namada chains locally
# `make build-release` and `make build-wasm-scripts` on Namada directory in advance
# Run with `setup-namada.sh ${namada_dir}`

set -e


# Get absolute path to Namada directory
SCRIPT_DIR=$(cd $(dirname $0) && pwd)
NAMADA_DIR=$(cd $1 && pwd)
cd $SCRIPT_DIR
if [ -z "${NAMADA_DIR}" ]
then
echo "ERROR: Namada directory should be given"
exit 1
fi

HERMES_DIR=${PWD%/scripts*}

# edit for your environment
NAMADAC="${NAMADA_DIR}/target/release/namadac"
NAMADAN="${NAMADA_DIR}/target/release/namadan"
NAMADAW="${NAMADA_DIR}/target/release/namadaw"
BASE_GENESIS_PATH="${NAMADA_DIR}/genesis/e2e-tests-single-node.toml"
CHECKSUM_PATH="${NAMADA_DIR}/wasm/checksums.json"
DATA_DIR="${HERMES_DIR}/data"
GENESIS_PATH_A="${DATA_DIR}/e2e-tests-single-node-a.toml"
GENESIS_PATH_B="${DATA_DIR}/e2e-tests-single-node-b.toml"

NET_ADDR_A="127.0.0.1:27656"
NET_ADDR_B="127.0.0.1:28656"
LEDGER_ADDR_A="127.0.0.1:27657"
LEDGER_ADDR_B="127.0.0.1:28657"

HERMES_CONFIG_TEMPLATE="
[global]
log_level = 'info'
[mode]
[mode.clients]
enabled = true
refresh = true
misbehaviour = true
[mode.connections]
enabled = false
[mode.channels]
enabled = false
[mode.packets]
enabled = true
clear_interval = 10
clear_on_start = false
tx_confirmation = true
[telemetry]
enabled = false
host = '127.0.0.1'
port = 3001
[[chains]]
id = '_CHAIN_ID_A_'
type = 'namada'
rpc_addr = 'http://127.0.0.1:27657'
grpc_addr = 'http://127.0.0.1:9090'
event_source = { mode = 'push', url = 'ws://127.0.0.1:27657/websocket', batch_delay = '500ms' }
account_prefix = ''
key_name = 'relayer'
store_prefix = 'ibc'
gas_price = { price = 0.001, denom = 'nam' }
[[chains]]
id = '_CHAIN_ID_B_'
type = 'namada'
rpc_addr = 'http://127.0.0.1:28657'
grpc_addr = 'http://127.0.0.1:9090'
event_source = { mode = 'push', url = 'ws://127.0.0.1:28657/websocket', batch_delay = '500ms' }
account_prefix = ''
key_name = 'relayer'
store_prefix = 'ibc'
gas_price = { price = 0.001, denom = 'nam' }
"

function make_genesis() {
local suffix=$1

if [ "${suffix}" == "a" ]
then
sed "s/epochs_per_year = .*/epochs_per_year = 31536/g" \
${BASE_GENESIS_PATH} > ${GENESIS_PATH_A}
else
sed -e "s/${NET_ADDR_A}/${NET_ADDR_B}/g" \
-e "s/epochs_per_year = .*/epochs_per_year = 31536/g" \
${BASE_GENESIS_PATH} > ${GENESIS_PATH_B}
fi
}

function init_network() {
local suffix=$1
local genesis_path=$2

mkdir -p ${DATA_DIR}/namada-${suffix}
NAMADA_BASE_DIR=${DATA_DIR}/namada-${suffix}/.namada \
${NAMADAC} utils init-network \
--unsafe-dont-encrypt \
--genesis-path ${genesis_path} \
--chain-prefix namada-test \
--localhost \
--dont-archive \
--wasm-checksums-path ${CHECKSUM_PATH} \
| awk '$1 == "Derived" {print $4}'
}

function copy_wasm() {
local suffix=$1
local chain_id=$2

local base_dir=${DATA_DIR}/namada-${suffix}/.namada

cp ${NAMADA_DIR}/wasm/checksums.json ${base_dir}/${chain_id}/setup/validator-0/.namada/${chain_id}/wasm/
cp ${NAMADA_DIR}/wasm/*.wasm ${base_dir}/${chain_id}/setup/validator-0/.namada/${chain_id}/wasm/
}

function init_relayer_acc() {
local suffix=$1
local chain_id=$2
local ledger_addr=$3

local base_dir=${DATA_DIR}/namada-${suffix}/.namada
local wallet_dir=${HERMES_DIR}/namada_wallet/${chain_id}

cp ${base_dir}/${chain_id}/setup/other/wallet.toml ${base_dir}/${chain_id}/wallet.toml

${NAMADAW} --base-dir ${base_dir} \
key gen --alias relayer --unsafe-dont-encrypt

mkdir -p ${wallet_dir}
cp ${base_dir}/${chain_id}/wallet.toml ${wallet_dir}
}

# ==== main ====

mkdir -p ${DATA_DIR}

# for chain A
make_genesis "a"
chain_id_a=$(init_network "a" ${GENESIS_PATH_A})

copy_wasm "a" ${chain_id_a}

${NAMADAN} --base-dir ${DATA_DIR}/namada-a/.namada/${chain_id_a}/setup/validator-0/.namada/ \
ledger run > ${DATA_DIR}/namada-a/namada.log 2>&1 &
echo "Namada chain A's PID = $!"
sleep 5

init_relayer_acc "a" ${chain_id_a} ${LEDGER_ADDR_A}

# for chain B
make_genesis "b"
chain_id_b=$(init_network "b" ${GENESIS_PATH_B})

copy_wasm "b" ${chain_id_b}


${NAMADAN} --base-dir ${DATA_DIR}/namada-b/.namada/${chain_id_b}/setup/validator-0/.namada/ \
ledger run > ${DATA_DIR}/namada-b/namada.log 2>&1 &
echo "Namada chain B's PID = $!"
sleep 5

init_relayer_acc "b" ${chain_id_b} ${LEDGER_ADDR_B}

# for the relayer
cd ${HERMES_DIR}
echo "${HERMES_CONFIG_TEMPLATE}" \
| sed -e "s/_CHAIN_ID_A_/${chain_id_a}/g" -e "s/_CHAIN_ID_B_/${chain_id_b}/g" \
> ${HERMES_DIR}/config_for_namada.toml

echo "2 Namada chains are running"
echo "You can use Hermes with ${HERMES_DIR}/config_for_namada.toml"

echo "You also want to run the following lines:"
echo "export CHAIN_A_ID=${chain_id_a}"
echo "export CHAIN_B_ID=${chain_id_b}"
Loading

0 comments on commit 83211e7

Please sign in to comment.