You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
700 lines
24 KiB
700 lines
24 KiB
#!/usr/bin/env bash
|
|
# This Script is for Testing the API functionality on both local and betanet.
|
|
# -l to run localnet, -b to run betanet(mutually exclusive)
|
|
# -v to see returns from each request
|
|
# Right now only tests whether a response is recieved
|
|
# You must have properly cloned into the dapp-examples repo and have installed nodejs
|
|
VERBOSE="FALSE"
|
|
TESTS_RAN=0
|
|
TESTS_PASSED=0
|
|
|
|
red=`tput setaf 1`
|
|
green=`tput setaf 2`
|
|
blue=`tput setaf 6`
|
|
white=`tput sgr0`
|
|
yellow=`tput setaf 11`
|
|
reset=`tput sgr0`
|
|
|
|
function response_test() {
|
|
if [ "$1" != "" ]; then
|
|
echo "${green}RESPONSE RECIEVED${reset}"
|
|
return 1
|
|
else
|
|
echo "${red}NO RESPONSE${reset}"
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
function isHashTest() {
|
|
if [ "$TRANSACTION" != "null" ]; then
|
|
if [[ "$TRANSACTION_HASH" =~ ^0x[0-9a-f]{64}$ ]]; then
|
|
echo ${green}TRANSACTION HASH VALID${reset}
|
|
echo
|
|
return 1
|
|
fi
|
|
fi
|
|
echo ${red}TRANSACTION HASH INVALID${reset}
|
|
return 0
|
|
}
|
|
|
|
function isHexTest() {
|
|
if [ "$1" != "null" ]; then
|
|
if [[ "$1" =~ ^0x[0-9a-f]+$ ]]; then
|
|
echo ${green}VALID HEX RECIEVED${reset}
|
|
echo
|
|
return 1
|
|
fi
|
|
fi
|
|
echo ${red}INVALID HEX RECIEVED${reset}
|
|
return 0
|
|
}
|
|
|
|
### SETUP COMMANDLINE FLAGS ###
|
|
while getopts "lbvp" OPTION; do
|
|
case $OPTION in
|
|
b)
|
|
NETWORK="betanet"
|
|
declare -A PORT=( [POST]="http://s0.b.hmny.io:9500/" [GET]="http://e0.b.hmny.io:5000/" )
|
|
BLOCK_0_HASH=$(curl --location --request POST "http://l0.b.hmny.io:9500" \
|
|
--header "Content-Type: application/json" \
|
|
--data "{\"jsonrpc\":\"2.0\",\"method\":\"hmy_getBlockByNumber\",\"params\":[\"0x1\", true],\"id\":1}" | jq -r '.result.hash')
|
|
echo "BLOCK0HASH:"
|
|
echo "$BLOCK_0_HASH"
|
|
|
|
SIGNED_RAW_TRANSACTION=$(node ../dapp-examples/nodejs/apiTestSign.js)
|
|
echo "RAWTX"
|
|
echo "$SIGNED_RAW_TRANSACTION"
|
|
TRANSACTION_HASH=$(curl --location --request POST "http://l0.b.hmny.io:9500" \
|
|
--header "Content-Type: application/json" \
|
|
--data "{\"jsonrpc\":\"2.0\",\"method\":\"hmy_sendRawTransaction\",\"params\":[\""$SIGNED_RAW_TRANSACTION"\"],\"id\":1}" | jq -r '.result')
|
|
echo "TRANSACTION_HASH:"
|
|
echo $TRANSACTION_HASH
|
|
sleep 20s
|
|
TRANSACTION=$(curl --location --request POST "http://l0.b.hmny.io:9500" \
|
|
--header "Content-Type: application/json" \
|
|
--data "{\"jsonrpc\":\"2.0\",\"method\":\"hmy_getTransactionByHash\",\"params\":[\"$TRANSACTION_HASH\"],\"id\":1}")
|
|
|
|
echo "TRANSACTION:"
|
|
echo "$TRANSACTION"
|
|
|
|
TRANSACTION_BLOCK_HASH=$(echo $TRANSACTION | jq -r '.result.blockHash')
|
|
TRANSACTION_BLOCK_NUMBER=$(echo $TRANSACTION | jq -r '.result.blockNumber')
|
|
TRANSACTION_INDEX=$(echo $TRANSACTION | jq -r '.result.transactionIndex') #Needs to be get transaction Index
|
|
|
|
|
|
TRANSACTION_BLOCK_ID=$(( $TRANSACTION_BLOCK_NUMBER ))
|
|
echo TRANSACTION_BLOCK_ID
|
|
echo $TRANSACTION_BLOCK_ID
|
|
echo "TRANSACTION_BLOCK_HASH:"
|
|
echo $TRANSACTION_BLOCK_HASH
|
|
|
|
echo "TRANSACTION_BLOCK_NUMBER:"
|
|
echo "$TRANSACTION_BLOCK_NUMBER"
|
|
|
|
echo "TRANSACTION_INDEX:"
|
|
echo $TRANSACTION_INDEX
|
|
|
|
;;
|
|
l)
|
|
NETWORK="localnet"
|
|
declare -A PORT=( [POST]="localhost:9500/" [GET]="localhost:5099/" )
|
|
BLOCK_0_HASH=$(curl -s --location --request POST "localhost:9500" \
|
|
--header "Content-Type: application/json" \
|
|
--data "{\"jsonrpc\":\"2.0\",\"method\":\"hmy_getBlockByNumber\",\"params\":[\"0x1\", true],\"id\":1}" | jq -r '.result.hash')
|
|
|
|
echo "BLOCK0HASH:"
|
|
echo "$BLOCK_0_HASH"
|
|
|
|
SIGNED_RAW_TRANSACTION=$(node ../dapp-examples/nodejs/apiTestSign.js localnet)
|
|
echo "RAWTX"
|
|
echo "$SIGNED_RAW_TRANSACTION"
|
|
TRANSACTION_HASH=$(curl --location --request POST "localhost:9500" \
|
|
--header "Content-Type: application/json" \
|
|
--data "{\"jsonrpc\":\"2.0\",\"method\":\"hmy_sendRawTransaction\",\"params\":[\""$SIGNED_RAW_TRANSACTION"\"],\"id\":1}" | jq -r '.result')
|
|
echo "TRANSACTION_HASH:"
|
|
echo $TRANSACTION_HASH
|
|
sleep 20s
|
|
TRANSACTION=$(curl --location --request POST "http://localhost:9500" \
|
|
--header "Content-Type: application/json" \
|
|
--data "{\"jsonrpc\":\"2.0\",\"method\":\"hmy_getTransactionByHash\",\"params\":[\"$TRANSACTION_HASH\"],\"id\":1}")
|
|
|
|
echo "TRANSACTION:"
|
|
echo "$TRANSACTION"
|
|
|
|
TRANSACTION_BLOCK_HASH=$(echo $TRANSACTION | jq -r '.result.blockHash')
|
|
TRANSACTION_BLOCK_NUMBER=$(echo $TRANSACTION | jq -r '.result.blockNumber')
|
|
TRANSACTION_INDEX=$(echo $TRANSACTION | jq -r '.result.transactionIndex')
|
|
|
|
TRANSACTION_BLOCK_ID=$(( $TRANSACTION_BLOCK_NUMBER ))
|
|
echo TRANSACTION_BLOCK_ID
|
|
echo $TRANSACTION_BLOCK_ID
|
|
echo "TRANSACTION_BLOCK_HASH:"
|
|
echo $TRANSACTION_BLOCK_HASH
|
|
|
|
echo "TRANSACTION_BLOCK_NUMBER:"
|
|
echo "$TRANSACTION_BLOCK_NUMBER"
|
|
|
|
echo "TRANSACTION_INDEX:"
|
|
echo $TRANSACTION_INDEX
|
|
;;
|
|
v)
|
|
VERBOSE="TRUE"
|
|
;;
|
|
p)
|
|
PRETTY="TRUE"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ $OPTIND -eq 1 ]; then echo "No options were passed, -l for localnet, -b for betanet, -v to view logs of either"; exit; fi
|
|
|
|
declare -A GETDATA=( [GET_blocks]="blocks?from=$TRANSACTION_BLOCK_ID&to=$TRANSACTION_BLOCK_ID" [GET_tx]="tx?id=0" [GET_address]="address?id=0" [GET_node-count]="node-count" [GET_shard]="shard?id=0" [GET_committee]="committee?shard_id=0&epoch=0" )
|
|
declare -A POSTDATA
|
|
|
|
if [ "$NETWORK" == "localnet" ]; then
|
|
POSTDATA[hmy_getBlockByHash]="hmy_getBlockByHash\",\"params\":[\"$TRANSACTION_BLOCK_HASH\", true]"
|
|
POSTDATA[hmy_getBlockByNumber]="hmy_getBlockByNumber\",\"params\":[\"$TRANSACTION_BLOCK_NUMBER\", true]"
|
|
POSTDATA[hmy_getBlockTransactionCountByHash]="hmy_getBlockTransactionCountByHash\",\"params\":[\"$TRANSACTION_BLOCK_HASH\"]"
|
|
POSTDATA[hmy_getBlockTransactionCountByNumber]="hmy_getBlockTransactionCountByNumber\",\"params\":[\"$TRANSACTION_BLOCK_NUMBER\"]"
|
|
POSTDATA[hmy_getCode]="hmy_getCode\",\"params\":[\"0x08AE1abFE01aEA60a47663bCe0794eCCD5763c19\", \"latest\"]"
|
|
POSTDATA[hmy_getTransactionByBlockHashAndIndex]="hmy_getTransactionByBlockHashAndIndex\",\"params\":[\"$TRANSACTION_BLOCK_HASH\", \"$TRANSACTION_INDEX\"]"
|
|
POSTDATA[hmy_getTransactionByBlockNumberAndIndex]="hmy_getTransactionByBlockNumberAndIndex\",\"params\":[\"$TRANSACTION_BLOCK_NUMBER\", \"$TRANSACTION_INDEX\"]"
|
|
POSTDATA[hmy_getTransactionByHash]="hmy_getTransactionByHash\",\"params\":[\"$TRANSACTION_HASH\"]"
|
|
POSTDATA[hmy_getTransactionReceipt]="hmy_getTransactionReceipt\",\"params\":[\"$TRANSACTION_HASH\"]"
|
|
POSTDATA[hmy_syncing]="hmy_syncing\",\"params\":[]"
|
|
POSTDATA[net_peerCount]="net_peerCount\",\"params\":[]"
|
|
POSTDATA[hmy_getBalance]="hmy_getBalance\",\"params\":[\"one18t4yj4fuutj83uwqckkvxp9gfa0568uc48ggj7\", \"latest\"]"
|
|
POSTDATA[hmy_getStorageAt]="hmy_getStorageAt\",\"params\":[\"0xD7Ff41CA29306122185A07d04293DdB35F24Cf2d\", \"0\", \"latest\"]"
|
|
POSTDATA[hmy_getAccountNonce]="hmy_getAccountNonce\",\"params\":[\"0x806171f95C5a74371a19e8a312c9e5Cb4E1D24f6\", \"latest\"]"
|
|
POSTDATA[hmy_sendRawTransaction]="hmy_sendRawTransaction\",\"params\":[\"$SIGNED_RAW_TRANSACTION\"]"
|
|
POSTDATA[hmy_getLogs]="hmy_getLogs\", \"params\":[{\"BlockHash\": \"$TRANSACTION_BLOCK_HASH\"}]"
|
|
POSTDATA[hmy_getFilterChanges]="hmy_getFilterChanges\", \"params\":[\"0x58010795a282878ed0d61da72a14b8b0\"]"
|
|
POSTDATA[hmy_newPendingTransactionFilter]="hmy_newPendingTransactionFilter\", \"params\":[]"
|
|
POSTDATA[hmy_newBlockFilter]="hmy_newBlockFilter\", \"params\":[]"
|
|
POSTDATA[hmy_newFilter]="hmy_newFilter\", \"params\":[{\"BlockHash\": \"0x5725b5b2ab28206e7256a78cda4f9050c2629fd85110ffa54eacd2a13ba68072\"}]"
|
|
POSTDATA[hmy_call]="hmy_call\", \"params\":[{\"to\": \"0x08AE1abFE01aEA60a47663bCe0794eCCD5763c19\"}, \"latest\"]"
|
|
POSTDATA[hmy_gasPrice]="hmy_gasPrice\",\"params\":[]"
|
|
POSTDATA[hmy_blockNumber]="hmy_blockNumber\",\"params\":[]"
|
|
POSTDATA[net_version]="net_version\",\"params\":[]"
|
|
POSTDATA[hmy_protocolVersion]="hmy_protocolVersion\",\"params\":[]"
|
|
fi
|
|
|
|
if [ "$NETWORK" == "betanet" ]; then
|
|
POSTDATA[hmy_getBlockByHash]="hmy_getBlockByHash\",\"params\":[\"$TRANSACTION_BLOCK_HASH\", true]"
|
|
POSTDATA[hmy_getBlockByNumber]="hmy_getBlockByNumber\",\"params\":[\"$TRANSACTION_BLOCK_NUMBER\", true]"
|
|
POSTDATA[hmy_getBlockTransactionCountByHash]="hmy_getBlockTransactionCountByHash\",\"params\":[\"$TRANSACTION_BLOCK_HASH\"]"
|
|
POSTDATA[hmy_getBlockTransactionCountByNumber]="hmy_getBlockTransactionCountByNumber\",\"params\":[\"$TRANSACTION_BLOCK_NUMBER\"]"
|
|
POSTDATA[hmy_getCode]="hmy_getCode\",\"params\":[\"0x08AE1abFE01aEA60a47663bCe0794eCCD5763c19\", \"latest\"]"
|
|
POSTDATA[hmy_getTransactionByBlockHashAndIndex]="hmy_getTransactionByBlockHashAndIndex\",\"params\":[\"$TRANSACTION_BLOCK_HASH\", \"$TRANSACTION_INDEX\"]"
|
|
POSTDATA[hmy_getTransactionByBlockNumberAndIndex]="hmy_getTransactionByBlockNumberAndIndex\",\"params\":[\"$TRANSACTION_BLOCK_NUMBER\", \"$TRANSACTION_INDEX\"]"
|
|
POSTDATA[hmy_getTransactionByHash]="hmy_getTransactionByHash\",\"params\":[\"$TRANSACTION_HASH\"]"
|
|
POSTDATA[hmy_getTransactionReceipt]="hmy_getTransactionReceipt\",\"params\":[\"$TRANSACTION_HASH\"]"
|
|
POSTDATA[hmy_syncing]="hmy_syncing\",\"params\":[]"
|
|
POSTDATA[net_peerCount]="net_peerCount\",\"params\":[]"
|
|
POSTDATA[hmy_getBalance]="hmy_getBalance\",\"params\":[\"one18t4yj4fuutj83uwqckkvxp9gfa0568uc48ggj7\", \"latest\"]"
|
|
POSTDATA[hmy_getStorageAt]="hmy_getStorageAt\",\"params\":[\"0xD7Ff41CA29306122185A07d04293DdB35F24Cf2d\", \"0\", \"latest\"]"
|
|
POSTDATA[hmy_getAccountNonce]="hmy_getAccountNonce\",\"params\":[\"0x806171f95C5a74371a19e8a312c9e5Cb4E1D24f6\", \"latest\"]"
|
|
POSTDATA[hmy_sendRawTransaction]="hmy_sendRawTransaction\",\"params\":[\"$SIGNED_RAW_TRANSACTION\"]"
|
|
POSTDATA[hmy_getLogs]="hmy_getLogs\", \"params\":[{\"BlockHash\": \"$TRANSACTION_BLOCK_HASH\"}]"
|
|
POSTDATA[hmy_getFilterChanges]="hmy_getFilterChanges\", \"params\":[\"0x58010795a282878ed0d61da72a14b8b0\"]"
|
|
POSTDATA[hmy_newPendingTransactionFilter]="hmy_newPendingTransactionFilter\", \"params\":[]"
|
|
POSTDATA[hmy_newBlockFilter]="hmy_newBlockFilter\", \"params\":[]"
|
|
POSTDATA[hmy_newFilter]="hmy_newFilter\", \"params\":[{\"BlockHash\": \"0x5725b5b2ab28206e7256a78cda4f9050c2629fd85110ffa54eacd2a13ba68072\"}]"
|
|
POSTDATA[hmy_call]="hmy_call\", \"params\":[{\"to\": \"0x08AE1abFE01aEA60a47663bCe0794eCCD5763c19\"}, \"latest\"]"
|
|
POSTDATA[hmy_gasPrice]="hmy_gasPrice\",\"params\":[]"
|
|
POSTDATA[hmy_blockNumber]="hmy_blockNumber\",\"params\":[]"
|
|
POSTDATA[net_version]="net_version\",\"params\":[]"
|
|
POSTDATA[hmy_protocolVersion]="hmy_protocolVersion\",\"params\":[]"
|
|
fi
|
|
|
|
declare -A RESPONSES
|
|
|
|
RESPONSES[GET_blocks]=""
|
|
RESPONSES[GET_tx]=""
|
|
RESPONSES[GET_address]=""
|
|
RESPONSES[GET_node-count]=""
|
|
RESPONSES[GET_shard]=""
|
|
RESPONSES[GET_committee]=""
|
|
RESPONSES[hmy_getBlockByHash]=""
|
|
RESPONSES[hmy_getBlockByNumber]=""
|
|
RESPONSES[hmy_getBlockTransactionCountByHash]=""
|
|
RESPONSES[hmy_getBlockTransactionCountByNumber]=""
|
|
RESPONSES[hmy_getCode]=""
|
|
RESPONSES[hmy_getTransactionByBlockHashAndIndex]=""
|
|
RESPONSES[hmy_getTransactionByBlockNumberAndIndex]=""
|
|
RESPONSES[hmy_getTransactionByHash]=""
|
|
RESPONSES[hmy_getTransactionReceipt]=""
|
|
RESPONSES[hmy_syncing]=""
|
|
RESPONSES[net_peerCount]=""
|
|
RESPONSES[hmy_getBalance]=""
|
|
RESPONSES[hmy_getStorageAt]=""
|
|
RESPONSES[hmy_getAccountNonce]=""
|
|
RESPONSES[hmy_sendRawTransaction]=""
|
|
RESPONSES[hmy_getLogs]=""
|
|
RESPONSES[hmy_getFilterChanges]=""
|
|
RESPONSES[hmy_newPendingTransactionFilter]=""
|
|
RESPONSES[hmy_newBlockFilter]=""
|
|
RESPONSES[hmy_newFilter]=""
|
|
RESPONSES[hmy_call]=""
|
|
RESPONSES[hmy_gasPrice]=""
|
|
RESPONSES[hmy_blockNumber]=""
|
|
RESPONSES[net_version]=""
|
|
RESPONSES[hmy_protocolVersion]=""
|
|
|
|
### Processes GET requests and stores reponses in RESPONSES ###
|
|
function GET_requests() {
|
|
for K in "${!GETDATA[@]}";
|
|
do
|
|
RESPONSES[$K]=$(curl -s --location --request GET "${PORT[GET]}${GETDATA[$K]}" \
|
|
--header "Content-Type: application/json" \
|
|
--data "")
|
|
done
|
|
}
|
|
|
|
### Processes POST requests and stores reponses in RESPONSES ###
|
|
function POST_requests() {
|
|
for K in "${!POSTDATA[@]}";
|
|
do
|
|
RESPONSES[$K]="$(curl -s --location --request POST "${PORT[POST]}" \
|
|
--header "Content-Type: application/json" \
|
|
--data "{\"jsonrpc\":\"2.0\",\"method\":\"${POSTDATA[$K]},\"id\":1}")"
|
|
done
|
|
}
|
|
|
|
function log_API_responses() {
|
|
for K in "${!GETDATA[@]}";
|
|
do
|
|
echo "${yellow}$K"
|
|
echo "${blue}REQUEST:"
|
|
echo "${white}${GETDATA[$K]}"
|
|
echo "${blue}RESPONSE:" ${white}
|
|
echo ${RESPONSES[$K]} #| jq .
|
|
echo
|
|
echo
|
|
done
|
|
for K in "${!POSTDATA[@]}";
|
|
do
|
|
echo "${yellow}$K"
|
|
echo "${blue}REQUEST:"
|
|
echo "${white}${POSTDATA[$K]}"
|
|
echo "${blue}RESPONSE: $white"
|
|
echo ${RESPONSES[$K]} #| jq .
|
|
echo
|
|
echo
|
|
done
|
|
}
|
|
|
|
GET_requests
|
|
POST_requests
|
|
### BASIC QUERY TESTS ###
|
|
|
|
function Explorer_getBlock_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "GET blocks(explorer) test:"
|
|
response_test ${RESPONSES[GET_blocks]}
|
|
if [ "$?" == "1" ]; then
|
|
BLOCKBYIDHASH=$(echo ${RESPONSES[GET_blocks]} | jq -r .[0].id)
|
|
if [ "$BLOCKBYIDHASH" != "null" ]; then
|
|
if [ "$BLOCKBYIDHASH" == "$TRANSACTION_BLOCK_HASH" ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}BLOCK HASH MATCHES TX${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red}BLOCK HASH DOES NOT MATCH TX OR IS NULL${reset}
|
|
fi
|
|
echo
|
|
}
|
|
|
|
#Needs updating - wtf does getTx do - no arguments?
|
|
function Explorer_getTx_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "GET tx(explorer) test:"
|
|
response_test ${RESPONSES[GET_tx]}
|
|
if [ "$?" == "1" ]; then
|
|
TX_HASH=$(echo ${RESPONSES[GET_tx]} | jq -r .id) # fix agrs to jq
|
|
if [ "$TX_HASH" != "null" ]; then
|
|
if [ "$TX_HASH" == "$TX_HASH" ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}BLOCK HASH MATCHES TX${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red}BLOCK HASH DOES NOT MATCH TX OR IS NULL${reset}
|
|
fi
|
|
echo
|
|
}
|
|
|
|
function Explorer_getExplorerNodeAdress_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "GET address(explorer) test:"
|
|
response_test ${RESPONSES[GET_address]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function Explorer_getExplorerNode_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "GET node-count(explorer) test:"
|
|
response_test ${RESPONSES[GET_node-count]}
|
|
if [ ${RESPONSES[GET_node-count]}="2" ]; then
|
|
echo ${green}SANE VALUE, 2 explorer nodes reported $reset
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
else
|
|
echo ${red}non 2 explorer nodes reported $reset
|
|
fi
|
|
echo
|
|
}
|
|
|
|
function Explorer_getShard_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "GET shard(explorer) test:"
|
|
response_test ${RESPONSES[GET_shard]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function Explorer_getCommitte_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "GET committe(explorer) test:"
|
|
response_test ${RESPONSES[GET_committee]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
### API POST REQUESTS ###
|
|
|
|
function API_getBlockByNumber_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getBlockByNumber test:"
|
|
response_test ${RESPONSES[hmy_getBlockByNumber]}
|
|
BLOCKBYNUMBERHASH=$(echo ${RESPONSES[hmy_getBlockByNumber]} | jq -r '.result.hash')
|
|
|
|
if [ "$BLOCKBLOCKBYNUMBERHASH" != "null" ]; then
|
|
if [ "$BLOCKBYNUMBERHASH" == "$TRANSACTION_BLOCK_HASH" ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}BLOCK HASH MATCHES TX${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red}BLOCK HASH DOES NOT MATCH TX OR IS NULL${reset}
|
|
echo
|
|
}
|
|
|
|
function API_getBlockByHash_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getBlockByHash test:"
|
|
response_test ${RESPONSES[hmy_getBlockByHash]}
|
|
BLOCKBYHASHHASH=$(echo ${RESPONSES[hmy_getBlockByHash]} | jq -r '.result.hash')
|
|
if [ "$BLOCKBYHASHBYHASH" != "null" ]; then
|
|
if [ "$BLOCKBYHASHHASH" == "$TRANSACTION_BLOCK_HASH" ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}BLOCK HASH MATCHES TX${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red}BLOCK HASH DOES NOT MATCH TX OR IS NULL${reset}
|
|
echo
|
|
}
|
|
|
|
function API_getBlockTransactionCountByHash_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getBlockTransactionCountByHash test:"
|
|
response_test ${RESPONSES[hmy_getBlockTransactionCountByHash]}
|
|
TRANSACTIONCOUNTBYHASH=$(echo ${RESPONSES[hmy_getBlockTransactionCountByHash]} | jq -r '.result')
|
|
TRANSACTIONCOUNTBYHASH=$(( TRANSACTIONCOUNTBYHASH ))
|
|
if [ "$TRANSACTIONCOUNTBYHASH" != "null" ]; then
|
|
if [ $TRANSACTIONCOUNTBYHASH -gt 0 ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}NON ZERO TRANSACTION COUNT IN BLOCK${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red}INVALID TRANSACTION COUNT IN BLOCK${reset}
|
|
echo
|
|
}
|
|
|
|
function API_getBlockTransactionCountByNumber_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getBlockTransactionCountByNumber test:"
|
|
response_test ${RESPONSES[hmy_getBlockTransactionCountByNumber]}
|
|
TRANSACTIONCOUNTBYNUMBER=$(echo ${RESPONSES[hmy_getBlockTransactionCountByNumber]} | jq -r '.result')
|
|
TRANSACTIONCOUNTBYNUMBER=$(( TRANSACTIONCOUNTBYNUMBER ))
|
|
if [ "$BLOCKBYHASH" != "null" ]; then
|
|
if [ $TRANSACTIONCOUNTBYNUMBER -gt 0 ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}NON ZERO TRANSACTION COUNT IN BLOCK${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red}NON NATURAL TRANSACTION COUNT IN BLOCK${reset}
|
|
echo
|
|
}
|
|
|
|
function API_getCode_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getCode test:"
|
|
response_test ${RESPONSES[hmy_getCode]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_getTransactionByBlockHashAndIndex_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getTransactionByBlockHashAndIndex test:"
|
|
response_test ${RESPONSES[hmy_getTransactionByBlockHashAndIndex]}
|
|
TRANSACTIONHASHBYHASHANDINDEX=$(echo ${RESPONSES[hmy_getTransactionByBlockHashAndIndex]} | jq -r '.result.hash')
|
|
if [ "$TRANSACTIONHASHBYHASHANDINDEX" != "null" ]; then
|
|
if [ "$TRANSACTIONHASHBYHASHANDINDEX" == "$TRANSACTION_HASH" ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}TRANSACTION FROM BLOCKHASH AND INDEX MATCH${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red} TRANSACTION FROM BLOCKHASH AND INDEX MATCH${reset}
|
|
echo
|
|
}
|
|
|
|
function API_getTransactionByBlockNumberAndIndex_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getTransactionByBlockNumberAndIndex test:"
|
|
response_test ${RESPONSES[hmy_getTransactionByBlockNumberAndIndex]}
|
|
TRANSACTIONHASHBYNUMBERANDINDEX=$(echo ${RESPONSES[hmy_getTransactionByBlockNumberAndIndex]} | jq -r '.result.hash')
|
|
if [ "$TRANSACTIONHASHBYNUMBERANDINDEX" != "null" ]; then
|
|
if [ "$TRANSACTIONHASHBYNUMBERANDINDEX" == "$TRANSACTION_HASH" ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}TRANSACTION FROM BLOCKNUMBER AND INDEX MATCH${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red} TRANSACTION FROM BLOCKNUMBER AND INDEX MISMATCH${reset}
|
|
echo
|
|
}
|
|
|
|
function API_getTransactionByHash_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getTransactionByHash test:"
|
|
TX_HASH=$(echo ${RESPONSES[hmy_getTransactionByHash]} | jq -r '.result.hash')
|
|
response_test ${RESPONSES[hmy_getTransactionByHash]}
|
|
if [ "$TX_HASH" != "null" ]; then
|
|
if [ "$TX_HASH" == "$TRANSACTION_HASH" ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}TRANSACTION HASH MATCH${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red} TRANSACTION HASH MISMATCH${reset}
|
|
echo
|
|
}
|
|
|
|
function API_getTransactionReceipt_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getTransactionReceipt test:"
|
|
TX_HASH=$(echo ${RESPONSES[hmy_getTransactionReceipt]} | jq -r '.result.transactionHash')
|
|
response_test ${RESPONSES[hmy_getTransactionReceipt]}
|
|
if [ "$TX_HASH" != "null" ]; then
|
|
if [ "$TX_HASH" == "$TRANSACTION_HASH" ]; then
|
|
TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo ${green}TRANSACTION HASH MATCH${reset}
|
|
echo
|
|
return
|
|
fi
|
|
fi
|
|
echo ${red} TRANSACTION HASH MISMATCH${reset}
|
|
echo
|
|
}
|
|
|
|
function API_syncing_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_syncing test:"
|
|
response_test ${RESPONSES[hmy_syncing]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_netPeerCount_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST net_peerCount test:"
|
|
response_test ${RESPONSES[net_peerCount]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_getBalance_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getBalance test:"
|
|
response_test ${RESPONSES[hmy_getBalance]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_getStorageAt_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getStorageAt test:"
|
|
response_test ${RESPONSES[hmy_getStorageAt]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_getAccountNonce_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getAccountNonce test:"
|
|
response_test ${RESPONSES[hmy_getAccountNonce]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_sendRawTransaction_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_sendRawTransaction test:"
|
|
response_test ${RESPONSES[hmy_sendRawTransaction]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_getLogs_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getLogs test:"
|
|
response_test ${RESPONSES[hmy_getLogs]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_getFilterChanges_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_getFilterChanges test:"
|
|
response_test ${RESPONSES[hmy_getFilterChanges]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_newPendingTransactionFilter_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_sendRawTransaction test:"
|
|
response_test ${RESPONSES[hmy_newPendingTransactionFilter]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_newBlockFilter_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_newBlockFilter test:"
|
|
response_test ${RESPONSES[hmy_newBlockFilter]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_newFilter_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_newFilter test:"
|
|
response_test ${RESPONSES[hmy_newFilter]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_call_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_call test:"
|
|
response_test ${RESPONSES[hmy_call]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_gasPrice_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_gasPrice test:"
|
|
response_test ${RESPONSES[hmy_gasPrice]}
|
|
if [ "$?" == "1" ]; then
|
|
RESULT=$(echo ${RESPONSES[hmy_gasPrice]} | jq -r '.result')
|
|
isHexTest $RESULT
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
fi
|
|
}
|
|
|
|
function API_blockNumber_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_blockNumber test:"
|
|
response_test ${RESPONSES[hmy_blockNumber]}
|
|
if [ "$?" == "1" ]; then
|
|
RESULT=$(echo ${RESPONSES[hmy_blockNumber]} | jq -r '.result')
|
|
isHexTest $RESULT
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
fi
|
|
}
|
|
|
|
function API_net_version_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST net_version test:"
|
|
response_test ${RESPONSES[net_version]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function API_protocolVersion_test() {
|
|
TESTS_RAN=$(( TESTS_RAN + 1 ))
|
|
echo "POST hmy_protocolVersion test:"
|
|
response_test ${RESPONSES[hmy_protocolVersion]}
|
|
[ "$?" == "1" ] && TESTS_PASSED=$(( TESTS_PASSED + 1 ))
|
|
echo
|
|
}
|
|
|
|
function run_tests() {
|
|
echo "### TESTING RPC CALLS ###"
|
|
echo
|
|
### Calls to the individual API method test ###
|
|
Explorer_getBlock_test
|
|
Explorer_getTx_test
|
|
Explorer_getExplorerNodeAdress_test
|
|
Explorer_getExplorerNode_test
|
|
Explorer_getShard_test
|
|
Explorer_getCommitte_test
|
|
API_getBlockByNumber_test
|
|
API_getBlockByHash_test
|
|
API_getBlockTransactionCountByHash_test
|
|
API_getBlockTransactionCountByNumber_test
|
|
API_getCode_test
|
|
API_getTransactionByBlockHashAndIndex_test
|
|
API_getTransactionByBlockNumberAndIndex_test
|
|
API_getTransactionByHash_test
|
|
API_getTransactionReceipt_test
|
|
API_syncing_test
|
|
API_netPeerCount_test
|
|
API_getBalance_test
|
|
API_getStorageAt_test
|
|
API_getAccountNonce_test
|
|
API_sendRawTransaction_test
|
|
API_getLogs_test
|
|
API_getFilterChanges_test
|
|
API_newPendingTransactionFilter_test
|
|
API_sendRawTransaction_test
|
|
API_newBlockFilter_test
|
|
API_newFilter_test
|
|
API_call_test
|
|
API_gasPrice_test
|
|
API_blockNumber_test
|
|
API_net_version_test
|
|
API_protocolVersion_test
|
|
|
|
TESTS_FAILED=$(( $TESTS_RAN - $TESTS_PASSED ))
|
|
echo -n ${red}
|
|
[ $TESTS_FAILED -eq 0 ] && echo -n ${green}
|
|
echo "PASSED $TESTS_PASSED/$TESTS_RAN: $TESTS_FAILED TESTS FAILED"${reset}
|
|
}
|
|
|
|
|
|
|
|
if [ "$VERBOSE" == "TRUE" ]; then
|
|
log_API_responses
|
|
fi
|
|
### BETANET TESTS ###
|
|
|
|
run_tests
|
|
|