1*cc02d7e2SAndroid Build Coastguard Worker#!/bin/bash 2*cc02d7e2SAndroid Build Coastguard Worker# Copyright 2017 gRPC authors. 3*cc02d7e2SAndroid Build Coastguard Worker# 4*cc02d7e2SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*cc02d7e2SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*cc02d7e2SAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*cc02d7e2SAndroid Build Coastguard Worker# 8*cc02d7e2SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*cc02d7e2SAndroid Build Coastguard Worker# 10*cc02d7e2SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*cc02d7e2SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*cc02d7e2SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*cc02d7e2SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*cc02d7e2SAndroid Build Coastguard Worker# limitations under the License. 15*cc02d7e2SAndroid Build Coastguard Worker 16*cc02d7e2SAndroid Build Coastguard Worker# Creates test cases for a language by running run_interop_test in manual mode 17*cc02d7e2SAndroid Build Coastguard Worker# and save the generated output under ./testcases/<lang>__<release>. 18*cc02d7e2SAndroid Build Coastguard Worker# 19*cc02d7e2SAndroid Build Coastguard Worker# Params: 20*cc02d7e2SAndroid Build Coastguard Worker# LANG - The language. 21*cc02d7e2SAndroid Build Coastguard Worker# SKIP_TEST - If set, skip running the test cases for sanity. 22*cc02d7e2SAndroid Build Coastguard Worker# RELEASE - Create testcase for specific release, default to 'master'. 23*cc02d7e2SAndroid Build Coastguard Worker# KEEP_IMAGE - Do not clean local docker image created for the test cases. 24*cc02d7e2SAndroid Build Coastguard Worker 25*cc02d7e2SAndroid Build Coastguard Workerset -e 26*cc02d7e2SAndroid Build Coastguard Worker 27*cc02d7e2SAndroid Build Coastguard Workercd $(dirname $0)/../.. 28*cc02d7e2SAndroid Build Coastguard WorkerGRPC_ROOT=$(pwd) 29*cc02d7e2SAndroid Build Coastguard WorkerCMDS_SH="${GRPC_ROOT}/interop_client_cmds.sh" 30*cc02d7e2SAndroid Build Coastguard WorkerTESTCASES_DIR=${GRPC_ROOT}/tools/interop_matrix/testcases 31*cc02d7e2SAndroid Build Coastguard Worker 32*cc02d7e2SAndroid Build Coastguard Workerecho "Create '$LANG' test cases for gRPC release '${RELEASE:=master}'" 33*cc02d7e2SAndroid Build Coastguard Worker 34*cc02d7e2SAndroid Build Coastguard Worker# Clean up 35*cc02d7e2SAndroid Build Coastguard Workerfunction cleanup { 36*cc02d7e2SAndroid Build Coastguard Worker [ -z "$testcase" ] && testcase=$CMDS_SH 37*cc02d7e2SAndroid Build Coastguard Worker echo "testcase: $testcase" 38*cc02d7e2SAndroid Build Coastguard Worker if [ -e $testcase ]; then 39*cc02d7e2SAndroid Build Coastguard Worker # The script should generate a line with "${docker_image:=...}". 40*cc02d7e2SAndroid Build Coastguard Worker eval docker_image=$(grep -oe '${docker_image:=.*}' $testcase) 41*cc02d7e2SAndroid Build Coastguard Worker if [ -z "$KEEP_IMAGE" ]; then 42*cc02d7e2SAndroid Build Coastguard Worker echo "Clean up docker_image $docker_image" 43*cc02d7e2SAndroid Build Coastguard Worker docker rmi -f $docker_image 44*cc02d7e2SAndroid Build Coastguard Worker else 45*cc02d7e2SAndroid Build Coastguard Worker echo "Kept docker_image $docker_image" 46*cc02d7e2SAndroid Build Coastguard Worker fi 47*cc02d7e2SAndroid Build Coastguard Worker fi 48*cc02d7e2SAndroid Build Coastguard Worker [ -e "$CMDS_SH" ] && rm $CMDS_SH 49*cc02d7e2SAndroid Build Coastguard Worker} 50*cc02d7e2SAndroid Build Coastguard Worker 51*cc02d7e2SAndroid Build Coastguard Workerfunction createtests { 52*cc02d7e2SAndroid Build Coastguard Worker# Invoke run_interop_test in manual mode. 53*cc02d7e2SAndroid Build Coastguard Worker# TODO(adelez): Add cloud_gateways when we figure out how to skip them if not 54*cc02d7e2SAndroid Build Coastguard Worker# running in GCE. 55*cc02d7e2SAndroid Build Coastguard Workerif [ $1 == "cxx" ]; then 56*cc02d7e2SAndroid Build Coastguard Workerclient_lang="c++" 57*cc02d7e2SAndroid Build Coastguard Workerelse 58*cc02d7e2SAndroid Build Coastguard Workerclient_lang=$1 59*cc02d7e2SAndroid Build Coastguard Workerfi 60*cc02d7e2SAndroid Build Coastguard Workerecho $client_lang 61*cc02d7e2SAndroid Build Coastguard Worker 62*cc02d7e2SAndroid Build Coastguard Worker${GRPC_ROOT}/tools/run_tests/run_interop_tests.py -l $client_lang --use_docker \ 63*cc02d7e2SAndroid Build Coastguard Worker --cloud_to_prod --prod_servers default gateway_v4 --manual_run --custom_credentials_type tls 64*cc02d7e2SAndroid Build Coastguard Worker 65*cc02d7e2SAndroid Build Coastguard Workertrap cleanup EXIT 66*cc02d7e2SAndroid Build Coastguard Worker# TODO(adelez): add test auth tests but do not run if not testing on GCE. 67*cc02d7e2SAndroid Build Coastguard Worker# Running the testcases as sanity unless we are asked to skip. 68*cc02d7e2SAndroid Build Coastguard Worker[ -z "$SKIP_TEST" ] && (echo "Running test cases: $CMDS_SH"; sh $CMDS_SH) 69*cc02d7e2SAndroid Build Coastguard Worker 70*cc02d7e2SAndroid Build Coastguard Workermkdir -p $TESTCASES_DIR 71*cc02d7e2SAndroid Build Coastguard Workertestcase=$TESTCASES_DIR/$1__$RELEASE 72*cc02d7e2SAndroid Build Coastguard Workerif [ -e $testcase ]; then 73*cc02d7e2SAndroid Build Coastguard Worker echo "Updating: $testcase" 74*cc02d7e2SAndroid Build Coastguard Worker diff $testcase $CMDS_SH || true 75*cc02d7e2SAndroid Build Coastguard Workerfi 76*cc02d7e2SAndroid Build Coastguard Workermv $CMDS_SH $testcase 77*cc02d7e2SAndroid Build Coastguard Workerchmod a+x $testcase 78*cc02d7e2SAndroid Build Coastguard Workerecho "Test cases created: $testcase" 79*cc02d7e2SAndroid Build Coastguard Worker} 80*cc02d7e2SAndroid Build Coastguard Worker 81*cc02d7e2SAndroid Build Coastguard Workerif [ $LANG == "csharp" ]; then 82*cc02d7e2SAndroid Build Coastguard Workercreatetests "csharp" 83*cc02d7e2SAndroid Build Coastguard Workercreatetests "csharpcoreclr" 84*cc02d7e2SAndroid Build Coastguard Workerelse 85*cc02d7e2SAndroid Build Coastguard Workercreatetests $LANG 86*cc02d7e2SAndroid Build Coastguard Workerfi 87