blob: 6bec30d5e6efec7c05ab24b5f8ea06e771f0db0b [file] [log] [blame]
Jake Farrellb95b0ff2012-03-22 21:49:10 +00001#!/bin/bash
Nobuaki Sukegawa4d28b602016-02-28 13:25:54 +09002
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
Jake Farrellb95b0ff2012-03-22 21:49:10 +000022# 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
Nobuaki Sukegawa4d28b602016-02-28 13:25:54 +090026CUR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
27
Jake Farrellb95b0ff2012-03-22 21:49:10 +000028protocols="binary compact json"
Nobuaki Sukegawa4d28b602016-02-28 13:25:54 +090029# TODO: fix and enable http
30# transports="buffered framed raw http"
31transports="buffered framed raw"
Jake Farrellb95b0ff2012-03-22 21:49:10 +000032servers="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
Tdxdxozec5e1772022-07-18 21:52:02 +080039echo "THRIFT-4905 & THRIFT-5608: SSL tests are disabled. Fix them."
Jake Farrellb95b0ff2012-03-22 21:49:10 +000040for protocol in $protocols; do
Tdxdxozec5e1772022-07-18 21:52:02 +080041 # TODO: fix and enable ssl
42 # for ssl in "" " --ssl"; do
43 for ssl in ""; do
Jake Farrellb95b0ff2012-03-22 21:49:10 +000044 for transport in $transports; do
45 for server in $servers $framed_only_servers; do
46 case $framed_only_servers in
47 *$server*) if [ $transport != "framed" ] || [ $ssl != "" ]; then continue; fi;;
48 esac
49
50 args="--transport=$transport --protocol=$protocol$ssl"
Nobuaki Sukegawa4d28b602016-02-28 13:25:54 +090051 ${CUR}/thrift_test_server $args --server-type=$server > /dev/null &
Jake Farrellb95b0ff2012-03-22 21:49:10 +000052 server_pid=$!
53
54 # Give the server some time to get up and check if it runs (yes, this
55 # is a huge kludge, should add a connect timeout to test client).
56 client_rc=-1
Nobuaki Sukegawa2cc47642016-03-05 16:07:37 +090057 if [ "$server" = "taskpool" ]; then
58 sleep 0.5
59 else
60 sleep 0.02
61 fi
Jake Farrellb95b0ff2012-03-22 21:49:10 +000062 kill -0 $server_pid 2>/dev/null
63 if [ $? -eq 0 ]; then
Nobuaki Sukegawa4d28b602016-02-28 13:25:54 +090064 ${CUR}/thrift_test_client $args --numTests=10 > /dev/null
Jake Farrellb95b0ff2012-03-22 21:49:10 +000065 client_rc=$?
66
67 # Temporarily redirect stderr to null to avoid job control messages,
68 # restore it afterwards.
69 exec 3>&2
70 exec 2>/dev/null
71 kill $server_pid
72 exec 3>&2
73 fi
74
75 # Get the server exit code (wait should immediately return).
76 wait $server_pid
77 server_rc=$?
78
79 if [ $client_rc -ne 0 -o $server_rc -eq 1 ]; then
80 echo -e "\nTests failed for: $args --server-type=$server"
81 failed="true"
82 if [ "$1" != "-k" ]; then
83 exit 1
84 fi
85 else
86 echo -n "."
87 fi
88 done
89 done
90 done
91done
92
93echo
94if [ -z "$failed" ]; then
95 echo "All tests passed."
96fi