Commit 72187761 authored by QM's avatar QM Committed by vipwzw

fix x2ethereum test

parent 08c0a974
FROM ubuntu:16.04 FROM ubuntu:16.04
WORKDIR /root WORKDIR /root
COPY relayer.toml relayer.toml
COPY ebrelayer ebrelayer COPY ebrelayer ebrelayer
COPY ebcli_A ebcli_A COPY ebcli_A ebcli_A
COPY sleep.sh sleep.sh
EXPOSE 20000 CMD ["/root/sleep.sh"]
CMD ["/root/ebrelayer"]
...@@ -31,18 +31,23 @@ tokenAddrBty="" ...@@ -31,18 +31,23 @@ tokenAddrBty=""
tokenAddr="" tokenAddr=""
ethUrl="" ethUrl=""
Chain33Cli="" Chain33Cli=""
portRelayer=20000
function kill_ebrelayerC() { function kill_ebrelayerC() {
#shellcheck disable=SC2154 #shellcheck disable=SC2154
docker stop "${dockerNamePrefix}_ebrelayerc_1" kill_docker_ebrelayer "${dockerNamePrefix}_ebrelayerc_1"
} }
function kill_ebrelayerD() { function kill_ebrelayerD() {
docker stop "${dockerNamePrefix}_ebrelayerd_1" kill_docker_ebrelayer "${dockerNamePrefix}_ebrelayerd_1"
}
function start_ebrelayerA() {
docker cp "./relayer.toml" "${dockerNamePrefix}_ebrelayera_1":/root/relayer.toml
start_docker_ebrelayer "${dockerNamePrefix}_ebrelayera_1" "/root/ebrelayer" "./ebrelayera.log"
sleep 5
} }
function start_ebrelayerC() { function start_ebrelayerC() {
docker start "${dockerNamePrefix}_ebrelayerc_1" start_docker_ebrelayer "${dockerNamePrefix}_ebrelayerc_1" "/root/ebrelayer" "./ebrelayerc.log"
sleep 5 sleep 5
${CLIC} relayer unlock -p 123456hzj ${CLIC} relayer unlock -p 123456hzj
sleep 5 sleep 5
...@@ -50,7 +55,7 @@ function start_ebrelayerC() { ...@@ -50,7 +55,7 @@ function start_ebrelayerC() {
sleep 10 sleep 10
} }
function start_ebrelayerD() { function start_ebrelayerD() {
docker start "${dockerNamePrefix}_ebrelayerd_1" start_docker_ebrelayer "${dockerNamePrefix}_ebrelayerd_1" "/root/ebrelayer" "./ebrelayerd.log"
sleep 5 sleep 5
${CLID} relayer unlock -p 123456hzj ${CLID} relayer unlock -p 123456hzj
sleep 5 sleep 5
...@@ -72,42 +77,17 @@ function InitAndDeploy() { ...@@ -72,42 +77,17 @@ function InitAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
} }
function port_exist() {
local prot_ori=${portRelayer}
grep_port=$(netstat -tlpn | grep "\b${portRelayer}\b")
while [ -n "$grep_port" ]; do
echo "port $portRelayer is in use"
portRelayer=$((portRelayer + 4))
grep_port=$(netstat -tlpn | grep "\b${portRelayer}\b")
done
if [ "${portRelayer}" != "${prot_ori}" ]; then
sed -i 's/'"${prot_ori}"'/'"${portRelayer}"'/g' "./docker-compose-ebrelayer.yml"
fi
}
function StartRelayerAndDeploy() { function StartRelayerAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# stop all docker
docker-compose -f docker-compose-ebrelayer.yml down
for name in b c d; do
docker-compose -f "docker-compose-ebrelayer${name}.yml" down
done
# change EthProvider url # change EthProvider url
dockerAddr=$(get_docker_addr "${dockerNamePrefix}_ganachetest_1") dockerAddr=$(get_docker_addr "${dockerNamePrefix}_ganachetest_1")
ethUrl="http://${dockerAddr}:8545" ethUrl="http://${dockerAddr}:8545"
# shellcheck disable=SC2155 # 修改 relayer.toml 配置文件
local line=$(delete_line_show "./relayer.toml" 'EthProvider="ws:') updata_relayer_a_toml "${dockerAddr}" "${dockerNamePrefix}_ebrelayera_1" "./relayer.toml"
sed -i ''"${line}"' a EthProvider="ws://'"${dockerAddr}"':8545/"' "./relayer.toml" # start ebrelayer A
start_ebrelayerA
line=$(delete_line_show "./relayer.toml" 'EthProviderCli="http:')
sed -i ''"${line}"' a EthProviderCli="http://'"${dockerAddr}"':8545"' "./relayer.toml"
port_exist
docker-compose -f docker-compose-ebrelayer.yml up --build -d
sleep 1
# 部署合约 # 部署合约
InitAndDeploy InitAndDeploy
...@@ -115,19 +95,38 @@ function StartRelayerAndDeploy() { ...@@ -115,19 +95,38 @@ function StartRelayerAndDeploy() {
result=$(${CLIA} relayer ethereum bridgeRegistry) result=$(${CLIA} relayer ethereum bridgeRegistry)
BridgeRegistry=$(cli_ret "${result}" "bridgeRegistry" ".addr") BridgeRegistry=$(cli_ret "${result}" "bridgeRegistry" ".addr")
# kill_ebrelayer "./A/ebrelayer" # kill ebrelayer A
docker-compose -f docker-compose-ebrelayer.yml down kill_docker_ebrelayer "${dockerNamePrefix}_ebrelayera_1"
sleep 1
# 修改 relayer.toml 配置文件 # 修改 relayer.toml 配置文件
port_exist
updata_relayer_toml "${BridgeRegistry}" ${maturityDegree} "./relayer.toml" updata_relayer_toml "${BridgeRegistry}" ${maturityDegree} "./relayer.toml"
updata_docker_relayer_toml "${portRelayer}" # 重启
start_ebrelayerA
docker-compose -f docker-compose-ebrelayer.yml up --build -d # start ebrelayer B C D
for name in b c d; do for name in b c d; do
docker-compose -f "docker-compose-ebrelayer$name.yml" up --build -d local file="./relayer$name.toml"
cp './relayer.toml' "${file}"
# 删除配置文件中不需要的字段
for deleteName in "deployerPrivateKey" "operatorAddr" "validatorsAddr" "initPowers" "deployerPrivateKey" "deploy"; do
delete_line "${file}" "${deleteName}"
done
sed -i 's/x2ethereum/x2ethereum'${name}'/g' "${file}"
pushHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayer${name}_1")
line=$(delete_line_show "${file}" "pushHost")
sed -i ''"${line}"' a pushHost="http://'"${pushHost}"':20000"' "${file}"
line=$(delete_line_show "${file}" "pushBind")
sed -i ''"${line}"' a pushBind="'"${pushHost}"':20000"' "${file}"
docker cp "${file}" "${dockerNamePrefix}_ebrelayer${name}_1":/root/relayer.toml
start_docker_ebrelayer "${dockerNamePrefix}_ebrelayer${name}_1" "/root/ebrelayer" "./ebrelayer${name}.log"
done done
sleep 1 sleep 5
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
} }
...@@ -589,3 +588,5 @@ function AllRelayerMainTest() { ...@@ -589,3 +588,5 @@ function AllRelayerMainTest() {
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
} }
}
\ No newline at end of file
version: '3'
services:
ebrelayera:
build:
context: .
dockerfile: Dockerfile-x2ethrelay
ports:
- "20000:20000"
...@@ -12,13 +12,11 @@ RED='\033[1;31m' ...@@ -12,13 +12,11 @@ RED='\033[1;31m'
GRE='\033[1;32m' GRE='\033[1;32m'
NOC='\033[0m' NOC='\033[0m'
inetAddr=""
# 出错退出前拷贝日志文件 # 出错退出前拷贝日志文件
function exit_cp_file() { function exit_cp_file() {
# shellcheck disable=SC2116 # shellcheck disable=SC2116
dirNameFa=$(echo ~) # dirNameFa=$(echo ~)
dirName="$dirNameFa/x2ethereumlogs" dirName="/x2ethereumlogs"
if [ ! -d "${dirName}" ]; then if [ ! -d "${dirName}" ]; then
# shellcheck disable=SC2086 # shellcheck disable=SC2086
...@@ -38,8 +36,8 @@ function copyErrLogs() { ...@@ -38,8 +36,8 @@ function copyErrLogs() {
if [ -n "$CASE_ERR" ]; then if [ -n "$CASE_ERR" ]; then
# /var/lib/jenkins # /var/lib/jenkins
# shellcheck disable=SC2116 # shellcheck disable=SC2116
dirNameFa=$(echo ~) # dirNameFa=$(echo ~)
dirName="$dirNameFa/x2ethereumlogs" dirName="/x2ethereumlogs"
if [ ! -d "${dirName}" ]; then if [ ! -d "${dirName}" ]; then
# shellcheck disable=SC2086 # shellcheck disable=SC2086
...@@ -54,13 +52,6 @@ function copyErrLogs() { ...@@ -54,13 +52,6 @@ function copyErrLogs() {
fi fi
} }
function kill_all_ebrelayer() {
for name in A B C D; do
local ebrelayer="./../build/$name/ebrelayer"
kill_ebrelayer "${ebrelayer}"
done
}
# 判断结果是否正确 # 判断结果是否正确
function cli_ret() { function cli_ret() {
set +x set +x
...@@ -110,18 +101,6 @@ function balance_ret() { ...@@ -110,18 +101,6 @@ function balance_ret() {
echo "${balance}" echo "${balance}"
} }
# 判断结果是否错误
function cli_ret_err() {
#set +x
ok=$(echo "${1}" | jq -r .isOK)
echo "${ok}"
if [[ ${ok} == "true" ]]; then
echo -e "${RED}isOK is true${NOC}"
exit_cp_file
fi
#set -x
}
# 查询关键字所在行然后删除 ${1}文件名称 ${2}关键字 # 查询关键字所在行然后删除 ${1}文件名称 ${2}关键字
function delete_line() { function delete_line() {
line=$(cat -n "${1}" | grep "${2}" | awk '{print $1}') line=$(cat -n "${1}" | grep "${2}" | awk '{print $1}')
...@@ -140,6 +119,36 @@ function delete_line_show() { ...@@ -140,6 +119,36 @@ function delete_line_show() {
echo "${line}" echo "${line}"
} }
# 后台启动 ebrelayer 进程 $1 docker 名称 $2进程名称 $3进程信息输出重定向文件
function start_docker_ebrelayer() {
# 参数如果小于 3 直接报错
if [[ $# -lt 3 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
# 后台启动程序
docker exec "$1" nohup "${2}" > "${3}" 2>&1 &
sleep 2
# shellcheck disable=SC2009
pid=$(docker exec "$1" ps -ef | grep "$2" | grep -v 'grep' | awk '{print $2}')
local count=0
while [ "${pid}" == "" ]; do
docker exec "$1" nohup "${2}" > "${3}" 2>&1 &
sleep 2
count=$((count + 1))
if [[ ${count} -ge 20 ]]; then
echo -e "${RED}start ${1} ${2} failed${NOC}"
exit_cp_file
fi
# shellcheck disable=SC2009
pid=$(docker exec "$1" ps -ef | grep "$2" | grep -v 'grep' | awk '{print $2}')
done
}
# 后台启动 ebrelayer 进程 $1进程名称 $2进程信息输出重定向文件 # 后台启动 ebrelayer 进程 $1进程名称 $2进程信息输出重定向文件
function start_ebrelayer() { function start_ebrelayer() {
# 参数如果小于 2 直接报错 # 参数如果小于 2 直接报错
...@@ -238,6 +247,25 @@ function start_ebrelayer_and_setpwd_unlock() { ...@@ -238,6 +247,25 @@ function start_ebrelayer_and_setpwd_unlock() {
done done
} }
# 杀死进程 ebrelayer 进程 docker ebrelayer 名称
function kill_docker_ebrelayer() {
# shellcheck disable=SC2009
pid=$(docker exec "$1" ps -ef | grep "ebrelayer" | grep -v 'grep' | awk '{print $2}')
if [ "${pid}" == "" ]; then
echo "not find ${1} pid"
return
fi
docker exec "$1" kill "${pid}"
# shellcheck disable=SC2009
pid=$(docker exec "$1" ps -ef | grep "ebrelayer" | grep -v 'grep' | awk '{print $2}')
if [ "${pid}" != "" ]; then
echo "kill ${1} failed"
docker exec "$1" kill -9 "${pid}"
fi
sleep 1
}
# 杀死进程ebrelayer 进程 $1进程名称 # 杀死进程ebrelayer 进程 $1进程名称
function kill_ebrelayer() { function kill_ebrelayer() {
# shellcheck disable=SC2009 # shellcheck disable=SC2009
...@@ -351,68 +379,57 @@ function check_addr() { ...@@ -351,68 +379,57 @@ function check_addr() {
fi fi
} }
function get_inet_addr() {
inetAddr=$(ifconfig wlp2s0 | grep "inet " | awk '{ print $2}' | awk -F: '{print $2}')
if [[ ${inetAddr} == "" ]]; then
inetAddr=$(ifconfig wlp2s0 | grep "inet " | awk '{ print $2}')
if [[ ${inetAddr} == "" ]]; then
inetAddr=$(ifconfig eth0 | grep "inet " | awk '{ print $2}' | awk -F: '{print $2}')
if [[ ${inetAddr} == "" ]]; then
inetAddr=$(ifconfig eth0 | grep "inet " | awk '{ print $2}')
if [[ ${inetAddr} == "" ]]; then
ip addr show eth0
inetAddr=$(ip addr show eth0 | grep "inet " | awk '{ print $2}' | head -c-4)
fi
fi
fi
fi
echo "${inetAddr}"
}
# $1 dockerName # $1 dockerName
function get_docker_addr() { function get_docker_addr() {
local dockerAddr=$(docker inspect "${1}" | jq ".[].NetworkSettings.Networks" | grep "IPAddress" | awk '{ print $2}' | sed 's/\"//g' | sed 's/,//g') local dockerAddr=$(docker inspect "${1}" | jq ".[].NetworkSettings.Networks" | grep "IPAddress" | awk '{ print $2}' | sed 's/\"//g' | sed 's/,//g')
echo "${dockerAddr}" echo "${dockerAddr}"
} }
# 更新配置文件 $1 为 BridgeRegistry 合约地址; $2 等待区块 默认10; $3 relayer.toml 地址 # $1 dockerAddr; $2 docker ebrelayer name; $2 relayer.toml 地址
function updata_relayer_toml() { function updata_relayer_a_toml() {
local BridgeRegistry=${1} local dockerAddr=${1}
local maturityDegree=${2} local ebrelayer=${2}
local file=${3} local file=${3}
# shellcheck disable=SC2155
local line=$(delete_line_show "${file}" 'EthProvider="ws:')
sed -i ''"${line}"' a EthProvider="ws://'"${dockerAddr}"':8545/"' "${file}"
line=$(delete_line_show "${file}" 'EthProviderCli="http:')
sed -i ''"${line}"' a EthProviderCli="http://'"${dockerAddr}"':8545"' "${file}"
pushHost=$(get_docker_addr "${ebrelayer}")
line=$(delete_line_show "${file}" "pushHost")
sed -i ''"${line}"' a pushHost="http://'"${pushHost}"':20000"' "${file}"
line=$(delete_line_show "${file}" "pushBind")
sed -i ''"${line}"' a pushBind="'"${pushHost}"':20000"' "${file}"
local chain33Host=$(get_docker_addr "${dockerNamePrefix}_chain33_1") local chain33Host=$(get_docker_addr "${dockerNamePrefix}_chain33_1")
if [[ ${chain33Host} == "" ]]; then if [[ ${chain33Host} == "" ]]; then
echo -e "${RED}chain33Host is empty${NOC}" echo -e "${RED}chain33Host is empty${NOC}"
exit_cp_file exit_cp_file
fi fi
get_inet_addr
local pushHost="${inetAddr}"
if [[ ${pushHost} == "" ]]; then
echo -e "${RED}pushHost is empty${NOC}"
exit_cp_file
fi
local line=$(delete_line_show "${file}" "chain33Host") local line=$(delete_line_show "${file}" "chain33Host")
# 在第 line 行后面 新增合约地址 # 在第 line 行后面 新增合约地址
sed -i ''"${line}"' a chain33Host="http://'"${chain33Host}"':8801"' "${file}" sed -i ''"${line}"' a chain33Host="http://'"${chain33Host}"':8801"' "${file}"
line=$(delete_line_show "${file}" "pushHost") sed -i 's/^EthBlockFetchPeriod=.*/EthBlockFetchPeriod=500/g' "${file}"
sed -i ''"${line}"' a pushHost="http://'"${pushHost}"':20000"' "${file}" sed -i 's/^fetchHeightPeriodMs=.*/fetchHeightPeriodMs=500/g' "${file}"
}
# line=$(delete_line_show "${file}" "pushBind") # 更新配置文件 $1 为 BridgeRegistry 合约地址; $2 等待区块 默认10; $3 relayer.toml 地址
# sed -i ''"${line}"' a pushBind="'"${pushHost}"':20000"' "${file}" function updata_relayer_toml() {
local BridgeRegistry=${1}
local maturityDegree=${2}
local file=${3}
line=$(delete_line_show "${file}" "BridgeRegistry") line=$(delete_line_show "${file}" "BridgeRegistry")
sed -i ''"${line}"' a BridgeRegistry="'"${BridgeRegistry}"'"' "${file}" sed -i ''"${line}"' a BridgeRegistry="'"${BridgeRegistry}"'"' "${file}"
sed -i 's/EthMaturityDegree=10/'EthMaturityDegree="${maturityDegree}"'/g' "${file}" sed -i 's/EthMaturityDegree=10/'EthMaturityDegree="${maturityDegree}"'/g' "${file}"
sed -i 's/maturityDegree=10/'maturityDegree="${maturityDegree}"'/g' "${file}" sed -i 's/maturityDegree=10/'maturityDegree="${maturityDegree}"'/g' "${file}"
sed -i 's/^EthBlockFetchPeriod=.*/EthBlockFetchPeriod=500/g' "${file}"
sed -i 's/^fetchHeightPeriodMs=.*/fetchHeightPeriodMs=500/g' "${file}"
} }
# 更新配置文件 $1 为 BridgeRegistry 合约地址; $2 等待区块 默认10; $3 relayer.toml 地址 # 更新配置文件 $1 为 BridgeRegistry 合约地址; $2 等待区块 默认10; $3 relayer.toml 地址
...@@ -438,146 +455,24 @@ function updata_relayer_toml_ropston() { ...@@ -438,146 +455,24 @@ function updata_relayer_toml_ropston() {
sed -i 's/maturityDegree=10/'maturityDegree="${maturityDegree}"'/g' "${file}" sed -i 's/maturityDegree=10/'maturityDegree="${maturityDegree}"'/g' "${file}"
} }
# $1 portRelayer # 获取本机 IP
function updata_docker_relayer_toml() { function get_inet_addr() {
local port=$1 inetAddr=$(ifconfig wlp2s0 | grep "inet " | awk '{ print $2}' | awk -F: '{print $2}')
local portRelayer=$1 if [[ ${inetAddr} == "" ]]; then
inetAddr=$(ifconfig wlp2s0 | grep "inet " | awk '{ print $2}')
if [ "${portRelayer}" != "20000" ]; then if [[ ${inetAddr} == "" ]]; then
sed -i 's/20000/'"${portRelayer}"'/g' "./relayer.toml" inetAddr=$(ifconfig eth0 | grep "inet " | awk '{ print $2}' | awk -F: '{print $2}')
sed -i 's/20000/'"${portRelayer}"'/g' "./Dockerfile-x2ethrelay" if [[ ${inetAddr} == "" ]]; then
fi inetAddr=$(ifconfig eth0 | grep "inet " | awk '{ print $2}')
if [[ ${inetAddr} == "" ]]; then
for name in b c d; do ip addr show eth0
local file="./relayer$name.toml" inetAddr=$(ip addr show eth0 | grep "inet " | awk '{ print $2}' | head -c-4)
cp './relayer.toml' "${file}" fi
fi
# 删除配置文件中不需要的字段 fi
for deleteName in "deployerPrivateKey" "operatorAddr" "validatorsAddr" "initPowers" "deployerPrivateKey" "deploy"; do
delete_line "${file}" "${deleteName}"
done
port=$((port + 1))
sed -i 's/'"${portRelayer}"'/'${port}'/g' "${file}"
sed -i 's/x2ethereum/x2ethereum'${name}'/g' "${file}"
local dockerfile="./Dockerfile-x2ethrelay$name"
cp "./Dockerfile-x2ethrelay" "${dockerfile}"
# shellcheck disable=SC2155
local line=$(delete_line_show "${dockerfile}" "COPY relayer.toml relayer.toml")
sed -i ''"${line}"' a COPY relayer'$name'.toml relayer.toml' "${dockerfile}"
sed -i 's/'"${portRelayer}"'/'"${port}"'/g' "${dockerfile}"
local dockeryml="./docker-compose-ebrelayer$name.yml"
cp "./docker-compose-ebrelayer.yml" "${dockeryml}"
line=$(delete_line_show "${dockeryml}" "ebrelayera")
sed -i ''"${line}"' a \ \ ebrelayer'$name':' "${dockeryml}"
line=$(delete_line_show "${dockeryml}" "dockerfile: Dockerfile-x2ethrelay")
sed -i ''"${line}"' a \ \ \ \ \ \ dockerfile: Dockerfile-x2ethrelay'$name'' "${dockeryml}"
sed -i 's/'"${portRelayer}"'/'${port}'/g' "${dockeryml}"
done
}
# 更新配置文件 $1 为 BridgeRegistry 合约地址; $2 等待区块 默认10; $3 MAIN_HTTP; $4 relayer.toml 地址
function updata_relayer_toml_rpc() {
local BridgeRegistry=${1}
local maturityDegree=${2}
local MAIN_HTTP=${3}
local file=${4}
get_inet_addr
local pushHost="${inetAddr}"
if [[ ${pushHost} == "" ]]; then
echo -e "${RED}pushHost is empty${NOC}"
fi fi
# shellcheck disable=SC2155 echo "${inetAddr}"
local line=$(delete_line_show "${file}" "chain33Host")
# 在第 line 行后面 新增合约地址
sed -i ''"${line}"' a chain33Host="'"${MAIN_HTTP}"'"' "${file}"
line=$(delete_line_show "${file}" "pushHost")
sed -i ''"${line}"' a pushHost="http://'"${pushHost}"':20000"' "${file}"
line=$(delete_line_show "${file}" "BridgeRegistry")
sed -i ''"${line}"' a BridgeRegistry="'"${BridgeRegistry}"'"' "${file}"
sed -i 's/EthMaturityDegree=10/'EthMaturityDegree="${maturityDegree}"'/g' "${file}"
sed -i 's/maturityDegree=10/'maturityDegree="${maturityDegree}"'/g' "${file}"
sed -i 's/^EthBlockFetchPeriod=.*/EthBlockFetchPeriod=500/g' "${file}"
sed -i 's/^fetchHeightPeriodMs=.*/fetchHeightPeriodMs=500/g' "${file}"
}
# $1 portRelayer
function updata_docker_relayer_toml_rpc() {
local portRelayer=$1
local port=$1
sed -i 's/20000/'"${portRelayer}"'/g' "./x2ethereum/relayer.toml"
sed -i 's/20000/'"${portRelayer}"'/g' "./x2ethereum/Dockerfile-x2ethrelay"
for name in b c d; do
local file="./x2ethereum/relayer$name.toml"
cp './x2ethereum/relayer.toml' "${file}"
# 删除配置文件中不需要的字段
for deleteName in "deployerPrivateKey" "operatorAddr" "validatorsAddr" "initPowers" "deployerPrivateKey" "deploy"; do
delete_line "${file}" "${deleteName}"
done
port=$((port - 1))
sed -i 's/'"${portRelayer}"'/'${port}'/g' "${file}"
sed -i 's/x2ethereum/x2ethereum'${name}'/g' "${file}"
local dockerfile="./x2ethereum/Dockerfile-x2ethrelay$name"
cp "./x2ethereum/Dockerfile-x2ethrelay" "${dockerfile}"
# shellcheck disable=SC2155
local line=$(delete_line_show "${dockerfile}" "COPY relayer.toml relayer.toml")
sed -i ''"${line}"' a COPY relayer'$name'.toml relayer.toml' "${dockerfile}"
sed -i 's/'"${portRelayer}"'/'"${port}"'/g' "${dockerfile}"
local dockeryml="./x2ethereum/docker-compose-ebrelayer$name.yml"
cp "./x2ethereum/docker-compose-ebrelayer.yml" "${dockeryml}"
sed -i 's/ebrelayera/ebrelayer'${name}'/g' "${dockeryml}"
sed -i 's/Dockerfile-x2ethrelay/Dockerfile-x2ethrelay'${name}'/g' "${dockeryml}"
sed -i 's/'"${portRelayer}"'/'${port}'/g' "${dockeryml}"
done
}
# 更新 B C D 的配置文件
function updata_all_relayer_toml() {
local port=9901
local port2=20000
# local dockername=30
for name in B C D; do
local file="./$name/relayer.toml"
cp './A/relayer.toml' "${file}"
cp './ebrelayer' "./$name/ebrelayer"
# 删除配置文件中不需要的字段
for deleteName in "deployerPrivateKey" "operatorAddr" "validatorsAddr" "initPowers" "deployerPrivateKey" "deploy"; do
delete_line "${file}" "${deleteName}"
done
# 替换端口
port=$((port + 1))
sed -i 's/localhost:9901/localhost:'${port}'/g' "${file}"
port2=$((port2 + 1))
sed -i 's/20000/'${port2}'/g' "${file}"
sed -i 's/x2ethereum/x2ethereum'${name}'/g' "${file}"
done
} }
# 启动 eth # 启动 eth
...@@ -595,38 +490,6 @@ function start_trufflesuite() { ...@@ -595,38 +490,6 @@ function start_trufflesuite() {
sleep 1 sleep 1
} }
# $1 CLI
function wait_prophecy_finish() {
local CLI=${1}
set +x
local count=0
while true; do
if [[ $# -eq 4 ]]; then
${CLI} relayer ethereum balance -o "${2}" -t "${3}"
balance=$(${CLI} relayer ethereum balance -o "${2}" -t "${3}" | jq -r .balance)
if [[ ${balance} == "${4}" ]]; then
break
fi
fi
if [[ $# -eq 3 ]]; then
${CLI} relayer ethereum balance -o "${2}"
balance=$(${CLI} relayer ethereum balance -o "${2}" | jq -r .balance)
if [[ ${balance} == "${3}" ]]; then
break
fi
fi
count=$((count + 1))
if [[ ${count} == 30 ]]; then
set -x
echo -e "${RED}failed to get balance${NOC}"
exit_cp_file
fi
sleep 1
done
set -x
}
# eth 区块等待 $1:等待高度 $2:url地址,默认为 http://localhost:7545,测试网络用 https://ropsten-rpc.linkpool.io/ # eth 区块等待 $1:等待高度 $2:url地址,默认为 http://localhost:7545,测试网络用 https://ropsten-rpc.linkpool.io/
function eth_block_wait() { function eth_block_wait() {
set +x set +x
......
#!/usr/bin/env bash
# shellcheck disable=SC2128
# shellcheck source=/dev/null
set -x
set +e
while [ 1 == 1 ]; do
sleep 100
done
\ No newline at end of file
...@@ -28,13 +28,13 @@ ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b ...@@ -28,13 +28,13 @@ ethReceiverAddrKey1="355b876d7cbcb930d5dfab767f66336ce327e082cbaa1877210c1bae89b
ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf" ethReceiverAddr2="0x0c05ba5c230fdaa503b53702af1962e08d0c60bf"
#ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08" #ethReceiverAddrKey2="9dc6df3a8ab139a54d8a984f54958ae0661f880229bf3bdbb886b87d58b56a08"
maturityDegree=5 maturityDegree=5
portRelayer=19999 #portRelayer=19999
ethUrl="" ethUrl=""
CLIA_HTTP="http://127.0.0.1:9901" CLIA_HTTP=""
CLIB_HTTP="http://127.0.0.1:9902" CLIB_HTTP=""
CLIC_HTTP="http://127.0.0.1:9903" CLIC_HTTP=""
CLID_HTTP="http://127.0.0.1:9904" CLID_HTTP=""
# $1 sendAddress, $2 balance # $1 sendAddress, $2 balance
function queryExecBalance() { function queryExecBalance() {
...@@ -77,6 +77,12 @@ function queryChain33X2ethBalance() { ...@@ -77,6 +77,12 @@ function queryChain33X2ethBalance() {
fi fi
} }
function start_ebrelayerA() {
docker cp "./x2ethereum/relayer.toml" "${dockerNamePrefix}_ebrelayera_rpc_1":/root/relayer.toml
start_docker_ebrelayer "${dockerNamePrefix}_ebrelayera_rpc_1" "/root/ebrelayer" "./x2ethereum/ebrelayera.log"
sleep 5
}
function StartRelayerAndDeploy() { function StartRelayerAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}" echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
...@@ -93,31 +99,13 @@ function StartRelayerAndDeploy() { ...@@ -93,31 +99,13 @@ function StartRelayerAndDeploy() {
dockerAddr=$(get_docker_addr "${dockerNamePrefix}_ganachetest_rpc_1") dockerAddr=$(get_docker_addr "${dockerNamePrefix}_ganachetest_rpc_1")
ethUrl="http://${dockerAddr}:8545" ethUrl="http://${dockerAddr}:8545"
# shellcheck disable=SC2155 # 修改 relayer.toml 配置文件
local line=$(delete_line_show "./x2ethereum/relayer.toml" 'EthProvider="ws:') updata_relayer_a_toml "${dockerAddr}" "${dockerNamePrefix}_ebrelayera_rpc_1" "./x2ethereum/relayer.toml"
sed -i ''"${line}"' a EthProvider="ws://'"${dockerAddr}"':8545/"' "./x2ethereum/relayer.toml"
line=$(delete_line_show "./x2ethereum/relayer.toml" 'EthProviderCli="http:')
sed -i ''"${line}"' a EthProviderCli="http://'"${dockerAddr}"':8545"' "./x2ethereum/relayer.toml"
grep_port=$(netstat -tlpn | grep "\b${portRelayer}\b")
while [ -n "$grep_port" ]; do
echo "port $portRelayer is in use"
portRelayer=$((portRelayer - 4))
grep_port=$(netstat -tlpn | grep "\b${portRelayer}\b")
done
line=$(delete_line_show "./x2ethereum/docker-compose-ebrelayer.yml" "20000:20000")
sed -i ''"${line}"' a \ \ \ \ \ \ -\ "'${portRelayer}':'${portRelayer}'"' "./x2ethereum/docker-compose-ebrelayer.yml"
line=$(delete_line_show "./x2ethereum/docker-compose-ebrelayer.yml" "ebrelayera:")
sed -i ''"${line}"' a \ \ ebrelayera_rpc:' "./x2ethereum/docker-compose-ebrelayer.yml"
line=$(delete_line_show "./x2ethereum/relayer.toml" "localhost:9901") line=$(delete_line_show "./x2ethereum/relayer.toml" "localhost:9901")
sed -i ''"${line}"' a JrpcBindAddr=":9901"' "./x2ethereum/relayer.toml" sed -i ''"${line}"' a JrpcBindAddr=":9901"' "./x2ethereum/relayer.toml"
# start ebrelayer A
docker-compose -f ./x2ethereum/docker-compose-ebrelayer.yml up --build -d start_ebrelayerA
sleep 1
ebrelayeraRpcHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayera_rpc_1") ebrelayeraRpcHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayera_rpc_1")
if [[ ${ebrelayeraRpcHost} == "" ]]; then if [[ ${ebrelayeraRpcHost} == "" ]]; then
...@@ -133,17 +121,38 @@ function StartRelayerAndDeploy() { ...@@ -133,17 +121,38 @@ function StartRelayerAndDeploy() {
chain33_Http "$req" "${CLIA_HTTP}" '(.error|not) and (.result != null)' "$FUNCNAME" ".result.addr" chain33_Http "$req" "${CLIA_HTTP}" '(.error|not) and (.result != null)' "$FUNCNAME" ".result.addr"
local BridgeRegistry="$RETURN_RESP" local BridgeRegistry="$RETURN_RESP"
docker-compose -f ./x2ethereum/docker-compose-ebrelayer.yml down # kill ebrelayer A
kill_docker_ebrelayer "${dockerNamePrefix}_ebrelayera_rpc_1"
sleep 1
# 修改 relayer.toml 配置文件 # 修改 relayer.toml 配置文件
updata_relayer_toml_rpc "${BridgeRegistry}" "${maturityDegree}" "${MAIN_HTTP}" "./x2ethereum/relayer.toml" updata_relayer_toml "${BridgeRegistry}" ${maturityDegree} "./x2ethereum/relayer.toml"
updata_docker_relayer_toml_rpc ${portRelayer} # 重启
start_ebrelayerA
docker-compose -f "./x2ethereum/docker-compose-ebrelayer.yml" up --build -d # start ebrelayer B C D
for name in b c d; do for name in b c d; do
docker-compose -f "./x2ethereum/docker-compose-ebrelayer$name.yml" down local file="./x2ethereum/relayer$name.toml"
docker-compose -f "./x2ethereum/docker-compose-ebrelayer$name.yml" up --build -d cp './x2ethereum/relayer.toml' "${file}"
# 删除配置文件中不需要的字段
for deleteName in "deployerPrivateKey" "operatorAddr" "validatorsAddr" "initPowers" "deployerPrivateKey" "deploy"; do
delete_line "${file}" "${deleteName}"
done
sed -i 's/x2ethereum/x2ethereum'${name}'/g' "${file}"
pushHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayer${name}_rpc_1")
line=$(delete_line_show "${file}" "pushHost")
sed -i ''"${line}"' a pushHost="http://'"${pushHost}"':20000"' "${file}"
line=$(delete_line_show "${file}" "pushBind")
sed -i ''"${line}"' a pushBind="'"${pushHost}"':20000"' "${file}"
docker cp "${file}" "${dockerNamePrefix}_ebrelayer${name}_rpc_1":/root/relayer.toml
start_docker_ebrelayer "${dockerNamePrefix}_ebrelayer${name}_rpc_1" "/root/ebrelayer" "./x2ethereum/ebrelayer${name}.log"
done done
sleep 1 sleep 5
ebrelayeraRpcHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayera_rpc_1") ebrelayeraRpcHost=$(get_docker_addr "${dockerNamePrefix}_ebrelayera_rpc_1")
CLIA_HTTP="http://${ebrelayeraRpcHost}:9901" CLIA_HTTP="http://${ebrelayeraRpcHost}:9901"
...@@ -223,7 +232,6 @@ function EthImportKey() { ...@@ -223,7 +232,6 @@ function EthImportKey() {
# 解锁 # 解锁
local req='{"method":"Manager.SetPassphase","params":[{"Passphase":"123456hzj"}]}' local req='{"method":"Manager.SetPassphase","params":[{"Passphase":"123456hzj"}]}'
chain33_Http "$req" "${CLIA_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result"
chain33_Http "$req" "${CLIB_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result" chain33_Http "$req" "${CLIB_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result"
chain33_Http "$req" "${CLIC_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result" chain33_Http "$req" "${CLIC_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result"
chain33_Http "$req" "${CLID_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result" chain33_Http "$req" "${CLID_HTTP}" '(.error|not) and (.result != null)' "SetPassphase" ".result"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment