blob: 2f74739014622efb1719101e51f6e7af2f0f734a [file] [log] [blame]
Roger Meier4d5157d2012-01-09 21:23:19 +00001#!/bin/sh
2#
3# Licensed to the Apache Software Foundation (ASF) under one
4# or more contributor license agreements. See the NOTICE file
5# distributed with this work for additional information
6# regarding copyright ownership. The ASF licenses this file
7# to you under the Apache License, Version 2.0 (the
8# "License"); you may not use this file except in compliance
9# with the License. You may obtain a copy of the License at
10#
11# http://www.apache.org/licenses/LICENSE-2.0
12#
13# Unless required by applicable law or agreed to in writing,
14# software distributed under the License is distributed on an
15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16# KIND, either express or implied. See the License for the
17# specific language governing permissions and limitations
18# under the License.
19#
20
21# Apache Thrift - integration test suite
22#
23# tests different client-server, protocol and transport combinations
24
25# related issues:
26# THRIFT-847 Test Framework harmonization across all languages
27# THRIFT-819 add Enumeration for protocol, transport and server types
28
Roger Meiercc0fe272014-05-16 23:18:25 +020029START_TIME=$SECONDS
henriqued17f1c92014-04-30 16:21:25 +020030cd "$( dirname "$0" )"
31BASEDIR=$(pwd)
32
Roger Meierbea27342014-08-08 00:30:50 +020033TESTCOUNT=0
34FAILED=0
35
Roger Meier4d5157d2012-01-09 21:23:19 +000036print_header() {
Roger Meier76150722014-05-31 22:22:07 +020037 printf "%-16s %-13s %-17s %-s\n" "client-server:" "protocol:" "transport:" "result:"
Roger Meier4d5157d2012-01-09 21:23:19 +000038}
39
Roger Meiercc0fe272014-05-16 23:18:25 +020040STATUS_HTML="status.html"
41
42print_html_header() {
43cat << EOF > $STATUS_HTML
44<!DOCTYPE HTML>
45<html>
46<head>
47<meta charset="utf-8">
48<title>Apache Thrift - integration test suite</title>
49<link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.0/css/jquery.dataTables.css">
50<script type="text/javascript" charset="utf-8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
51<script type="text/javascript" charset="utf-8" src="http://cdn.datatables.net/1.10.0/js/jquery.dataTables.js"></script>
52<script>
53 var test_data;
54 \$(document).ready( function () {
55 testTable = \$('#test_results').DataTable( {
56 data: test_data
57 });
58 \$('#test_results_filter label input')
59 .focus()
60 .val('failure');
61 });
62</script>
63</head>
64<body>
65<h2>Apache Thrift - integration test suite: Results</h2>
66<table id="test_results" class="display">
67 <thead>
68 <tr>
69 <th>Server</th>
70 <th>Client</th>
71 <th>Protocol</th>
72 <th>Transport</th>
73 <th>Result (log)</th>
74 </tr>
75 </thead>
76</table>
77<script>
78test_data = [
79EOF
80}
81
82print_html_footer() {
83duration=$1
84cat << EOF >> $STATUS_HTML
85]
86</script>
87<h2>Test Information</h2>
88<pre>
89Test Date: `date --iso-8601=seconds`
90Revision: `git rev-parse --short HEAD`
91OS: `uname -a`
92Test duration: $duration
93</pre>
94</body>
95</html>
96EOF
97}
98
Roger Meierf42ce2a2013-01-16 22:12:14 +010099intersection() {
100 return_value=""
101 for one in $1; do
102 for two in $2; do
103 if [ ${one} = ${two} ]; then
104 return_value=${return_value}" "${one}
105 fi
106 done;
107 done;
108 echo ${return_value};
109}
110
Roger Meier4d5157d2012-01-09 21:23:19 +0000111do_test () {
112 client_server=$1
113 protocol=$2
114 transport=$3
115 client_exec=$4
116 server_exec=$5
henriqued17f1c92014-04-30 16:21:25 +0200117 client_timeout=$6
118 server_startup_time=$7
Roger Meier4d5157d2012-01-09 21:23:19 +0000119
120 testname=${client_server}_${protocol}_${transport}
henriqued5aba4c2014-04-30 18:11:11 +0200121 server_timeout=$(echo "(${server_startup_time}+${client_timeout})" | bc)
Roger Meier76150722014-05-31 22:22:07 +0200122 printf "%-16s %-13s %-17s" ${client_server} ${protocol} ${transport}
henriqued17f1c92014-04-30 16:21:25 +0200123
Roger Meier284101c2014-03-11 21:20:35 +0100124 timeout $server_timeout $server_exec > log/${testname}_server.log 2>&1 &
henriqued17f1c92014-04-30 16:21:25 +0200125 server_pid=$!
126
Roger Meier4d5157d2012-01-09 21:23:19 +0000127 sleep $server_startup_time
henriqued17f1c92014-04-30 16:21:25 +0200128 timeout $client_timeout $client_exec > log/${testname}_client.log 2>&1
Ben Craigf41d79d2014-01-08 15:15:48 -0600129
Roger Meier4d5157d2012-01-09 21:23:19 +0000130 if [ "$?" -eq "0" ]; then
Roger Meiercc0fe272014-05-16 23:18:25 +0200131 result="success($?)"
132 echo " $result"
Roger Meier4d5157d2012-01-09 21:23:19 +0000133 else
Roger Meiercc0fe272014-05-16 23:18:25 +0200134 result="failure($?)"
135 echo " $result"
Roger Meier4edac7f2014-05-02 21:07:01 +0200136 # add details to the error.log
137 print_header >> log/error.log
138 printf "%-16s %-11s %-17s\n" ${client_server} ${protocol} ${transport} >> log/error.log
139 echo "=================== server message ===================" >> log/error.log
140 tail log/${testname}_server.log >> log/error.log
141 echo "=================== client message ===================" >> log/error.log
142 tail log/${testname}_client.log >> log/error.log
143 echo "======================================================" >> log/error.log
144 echo "" >> log/error.log
Roger Meierbea27342014-08-08 00:30:50 +0200145 FAILED=$(($FAILED + 1))
Roger Meier4d5157d2012-01-09 21:23:19 +0000146 fi
Roger Meierbea27342014-08-08 00:30:50 +0200147 TESTCOUNT=$(($TESTCOUNT + 1))
henriqued17f1c92014-04-30 16:21:25 +0200148
henriquead4df162014-05-20 13:18:45 +0200149 # split client-server string
150 client=${client_server%-*}
151 server=${client_server#*-}
Roger Meiercc0fe272014-05-16 23:18:25 +0200152
153 cat << EOF >> $STATUS_HTML
154 [
Roger Meiercc0fe272014-05-16 23:18:25 +0200155 "${server}",
Roger Meierc62798b2014-05-23 12:54:08 +0200156 "${client}",
Roger Meiercc0fe272014-05-16 23:18:25 +0200157 "${protocol}",
158 "${transport}",
159 "${result} (<a href=\"log/${testname}_client.log\">client</a>, <a href=\"log/${testname}_server.log\">server</a>)"
160 ],
161EOF
162
henriqued17f1c92014-04-30 16:21:25 +0200163 # silently kill server
164 kill ${server_pid} 2>/dev/null && wait ${server_pid} 2>/dev/null
Roger Meier4d5157d2012-01-09 21:23:19 +0000165}
166
167echo "Apache Thrift - integration test suite"
168date
henriqued17f1c92014-04-30 16:21:25 +0200169
henriqued17f1c92014-04-30 16:21:25 +0200170
Roger Meier4d5157d2012-01-09 21:23:19 +0000171echo "======================================================"
172
173rm -rf log
174mkdir -p log
175
Roger Meiercc0fe272014-05-16 23:18:25 +0200176
Roger Meier4d5157d2012-01-09 21:23:19 +0000177print_header
Roger Meiercc0fe272014-05-16 23:18:25 +0200178print_html_header
179
180ant -f ../lib/java/build.xml compile-test 1>/dev/null
181
Roger Meier4d5157d2012-01-09 21:23:19 +0000182
Roger Meier82525772012-11-16 00:38:27 +0000183#TODO add enum for parameters
184#TODO align program arguments across languages
Roger Meier4d5157d2012-01-09 21:23:19 +0000185
Roger Meier023192f2014-02-12 09:35:12 +0100186cpp_protocols="binary compact json"
187java_protocols="binary compact json"
Roger Meierf42ce2a2013-01-16 22:12:14 +0100188cpp_transports="buffered framed http"
189java_server_transports="buffered framed fastframed"
190java_client_transports=${java_server_transports}" http"
Roger Meier5829a2c2014-04-08 00:28:17 +0200191cpp_sockets="ip domain ip-ssl"
Roger Meierf42ce2a2013-01-16 22:12:14 +0100192java_sockets="ip ip-ssl"
193# TODO fastframed java transport is another implementation of framed transport
Roger Meier4d5157d2012-01-09 21:23:19 +0000194
Roger Meierd9b331d2014-05-25 22:59:17 +0200195nodejs_protocols="binary compact json"
Roger Meier8909cbd2014-01-26 11:44:27 +0100196nodejs_transports="buffered framed"
Roger Meier57b354b2014-02-22 01:01:58 +0100197nodejs_sockets="ip ip-ssl"
Roger Meiereaa61d82012-01-12 21:38:29 +0000198
Jens Geyerc1d79432014-04-22 22:52:43 +0200199csharp_protocols="binary compact json"
200csharp_transports="buffered framed"
201csharp_sockets="ip ip-ssl"
202
Roger Meier72268b72014-05-28 23:03:57 +0200203py_protocols="binary compact json accel"
Roger Meier76150722014-05-31 22:22:07 +0200204py_transports="buffered framed"
205py_sockets="ip ip-ssl"
Roger Meier72268b72014-05-28 23:03:57 +0200206
Roger Meiera3570ac2014-06-10 22:16:14 +0200207ruby_protocols="binary compact json accel"
208ruby_transports="buffered framed"
209ruby_sockets="ip"
210
Roger Meierf42ce2a2013-01-16 22:12:14 +0100211
212######### java client - java server #############
213for proto in $java_protocols; do
214 for trans in $java_server_transports; do
215 for sock in $java_sockets; do
216 case "$sock" in
217 "ip" ) extraparam="";;
218 "ip-ssl" ) extraparam="--ssl";;
219 esac
220 do_test "java-java" "${proto}" "${trans}-${sock}" \
henriqued5aba4c2014-04-30 18:11:11 +0200221 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testclient" \
222 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testserver" \
223 "5" "1"
Roger Meierf42ce2a2013-01-16 22:12:14 +0100224 done
225 done
226done
227
228######### cpp client - cpp server ###############
229for proto in $cpp_protocols; do
230 for trans in $cpp_transports; do
231 for sock in $cpp_sockets; do
Roger Meier4d5157d2012-01-09 21:23:19 +0000232 case "$sock" in
233 "ip" ) extraparam="";;
234 "ip-ssl" ) extraparam="--ssl";;
235 "domain" ) extraparam="--domain-socket=/tmp/ThriftTest.thrift";;
236 esac
237 do_test "cpp-cpp" "${proto}" "${trans}-${sock}" \
238 "cpp/TestClient --protocol=${proto} --transport=${trans} ${extraparam}" \
239 "cpp/TestServer --protocol=${proto} --transport=${trans} ${extraparam}" \
henriqued5aba4c2014-04-30 18:11:11 +0200240 "2" "0.1"
Roger Meierf42ce2a2013-01-16 22:12:14 +0100241 done
242 done
243done
244
henriqued17f1c92014-04-30 16:21:25 +0200245
Roger Meierf42ce2a2013-01-16 22:12:14 +0100246######### java client - cpp server ##############
247# warning: ssl over http is not supported in java client!
248for proto in $(intersection "${java_protocols}" "${cpp_protocols}"); do
249 for trans in $(intersection "${java_client_transports}" "${cpp_transports}"); do
250 for sock in $(intersection "${java_sockets}" "${cpp_sockets}"); do
251 case "$sock" in
252 "ip" ) extraparam="";;
253 "ip-ssl" ) extraparam="--ssl";;
254 esac
Roger Meier188024e2014-04-17 21:53:45 +0200255 do_test "java-cpp" "${proto}" "${trans}-${sock}" \
henriqued5aba4c2014-04-30 18:11:11 +0200256 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testclient" \
Roger Meierf42ce2a2013-01-16 22:12:14 +0100257 "cpp/TestServer --protocol=${proto} --transport=${trans} ${extraparam}"\
henriqued5aba4c2014-04-30 18:11:11 +0200258 "5" "0.1"
Roger Meierf42ce2a2013-01-16 22:12:14 +0100259 done
260 done
261done
262
263######### cpp client - java server ##############
264for proto in $(intersection "${cpp_protocols}" "${java_protocols}"); do
265 for trans in $(intersection "${cpp_transports}" "${java_server_transports}"); do
266 for sock in $(intersection "${java_sockets}" "${cpp_sockets}"); do
267 case "$sock" in
268 "ip" ) extraparam="";;
269 "ip-ssl" ) extraparam="--ssl";;
270 esac
Roger Meier188024e2014-04-17 21:53:45 +0200271 do_test "cpp-java" "${proto}" "${trans}-${sock}" \
272 "cpp/TestClient --protocol=${proto} --transport=${trans} ${extraparam}" \
henriqued5aba4c2014-04-30 18:11:11 +0200273 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testserver" \
274 "5" "1"
Roger Meierf42ce2a2013-01-16 22:12:14 +0100275 done
276 done
277done
Roger Meier4d5157d2012-01-09 21:23:19 +0000278
Roger Meier8909cbd2014-01-26 11:44:27 +0100279
henriqued17f1c92014-04-30 16:21:25 +0200280NODE_TEST_DIR=${BASEDIR}/../lib/nodejs/test
Roger Meier8909cbd2014-01-26 11:44:27 +0100281export NODE_PATH=${NODE_TEST_DIR}:${NODE_TEST_DIR}/../lib:${NODE_PATH}
Roger Meierd9b331d2014-05-25 22:59:17 +0200282######### nodejs client - nodejs server ##############
Roger Meierd9b331d2014-05-25 22:59:17 +0200283for proto in ${nodejs_protocols}; do
284 for trans in ${nodejs_transports}; do
285 for sock in ${nodejs_sockets}; do
286 case "$sock" in
287 "ip" ) extraparam="";;
288 "ip-ssl" ) extraparam="--ssl";;
289 esac
290 do_test "nodejs-nodejs" "${proto}" "${trans}-${sock}" \
291 "node ${NODE_TEST_DIR}/client.js -p ${proto} -t ${trans} ${extraparam}" \
292 "node ${NODE_TEST_DIR}/server.js -p ${proto} -t ${trans} ${extraparam}" \
293 "5" "0.2"
294 done
295 done
296done
henriqued5aba4c2014-04-30 18:11:11 +0200297
Roger Meier8909cbd2014-01-26 11:44:27 +0100298######### nodejs client - cpp server ##############
Roger Meier8909cbd2014-01-26 11:44:27 +0100299for proto in $(intersection "${nodejs_protocols}" "${cpp_protocols}"); do
300 for trans in $(intersection "${nodejs_transports}" "${cpp_transports}"); do
301 for sock in $(intersection "${nodejs_sockets}" "${cpp_sockets}"); do
Roger Meier57b354b2014-02-22 01:01:58 +0100302 case "$sock" in
303 "ip" ) extraparam="";;
304 "ip-ssl" ) extraparam="--ssl";;
305 esac
henriqued17f1c92014-04-30 16:21:25 +0200306 do_test "nodejs-cpp" "${proto}" "${trans}-${sock}" \
307 "node ${NODE_TEST_DIR}/client.js -p ${proto} -t ${trans} ${extraparam}" \
Roger Meier8909cbd2014-01-26 11:44:27 +0100308 "cpp/TestServer --protocol=${proto} --transport=${trans} ${extraparam}" \
henriqued5aba4c2014-04-30 18:11:11 +0200309 "5" "0.2"
Roger Meier8909cbd2014-01-26 11:44:27 +0100310 done
311 done
312done
313
314######### cpp client - nodejs server ##############
315for proto in $(intersection "${nodejs_protocols}" "${cpp_protocols}"); do
316 for trans in $(intersection "${nodejs_transports}" "${cpp_transports}"); do
317 for sock in $(intersection "${nodejs_sockets}" "${cpp_sockets}"); do
Roger Meier57b354b2014-02-22 01:01:58 +0100318 case "$sock" in
319 "ip" ) extraparam="";;
320 "ip-ssl" ) extraparam="--ssl";;
321 esac
henriqued17f1c92014-04-30 16:21:25 +0200322 do_test "cpp-nodejs" "${proto}" "${trans}-${sock}" \
Roger Meier57b354b2014-02-22 01:01:58 +0100323 "cpp/TestClient --protocol=${proto} --transport=${trans} ${extraparam}" \
henriqued17f1c92014-04-30 16:21:25 +0200324 "node ${NODE_TEST_DIR}/server.js -p ${proto} -t ${trans} ${extraparam}" \
henriqued5aba4c2014-04-30 18:11:11 +0200325 "5" "2"
Roger Meier8909cbd2014-01-26 11:44:27 +0100326 done
327 done
328done
329
Roger Meier5c6ad242014-05-27 21:18:00 +0200330######### nodejs client - java server ##############
Roger Meier5c6ad242014-05-27 21:18:00 +0200331for proto in $(intersection "${nodejs_protocols}" "${java_protocols}"); do
332 for trans in $(intersection "${nodejs_transports}" "${java_server_transports}"); do
333 for sock in $(intersection "${nodejs_sockets}" "${java_sockets}"); do
334 case "$sock" in
335 "ip" ) extraparam="";;
336 "ip-ssl" ) extraparam="--ssl";;
337 esac
338 do_test "nodejs-java" "${proto}" "${trans}-${sock}" \
339 "node ${NODE_TEST_DIR}/client.js -p ${proto} -t ${trans} ${extraparam}" \
340 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testserver" \
341 "5" "1"
342 done
343 done
344done
345
346######### java client - nodejs server ##############
347for proto in $(intersection "${nodejs_protocols}" "${java_protocols}"); do
348 for trans in $(intersection "${nodejs_transports}" "${java_client_transports}"); do
349 for sock in $(intersection "${nodejs_sockets}" "${java_sockets}"); do
350 case "$sock" in
351 "ip" ) extraparam="";;
352 "ip-ssl" ) extraparam="--ssl";;
353 esac
354 do_test "java-nodejs" "${proto}" "${trans}-${sock}" \
355 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testclient" \
356 "node ${NODE_TEST_DIR}/server.js -p ${proto} -t ${trans} ${extraparam}" \
357 "5" "2"
358 done
359 done
360done
361
Roger Meier72268b72014-05-28 23:03:57 +0200362######### py client - py server ##############
363for proto in ${py_protocols}; do
364 for trans in ${py_transports}; do
365 for sock in ${py_sockets}; do
366 case "$sock" in
367 "ip" ) extraparam="";;
368 "ip-ssl" ) extraparam="--ssl";;
369 esac
370 do_test "py-py" "${proto}" "${trans}-${sock}" \
Roger Meier76150722014-05-31 22:22:07 +0200371 "py/TestClient.py --protocol=${proto} --transport={trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
372 "py/TestServer.py --protocol=${proto} --transport={trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
Roger Meier72268b72014-05-28 23:03:57 +0200373 "10" "2"
374 done
375 done
376done
377
Roger Meier76150722014-05-31 22:22:07 +0200378for trans in ${py_transports}; do
379 for sock in ${py_sockets}; do
380 case "$sock" in
381 "ip" ) extraparam="";;
382 "ip-ssl" ) extraparam="--ssl";;
383 esac
384 do_test "py-py" "accel-binary" "${trans}-${sock}" \
385 "py/TestClient.py --protocol=accel --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
386 "py/TestServer.py --protocol=binary --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
387 "10" "2"
388 do_test "py-py" "binary-accel" "${trans}-${sock}" \
389 "py/TestClient.py --protocol=binary --transport={trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
390 "py/TestServer.py --protocol=accel --transport={trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
391 "10" "2"
392 done
393 done
394
Roger Meier72268b72014-05-28 23:03:57 +0200395######### py client - cpp server ##############
396for proto in $(intersection "${cpp_protocols}" "${py_protocols}"); do
397 for trans in $(intersection "${cpp_transports}" "${py_transports}"); do
398 for sock in $(intersection "${cpp_sockets}" "${py_sockets}"); do
399 case "$sock" in
400 "ip" ) extraparam="";;
401 "ip-ssl" ) extraparam="--ssl";;
402 esac
403 do_test "py-cpp" "${proto}" "${trans}-${sock}" \
Roger Meier76150722014-05-31 22:22:07 +0200404 "py/TestClient.py --protocol=${proto} --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
Roger Meier72268b72014-05-28 23:03:57 +0200405 "cpp/TestServer --protocol=${proto} --transport=${trans} ${extraparam}" \
406 "10" "2"
407 done
408 done
409done
410
Roger Meier76150722014-05-31 22:22:07 +0200411for trans in $(intersection "${cpp_transports}" "${py_transports}"); do
412 for sock in $(intersection "${cpp_sockets}" "${py_sockets}"); do
413 case "$sock" in
414 "ip" ) extraparam="";;
415 "ip-ssl" ) extraparam="--ssl";;
416 esac
417 do_test "py-cpp" "accel-binary" "${trans}-${sock}" \
418 "py/TestClient.py --protocol=accel --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
419 "cpp/TestServer --protocol=binary --transport=${trans} ${extraparam}" \
420 "10" "2"
421 done
422 done
423
Roger Meier72268b72014-05-28 23:03:57 +0200424######### cpp client - py server ##############
425for proto in $(intersection "${cpp_protocols}" "${py_protocols}"); do
426 for trans in $(intersection "${cpp_transports}" "${py_transports}"); do
427 for sock in $(intersection "${cpp_sockets}" "${py_sockets}"); do
428 case "$sock" in
429 "ip" ) extraparam="";;
430 "ip-ssl" ) extraparam="--ssl";;
431 esac
432 do_test "cpp-py" "${proto}" "${trans}-${sock}" \
433 "cpp/TestClient --protocol=${proto} --transport=${trans} ${extraparam}" \
Roger Meier76150722014-05-31 22:22:07 +0200434 "py/TestServer.py --protocol=${proto} --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
Roger Meier72268b72014-05-28 23:03:57 +0200435 "10" "2"
436 done
437 done
438done
439
Roger Meier76150722014-05-31 22:22:07 +0200440for trans in $(intersection "${cpp_transports}" "${py_transports}"); do
441 for sock in $(intersection "${cpp_sockets}" "${py_sockets}"); do
442 case "$sock" in
443 "ip" ) extraparam="";;
444 "ip-ssl" ) extraparam="--ssl";;
445 esac
446 do_test "cpp-py" "binary-accel" "${trans}-${sock}" \
447 "cpp/TestClient --protocol=binary --transport=${trans} ${extraparam}" \
448 "py/TestServer.py --protocol=accel --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
449 "10" "2"
450 done
451 done
452
Roger Meier72268b72014-05-28 23:03:57 +0200453######### py client - java server ##############
Roger Meier72268b72014-05-28 23:03:57 +0200454for proto in $(intersection "${py_protocols}" "${java_protocols}"); do
455 for trans in $(intersection "${py_transports}" "${java_server_transports}"); do
456 for sock in $(intersection "${py_sockets}" "${java_sockets}"); do
457 case "$sock" in
458 "ip" ) extraparam="";;
459 "ip-ssl" ) extraparam="--ssl";;
460 esac
461 do_test "py-java" "${proto}" "${trans}-${sock}" \
Roger Meier76150722014-05-31 22:22:07 +0200462 "py/TestClient.py --protocol=${proto} --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
Roger Meier72268b72014-05-28 23:03:57 +0200463 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testserver" \
464 "15" "2"
465 done
466 done
467done
468
Roger Meier76150722014-05-31 22:22:07 +0200469for trans in $(intersection "${py_transports}" "${java_server_transports}"); do
470 for sock in $(intersection "${py_sockets}" "${java_sockets}"); do
471 case "$sock" in
472 "ip" ) extraparam="";;
473 "ip-ssl" ) extraparam="--ssl";;
474 esac
475 do_test "py-java" "accel-binary" "${trans}-${sock}" \
476 "py/TestClient.py --protocol=accel --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
477 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=binary --transport=${trans} ${extraparam}\" run-testserver" \
478 "15" "2"
479 done
480 done
481
Roger Meier72268b72014-05-28 23:03:57 +0200482######### java client - py server ##############
483for proto in $(intersection "${py_protocols}" "${java_protocols}"); do
484 for trans in $(intersection "${py_transports}" "${java_client_transports}"); do
485 for sock in $(intersection "${py_sockets}" "${java_sockets}"); do
486 case "$sock" in
487 "ip" ) extraparam="";;
488 "ip-ssl" ) extraparam="--ssl";;
489 esac
490 do_test "java-py" "${proto}" "${trans}-${sock}" \
491 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testclient" \
Roger Meier76150722014-05-31 22:22:07 +0200492 "py/TestServer.py --protocol=${proto} --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
Roger Meier72268b72014-05-28 23:03:57 +0200493 "10" "5"
494 done
495 done
496done
497
Roger Meier76150722014-05-31 22:22:07 +0200498for trans in $(intersection "${py_transports}" "${java_client_transports}"); do
499 for sock in $(intersection "${py_sockets}" "${java_sockets}"); do
500 case "$sock" in
501 "ip" ) extraparam="";;
502 "ip-ssl" ) extraparam="--ssl";;
503 esac
504 do_test "java-py" "binary-accel" "${trans}-${sock}" \
505 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=binary --transport=${trans} ${extraparam}\" run-testclient" \
506 "py/TestServer.py --protocol=accel --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
507 "10" "5"
508 done
509 done
510
Roger Meier72268b72014-05-28 23:03:57 +0200511######### py client - nodejs server ##############
Roger Meier72268b72014-05-28 23:03:57 +0200512for proto in $(intersection "${py_protocols}" "${nodejs_protocols}"); do
513 for trans in $(intersection "${py_transports}" "${nodejs_transports}"); do
514 for sock in $(intersection "${py_sockets}" "${nodejs_sockets}"); do
515 case "$sock" in
516 "ip" ) extraparam="";;
517 "ip-ssl" ) extraparam="--ssl";;
518 esac
519 do_test "py-nodejs" "${proto}" "${trans}-${sock}" \
Roger Meier76150722014-05-31 22:22:07 +0200520 "py/TestClient.py --protocol=${proto} --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
Roger Meier72268b72014-05-28 23:03:57 +0200521 "node ${NODE_TEST_DIR}/server.js -p ${proto} -t ${trans} ${extraparam}" \
522 "15" "2"
523 done
524 done
525done
526
Roger Meier76150722014-05-31 22:22:07 +0200527for trans in $(intersection "${py_transports}" "${nodejs_transports}"); do
528 for sock in $(intersection "${py_sockets}" "${nodejs_sockets}"); do
529 case "$sock" in
530 "ip" ) extraparam="";;
531 "ip-ssl" ) extraparam="--ssl";;
532 esac
533 do_test "py-nodejs" "${proto}" "${trans}-${sock}" \
534 "py/TestClient.py --protocol=accel --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
535 "node ${NODE_TEST_DIR}/server.js -p binary -t ${trans} ${extraparam}" \
536 "15" "2"
537 done
538 done
539
Roger Meier72268b72014-05-28 23:03:57 +0200540######### nodejs client - py server ##############
541for proto in $(intersection "${py_protocols}" "${nodejs_protocols}"); do
542 for trans in $(intersection "${py_transports}" "${nodejs_transports}"); do
543 for sock in $(intersection "${py_sockets}" "${nodejs_sockets}"); do
544 case "$sock" in
545 "ip" ) extraparam="";;
546 "ip-ssl" ) extraparam="--ssl";;
547 esac
548 do_test "nodejs-py" "${proto}" "${trans}-${sock}" \
549 "node ${NODE_TEST_DIR}/client.js -p ${proto} -t ${trans} ${extraparam}" \
Roger Meier76150722014-05-31 22:22:07 +0200550 "py/TestServer.py --protocol=${proto} --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
Roger Meier72268b72014-05-28 23:03:57 +0200551 "10" "2"
552 done
553 done
554done
555
Roger Meier76150722014-05-31 22:22:07 +0200556for trans in $(intersection "${py_transports}" "${nodejs_transports}"); do
557 for sock in $(intersection "${py_sockets}" "${nodejs_sockets}"); do
558 case "$sock" in
559 "ip" ) extraparam="";;
560 "ip-ssl" ) extraparam="--ssl";;
561 esac
562 do_test "nodejs-py" "binary-accel" "${trans}-${sock}" \
563 "node ${NODE_TEST_DIR}/client.js -p binary -t ${trans} ${extraparam}" \
564 "py/TestServer.py --protocol=accel --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
565 "10" "2"
566 done
567 done
568
Roger Meiera3570ac2014-06-10 22:16:14 +0200569######### ruby client - ruby server ##############
570for proto in ${ruby_protocols}; do
571 for trans in ${ruby_transports}; do
572 for sock in ${ruby_sockets}; do
573 case "$sock" in
574 "ip" ) extraparam="";;
575 "ip-ssl" ) extraparam="--ssl";;
576 esac
577 do_test "ruby-ruby" "${proto}" "${trans}-${sock}" \
578 "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans} --port=9091" \
579 "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans} --port=9091" \
580 "5" "5"
581 done
582 done
583done
584
585for trans in ${ruby_transports}; do
586 for sock in ${ruby_sockets}; do
587 case "$sock" in
588 "ip" ) extraparam="";;
589 "ip-ssl" ) extraparam="--ssl";;
590 esac
591 do_test "ruby-ruby" "accel-binary" "${trans}-${sock}" \
592 "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans} --port=9091" \
593 "ruby rb/integration/TestServer.rb --protocol=binary --transport=${trans} --port=9091" \
594 "5" "5"
595 do_test "ruby-ruby" "binary-accel" "${trans}-${sock}" \
596 "ruby rb/integration/TestClient.rb --protocol=binary --transport=${trans} --port=9091" \
597 "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans} --port=9091" \
598 "5" "5"
599 done
600 done
601
602######### ruby client - cpp server ##############
603for proto in $(intersection "${cpp_protocols}" "${ruby_protocols}"); do
604 for trans in $(intersection "${cpp_transports}" "${ruby_transports}"); do
605 for sock in $(intersection "${cpp_sockets}" "${ruby_sockets}"); do
606 case "$sock" in
607 "ip" ) extraparam="";;
608 "ip-ssl" ) extraparam="--ssl";;
609 esac
610 do_test "ruby-cpp" "${proto}" "${trans}-${sock}" \
611 "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans}" \
612 "cpp/TestServer --protocol=${proto} --transport=${trans} ${extraparam}" \
613 "5" "5"
614 done
615 done
616done
617
618for trans in $(intersection "${cpp_transports}" "${ruby_transports}"); do
619 for sock in $(intersection "${cpp_sockets}" "${ruby_sockets}"); do
620 case "$sock" in
621 "ip" ) extraparam="";;
622 "ip-ssl" ) extraparam="--ssl";;
623 esac
624 do_test "ruby-cpp" "accel-binary" "${trans}-${sock}" \
625 "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans}" \
626 "cpp/TestServer --protocol=binary --transport=${trans} ${extraparam}" \
627 "5" "5"
628 done
629 done
630
631######### cpp client - ruby server ##############
632for proto in $(intersection "${cpp_protocols}" "${ruby_protocols}"); do
633 for trans in $(intersection "${cpp_transports}" "${ruby_transports}"); do
634 for sock in $(intersection "${cpp_sockets}" "${ruby_sockets}"); do
635 case "$sock" in
636 "ip" ) extraparam="";;
637 "ip-ssl" ) extraparam="--ssl";;
638 esac
639 do_test "cpp-ruby" "${proto}" "${trans}-${sock}" \
640 "cpp/TestClient --protocol=${proto} --transport=${trans} ${extraparam}" \
641 "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans}" \
642 "5" "5"
643 done
644 done
645done
646
647for trans in $(intersection "${cpp_transports}" "${ruby_transports}"); do
648 for sock in $(intersection "${cpp_sockets}" "${ruby_sockets}"); do
649 case "$sock" in
650 "ip" ) extraparam="";;
651 "ip-ssl" ) extraparam="--ssl";;
652 esac
653 do_test "cpp-ruby" "binary-accel" "${trans}-${sock}" \
654 "cpp/TestClient --protocol=binary --transport=${trans} ${extraparam}" \
655 "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans}" \
656 "5" "5"
657 done
658 done
659
660######### ruby client - java server ##############
661for proto in $(intersection "${ruby_protocols}" "${java_protocols}"); do
662 for trans in $(intersection "${ruby_transports}" "${java_server_transports}"); do
663 for sock in $(intersection "${ruby_sockets}" "${java_sockets}"); do
664 case "$sock" in
665 "ip" ) extraparam="";;
666 "ip-ssl" ) extraparam="--ssl";;
667 esac
668 do_test "ruby-java" "${proto}" "${trans}-${sock}" \
669 "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans}" \
670 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testserver" \
671 "15" "5"
672 done
673 done
674done
675
676for trans in $(intersection "${ruby_transports}" "${java_server_transports}"); do
677 for sock in $(intersection "${ruby_sockets}" "${java_sockets}"); do
678 case "$sock" in
679 "ip" ) extraparam="";;
680 "ip-ssl" ) extraparam="--ssl";;
681 esac
682 do_test "ruby-java" "accel-binary" "${trans}-${sock}" \
683 "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans}" \
684 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=binary --transport=${trans} ${extraparam}\" run-testserver" \
685 "15" "5"
686 done
687 done
688
689######### java client - ruby server ##############
690for proto in $(intersection "${ruby_protocols}" "${java_protocols}"); do
691 for trans in $(intersection "${ruby_transports}" "${java_client_transports}"); do
692 for sock in $(intersection "${ruby_sockets}" "${java_sockets}"); do
693 case "$sock" in
694 "ip" ) extraparam="";;
695 "ip-ssl" ) extraparam="--ssl";;
696 esac
697 do_test "java-ruby" "${proto}" "${trans}-${sock}" \
698 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=${proto} --transport=${trans} ${extraparam}\" run-testclient" \
699 "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans}" \
700 "10" "5"
701 done
702 done
703done
704
705for trans in $(intersection "${ruby_transports}" "${java_client_transports}"); do
706 for sock in $(intersection "${ruby_sockets}" "${java_sockets}"); do
707 case "$sock" in
708 "ip" ) extraparam="";;
709 "ip-ssl" ) extraparam="--ssl";;
710 esac
711 do_test "java-ruby" "binary-accel" "${trans}-${sock}" \
712 "ant -f ../lib/java/build.xml -Dno-gen-thrift=\"\" -Dtestargs \"--protocol=binary --transport=${trans} ${extraparam}\" run-testclient" \
713 "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans}" \
714 "10" "5"
715 done
716 done
717
718######### ruby client - nodejs server ##############
719for proto in $(intersection "${ruby_protocols}" "${nodejs_protocols}"); do
720 for trans in $(intersection "${ruby_transports}" "${nodejs_transports}"); do
721 for sock in $(intersection "${ruby_sockets}" "${nodejs_sockets}"); do
722 case "$sock" in
723 "ip" ) extraparam="";;
724 "ip-ssl" ) extraparam="--ssl";;
725 esac
726 do_test "ruby-nodejs" "${proto}" "${trans}-${sock}" \
727 "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans}" \
728 "node ${NODE_TEST_DIR}/server.js -p ${proto} -t ${trans} ${extraparam}" \
729 "5" "2"
730 done
731 done
732done
733
734for trans in $(intersection "${ruby_transports}" "${nodejs_transports}"); do
735 for sock in $(intersection "${ruby_sockets}" "${nodejs_sockets}"); do
736 case "$sock" in
737 "ip" ) extraparam="";;
738 "ip-ssl" ) extraparam="--ssl";;
739 esac
740 do_test "ruby-nodejs" "${proto}" "${trans}-${sock}" \
741 "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans}" \
742 "node ${NODE_TEST_DIR}/server.js -p binary -t ${trans} ${extraparam}" \
743 "5" "2"
744 done
745 done
746
747######### nodejs client - ruby server ##############
748for proto in $(intersection "${ruby_protocols}" "${nodejs_protocols}"); do
749 for trans in $(intersection "${ruby_transports}" "${nodejs_transports}"); do
750 for sock in $(intersection "${ruby_sockets}" "${nodejs_sockets}"); do
751 case "$sock" in
752 "ip" ) extraparam="";;
753 "ip-ssl" ) extraparam="--ssl";;
754 esac
755 do_test "nodejs-ruby" "${proto}" "${trans}-${sock}" \
756 "node ${NODE_TEST_DIR}/client.js -p ${proto} -t ${trans} ${extraparam}" \
757 "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans}" \
758 "10" "5"
759 done
760 done
761done
762
763for trans in $(intersection "${ruby_transports}" "${nodejs_transports}"); do
764 for sock in $(intersection "${ruby_sockets}" "${nodejs_sockets}"); do
765 case "$sock" in
766 "ip" ) extraparam="";;
767 "ip-ssl" ) extraparam="--ssl";;
768 esac
769 do_test "nodejs-ruby" "binary-accel" "${trans}-${sock}" \
770 "node ${NODE_TEST_DIR}/client.js -p binary -t ${trans} ${extraparam}" \
771 "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans}" \
772 "10" "2"
773 done
774 done
775
776 ######### py client - ruby server ##############
777for proto in $(intersection "${py_protocols}" "${ruby_protocols}"); do
778 for trans in $(intersection "${py_transports}" "${ruby_transports}"); do
779 for sock in $(intersection "${py_sockets}" "${ruby_sockets}"); do
780 case "$sock" in
781 "ip" ) extraparam="";;
782 "ip-ssl" ) extraparam="--ssl";;
783 esac
784 do_test "py-ruby" "${proto}" "${trans}-${sock}" \
785 "py/TestClient.py --protocol=${proto} --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
786 "ruby rb/integration/TestServer.rb --protocol=${proto} --transport=${trans}" \
787 "15" "5"
788 done
789 done
790done
791
792for trans in $(intersection "${py_transports}" "${ruby_transports}"); do
793 for sock in $(intersection "${py_sockets}" "${ruby_sockets}"); do
794 case "$sock" in
795 "ip" ) extraparam="";;
796 "ip-ssl" ) extraparam="--ssl";;
797 esac
798 do_test "py-ruby" "${proto}" "${trans}-${sock}" \
799 "py/TestClient.py --protocol=accel --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
800 "ruby rb/integration/TestServer.rb --protocol=binary --transport=${trans}" \
801 "15" "5"
802 do_test "py-ruby" "${proto}" "${trans}-${sock}" \
803 "py/TestClient.py --protocol=binary --transport=${trans} --port=9090 --host=localhost --genpydir=py/gen-py ${extraparam}" \
804 "ruby rb/integration/TestServer.rb --protocol=accel --transport=${trans}" \
805 "15" "5"
806 done
807 done
808
809######### ruby client - py server ##############
810for proto in $(intersection "${py_protocols}" "${ruby_protocols}"); do
811 for trans in $(intersection "${py_transports}" "${ruby_transports}"); do
812 for sock in $(intersection "${py_sockets}" "${ruby_sockets}"); do
813 case "$sock" in
814 "ip" ) extraparam="";;
815 "ip-ssl" ) extraparam="--ssl";;
816 esac
817 do_test "ruby-py" "${proto}" "${trans}-${sock}" \
818 "ruby rb/integration/TestClient.rb --protocol=${proto} --transport=${trans}" \
819 "py/TestServer.py --protocol=${proto} --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
820 "5" "2"
821 done
822 done
823done
824
825for trans in $(intersection "${py_transports}" "${ruby_transports}"); do
826 for sock in $(intersection "${py_sockets}" "${ruby_sockets}"); do
827 case "$sock" in
828 "ip" ) extraparam="";;
829 "ip-ssl" ) extraparam="--ssl";;
830 esac
831 do_test "ruby-py" "binary-accel" "${trans}-${sock}" \
832 "ruby rb/integration/TestClient.rb --protocol=binary --transport=${trans}" \
833 "py/TestServer.py --protocol=accel --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
834 "5" "2"
835 do_test "ruby-py" "accel-binary" "${trans}-${sock}" \
836 "ruby rb/integration/TestClient.rb --protocol=accel --transport=${trans}" \
837 "py/TestServer.py --protocol=binary --transport=${trans} --port=9090 --genpydir=py/gen-py TSimpleServer ${extraparam}" \
838 "5" "2"
839 done
840 done
841
842
Roger Meier691ec002012-11-02 07:50:24 +0000843# delete Unix Domain Socket used by cpp tests
844rm -f /tmp/ThriftTest.thrift
845
Jens Geyerc1d79432014-04-22 22:52:43 +0200846######### csharp client - csharp server #############
847export MONO_PATH=../lib/csharp
848for proto in $csharp_protocols; do
849 for trans in $csharp_transports; do
850 for sock in $csharp_sockets; do
851 case "$sock" in
852 "ip" ) extraparam="";;
853 "ip-ssl" ) extraparam="--ssl";;
854 esac
855 do_test "csharp-csharp" "${proto}" "${trans}-${sock}" \
856 "../lib/csharp/test/ThriftTest/TestClientServer.exe client --protocol=${proto} --transport=${trans} ${extraparam}" \
857 "../lib/csharp/test/ThriftTest/TestClientServer.exe server --protocol=${proto} --transport=${trans} ${extraparam}" \
henriqued5aba4c2014-04-30 18:11:11 +0200858 "5" "1"
Jens Geyerc1d79432014-04-22 22:52:43 +0200859 done
860 done
861done
862
863
Roger Meier4edac7f2014-05-02 21:07:01 +0200864do_test "js-java" "json" "http-ip" \
Roger Meier4d5157d2012-01-09 21:23:19 +0000865 "" \
866 "ant -f ../lib/js/test/build.xml unittest" \
henriqued17f1c92014-04-30 16:21:25 +0200867 "2" "2"
Roger Meier4d5157d2012-01-09 21:23:19 +0000868do_test "perl-cpp" "binary" "buffered-ip" \
Roger Meier01b568c2012-01-10 21:30:02 +0000869 "perl -I perl/gen-perl/ -I../lib/perl/lib/ perl/TestClient.pl" \
Roger Meier4d5157d2012-01-09 21:23:19 +0000870 "cpp/TestServer" \
henriqued5aba4c2014-04-30 18:11:11 +0200871 "10" "2"
Roger Meierb33967b2012-01-21 09:18:05 +0000872do_test "php-cpp" "binary" "buffered-ip" \
873 "make -C php/ client" \
874 "cpp/TestServer" \
henriqued5aba4c2014-04-30 18:11:11 +0200875 "10" "2"
Roger Meier4edac7f2014-05-02 21:07:01 +0200876
877echo " failed tests are logged to test/log/error.log"
Roger Meiercc0fe272014-05-16 23:18:25 +0200878echo " full log is here test/log/client_server_protocol_transport_client.log"
879echo " full log is here test/log/client_server_protocol_transport_server.log"
880echo " or look at file://$BASEDIR/$STATUS_HTML"
881
henriquead4df162014-05-20 13:18:45 +0200882ELAPSED_TIME=$(echo "(${SECONDS} - ${START_TIME})" | bc)
883DURATION="${ELAPSED_TIME} seconds"
Roger Meierbea27342014-08-08 00:30:50 +0200884
885echo $FAILED failed of $TESTCOUNT tests in total
Roger Meiercc0fe272014-05-16 23:18:25 +0200886echo "test an took" $DURATION
887print_html_footer "$DURATION"
888
Roger Meier4edac7f2014-05-02 21:07:01 +0200889date
Roger Meier82525772012-11-16 00:38:27 +0000890cd -