123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #!/bin/bash
- #
- # Copyright 2019 gRPC authors.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- set -e +x
- export TMPDIR=$(mktemp -d)
- trap "rm -rf ${TMPDIR}" EXIT
- clean () {
- for i in {1..10}; do
- jobs -p | xargs -n1 pkill -P
- # A simple "wait" just hangs sometimes. Running `jobs` seems to help.
- sleep 1
- if jobs | read; then
- return
- fi
- done
- echo "$(tput setaf 1) clean failed to kill tests $(tput sgr 0)"
- jobs
- pstree
- exit 1
- }
- fail () {
- echo "$(tput setaf 1) $1 $(tput sgr 0)"
- clean
- exit 1
- }
- pass () {
- echo "$(tput setaf 2) $1 $(tput sgr 0)"
- }
- # Don't run some tests that need a special environment:
- # "google_default_credentials"
- # "compute_engine_channel_credentials"
- # "compute_engine_creds"
- # "service_account_creds"
- # "jwt_token_creds"
- # "oauth2_auth_token"
- # "per_rpc_creds"
- # "pick_first_unary"
- CASES=(
- "empty_unary"
- "large_unary"
- "client_streaming"
- "server_streaming"
- "ping_pong"
- "empty_stream"
- "timeout_on_sleeping_server"
- "cancel_after_begin"
- "cancel_after_first_response"
- "status_code_and_message"
- "special_status_message"
- "custom_metadata"
- "unimplemented_method"
- "unimplemented_service"
- )
- # Build server
- if ! go build -o /dev/null ./interop/server; then
- fail "failed to build server"
- else
- pass "successfully built server"
- fi
- # Start server
- SERVER_LOG="$(mktemp)"
- go run ./interop/server --use_tls &> $SERVER_LOG &
- for case in ${CASES[@]}; do
- echo "$(tput setaf 4) testing: ${case} $(tput sgr 0)"
- CLIENT_LOG="$(mktemp)"
- if ! timeout 20 go run ./interop/client --use_tls --server_host_override=foo.test.google.fr --use_test_ca --test_case="${case}" &> $CLIENT_LOG; then
- fail "FAIL: test case ${case}
- got server log:
- $(cat $SERVER_LOG)
- got client log:
- $(cat $CLIENT_LOG)
- "
- else
- pass "PASS: test case ${case}"
- fi
- done
- clean
|