|
|
- #! /bin/bash
- set -u
-
- #####################
- # counter over socket
- #####################
- TESTNAME=$1
-
- # Send some txs
-
- function getCode() {
- R=$1
- if [[ "$R" == "{}" ]]; then
- # protobuf auto adds `omitempty` to everything so code OK and empty data/log
- # will not even show when marshalled into json
- # apparently we can use github.com/golang/protobuf/jsonpb to do the marshalling ...
- echo 0
- else
- # this wont actually work if theres an error ...
- echo "$R" | jq .code
- fi
- }
-
- function sendTx() {
- TX=$1
- if [[ "$GRPC_BROADCAST_TX" == "" ]]; then
- RESPONSE=`curl -s localhost:46657/broadcast_tx_commit?tx=\"$TX\"`
- CODE=`echo $RESPONSE | jq .result[1].code`
- ERROR=`echo $RESPONSE | jq .error`
- ERROR=$(echo "$ERROR" | tr -d '"') # remove surrounding quotes
- else
- if [ ! -f grpc_client ]; then
- go build -o grpc_client grpc_client.go
- fi
- RESPONSE=`./grpc_client $TX`
- echo $RESPONSE | jq . &> /dev/null
- IS_JSON=$?
- if [[ "$IS_JSON" != "0" ]]; then
- ERROR="$RESPONSE"
- else
- ERROR="" # reset
- fi
- APPEND_TX_RESPONSE=`echo $RESPONSE | jq .append_tx`
- APPEND_TX_CODE=`getCode "$APPEND_TX_RESPONSE"`
- CHECK_TX_RESPONSE=`echo $RESPONSE | jq .check_tx`
- CHECK_TX_CODE=`getCode "$CHECK_TX_RESPONSE"`
-
- echo "-------"
- echo "TX $TX"
- echo "RESPONSE $RESPONSE"
- echo "CHECK_TX_RESPONSE $CHECK_TX_RESPONSE"
- echo "APPEND_TX_RESPONSE $APPEND_TX_RESPONSE"
- echo "CHECK_TX_CODE $CHECK_TX_CODE"
- echo "APPEND_TX_CODE $APPEND_TX_CODE"
- echo "----"
- fi
- }
-
- echo "... sending tx. expect no error"
-
- # 0 should pass once and get in block, with no error
- TX=00
- sendTx $TX
- if [[ $APPEND_TX_CODE != 0 ]]; then
- echo "Got non-zero exit code for $TX. $RESPONSE"
- exit 1
- fi
-
- if [[ "$GRPC_BROADCAST_TX" == "" && "$ERROR" != "" ]]; then
- echo "Unexpected error. Tx $TX should have been included in a block. $ERROR"
- exit 1
- fi
-
- echo "... sending tx. expect error"
-
- # second time should get rejected by the mempool (return error and non-zero code)
- sendTx $TX
- echo "CHECKTX CODE: $CHECK_TX_CODE"
- if [[ "$CHECK_TX_CODE" == 0 ]]; then
- echo "Got zero exit code for $TX. Expected tx to be rejected by mempool. $RESPONSE"
- exit 1
- fi
- if [[ "$GRPC_BROADCAST_TX" == "" && "$ERROR" == "" ]]; then
- echo "Expected to get an error - tx $TX should have been rejected from mempool"
- echo "$RESPONSE"
- exit 1
- fi
-
-
- echo "... sending tx. expect no error"
-
- # now, TX=01 should pass, with no error
- TX=01
- sendTx $TX
- if [[ $APPEND_TX_CODE != 0 ]]; then
- echo "Got non-zero exit code for $TX. $RESPONSE"
- exit 1
- fi
- if [[ "$GRPC_BROADCAST_TX" == "" && "$ERROR" != "" ]]; then
- echo "Unexpected error. Tx $TX should have been accepted in block. $ERROR"
- exit 1
- fi
-
- echo "... sending tx. expect no error, but invalid"
-
- # now, TX=03 should get in a block (passes CheckTx, no error), but is invalid
- TX=03
- sendTx $TX
- if [[ "$CHECK_TX_CODE" != 0 ]]; then
- echo "Got non-zero exit code for checktx on $TX. $RESPONSE"
- exit 1
- fi
- if [[ $APPEND_TX_CODE == 0 ]]; then
- echo "Got zero exit code for $TX. Should have been bad nonce. $RESPONSE"
- exit 1
- fi
- if [[ "$GRPC_BROADCAST_TX" == "" && "$ERROR" != "" ]]; then
- echo "Unexpected error. Tx $TX should have been included in a block. $ERROR"
- exit 1
- fi
-
- echo "Passed Test: $TESTNAME"
|