Skip to content

Commit

Permalink
test: setup env test script (FunctionX#114)
Browse files Browse the repository at this point in the history
Co-authored-by: zakir <80246097+zakir-code@users.noreply.github.com>
  • Loading branch information
todd-woko and zakir-code committed Feb 19, 2024
1 parent 4adbc03 commit f7a83ec
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 24 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ artifacts
dist
out
typechain-types

tests/scripts/.env
4 changes: 0 additions & 4 deletions tests/data/bridge_contracts.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,5 @@
{
"chain_name": "eth",
"contract_class_name": "FxBridgeLogicETH"
},
{
"chain_name": "bsc",
"contract_class_name": "FxBridgeLogicBSC"
}
]
17 changes: 11 additions & 6 deletions tests/scripts/bridge.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@ set -eo pipefail

readonly bridger_start_index=100
readonly bridger_oracle_number=3
readonly bridge_image="functionx/fx-bridge-golang:3.1.0"
readonly bridge_tokens_file="${PROJECT_DIR}/tests/data/bridge_tokens.json"

export NODE_HOME="$OUT_DIR/.fxcore"
export LOCAL_PORT=${LOCAL_PORT:-"8545"}

export BRIDGE_IMAGE=${BRIDGE_IMAGE:-"functionx/fx-bridge-robot:latest"}
export BRIDGE_CONTRACTS_OUT_DIR=${BRIDGE_CONTRACTS_OUT_DIR:-"${OUT_DIR}/bridge_contracts_out.json"}
export BRIDGE_TOKENS_OUT_DIR=${BRIDGE_TOKENS_OUT_DIR:-"${OUT_DIR}/bridge_tokens_out.json"}
export RBIDGER_OUT_DIR=${RBIDGER_OUT_DIR:-"${OUT_DIR}/bridger_key/"}

mkdir -p "$RBIDGER_OUT_DIR"

