mirror of
https://github.com/tendermint/tendermint.git
synced 2026-09-30 19:55:42 +00:00
Revert "delete everything" (includes everything non-go-crypto)
This reverts commit 96a3502
This commit is contained in:
Executable
+3
@@ -0,0 +1,3 @@
|
||||
killall tendermint
|
||||
killall abci-cli
|
||||
rm -rf ~/.tendermint_app
|
||||
Executable
+141
@@ -0,0 +1,141 @@
|
||||
#! /bin/bash
|
||||
|
||||
if [[ "$GRPC_BROADCAST_TX" == "" ]]; then
|
||||
GRPC_BROADCAST_TX=""
|
||||
fi
|
||||
|
||||
set -u
|
||||
|
||||
#####################
|
||||
# counter over socket
|
||||
#####################
|
||||
TESTNAME=$1
|
||||
|
||||
# Send some txs
|
||||
|
||||
function getCode() {
|
||||
set +u
|
||||
R=$1
|
||||
set -u
|
||||
if [[ "$R" == "" ]]; then
|
||||
echo -1
|
||||
fi
|
||||
|
||||
if [[ $(echo $R | jq 'has("code")') == "true" ]]; then
|
||||
# this wont actually work if theres an error ...
|
||||
echo "$R" | jq ".code"
|
||||
else
|
||||
# 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
|
||||
fi
|
||||
}
|
||||
|
||||
# build grpc client if needed
|
||||
if [[ "$GRPC_BROADCAST_TX" != "" ]]; then
|
||||
if [ -f grpc_client ]; then
|
||||
rm grpc_client
|
||||
fi
|
||||
echo "... building grpc_client"
|
||||
go build -o grpc_client grpc_client.go
|
||||
fi
|
||||
|
||||
function sendTx() {
|
||||
TX=$1
|
||||
set +u
|
||||
SHOULD_ERR=$2
|
||||
if [ "$SHOULD_ERR" == "" ]; then
|
||||
SHOULD_ERR=false
|
||||
fi
|
||||
set -u
|
||||
if [[ "$GRPC_BROADCAST_TX" == "" ]]; then
|
||||
RESPONSE=$(curl -s localhost:26657/broadcast_tx_commit?tx=0x"$TX")
|
||||
IS_ERR=$(echo "$RESPONSE" | jq 'has("error")')
|
||||
ERROR=$(echo "$RESPONSE" | jq '.error')
|
||||
ERROR=$(echo "$ERROR" | tr -d '"') # remove surrounding quotes
|
||||
|
||||
RESPONSE=$(echo "$RESPONSE" | jq '.result')
|
||||
else
|
||||
RESPONSE=$(./grpc_client "$TX")
|
||||
IS_ERR=false
|
||||
ERROR=""
|
||||
fi
|
||||
|
||||
echo "RESPONSE"
|
||||
echo "$RESPONSE"
|
||||
|
||||
echo "$RESPONSE" | jq . &> /dev/null
|
||||
IS_JSON=$?
|
||||
if [[ "$IS_JSON" != "0" ]]; then
|
||||
IS_ERR=true
|
||||
ERROR="$RESPONSE"
|
||||
fi
|
||||
APPEND_TX_RESPONSE=$(echo "$RESPONSE" | jq '.deliver_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 "ERROR $ERROR"
|
||||
echo "IS_ERR $IS_ERR"
|
||||
echo "----"
|
||||
|
||||
if $SHOULD_ERR; then
|
||||
if [[ "$IS_ERR" != "true" ]]; then
|
||||
echo "Expected error sending tx ($TX)"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [[ "$IS_ERR" == "true" ]]; then
|
||||
echo "Unexpected error sending tx ($TX)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
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
|
||||
|
||||
|
||||
echo "... sending tx. expect error"
|
||||
|
||||
# second time should get rejected by the mempool (return error and non-zero code)
|
||||
sendTx $TX true
|
||||
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
echo "Passed Test: $TESTNAME"
|
||||
@@ -0,0 +1,42 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"context"
|
||||
|
||||
"github.com/tendermint/tendermint/rpc/grpc"
|
||||
)
|
||||
|
||||
var grpcAddr = "tcp://localhost:36656"
|
||||
|
||||
func main() {
|
||||
args := os.Args
|
||||
if len(args) == 1 {
|
||||
fmt.Println("Must enter a transaction to send (hex)")
|
||||
os.Exit(1)
|
||||
}
|
||||
tx := args[1]
|
||||
txBytes, err := hex.DecodeString(tx)
|
||||
if err != nil {
|
||||
fmt.Println("Invalid hex", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
clientGRPC := core_grpc.StartGRPCClient(grpcAddr)
|
||||
res, err := clientGRPC.BroadcastTx(context.Background(), &core_grpc.RequestBroadcastTx{txBytes})
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
bz, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Println(string(bz))
|
||||
}
|
||||
Executable
+84
@@ -0,0 +1,84 @@
|
||||
#! /bin/bash
|
||||
set -ex
|
||||
|
||||
function toHex() {
|
||||
echo -n $1 | hexdump -ve '1/1 "%.2X"' | awk '{print "0x" $0}'
|
||||
|
||||
}
|
||||
|
||||
#####################
|
||||
# kvstore with curl
|
||||
#####################
|
||||
TESTNAME=$1
|
||||
|
||||
# store key value pair
|
||||
KEY="abcd"
|
||||
VALUE="dcba"
|
||||
echo $(toHex $KEY=$VALUE)
|
||||
curl -s 127.0.0.1:26657/broadcast_tx_commit?tx=$(toHex $KEY=$VALUE)
|
||||
echo $?
|
||||
echo ""
|
||||
|
||||
|
||||
###########################
|
||||
# test using the abci-cli
|
||||
###########################
|
||||
|
||||
echo "... testing query with abci-cli"
|
||||
|
||||
# we should be able to look up the key
|
||||
RESPONSE=`abci-cli query \"$KEY\"`
|
||||
|
||||
set +e
|
||||
A=`echo $RESPONSE | grep "$VALUE"`
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Failed to find $VALUE for $KEY. Response:"
|
||||
echo "$RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
|
||||
# we should not be able to look up the value
|
||||
RESPONSE=`abci-cli query \"$VALUE\"`
|
||||
set +e
|
||||
A=`echo $RESPONSE | grep $VALUE`
|
||||
if [[ $? == 0 ]]; then
|
||||
echo "Found '$VALUE' for $VALUE when we should not have. Response:"
|
||||
echo "$RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
|
||||
#############################
|
||||
# test using the /abci_query
|
||||
#############################
|
||||
|
||||
echo "... testing query with /abci_query 2"
|
||||
|
||||
# we should be able to look up the key
|
||||
RESPONSE=`curl -s "127.0.0.1:26657/abci_query?path=\"\"&data=$(toHex $KEY)&prove=false"`
|
||||
RESPONSE=`echo $RESPONSE | jq .result.response.log`
|
||||
|
||||
set +e
|
||||
A=`echo $RESPONSE | grep 'exists'`
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Failed to find 'exists' for $KEY. Response:"
|
||||
echo "$RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
|
||||
# we should not be able to look up the value
|
||||
RESPONSE=`curl -s "127.0.0.1:26657/abci_query?path=\"\"&data=$(toHex $VALUE)&prove=false"`
|
||||
RESPONSE=`echo $RESPONSE | jq .result.response.log`
|
||||
set +e
|
||||
A=`echo $RESPONSE | grep 'exists'`
|
||||
if [[ $? == 0 ]]; then
|
||||
echo "Found 'exists' for $VALUE when we should not have. Response:"
|
||||
echo "$RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
|
||||
|
||||
echo "Passed Test: $TESTNAME"
|
||||
Executable
+129
@@ -0,0 +1,129 @@
|
||||
#! /bin/bash
|
||||
set -ex
|
||||
|
||||
#- kvstore over socket, curl
|
||||
#- counter over socket, curl
|
||||
#- counter over grpc, curl
|
||||
#- counter over grpc, grpc
|
||||
|
||||
# TODO: install everything
|
||||
|
||||
export PATH="$GOBIN:$PATH"
|
||||
export TMHOME=$HOME/.tendermint_app
|
||||
|
||||
function kvstore_over_socket(){
|
||||
rm -rf $TMHOME
|
||||
tendermint init
|
||||
echo "Starting kvstore_over_socket"
|
||||
abci-cli kvstore > /dev/null &
|
||||
pid_kvstore=$!
|
||||
tendermint node > tendermint.log &
|
||||
pid_tendermint=$!
|
||||
sleep 5
|
||||
|
||||
echo "running test"
|
||||
bash kvstore_test.sh "KVStore over Socket"
|
||||
|
||||
kill -9 $pid_kvstore $pid_tendermint
|
||||
}
|
||||
|
||||
# start tendermint first
|
||||
function kvstore_over_socket_reorder(){
|
||||
rm -rf $TMHOME
|
||||
tendermint init
|
||||
echo "Starting kvstore_over_socket_reorder (ie. start tendermint first)"
|
||||
tendermint node > tendermint.log &
|
||||
pid_tendermint=$!
|
||||
sleep 2
|
||||
abci-cli kvstore > /dev/null &
|
||||
pid_kvstore=$!
|
||||
sleep 5
|
||||
|
||||
echo "running test"
|
||||
bash kvstore_test.sh "KVStore over Socket"
|
||||
|
||||
kill -9 $pid_kvstore $pid_tendermint
|
||||
}
|
||||
|
||||
|
||||
function counter_over_socket() {
|
||||
rm -rf $TMHOME
|
||||
tendermint init
|
||||
echo "Starting counter_over_socket"
|
||||
abci-cli counter --serial > /dev/null &
|
||||
pid_counter=$!
|
||||
tendermint node > tendermint.log &
|
||||
pid_tendermint=$!
|
||||
sleep 5
|
||||
|
||||
echo "running test"
|
||||
bash counter_test.sh "Counter over Socket"
|
||||
|
||||
kill -9 $pid_counter $pid_tendermint
|
||||
}
|
||||
|
||||
function counter_over_grpc() {
|
||||
rm -rf $TMHOME
|
||||
tendermint init
|
||||
echo "Starting counter_over_grpc"
|
||||
abci-cli counter --serial --abci grpc > /dev/null &
|
||||
pid_counter=$!
|
||||
tendermint node --abci grpc > tendermint.log &
|
||||
pid_tendermint=$!
|
||||
sleep 5
|
||||
|
||||
echo "running test"
|
||||
bash counter_test.sh "Counter over GRPC"
|
||||
|
||||
kill -9 $pid_counter $pid_tendermint
|
||||
}
|
||||
|
||||
function counter_over_grpc_grpc() {
|
||||
rm -rf $TMHOME
|
||||
tendermint init
|
||||
echo "Starting counter_over_grpc_grpc (ie. with grpc broadcast_tx)"
|
||||
abci-cli counter --serial --abci grpc > /dev/null &
|
||||
pid_counter=$!
|
||||
sleep 1
|
||||
GRPC_PORT=36656
|
||||
tendermint node --abci grpc --rpc.grpc_laddr tcp://localhost:$GRPC_PORT > tendermint.log &
|
||||
pid_tendermint=$!
|
||||
sleep 5
|
||||
|
||||
echo "running test"
|
||||
GRPC_BROADCAST_TX=true bash counter_test.sh "Counter over GRPC via GRPC BroadcastTx"
|
||||
|
||||
kill -9 $pid_counter $pid_tendermint
|
||||
}
|
||||
|
||||
cd $GOPATH/src/github.com/tendermint/tendermint/test/app
|
||||
|
||||
case "$1" in
|
||||
"kvstore_over_socket")
|
||||
kvstore_over_socket
|
||||
;;
|
||||
"kvstore_over_socket_reorder")
|
||||
kvstore_over_socket_reorder
|
||||
;;
|
||||
"counter_over_socket")
|
||||
counter_over_socket
|
||||
;;
|
||||
"counter_over_grpc")
|
||||
counter_over_grpc
|
||||
;;
|
||||
"counter_over_grpc_grpc")
|
||||
counter_over_grpc_grpc
|
||||
;;
|
||||
*)
|
||||
echo "Running all"
|
||||
kvstore_over_socket
|
||||
echo ""
|
||||
kvstore_over_socket_reorder
|
||||
echo ""
|
||||
counter_over_socket
|
||||
echo ""
|
||||
counter_over_grpc
|
||||
echo ""
|
||||
counter_over_grpc_grpc
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user