86 lines
2.1 KiB
Bash
Executable File
86 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
# the go client does not support passing an argument with multiple test cases
|
|
# so we loop over this array calling the binary each time around
|
|
TEST_CASES=(
|
|
"empty_unary"
|
|
"large_unary"
|
|
"client_streaming"
|
|
"server_streaming"
|
|
"ping_pong"
|
|
"empty_stream"
|
|
"status_code_and_message"
|
|
"special_status_message"
|
|
"custom_metadata"
|
|
"unimplemented_method"
|
|
"unimplemented_service"
|
|
)
|
|
|
|
# join all test cases in one comma separated string (dropping the first one)
|
|
# so we can call the rust client only once, reducing the noise
|
|
JOINED_TEST_CASES=$(printf ",%s" "${TEST_CASES[@]}")
|
|
JOINED_TEST_CASES="${JOINED_TEST_CASES:1}"
|
|
|
|
set -x
|
|
|
|
echo "Running for OS: ${OSTYPE}"
|
|
|
|
case "$OSTYPE" in
|
|
darwin*) OS="darwin"; EXT="" ;;
|
|
linux*) OS="linux"; EXT="" ;;
|
|
msys*) OS="windows"; EXT=".exe" ;;
|
|
*) exit 2 ;;
|
|
esac
|
|
|
|
ARG="${1:-""}"
|
|
|
|
|
|
(cd interop && cargo build --bins)
|
|
|
|
SERVER="interop/bin/server_${OS}_amd64${EXT}"
|
|
|
|
TLS_CA="interop/data/ca.pem"
|
|
TLS_CRT="interop/data/server1.pem"
|
|
TLS_KEY="interop/data/server1.key"
|
|
|
|
# run the test server
|
|
./"${SERVER}" ${ARG} --tls_cert_file $TLS_CRT --tls_key_file $TLS_KEY &
|
|
SERVER_PID=$!
|
|
echo ":; started grpc-go test server."
|
|
|
|
# trap exits to make sure we kill the server process when the script exits,
|
|
# regardless of why (errors, SIGTERM, etc).
|
|
trap 'echo ":; killing test server"; kill ${SERVER_PID};' EXIT
|
|
|
|
sleep 1
|
|
|
|
./target/debug/client --test_case="${JOINED_TEST_CASES}" ${ARG}
|
|
|
|
echo ":; killing test server"; kill ${SERVER_PID};
|
|
|
|
# run the test server
|
|
./target/debug/server ${ARG} &
|
|
SERVER_PID=$!
|
|
echo ":; started tonic test server."
|
|
|
|
# trap exits to make sure we kill the server process when the script exits,
|
|
# regardless of why (errors, SIGTERM, etc).
|
|
trap 'echo ":; killing test server"; kill ${SERVER_PID};' EXIT
|
|
|
|
sleep 1
|
|
|
|
./target/debug/client --test_case="${JOINED_TEST_CASES}" ${ARG}
|
|
|
|
TLS_ARGS=""
|
|
|
|
if [ -n "${ARG}" ]; then
|
|
TLS_ARGS="--use_tls --use_test_ca --server_host_override=foo.test.google.fr --ca_file=${TLS_CA}"
|
|
fi
|
|
|
|
for CASE in "${TEST_CASES[@]}"; do
|
|
interop/bin/client_${OS}_amd64${EXT} --test_case="${CASE}" ${TLS_ARGS}
|
|
done
|