function proposal() {
"${PROJECT_DIR}/tests/scripts/proposal.sh" "$@"
Expand All @@ -30,11 +33,11 @@ function create_oracles() {
for ((i = 0; i < "$bridger_oracle_number"; i++)); do
add_key "$chain-oracle-$i" "$index"
add_key "$chain-bridger-$i" "$((index + 1))"

oracle_address=$(show_address "$chain-oracle-$i" -a)
bridger_address=$(show_address "$chain-bridger-$i" -a)
external_address=$(show_address "$chain-bridger-$i" -e)

echo "12345678" | export_key "$chain-bridger-$i" "$RBIDGER_OUT_DIR/fx-$chain-bridger-$i.key" --ascii-armor
echo "12345678" | export_key "$chain-bridger-$i" "$RBIDGER_OUT_DIR/eth-$chain-bridger-$i.key"
cat >"$oracle_file.new" <<EOF
[
{
Expand Down Expand Up @@ -86,7 +89,7 @@ function create_oracle_bridger() {
cosmos_transfer "$oracle_name" 100
cosmos_transfer "$bridge_name" 500

cosmos_tx "$chain" create-oracle-bridger "$validator_address" "$bridge_address" "$external_address" "$min_deposit" --from "$oracle_name"
cosmos_tx "$chain" bounded-oracle "$validator_address" "$bridge_address" "$external_address" "$min_deposit" --from "$oracle_name"
done < <(jq -r '.[] | "\(.oracle_name) \(.oracle_address) \(.oracle_index) \(.bridge_name) \(.bridge_address) \(.bridge_index) \(.external_address)"' "$oracle_file")
done
}
Expand All @@ -109,11 +112,13 @@ EOF
cat >>"$OUT_DIR/bridge-docker-compose.yml" <<EOF
fx-$bridge_name:
container_name: fx-$bridge_name
image: $bridge_image
image: $BRIDGE_IMAGE
hostname: fx-$bridge_name
command: --chain-name="$chain" --external-jsonrpc="$external_json_rpc_url" --external-key="$TEST_MNEMONIC" --external-index="$bridge_index" --fx-bridge-addr="$bridge_contract_address" --fx-gas-price=4000000000000FX --fx-grpc="http://fxcore:9090" --fx-key="$TEST_MNEMONIC" --fx-index="$bridge_index"
command: bridge --bridge-chain-name="$chain" --bridge-node-url="$external_json_rpc_url" --bridge-addr="$bridge_contract_address" --fx-gas-price=4000000000000FX --fx-grpc="http://fxcore:9090" --bridge-key=/root/eth-$bridge_name.key --bridge-pwd=12345678 --fx-key=/root/fx-$bridge_name.key --fx-pwd=/root/fx-$bridge_name.password
networks:
- $DOCKER_NETWORK
volumes:
- $RBIDGER_OUT_DIR:/root
EOF

done < <(jq -r '.[] | "\(.bridge_index) \(.bridge_name)"' "$oracle_file")
Expand Down
3 changes: 2 additions & 1 deletion tests/scripts/ethereum.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ function hardhat_task() {
cd "$solidity_dir" || exit 1
yarn install >/dev/null 2>&1

npx hardhat "$@"
npx hardhat "$@" --network localhost
)
}

Expand All @@ -55,6 +55,7 @@ function init_bridge_contract() {
}

## ARGS: <bridge-contract> <bridge-token> <is-original> <target-ibc>
# shellcheck disable=SC2317 # Don't warn about unreachable commands in this function
function add_bridge_token() {
local contract=${1} token=${2} is_original=${3} target_ibc=${4}
shift 4
Expand Down
3 changes: 2 additions & 1 deletion tests/scripts/fxcore.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ set -eo pipefail
export CHAIN_NAME="fxcore"
export NODE_HOME="$OUT_DIR/.$CHAIN_NAME"

export DOCKER_IMAGE=${DOCKER_IMAGE:-"ghcr.io/functionx/fx-core:4.1.0-rc0"}
export DOCKER_IMAGE=${DOCKER_IMAGE:-"ghcr.io/functionx/fx-core:latest"}
export DAEMON="docker run --rm -i --network $DOCKER_NETWORK -v $NODE_HOME:$NODE_HOME $DOCKER_IMAGE"

export NODE_RPC="http://$CHAIN_NAME:26657"
Expand All @@ -35,6 +35,7 @@ function init() {
"bech32_prefix": "$BECH32_PREFIX"
}
EOF
sleep 2
}

function start() {
Expand Down
34 changes: 22 additions & 12 deletions tests/scripts/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,28 @@ function run() {
)

(
export IBC_CHANNEL="channel-0"
PURSE_ADDRESS="$("${script_dir}/ethereum.sh" get_token_address bsc PURSE)"
export PURSE_ADDRESS
PUNDIX_ADDRESS="$("${script_dir}/ethereum.sh" get_token_address eth PUNDIX)"
export PUNDIX_ADDRESS
"${script_dir}/pundix.sh" init
"${script_dir}/pundix.sh" start

"${script_dir}/ibcrelayer.sh" transfer
"${script_dir}/ibcrelayer.sh" init
"${script_dir}/ibcrelayer.sh" create_channel
"${script_dir}/ibcrelayer.sh" start
# shellcheck source=/dev/null
. "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/setup-env.sh"
if [[ "$ENABLE_IBC" == "true" ]]; then
export IBC_CHANNEL="channel-0"
PURSE_ADDRESS="$("${script_dir}/ethereum.sh" get_token_address bsc PURSE)"
export PURSE_ADDRESS
PUNDIX_ADDRESS="$("${script_dir}/ethereum.sh" get_token_address eth PUNDIX)"
export PUNDIX_ADDRESS
"${script_dir}/pundix.sh" init
"${script_dir}/pundix.sh" start

"${script_dir}/ibcrelayer.sh" transfer
"${script_dir}/ibcrelayer.sh" init
"${script_dir}/ibcrelayer.sh" create_channel
"${script_dir}/ibcrelayer.sh" start
fi
)

(
"${script_dir}/bridge.sh" create_oracles eth
"${script_dir}/bridge.sh" update_crosschain_oracles eth
"${script_dir}/bridge.sh" create_oracle_bridger eth
)

}
Expand Down
11 changes: 11 additions & 0 deletions tests/scripts/setup-env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ export FROM=${FROM:-"test1"}

export DOCKER_NETWORK=${DOCKER_NETWORK:-"test-net"}

if [ -f "$PROJECT_DIR/tests/scripts/.env" ]; then
# shellcheck source=/dev/null
source "$PROJECT_DIR/tests/scripts/.env"
fi

mkdir -p "${OUT_DIR}"

function check_command() {
Expand Down Expand Up @@ -196,6 +201,12 @@ function add_key() {
echo "$TEST_MNEMONIC" | $DAEMON keys add "$name" --index "$index" --home "$NODE_HOME" --recover
}

function export_key() {
local name=$1 out=$2
shift 2
$DAEMON keys export "$name" "$@" --home "$NODE_HOME" >"$out"
}

function cosmos_grpc() {
grpcurl -plaintext "$NODE_GRPC" "$@"
}
Expand Down

0 comments on commit f7a83ec

Please sign in to comment.