Commit 419e010a authored by QM's avatar QM

add make docker-compose dapp=autonomy

parent c52d3858
...@@ -126,8 +126,8 @@ function base_init() { ...@@ -126,8 +126,8 @@ function base_init() {
sed -i $sedfix 's/^genesis="12qyocayNF7.*/genesis="1G5Cjy8LuQex2fuYv3gzb7B8MxAnxLEqt3"/g' chain33.toml sed -i $sedfix 's/^genesis="12qyocayNF7.*/genesis="1G5Cjy8LuQex2fuYv3gzb7B8MxAnxLEqt3"/g' chain33.toml
#autonomy #autonomy
sed -i $sedfix 's/^useBalance=.*/useBalance=true/g' chain33.toml # sed -i $sedfix 's/^useBalance=.*/useBalance=true/g' chain33.toml
sed -i $sedfix 's/^total="16htvcBNS.*/total="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"/g' chain33.toml # sed -i $sedfix 's/^total="16htvcBNS.*/total="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"/g' chain33.toml
if [ "$DAPP" == "x2ethereum" ]; then if [ "$DAPP" == "x2ethereum" ]; then
sed -i $sedfix 's/^enableReduceLocaldb=.*/enableReduceLocaldb=false/g' chain33.toml sed -i $sedfix 's/^enableReduceLocaldb=.*/enableReduceLocaldb=false/g' chain33.toml
......
...@@ -4,6 +4,10 @@ strpwd=$(pwd) ...@@ -4,6 +4,10 @@ strpwd=$(pwd)
strcmd=${strpwd##*dapp/} strcmd=${strpwd##*dapp/}
strapp=${strcmd%/cmd*} strapp=${strcmd%/cmd*}
OUT_DIR="${1}/$strapp"
mkdir -p "${OUT_DIR}"
cp ./build/* "${OUT_DIR}"
OUT_TESTDIR="${1}/dapptest/$strapp" OUT_TESTDIR="${1}/dapptest/$strapp"
mkdir -p "${OUT_TESTDIR}" mkdir -p "${OUT_TESTDIR}"
cp ./test/* "${OUT_TESTDIR}" cp ./test/* "${OUT_TESTDIR}"
#!/usr/bin/env bash
# shellcheck disable=SC2128
# shellcheck source=/dev/null
set -x
set +e
source "./publicTest.sh"
# shellcheck disable=SC2034
{
propKey="0xfd0c4a8a1efcd221ee0f36b7d4f57d8ff843cb8bc193b39c7863332d355acafa"
propAddr="15VUiygdxMSZ3rykwe742yomp2cPJ9Tfve"
#votePrKey="1c3e6cac2f887e1ab9180e2d5772dc4ba01accb8d4df434faba097003eb35482"
#voteAddr="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"
votePrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944" #14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
voteAddr2="1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF"
votePrKey2="B0BB75BC49A787A71F4834DA18614763B53A18291ECE6B5EDEC3AD19D150C3E7" #1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF
voteAddr3="1KcCVZLSQYRUwE5EXTsAoQs9LuJW6xwfQa"
votePrKey3="2AFF1981291355322C7A6308D46A9C9BA311AA21D94F36B43FC6A6021A1334CF"
boardsAddr="1N578zmVzVR7RxLfnp7XAeDmAy499Jw3q2
, 1DZ1kL9x3rRwz7EZjcLt1kMYu6Zdp3MjGR
, 1HUYR1Mzb91m3dmsEE1vPrv7BsAHmEtVzM
, 1JHmVgchSLjszN9LAYa3gds811c4BH2J51
, 14TDcn95hxHbpySPtxGDK3aY6qDNuk5idg
, 1EpbYadEAcwbrxuh6Ph2qyJZhMY9F9CCCv
, 1NqfXb3YotDTPuShgSAhrBH28ETzCrsZx2
, 138xSezQUi9kynnAZR23kWBwHvDSRX8JDK
, 18bncBidkwRaUYPaqa9Rc58tWeRT2C5tfL
, 16z3gEvRGof8cnQRvicV8BdY54fUfnBo8A
, 1DpzRWk9SYnEvuGrFsJPFvMVRSYRHaCbtU
, 1JSQbsb1hfB6CLzwzVZZEtai4da8m59obK
, 12bRYKMsLSbN5upxoSenypWrygVuQh8rM5
, 1Ew4Cpcfh1u1EeRkYPwVc4PRaSnz4D2eph
, 156yPWN3eeZ4yPiwHRifu41FmrTVPavXQ5
, 192YKhdAkFm18KLcGumM8JeDgWrnpSdo93
, 12kXgBxsKzUmhfX5Mnv9EKRNGjQXhZzDFd
, 1HmyNGYj2xyMmQDTpcuheLKXKBe5rj3QpQ
, 1HGPrjc6H7yBzFV5yCbibvnSUGUgdDNQi3
, 19WGov4b7wLf4f8JHMRDnJsGVNMDzap38w
, 1HmRa1jAnzJ5SpJRrUWqUki6hx1u33Nbq4
, 168Sn1DXnLrZHTcAM9stD6t2P49fNuJfJ9
, 13KTf57aCkVVJYNJBXBBveiA5V811SrLcT
, 1JQwQWsShTHC4zxHzbUfYQK4kRBriUQdEe
, 1NHuKqoKe3hyv52PF8XBAyaTmJWAqA2Jbb"
# shellcheck disable=SC2206
arrayAddr=(${boardsAddr//,/ })
lenAddr=${#arrayAddr[@]}
for ((i = 0; i < lenAddr - 1; i++)); do
boards=$(echo "${boards}${arrayAddr[i]}-")
done
# shellcheck disable=SC2116
boards=$(echo "${boards}${arrayAddr[lenAddr-1]}")
boardsPrKey="fa54751118c8159ade22c253f85945a4dd2030b1cf2502eaf785d0a4f5ad7e35
,da9371ea52f1fc9d72e75dbc9836774895cd0966fd53c83f5e2c92d878903693
,ad9731261c40c68fee96f7b846408fa33d1f3dc2a27bdb3694ec8f3aa153a98b
,e902d23ad26052cec64e9ed9055853327787b3bf26eb4646a6d6c1bb516f9fcd
,b3af59368bcc6779aecb4e7fbf0cc4040f8f8329eb7632d580be4b6d3be15357
,fd9284c11707b571e347b8f44c54aae89c0810d410a7c1f9613326358c564a5e
,b013948c123986aadc2525bfe9935dd07972e14b250b938153e763f917ada8d3
,5641e3aba9ce0660665cd1a816d1b50267b5bc5f337f73e6ceed0cc5ececa7d2
,5a7631b7101252d685bf2b4ba2f11a72fb867faeaa545064ce8d0901ffc3cb17
,c9d0d2639c0c0f2b275e5bf8a2797122af110316a4e8e1fe03c39693f5028c93
,00b4e3ac1365b89d68c8d5b07b3505cd614408b0d9c8c88df564d4e072deb401
,aa139d3f16c1785b2a9171d7863bc4ee9d45115cc0fa71a14c43536c933d1659
,33f111573a4613477f8291928a9bae012a74fc9858acb22c9c65ecf7844b63f2
,44e43dd0f769bb99638b9cc3c7468225ff703f69c17e9c4751d04e45fdc6c4a0
,9a75d6c779846fe2ad4a36021fe9d08652ca69ce09ab39ad874d921a5ec41716
,f5ca6b2ad545bd4b854871b18c8d37d2fe8c3625e91be86a204c4086f28e8d0f
,89504608a03590e5a4d8c1c82b75e908b28f9963587c85b96b628d238d3a4d1a
,fa653545ae52403665fb803ef410c4d3d7f74628b6d3f92218968ad496e4f81b
,227df96a414e26e85c7d87a12296344e6a731ce73e424ba9845cb305ec963843
,64259075bf2e5a74334442f5048ceaf8427f6097e2dac99c0e463785c7768550
,3b812d92b5c365d698255f55c3f0dca027c2f89f2409c51a6297bcf3343c11e6
,cd284cd17456b73619fa609bb9e3105e8eff5d059c5e0b6eb1effbebd4d64144
,e892212221b3b58211b90194365f4662764b6d5474ef2961ef77c909e31eeed3
,9d19a2e9a440187010634f4f08ce36e2bc7b521581436a99f05568be94dc66ea
,45d4ce009e25e6d5e00d8d3a50565944b2e3604aa473680a656b242d9acbff35"
# shellcheck disable=SC2206
arrayKey=(${boardsPrKey//,/ })
changeKey="0x7503333e74190abdfa10b9e5e3a225136ea7ed1f5beeeb710b1f3933a083b2c5"
changeAddr="15MP8oQXW9UuzbfMsUyVy4ThStm9ZH7hgG"
changeKey2="0x38d12b36d8d84a80131db15f2a067e2706f8367c933c075b3b3cefa3a864ad15"
changeAddr2="1Kubv93zSatYRq6eHdBa4BkMBwtB2UpQum"
minerAddr="12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
Chain33Cli="../../chain33-cli"
proposalRuleID=""
proposalBoardID=""
proposalProjectID=""
start=0
end=0
last_header=0
boardApproveRatio=50
pubOpposeRatio=33
proposalAmount=2000000000
largeProjectAmount=100000000000000
publicPeriod=172800
pubAttendRatio=60
pubApproveRatio=65
}
function update_last_header() {
last_header=$(${Chain33Cli} block last_header | jq -r ".height")
local h=100
if [ "$#" -eq 1 ]; then
h=$1
fi
start=$((last_header + h))
end=$((start + 20 + 720))
}
function sign_and_send() {
local raw="$1"
local key="$2"
data=$(${Chain33Cli} wallet sign -d "${raw}" -k "${key}")
hash=$(${Chain33Cli} wallet send -d "${data}")
check_tx "${Chain33Cli}" "${hash}"
echo "${hash}"
}
function proposalRuleTx() {
raw=$(${Chain33Cli} autonomy proposalRule -e "${end}" -s "${start}" -l 1000000 -p 20 -r ${boardApproveRatio} -a ${pubAttendRatio} -v ${pubApproveRatio} -o ${pubOpposeRatio} -u ${publicPeriod})
sign_and_send "${raw}" "${propKey}"
proposalRuleID="${hash}"
}
# $1 status
function showRule_status() {
local status=$1
result=$(${Chain33Cli} autonomy showRule -p "${proposalRuleID}" -y 0 | jq -r ".propRules[0].status")
is_equal "${result}" "${status}"
result=$(${Chain33Cli} autonomy showRule -p "${proposalRuleID}" -y 1 -s "${status}")
is_not_equal "${result}" "ErrNotFound"
}
function check_activeRule() {
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".boardApproveRatio")
is_equal "${result}" "${boardApproveRatio}"
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".pubOpposeRatio")
is_equal "${result}" "${pubOpposeRatio}"
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".publicPeriod")
is_equal "${result}" "${publicPeriod}"
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".pubAttendRatio")
is_equal "${result}" "${pubAttendRatio}"
result=$(${Chain33Cli} autonomy showActiveRule | jq -r ".pubApproveRatio")
is_equal "${result}" "${pubApproveRatio}"
}
function testProposalRule() {
# proposal
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
update_last_header 10
proposalRuleTx
#vote
block_wait "${Chain33Cli}" 10
raw=$(${Chain33Cli} autonomy voteRule -r 1 -p "${proposalRuleID}")
sign_and_send "${raw}" "${votePrKey}"
raw=$(${Chain33Cli} autonomy voteRule -r 1 -p "${proposalRuleID}")
sign_and_send "${raw}" "${votePrKey2}"
raw=$(${Chain33Cli} autonomy voteRule -r 1 -p "${proposalRuleID}")
sign_and_send "${raw}" "${votePrKey3}"
showRule_status 4
check_activeRule
#test revoke
update_last_header
proposalRuleTx
raw=$(${Chain33Cli} autonomy revokeRule -p "${proposalRuleID}")
sign_and_send "${raw}" "${propKey}"
showRule_status 2
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function proposalBoardTx() {
raw=$(${Chain33Cli} autonomy proposalBoard -e "${end}" -s "${start}" -u 3 -b "${boards}")
sign_and_send "${raw}" "${propKey}"
proposalBoardID="${hash}"
}
# $1 status
function showBoard_status() {
local status=$1
result=$(${Chain33Cli} autonomy showBoard -p "${proposalBoardID}" -y 0 | jq -r ".propBoards[0].status")
is_equal "${result}" "${status}"
result=$(${Chain33Cli} autonomy showBoard -p "${proposalBoardID}" -y 1 -s "${status}")
is_not_equal "${result}" "ErrNotFound"
}
function check_activeBoard() {
${Chain33Cli} autonomy showActiveBoard
for ((i = 0; i < lenAddr; i++)); do
ret=$(${Chain33Cli} autonomy showActiveBoard | jq -r ".boards[$i]")
if [ "${arrayAddr[i]}" != "${ret}" ]; then
exit 1
fi
done
}
function testProposalBoard() {
#proposal
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
update_last_header 10
proposalBoardTx
#vote
block_wait "${Chain33Cli}" 10
raw=$(${Chain33Cli} autonomy voteBoard -r 1 -p "${proposalBoardID}")
sign_and_send "${raw}" "${votePrKey}"
raw=$(${Chain33Cli} autonomy voteBoard -r 1 -p "${proposalBoardID}")
sign_and_send "${raw}" "${votePrKey2}"
#query
showBoard_status 4
check_activeBoard
#test revoke
update_last_header
proposalBoardTx
raw=$(${Chain33Cli} autonomy revokeBoard -p "${proposalBoardID}")
sign_and_send "${raw}" "${propKey}"
showBoard_status 2
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function proposalProjectTx() {
raw=$(${Chain33Cli} autonomy proposalProject -e "${end}" -s "${start}" -a 1 -o "${propAddr}")
sign_and_send "${raw}" "${propKey}"
proposalProjectID="${hash}"
}
function showProject_status() {
local status=$1
result=$(${Chain33Cli} autonomy showProject -p "${proposalProjectID}" -y 0 | jq -r ".propProjects[0].status")
is_equal "${result}" "${status}"
result=$(${Chain33Cli} autonomy showProject -p "${proposalProjectID}" -y 1 -s "${status}")
is_not_equal "${result}" "ErrNotFound"
}
function testProposalProject() {
# proposal
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
update_last_header 10
proposalProjectTx
#vote
block_wait "${Chain33Cli}" 10
for ((i = 0; i < 13; i++)); do
raw=$(${Chain33Cli} autonomy voteProject -r 1 -p "${proposalProjectID}")
sign_and_send "${raw}" "${arrayKey[$i]}"
done
#query
showProject_status 5
#test revoke
update_last_header
proposalProjectTx
raw=$(${Chain33Cli} autonomy revokeProject -p "${proposalProjectID}")
sign_and_send "${raw}" "${propKey}"
showProject_status 2
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function proposalChangeTx() {
local addr=$1
local key=$2
raw=$(${Chain33Cli} autonomy proposalChange -e "${end}" -s "${start}" -c "${addr}")
sign_and_send "${raw}" "${key}"
proposalChangeID="${hash}"
}
function showChange_status() {
local status=$1
result=$(${Chain33Cli} autonomy showChange -p "${proposalChangeID}" -y 0 | jq -r ".propChanges[0].status")
is_equal "${result}" "${status}"
result=$(${Chain33Cli} autonomy showChange -p "${proposalChangeID}" -y 1 -s "${status}")
is_not_equal "${result}" "ErrNotFound"
}
function testProposalChange() {
# proposal
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
#init
autonomyAddr=$(${Chain33Cli} exec addr -e autonomy)
hash=$(${Chain33Cli} send coins transfer -a 20 -n test -t "${autonomyAddr}" -k "${arrayKey[20]}")
check_tx "${Chain33Cli}" "${hash}"
hash=$(${Chain33Cli} send coins transfer -a 20 -n test -t "${autonomyAddr}" -k "${arrayKey[21]}")
check_tx "${Chain33Cli}" "${hash}"
update_last_header 10
proposalChangeTx "${changeAddr}" "${arrayKey[20]}"
ret=$(${Chain33Cli} autonomy showActiveBoard | jq -r ".boards[20]")
if [ "${arrayAddr[20]}" != "${ret}" ]; then
exit 1
fi
#vote
block_wait "${Chain33Cli}" 10
for ((i = 0; i < 13; i++)); do
raw=$(${Chain33Cli} autonomy voteChange -r 1 -p "${proposalChangeID}")
sign_and_send "${raw}" "${arrayKey[$i]}"
done
ret=$(${Chain33Cli} autonomy showActiveBoard | jq -r ".boards[20]")
if [ "${changeAddr}" != "${ret}" ]; then
exit 1
fi
#query
showChange_status 4
#test revoke
update_last_header
proposalChangeTx "${changeAddr2}" "${arrayKey[21]}"
raw=$(${Chain33Cli} autonomy revokeChange -p "${proposalChangeID}")
sign_and_send "${raw}" "${arrayKey[21]}"
showChange_status 2
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function testProposalTerminate() {
#test terminate
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
update_last_header 10
proposalRuleTx
update_last_header 10
proposalBoardTx
update_last_header 10
proposalProjectTx
update_last_header 10
proposalChangeTx "${changeAddr2}" "${arrayKey[21]}"
block_wait "${Chain33Cli}" 850
raw=$(${Chain33Cli} autonomy terminateRule -p "${proposalRuleID}")
sign_and_send "${raw}" "${propKey}"
showRule_status 4
raw=$(${Chain33Cli} autonomy terminateBoard -p "${proposalBoardID}")
sign_and_send "${raw}" "${propKey}"
showBoard_status 4
raw=$(${Chain33Cli} autonomy terminateProject -p "${proposalProjectID}")
sign_and_send "${raw}" "${propKey}"
showProject_status 5
raw=$(${Chain33Cli} autonomy terminateChange -p "${proposalChangeID}")
sign_and_send "${raw}" "${arrayKey[21]}"
showChange_status 4
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function mainTest() {
# shellcheck disable=SC2154
docker_chain33_ip=$(get_docker_addr "${dockerNamePrefix}_chain33_1")
Chain33Cli="./chain33-cli --rpc_laddr http://${docker_chain33_ip}:8801"
StartChain33
testProposalRule
testProposalBoard
testProposalProject
testProposalChange
testProposalTerminate
}
#Chain33Cli="../../../../../build/chain33-cli --rpc_laddr http://172.20.0.2:8801"
#testProposalProject
#testProposalChange
#testProposalTerminate
#testProposalChange
#!/usr/bin/env bash
# shellcheck disable=SC2128
# shellcheck source=/dev/null
# shellcheck disable=SC2155
set -x
set -e
#color
RED='\033[1;31m'
GRE='\033[1;32m'
NOC='\033[0m'
# 出错退出前拷贝日志文件
function exit_cp_file() {
exit 1
}
# $1 dockerName
function get_docker_addr() {
local dockerAddr=$(docker inspect "${1}" | jq ".[].NetworkSettings.Networks" | grep "IPAddress" | awk '{ print $2}' | sed 's/\"//g' | sed 's/,//g')
echo "${dockerAddr}"
}
#function block_wait() {
# set +x
# set +x
# local block=$1
# for((i=1;i<=block;i++));do
# hash=$(${Chain33Cli} send coins transfer -a 0.001 -n test -t "${propAddr}" -k CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944)
# check_tx "${Chain33Cli}" "${hash}"
# echo "这是第 $i 次调用";
# done;
# set -x
# set -x
#}
# 杀死进程ebrelayer 进程 $1进程名称
function kill_ebrelayer() {
# shellcheck disable=SC2009
ps -ef | grep "${1}"
# shellcheck disable=SC2009
pid=$(ps -ef | grep "${1}" | grep -v 'grep' | awk '{print $2}' | xargs)
if [ "${pid}" == "" ]; then
echo "not find ${1} pid"
return
fi
kill -9 "${pid}"
sleep 1
# shellcheck disable=SC2009
pid=$(ps -ef | grep "${1}" | grep -v 'grep' | awk '{print $2}' | xargs)
if [ "${pid}" != "" ]; then
echo "kill ${1} failed"
kill -9 "${pid}"
fi
sleep 1
}
# 判断结果是否正确
function cli_ret() {
set +x
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
ok=$(echo "${1}" | jq -r .isOK)
if [[ ${ok} != "true" ]]; then
echo -e "${RED}failed to ${2}${NOC}"
exit_cp_file
fi
local jqMsg=".msg"
if [[ $# -ge 3 ]]; then
jqMsg="${3}"
fi
msg=$(echo "${1}" | jq -r "${jqMsg}")
if [[ $# -eq 4 ]]; then
if [ "$(echo "$msg < $4" | bc)" -eq 1 ] || [ "$(echo "$msg > $4" | bc)" -eq 1 ]; then
echo -e "${RED}The balance is not correct${NOC}"
exit_cp_file
fi
fi
set -x
echo "${msg}"
}
# 判断 chain33 金额是否正确
function balance_ret() {
set +x
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
local balance=$(echo "${1}" | jq -r ".balance")
if [ "$(echo "$balance < $2" | bc)" -eq 1 ] || [ "$(echo "$balance > $2" | bc)" -eq 1 ]; then
echo -e "${RED}The balance is not correct${NOC}"
exit_cp_file
fi
set -x
echo "${balance}"
}
# 查询关键字所在行然后删除 ${1}文件名称 ${2}关键字
function delete_line() {
line=$(cat -n "${1}" | grep "${2}" | awk '{print $1}' | xargs | awk '{print $1}')
if [ "${line}" ]; then
sed -i "${line}"'d' "${1}" # 删除行
fi
}
# 查询关键字所在行然后删除 ${1}文件名称 ${2}关键字
function delete_line_show() {
local line=$(cat -n "${1}" | grep "${2}" | awk '{print $1}' | xargs | awk '{print $1}')
if [ "${line}" ]; then
sed -i "${line}"'d' "${1}" # 删除行
line=$((line - 1))
fi
echo "${line}"
}
# chain33 区块等待 $1:cli 路径 $2:等待高度
function block_wait() {
set +x
local CLI=${1}
if [[ $# -lt 1 ]]; then
echo -e "${RED}wrong block_wait parameter${NOC}"
exit_cp_file
fi
local cur_height=$(${CLI} block last_header | jq ".height")
local expect=$((cur_height + ${2}))
local count=0
while true; do
new_height=$(${CLI} block last_header | jq ".height")
if [[ ${new_height} -ge ${expect} ]]; then
break
fi
count=$((count + 1))
sleep 1
done
count=$((count + 1))
set -x
echo -e "${GRE}chain33 wait new block $count s, cur height=$expect,old=$cur_height${NOC}"
}
# 检查交易是否执行成功 $1:cli 路径 $2:交易hash
function check_tx() {
set +x
local CLI=${1}
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong check_tx parameters${NOC}"
exit_cp_file
fi
if [[ ${2} == "" ]]; then
echo -e "${RED}wrong check_tx txHash is empty${NOC}"
exit_cp_file
fi
local count=0
while true; do
ty=$(${CLI} tx query -s "${2}" | jq .receipt.ty)
if [[ ${ty} != "" ]]; then
break
fi
count=$((count + 1))
sleep 1
if [[ ${count} -ge 100 ]]; then
echo "chain33 query tx for too long"
break
fi
done
set -x
ty=$(${CLI} tx query -s "${2}" | jq .receipt.ty)
if [[ ${ty} != 2 ]]; then
echo -e "${RED}check tx error, hash is ${2}${NOC}"
exit_cp_file
fi
}
function check_number() {
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong check number parameters${NOC}"
exit_cp_file
fi
if [ "$(echo "$1 < $2" | bc)" -eq 1 ] || [ "$(echo "$1 > $2" | bc)" -eq 1 ]; then
echo -e "${RED}error number, expect ${1}, get ${2}${NOC}"
exit_cp_file
fi
}
# 检查地址是否匹配 $1返回结果 $2匹配地址
function check_addr() {
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong check number parameters${NOC}"
exit_cp_file
fi
addr=$(echo "${1}" | jq -r ".acc.addr")
if [[ ${addr} != "${2}" ]]; then
echo -e "${RED}error addr, expect ${1}, get ${2}${NOC}"
exit_cp_file
fi
}
# 判断结果 $1 和 $2 是否相等
function is_equal() {
set +x
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
if [[ $1 != "$2" ]]; then
echo -e "${RED}$1 != ${2}${NOC}"
exit_cp_file
fi
set -x
}
# 判断结果 $1 和 $2 是否不相等
function is_not_equal() {
set +x
if [[ $# -lt 2 ]]; then
echo -e "${RED}wrong parameter${NOC}"
exit_cp_file
fi
if [[ $1 == "$2" ]]; then
echo -e "${RED}$1 == ${2}${NOC}"
exit_cp_file
fi
set -x
}
# import_key and transfer $1 key, $2 label, $3 addr, $4 transfer amount
function import_addr() {
local key="$1"
local label="$2"
local addr="$3"
# shellcheck disable=SC2154
result=$(${Chain33Cli} account import_key -k "${key}" -l "${label}")
check_addr "${result}" "${addr}"
if [ "$#" -eq 4 ]; then
# shellcheck disable=SC2154
hash=$(${Chain33Cli} send coins transfer -a "$4" -n test -t "${addr}" -k "${minerAddr}")
check_tx "${Chain33Cli}" "${hash}"
fi
}
function InitChain33Account() {
# shellcheck disable=SC2154
import_addr "${propKey}" "prop" "${propAddr}" 1000
# shellcheck disable=SC2154
import_addr "${votePrKey2}" "vote2" "${voteAddr2}" 100
# shellcheck disable=SC2154
import_addr "${votePrKey3}" "vote3" "${voteAddr3}" 100
# import_addr "${votePrKey}" "vote" "${voteAddr}" 3200
# shellcheck disable=SC2154
import_addr "${changeKey}" "changeTest" "${changeAddr}" 10
autonomyAddr=$(${Chain33Cli} exec addr -e autonomy)
# ticketAddr=$(${Chain33Cli} exec addr -e ticket)
hash=$(${Chain33Cli} send coins transfer -a 900 -n test -t "${autonomyAddr}" -k "${propKey}")
check_tx "${Chain33Cli}" "${hash}"
# hash=$(${Chain33Cli} send coins transfer -a 3100 -n test -t "${ticketAddr}" -k "${votePrKey}")
# check_tx "${Chain33Cli}" "${hash}"
# shellcheck disable=SC2154
# hash=$(${Chain33Cli} send coins transfer -a 10 -n test -t "${voteAddr2}" -k "${minerAddr}")
# check_tx "${Chain33Cli}" "${hash}"
local count=0
# shellcheck disable=SC2154
# shellcheck disable=SC2068
for key in ${arrayKey[@]}
do
import_addr "${key}" "board${count}" "${arrayAddr[count]}" 100
count=$((count + 1))
done
}
# chian33 初始化准备
function InitChain33() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
# init
# ${Chain33Cli} seed save -p 1314fuzamei -s "tortoise main civil member grace happy century convince father cage beach hip maid merry rib"
# ${Chain33Cli} wallet unlock -p 1314fuzamei -t 0
# ${Chain33Cli} account import_key -k CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944 -l returnAddr
InitChain33Account
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
}
function StartChain33() {
# kill_ebrelayer chain33
# sleep 2
#
# # delete chain33 datadir
# rm ../../datadir ../../logs -rf
#
# nohup ../../chain33 -f ./ci/autonomy/test.toml >chain33log.log 2>&1 &
#
# sleep 1
InitChain33
}
\ No newline at end of file
#!/usr/bin/env bash
# shellcheck disable=SC2128
# shellcheck source=/dev/null
source "./autonomyTest.sh"
function autonomy() {
if [ "${2}" == "test" ]; then
echo "========================== autonomy test =========================="
set +e
set -x
mainTest
echo "========================== autonomy test end =========================="
fi
}
...@@ -8,13 +8,20 @@ HTTP="" ...@@ -8,13 +8,20 @@ HTTP=""
EXECTOR="" EXECTOR=""
EXECTOR_ADDR="" EXECTOR_ADDR=""
TICKET_EXECTOR=""
TICKET_ADDR=""
propKey="0xfd0c4a8a1efcd221ee0f36b7d4f57d8ff843cb8bc193b39c7863332d355acafa" propKey="0xfd0c4a8a1efcd221ee0f36b7d4f57d8ff843cb8bc193b39c7863332d355acafa"
propAddr="15VUiygdxMSZ3rykwe742yomp2cPJ9Tfve" propAddr="15VUiygdxMSZ3rykwe742yomp2cPJ9Tfve"
votePrKey="1c3e6cac2f887e1ab9180e2d5772dc4ba01accb8d4df434faba097003eb35482" #votePrKey="1c3e6cac2f887e1ab9180e2d5772dc4ba01accb8d4df434faba097003eb35482"
voteAddr="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx" #voteAddr="1Q9sQwothzM1gKSzkVZ8Dt1tqKX1uzSagx"
voteAddr="14KEKbYtKKQm4wMthSK9J4La4nAiidGozt"
votePrKey="CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944" #14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
voteAddr2="1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF"
votePrKey2="B0BB75BC49A787A71F4834DA18614763B53A18291ECE6B5EDEC3AD19D150C3E7" #1EbDHAXpoiewjPLX9uqoz38HsKqMXayZrF
voteAddr3="1KcCVZLSQYRUwE5EXTsAoQs9LuJW6xwfQa"
votePrKey3="2AFF1981291355322C7A6308D46A9C9BA311AA21D94F36B43FC6A6021A1334CF"
proposalRuleID="" proposalRuleID=""
proposalBoardID="" proposalBoardID=""
...@@ -100,11 +107,7 @@ boards=' ...@@ -100,11 +107,7 @@ boards='
"'${boardsAddr[19]}'", "'${boardsAddr[19]}'",
"'${boardsAddr[20]}'" "'${boardsAddr[20]}'"
' '
chain33_para_init() {
ip=$1
chain33_ImportPrivkey "${votePrKey}" "${voteAddr}" "autonomytest" "${ip}"
chain33_SendToAddress "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv" "$voteAddr" 630000000000 "${ip}"
}
chain33_applyCoinsNOLimit() { chain33_applyCoinsNOLimit() {
echo "chain33_getMainChainCoins" echo "chain33_getMainChainCoins"
if [ "$#" -lt 3 ]; then if [ "$#" -lt 3 ]; then
...@@ -117,6 +120,7 @@ chain33_applyCoinsNOLimit() { ...@@ -117,6 +120,7 @@ chain33_applyCoinsNOLimit() {
local poolAddr="1PcGKYYoLn1PLLJJodc1UpgWGeFAQasAkx" local poolAddr="1PcGKYYoLn1PLLJJodc1UpgWGeFAQasAkx"
chain33_SendToAddress "${poolAddr}" "${targetAddr}" "$count" "${ip}" chain33_SendToAddress "${poolAddr}" "${targetAddr}" "$count" "${ip}"
chain33_QueryBalance "${targetAddr}" "${ip}"
} }
handleBoards() { handleBoards() {
...@@ -220,6 +224,7 @@ testProposalBoard() { ...@@ -220,6 +224,7 @@ testProposalBoard() {
#vote #vote
chain33_BlockWait 100 "$HTTP" chain33_BlockWait 100 "$HTTP"
voteBoardTx "${proposalBoardID}" "${votePrKey}" voteBoardTx "${proposalBoardID}" "${votePrKey}"
voteBoardTx "${proposalBoardID}" "${votePrKey2}"
#query #query
queryProposal "${proposalBoardID}" "GetProposalBoard" queryProposal "${proposalBoardID}" "GetProposalBoard"
listProposal 4 "ListProposalBoard" listProposal 4 "ListProposalBoard"
...@@ -276,6 +281,8 @@ testProposalRule() { ...@@ -276,6 +281,8 @@ testProposalRule() {
#vote #vote
chain33_BlockWait 100 "$HTTP" chain33_BlockWait 100 "$HTTP"
voteRuleTx "${proposalRuleID}" ${votePrKey} voteRuleTx "${proposalRuleID}" ${votePrKey}
voteRuleTx "${proposalRuleID}" "${votePrKey2}"
voteRuleTx "${proposalRuleID}" "${votePrKey3}"
#query #query
queryProposal "${proposalRuleID}" "GetProposalRule" queryProposal "${proposalRuleID}" "GetProposalRule"
listProposal 4 "ListProposalRule" listProposal 4 "ListProposalRule"
...@@ -457,45 +464,43 @@ init() { ...@@ -457,45 +464,43 @@ init() {
if [ "$ispara" == true ]; then if [ "$ispara" == true ]; then
EXECTOR_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"user.p.para.autonomy"}]}' "${HTTP}" | jq -r ".result") EXECTOR_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"user.p.para.autonomy"}]}' "${HTTP}" | jq -r ".result")
EXECTOR="user.p.para.autonomy" EXECTOR="user.p.para.autonomy"
TICKET_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"user.p.para.ticket"}]}' "${HTTP}" | jq -r ".result")
TICKET_EXECTOR="user.p.para.ticket"
else else
EXECTOR_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"autonomy"}]}' "${HTTP}" | jq -r ".result") EXECTOR_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"autonomy"}]}' "${HTTP}" | jq -r ".result")
EXECTOR="autonomy" EXECTOR="autonomy"
TICKET_ADDR=$(curl -ksd '{"method":"Chain33.ConvertExectoAddr","params":[{"execname":"ticket"}]}' "${HTTP}" | jq -r ".result")
TICKET_EXECTOR="ticket"
fi fi
echo "EXECTOR_ADDR=$EXECTOR_ADDR" echo "EXECTOR_ADDR=$EXECTOR_ADDR"
local main_ip=${HTTP//8901/8801} local main_ip=${HTTP//8901/8801}
chain33_ImportPrivkey "${propKey}" "${propAddr}" "prop" "${main_ip}" chain33_ImportPrivkey "${propKey}" "${propAddr}" "prop" "${main_ip}"
chain33_ImportPrivkey "${votePrKey2}" "${voteAddr2}" "voteAddr2" "${main_ip}"
chain33_ImportPrivkey "${votePrKey3}" "${voteAddr3}" "voteAddr3" "${main_ip}"
if [ "$ispara" == false ]; then if [ "$ispara" == false ]; then
chain33_applyCoinsNOLimit "$propAddr" 100000000000 "${main_ip}" chain33_applyCoinsNOLimit "$propAddr" 100000000000 "${main_ip}"
chain33_QueryBalance "${propAddr}" "$main_ip" chain33_applyCoinsNOLimit "${voteAddr}" 10000000000 "${main_ip}"
chain33_applyCoinsNOLimit "${voteAddr2}" 10000000000 "${main_ip}"
chain33_applyCoinsNOLimit "${voteAddr3}" 10000000000 "${main_ip}"
else else
chain33_applyCoins "$propAddr" 1000000000 "${main_ip}" chain33_applyCoinsNOLimit "$propAddr" 1000000000 "${main_ip}"
chain33_QueryBalance "${propAddr}" "$main_ip"
#主链投票账户转帐 #主链投票账户转帐
handleBoards "$main_ip" handleBoards "$main_ip"
local para_ip="${HTTP}" local para_ip="${HTTP}"
chain33_ImportPrivkey "${propKey}" "${propAddr}" "prop" "$para_ip" chain33_ImportPrivkey "${propKey}" "${propAddr}" "prop" "$para_ip"
chain33_ImportPrivkey "${votePrKey2}" "${voteAddr2}" "voteAddr2" "${para_ip}"
chain33_ImportPrivkey "${votePrKey3}" "${voteAddr3}" "voteAddr3" "${para_ip}"
#平行链中账户转帐 #平行链中账户转帐
chain33_applyCoinsNOLimit "$propAddr" 100000000000 "$para_ip" chain33_applyCoinsNOLimit "$propAddr" 100000000000 "$para_ip"
chain33_QueryBalance "$propAddr" "$para_ip" chain33_applyCoinsNOLimit "${voteAddr}" 10000000000 "${para_ip}"
chain33_para_init "$para_ip" chain33_applyCoinsNOLimit "${voteAddr2}" 10000000000 "${para_ip}"
chain33_applyCoinsNOLimit "${voteAddr3}" 10000000000 "${para_ip}"
fi fi
# 往合约中转 # 往合约中转
chain33_SendToAddress "$propAddr" "$EXECTOR_ADDR" 90000000000 "$HTTP" chain33_SendToAddress "$propAddr" "$EXECTOR_ADDR" 90000000000 "$HTTP"
chain33_QueryExecBalance "$propAddr" "$EXECTOR" "$HTTP" chain33_QueryExecBalance "$propAddr" "$EXECTOR" "$HTTP"
# 往ticket合约中转帐
chain33_SendToAddress "$voteAddr" "$TICKET_ADDR" 300100000000 "$HTTP"
chain33_QueryExecBalance "$voteAddr" "$TICKET_EXECTOR" "$HTTP"
# 往投票账户中转帐 # 往投票账户中转帐
handleBoards "$HTTP" handleBoards "$HTTP"
} }
......
...@@ -88,7 +88,7 @@ func addProposalBoardFlags(cmd *cobra.Command) { ...@@ -88,7 +88,7 @@ func addProposalBoardFlags(cmd *cobra.Command) {
cmd.Flags().Int32P("month", "m", 0, "month") cmd.Flags().Int32P("month", "m", 0, "month")
cmd.Flags().Int32P("day", "d", 0, "day") cmd.Flags().Int32P("day", "d", 0, "day")
cmd.Flags().BoolP("update", "u", false, "replace or update boards, default is replace(false); update(true)") cmd.Flags().Int32P("update", "u", 1, "addr delete or replace boards, 1:add, 2:delete, 3:replace all, default is 1")
cmd.Flags().Int64P("startBlock", "s", 0, "start block height") cmd.Flags().Int64P("startBlock", "s", 0, "start block height")
cmd.MarkFlagRequired("startBlock") cmd.MarkFlagRequired("startBlock")
cmd.Flags().Int64P("endBlock", "e", 0, "end block height") cmd.Flags().Int64P("endBlock", "e", 0, "end block height")
...@@ -106,7 +106,7 @@ func proposalBoard(cmd *cobra.Command, args []string) { ...@@ -106,7 +106,7 @@ func proposalBoard(cmd *cobra.Command, args []string) {
month, _ := cmd.Flags().GetInt32("month") month, _ := cmd.Flags().GetInt32("month")
day, _ := cmd.Flags().GetInt32("day") day, _ := cmd.Flags().GetInt32("day")
update, _ := cmd.Flags().GetBool("update") update, _ := cmd.Flags().GetInt32("update")
startBlock, _ := cmd.Flags().GetInt64("startBlock") startBlock, _ := cmd.Flags().GetInt64("startBlock")
endBlock, _ := cmd.Flags().GetInt64("endBlock") endBlock, _ := cmd.Flags().GetInt64("endBlock")
boardstr, _ := cmd.Flags().GetString("boards") boardstr, _ := cmd.Flags().GetString("boards")
...@@ -117,7 +117,7 @@ func proposalBoard(cmd *cobra.Command, args []string) { ...@@ -117,7 +117,7 @@ func proposalBoard(cmd *cobra.Command, args []string) {
Year: year, Year: year,
Month: month, Month: month,
Day: day, Day: day,
Update: update, BoardUpdate: auty.BoardUpdate(update),
Boards: boards, Boards: boards,
StartBlockHeight: startBlock, StartBlockHeight: startBlock,
EndBlockHeight: endBlock, EndBlockHeight: endBlock,
......
...@@ -54,7 +54,7 @@ func addProposalProjectFlags(cmd *cobra.Command) { ...@@ -54,7 +54,7 @@ func addProposalProjectFlags(cmd *cobra.Command) {
cmd.Flags().Int64P("endBlock", "e", 0, "end block height") cmd.Flags().Int64P("endBlock", "e", 0, "end block height")
cmd.MarkFlagRequired("endBlock") cmd.MarkFlagRequired("endBlock")
cmd.Flags().Int32P("projectNeedBlockNum", "n", 0, "project complete need time(unit is block number)") cmd.Flags().Int32P("projectNeedBlockNum", "n", 0, "project complete need time(unit is block number)")
cmd.MarkFlagRequired("projectNeedBlockNum") //cmd.MarkFlagRequired("projectNeedBlockNum")
} }
func proposalProject(cmd *cobra.Command, args []string) { func proposalProject(cmd *cobra.Command, args []string) {
......
...@@ -15,6 +15,7 @@ import ( ...@@ -15,6 +15,7 @@ import (
type subConfig struct { type subConfig struct {
Total string `json:"total"` Total string `json:"total"`
UseBalance bool `json:"useBalance"` UseBalance bool `json:"useBalance"`
Execer string `json:"execer"`
} }
var ( var (
......
...@@ -499,6 +499,7 @@ func (a *action) getTotalVotes(height int64) (int32, error) { ...@@ -499,6 +499,7 @@ func (a *action) getTotalVotes(height int64) (int32, error) {
addr = subcfg.Total addr = subcfg.Total
} }
voteAccount, err := a.getStartHeightVoteAccount(addr, "", height) voteAccount, err := a.getStartHeightVoteAccount(addr, "", height)
if err != nil { if err != nil {
return 0, err return 0, err
} }
...@@ -539,7 +540,11 @@ func (a *action) batchGetAddressVotes(addrs []string, height int64) (int32, erro ...@@ -539,7 +540,11 @@ func (a *action) batchGetAddressVotes(addrs []string, height int64) (int32, erro
} }
func (a *action) getAddressVotes(addr string, height int64) (int32, error) { func (a *action) getAddressVotes(addr string, height int64) (int32, error) {
voteAccount, err := a.getStartHeightVoteAccount(addr, ticketName, height) execer := ticketName
if subcfg.Execer != "" {
execer = subcfg.Execer
}
voteAccount, err := a.getStartHeightVoteAccount(addr, execer, height)
if err != nil { if err != nil {
return 0, err return 0, err
} }
......
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