#!/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