- #!/usr/bin/env bash
- set -e
-
- # Get the directory of where this script is.
- SOURCE="${BASH_SOURCE[0]}"
- while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
- DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
-
- # Change into that dir because we expect that.
- pushd "$DIR"
-
- echo "==> Building the server"
- go build -o rpcserver main.go
-
- echo "==> (Re)starting the server"
- PID=$(pgrep rpcserver || echo "")
- if [[ $PID != "" ]]; then
- kill -9 "$PID"
- fi
- ./rpcserver &
- PID=$!
- sleep 2
-
- echo "==> simple request"
- R1=$(curl -s 'http://localhost:8008/hello_world?name="my_world"&num=5')
- R2=$(curl -s --data @data.json http://localhost:8008)
- if [[ "$R1" != "$R2" ]]; then
- echo "responses are not identical:"
- echo "R1: $R1"
- echo "R2: $R2"
- echo "FAIL"
- exit 1
- else
- echo "OK"
- fi
-
- echo "==> request with 0x-prefixed hex string arg"
- R1=$(curl -s 'http://localhost:8008/hello_world?name=0x41424344&num=123')
- R2='{"jsonrpc":"2.0","id":"","result":{"Result":"hi ABCD 123"},"error":""}'
- if [[ "$R1" != "$R2" ]]; then
- echo "responses are not identical:"
- echo "R1: $R1"
- echo "R2: $R2"
- echo "FAIL"
- exit 1
- else
- echo "OK"
- fi
-
- echo "==> request with missing params"
- R1=$(curl -s 'http://localhost:8008/hello_world')
- R2='{"jsonrpc":"2.0","id":"","result":{"Result":"hi 0"},"error":""}'
- if [[ "$R1" != "$R2" ]]; then
- echo "responses are not identical:"
- echo "R1: $R1"
- echo "R2: $R2"
- echo "FAIL"
- exit 1
- else
- echo "OK"
- fi
-
- echo "==> request with unquoted string arg"
- R1=$(curl -s 'http://localhost:8008/hello_world?name=abcd&num=123')
- R2="{\"jsonrpc\":\"2.0\",\"id\":\"\",\"result\":null,\"error\":\"Error converting http params to args: invalid character 'a' looking for beginning of value\"}"
- if [[ "$R1" != "$R2" ]]; then
- echo "responses are not identical:"
- echo "R1: $R1"
- echo "R2: $R2"
- echo "FAIL"
- exit 1
- else
- echo "OK"
- fi
-
- echo "==> request with string type when expecting number arg"
- R1=$(curl -s 'http://localhost:8008/hello_world?name="abcd"&num=0xabcd')
- R2="{\"jsonrpc\":\"2.0\",\"id\":\"\",\"result\":null,\"error\":\"Error converting http params to args: Got a hex string arg, but expected 'int'\"}"
- if [[ "$R1" != "$R2" ]]; then
- echo "responses are not identical:"
- echo "R1: $R1"
- echo "R2: $R2"
- echo "FAIL"
- exit 1
- else
- echo "OK"
- fi
-
- echo "==> Stopping the server"
- kill -9 $PID
-
- rm -f rpcserver
-
- popd
- exit 0
|