1*cc02d7e2SAndroid Build Coastguard Worker#!/bin/bash 2*cc02d7e2SAndroid Build Coastguard Worker# Copyright 2022 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 Workerset -euxo pipefail 17*cc02d7e2SAndroid Build Coastguard Worker 18*cc02d7e2SAndroid Build Coastguard Workercd "$(dirname "$0")" 19*cc02d7e2SAndroid Build Coastguard Worker 20*cc02d7e2SAndroid Build Coastguard WorkerARTIFACT_DIRECTORY="$1" 21*cc02d7e2SAndroid Build Coastguard Worker 22*cc02d7e2SAndroid Build Coastguard WorkerBUCKET_NAME="grpc-gcf-distribtests" 23*cc02d7e2SAndroid Build Coastguard Worker 24*cc02d7e2SAndroid Build Coastguard WorkerRUN_ID=$(uuidgen) 25*cc02d7e2SAndroid Build Coastguard Worker 26*cc02d7e2SAndroid Build Coastguard WorkerFAILED_RUNTIMES="" 27*cc02d7e2SAndroid Build Coastguard Worker 28*cc02d7e2SAndroid Build Coastguard WorkerRUNTIMES=$(gcloud functions runtimes list --filter name:python* --region us-west1 | grep python | awk '{print $1}') 29*cc02d7e2SAndroid Build Coastguard Worker 30*cc02d7e2SAndroid Build Coastguard Workerwhile read -r RUNTIME; do 31*cc02d7e2SAndroid Build Coastguard Worker BARE_VERSION=${RUNTIME//python/} 32*cc02d7e2SAndroid Build Coastguard Worker 33*cc02d7e2SAndroid Build Coastguard Worker # We sort to get the latest manylinux version. 34*cc02d7e2SAndroid Build Coastguard Worker ARTIFACT=$(find "${ARTIFACT_DIRECTORY}" -regex '.*grpcio-[0-9\.]+.+-cp'"${BARE_VERSION}"'-cp'"${BARE_VERSION}"'m?-manylinux.+x86_64\.whl' | sort -r | head -n 1) 35*cc02d7e2SAndroid Build Coastguard Worker ARTIFACT_BASENAME=$(basename "${ARTIFACT}") 36*cc02d7e2SAndroid Build Coastguard Worker 37*cc02d7e2SAndroid Build Coastguard Worker if [ "$ARTIFACT_BASENAME" != "" ]; then 38*cc02d7e2SAndroid Build Coastguard Worker # Upload artifact to GCS so GCF can access it. 39*cc02d7e2SAndroid Build Coastguard Worker # A 1 day retention policy is active on this bucket. 40*cc02d7e2SAndroid Build Coastguard Worker gsutil cp "${ARTIFACT}" "gs://${BUCKET_NAME}/${RUN_ID}/${ARTIFACT_BASENAME}" 41*cc02d7e2SAndroid Build Coastguard Worker 42*cc02d7e2SAndroid Build Coastguard Worker echo "Testing runtime ${RUNTIME} with artifact ${ARTIFACT_BASENAME}" 43*cc02d7e2SAndroid Build Coastguard Worker ./run_single.sh "${RUNTIME}" "https://storage.googleapis.com/${BUCKET_NAME}/${RUN_ID}/${ARTIFACT_BASENAME}" || FAILED_RUNTIMES="${FAILED_RUNTIMES} ${RUNTIME}" 44*cc02d7e2SAndroid Build Coastguard Worker else 45*cc02d7e2SAndroid Build Coastguard Worker echo "Skip testing ${RUNTIME} because we no longer support this version" 46*cc02d7e2SAndroid Build Coastguard Worker fi 47*cc02d7e2SAndroid Build Coastguard Workerdone<<<"${RUNTIMES}" 48*cc02d7e2SAndroid Build Coastguard Worker 49*cc02d7e2SAndroid Build Coastguard Workerif [ "$FAILED_RUNTIMES" != "" ] 50*cc02d7e2SAndroid Build Coastguard Workerthen 51*cc02d7e2SAndroid Build Coastguard Worker echo "GCF Distribtest failed: Failing runtimes: ${FAILED_RUNTIMES}" 52*cc02d7e2SAndroid Build Coastguard Worker exit 1 53*cc02d7e2SAndroid Build Coastguard Workerfi 54