1#!/bin/bash 2 3# 4# Licensed to the Apache Software Foundation (ASF) under one 5# or more contributor license agreements. See the NOTICE file 6# distributed with this work for additional information 7# regarding copyright ownership. The ASF licenses this file 8# to you under the Apache License, Version 2.0 (the 9# "License"); you may not use this file except in compliance 10# with the License. You may obtain a copy of the License at 11# 12# http://www.apache.org/licenses/LICENSE-2.0 13# 14# Unless required by applicable law or agreed to in writing, 15# software distributed under the License is distributed on an 16# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17# KIND, either express or implied. See the License for the 18# specific language governing permissions and limitations 19# under the License. 20# 21 22# Runs the D ThriftTest client and servers for all combinations of transport, 23# protocol, SSL-mode and server type. 24# Pass -k to keep going after failed tests. 25 26CUR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 27 28protocols="binary compact json" 29# TODO: fix and enable http 30# transports="buffered framed raw http" 31transports="buffered framed raw" 32servers="simple taskpool threaded" 33framed_only_servers="nonblocking pooledNonblocking" 34 35# Don't leave any server instances behind when interrupted (e.g. by Ctrl+C) 36# or terminated. 37trap "kill $(jobs -p) 2>/dev/null" INT TERM 38 39for protocol in $protocols; do 40 for ssl in "" " --ssl"; do 41 for transport in $transports; do 42 for server in $servers $framed_only_servers; do 43 case $framed_only_servers in 44 *$server*) if [ $transport != "framed" ] || [ $ssl != "" ]; then continue; fi;; 45 esac 46 47 args="--transport=$transport --protocol=$protocol$ssl" 48 ${CUR}/thrift_test_server $args --server-type=$server > /dev/null & 49 server_pid=$! 50 51 # Give the server some time to get up and check if it runs (yes, this 52 # is a huge kludge, should add a connect timeout to test client). 53 client_rc=-1 54 if [ "$server" = "taskpool" ]; then 55 sleep 0.5 56 else 57 sleep 0.02 58 fi 59 kill -0 $server_pid 2>/dev/null 60 if [ $? -eq 0 ]; then 61 ${CUR}/thrift_test_client $args --numTests=10 > /dev/null 62 client_rc=$? 63 64 # Temporarily redirect stderr to null to avoid job control messages, 65 # restore it afterwards. 66 exec 3>&2 67 exec 2>/dev/null 68 kill $server_pid 69 exec 3>&2 70 fi 71 72 # Get the server exit code (wait should immediately return). 73 wait $server_pid 74 server_rc=$? 75 76 if [ $client_rc -ne 0 -o $server_rc -eq 1 ]; then 77 echo -e "\nTests failed for: $args --server-type=$server" 78 failed="true" 79 if [ "$1" != "-k" ]; then 80 exit 1 81 fi 82 else 83 echo -n "." 84 fi 85 done 86 done 87 done 88done 89 90echo 91if [ -z "$failed" ]; then 92 echo "All tests passed." 93fi 94