blob: 619d2fe1c463b615de810fc2a425c7c80fe466f9 [file] [log] [blame]
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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
#
# https://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 -ex
cd "${0%/*}/../../../.."
VERSION=$(<share/VERSION.txt)
export GEM_HOME="$PWD/lang/ruby/.gem/"
java_tool() {
java -jar "lang/java/tools/target/avro-tools-$VERSION.jar" "$@"
}
py_tool() {
PYTHONPATH=lang/py python3 -m avro.tool "$@"
}
ruby_tool() {
ruby -Ilang/ruby/lib lang/ruby/test/tool.rb "$@"
}
tools=( {java,py,ruby}_tool )
proto=share/test/schemas/simple.avpr
portfile="/tmp/interop_$$"
cleanup() {
rm -rf "$portfile"
for job in $(jobs -p); do
kill "$job" 2>/dev/null || true;
done
}
trap 'cleanup' EXIT
for server in "${tools[@]}"; do
for msgDir in share/test/interop/rpc/*; do
msg="${msgDir##*/}"
for c in "$msgDir/"*; do
echo "TEST: $c"
for client in "${tools[@]}"; do
rm -rf "$portfile"
"$server" rpcreceive 'http://127.0.0.1:0/' "$proto" "$msg" \
-file "$c/response.avro" > "$portfile" &
count=0
until [[ -s "$portfile" ]]; do
sleep 1
if (( count++ >= 10 )); then
echo "$server did not start." >&2
exit 1
fi
done
read -r _ port < "$portfile"
"$client" rpcsend "http://127.0.0.1:$port" "$proto" "$msg" \
-file "$c/request.avro"
done
done
done
done