aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/gce_setup/grpc_docker.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gce_setup/grpc_docker.sh')
-rwxr-xr-xtools/gce_setup/grpc_docker.sh1739
1 files changed, 0 insertions, 1739 deletions
diff --git a/tools/gce_setup/grpc_docker.sh b/tools/gce_setup/grpc_docker.sh
deleted file mode 100755
index e50706ec74..0000000000
--- a/tools/gce_setup/grpc_docker.sh
+++ /dev/null
@@ -1,1739 +0,0 @@
-#!/bin/bash
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#
-# Contains funcs that help maintain GRPC's Docker images.
-#
-# Most funcs rely on the special-purpose GCE instance to build the docker
-# instances and store them in a GCS-backed docker repository.
-#
-# The GCE instance
-# - should be based on the container-optimized GCE instance
-# [https://cloud.google.com/compute/docs/containers].
-# - should be running google/docker-registry image
-# [https://registry.hub.docker.com/u/google/docker-registry/], so that images
-# can be saved to GCS
-# - should have the GCE support scripts from this directory install on it.
-#
-# The expected workflow is
-# - start a grpc docker GCE instance
-# * on startup, some of the docker images will be regenerated automatically
-# - used grpc_update_image to update images via that instance
-
-
-# Creates the ssh key file expect by 'gcloud compute ssh' if it does not exist.
-#
-# Allows gcloud ssh commands to run on freshly started docker instances.
-_grpc_ensure_gcloud_ssh() {
- local default_key_file="$HOME/.ssh/google_compute_engine"
- if [ "$HOME" == "/" ]
- then
- default_key_file="/root/.ssh/google_compute_engine"
- fi
- [ -f $default_key_file ] || {
- ssh-keygen -f $default_key_file -N '' > /dev/null || {
- echo "could not precreate $default_key_file" 1>&2
- return 1
- }
- }
-}
-
-# Pushes a dockerfile dir to cloud storage.
-#
-# dockerfile is expected to the parent directory to a nunber of directoies each
-# of which specifies a Dockerfiles.
-#
-# grpc_push_dockerfiles path/to/docker_parent_dir gs://bucket/path/to/gcs/parent
-grpc_push_dockerfiles() {
- local docker_dir=$1
- [[ -n $docker_dir ]] || {
- echo "$FUNCNAME: missing arg: docker_dir" 1>&2
- return 1
- }
-
- local gs_root_uri=$2
- [[ -n $gs_root_uri ]] || {
- echo "$FUNCNAME: missing arg: gs_root_uri" 1>&2
- return 1
- }
-
- find $docker_dir -name '*~' -o -name '#*#' -exec rm -fv {} \; || {
- echo "$FUNCNAME: failed: cleanup of tmp files in $docker_dir" 1>&2
- return 1
- }
- gsutil cp -R $docker_dir $gs_root_uri || {
- echo "$FUNCNAME: failed: cp $docker_dir -> $gs_root_uri" 1>&2
- return 1
- }
-}
-
-# Adds the user to docker group on a GCE instance, and restarts the docker
-# daemon
-grpc_add_docker_user() {
- _grpc_ensure_gcloud_ssh || return 1;
- local host=$1
- [[ -n $host ]] || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-
- local project=$2
- local project_opt=''
- [[ -n $project ]] && project_opt=" --project $project"
-
- local zone=$3
- local zone_opt=''
- [[ -n $zone ]] && zone_opt=" --zone $zone"
-
-
- local func_lib="/var/local/startup_scripts/shared_startup_funcs.sh"
- local ssh_cmd="source $func_lib && grpc_docker_add_docker_group"
- gcloud compute $project_opt ssh $zone_opt $host --command "$ssh_cmd"
-}
-
-_grpc_update_image_args() {
- echo "image_args $@"
- # default the host, root storage uri and docker file root
- grpc_gs_root='gs://tmp-grpc-dev/admin/'
- grpc_dockerfile_root='tools/dockerfile'
- grpc_gce_script_root='tools/gce_setup'
- host='grpc-docker-builder'
-
- # see if -p or -z is used to override the the project or zone
- local OPTIND
- local OPTARG
- while getopts :r:d:h: name
- do
- case $name in
- d) grpc_dockerfile_root=$OPTARG ;;
- r) grpc_gs_root=$OPTARG ;;
- s) grpc_gce_script_root=$OPTARG ;;
- h) host=$OPTARG ;;
- :) continue ;; # ignore -r or -d without args, just use the defaults
- \?) echo "-$OPTARG: unknown flag; it's ignored" 1>&2; continue ;;
- esac
- done
- shift $((OPTIND-1))
-
- [[ -d $grpc_dockerfile_root ]] || {
- echo "Could not locate dockerfile root dir: $grpc_dockerfile_root" 1>&2
- return 1
- }
-
- [[ -d $grpc_gce_script_root ]] || {
- echo "Could not locate gce script dir: $grpc_gce_script_root" 1>&2
- return 1
- }
-
- # the suffix is required and can't be defaulted
- # the suffix has two roles:
- # - images are labelled grpc/<label_suffix>
- # - the dockerfile is for an image is dockerfile_root/grpc_<label_suffix>
- [[ -n $1 ]] && {
- label_suffix=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: label_suffix (e.g cxx,base,ruby,java_base)" 1>&2
- return 1
- }
-}
-
-# Updates a docker image specified in a local dockerfile via the docker
-# container GCE instance.
-#
-# the docker container GCE instance
-# - should have been setup using ./new_grpc_docker_instance
-#
-# There are options for
-#
-# call-seq:
-# grpc_update_image php_base
-# grpc_update_image cxx # rebuilds the cxx image
-#
-grpc_update_image() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # set up by _grpc_update_args
- local host grpc_gs_root grpc_gce_script_root grpc_dockerfile_root label_suffix
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- _grpc_set_project_and_zone -f _grpc_update_image_args "$@" || return 1
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local image_label="grpc/$label_suffix"
- local docker_dir_basename="grpc_$label_suffix"
- local gce_docker_dir="/var/local/dockerfile/${docker_dir_basename}"
-
- # Set up and run the SSH command that builds the image
- local func_lib="shared_startup_funcs.sh"
- local gce_func_lib="/var/local/startup_scripts/$func_lib"
- local ssh_cmd="source $gce_func_lib"
- local ssh_cmd+=" && grpc_dockerfile_refresh $image_label $gce_docker_dir"
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
-
- # Update the remote copy of the GCE func library.
- local src_func_lib="$grpc_gce_script_root/$func_lib"
- local rmt_func_lib="$host:$gce_func_lib"
- gcloud compute copy-files $src_func_lib $rmt_func_lib $project_opt $zone_opt || return 1
-
- # Update the remote version of the docker func.
- local src_docker_dir="$grpc_dockerfile_root/$docker_dir_basename"
- local rmt_docker_root="$host:/var/local/dockerfile"
- gcloud compute copy-files $src_docker_dir $rmt_docker_root $project_opt $zone_opt || return 1
-
- gcloud compute $project_opt ssh $zone_opt $host --command "$ssh_cmd"
-}
-
-# gce_has_instance checks if a project contains a named instance
-#
-# call-seq:
-# gce_has_instance <project> <instance_name>
-gce_has_instance() {
- local project=$1
- [[ -n $project ]] || { echo "$FUNCNAME: missing arg: project" 1>&2; return 1; }
- local checked_instance=$2
- [[ -n $checked_instance ]] || {
- echo "$FUNCNAME: missing arg: checked_instance" 1>&2
- return 1
- }
-
- instances=$(gcloud --project $project compute instances list \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 1)
- for i in $instances
- do
- if [[ $i == $checked_instance ]]
- then
- return 0
- fi
- done
-
- echo "instance '$checked_instance' not found in compute project $project" 1>&2
- return 1
-}
-
-# gce_find_internal_ip finds the ip address of a instance if it is present in
-# the project.
-#
-# gce_find_internal_ip <project> <instance_name>
-gce_find_internal_ip() {
- local project=$1
- [[ -n $project ]] || { echo "$FUNCNAME: missing arg: project" 1>&2; return 1; }
- local checked_instance=$2
- [[ -n $checked_instance ]] || {
- echo "$FUNCNAME: missing arg: checked_instance" 1>&2
- return 1
- }
-
- gce_has_instance $project $checked_instance || return 1
- gcloud --project $project compute instances list \
- | grep -e "$checked_instance\s" \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 4
-}
-
-# sets the vars grpc_zone and grpc_project
-#
-# to be used in funcs that want to set the zone and project and potential
-# override them with
-#
-# grpc_zone
-# - is set to the value gcloud config value for compute/zone if that's present
-# - it defaults to asia-east1-a
-# - it can be overridden by passing -z <other value>
-#
-# grpc_project
-# - is set to the value gcloud config value for project if that's present
-# - it defaults to stoked-keyword-656 (the grpc cloud testing project)
-# - it can be overridden by passing -p <other value>
-_grpc_set_project_and_zone() {
- # can be set to 1 by passing -n in the args
- dry_run=0
-
- # by default; grpc_zone == gcloud config value || asia-east1-a
- # - can be assigned via -p<project> in the args
- grpc_zone=$(gcloud config list compute/zone --format text \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 2)
- # pick a known zone as a default
- [[ $grpc_zone == 'None' ]] && grpc_zone='asia-east1-a'
-
- # grpc_project == gcloud config value || stoked-keyword-656
- # - can be assigned via -z<zone> in the args
- grpc_project=$(gcloud config list project --format text \
- | sed -e 's/ \+/ /g' | cut -d' ' -f 2)
- # pick an known zone as a default
- [[ $grpc_project == 'None' ]] && grpc_project='stoked-keyword-656'
-
- # see if -p or -z is used to override the the project or zone
- local OPTIND
- local OPTARG
- local arg_func
- while getopts :np:z:f: name
- do
- case $name in
- f) declare -F $OPTARG >> /dev/null && {
- arg_func=$OPTARG;
- } || {
- echo "-f: arg_func value: $OPTARG is not defined"
- return 2
- }
- ;;
- n) dry_run=1 ;;
- p) grpc_project=$OPTARG ;;
- z) grpc_zone=$OPTARG ;;
- :) [[ $OPT_ARG == 'f' ]] && {
- echo "-f: arg_func provided" 1>&2
- return 2
- } || {
- # ignore -p or -z without args, just use the defaults
- continue
- }
- ;;
- \?) echo "-$OPTARG: unknown flag; it's ignored" 1>&2; continue ;;
- esac
- done
- shift $((OPTIND-1))
- [[ -n $arg_func ]] && $arg_func "$@"
-}
-
-# construct the flags to be passed to the binary running the test client
-#
-# call-seq:
-# flags=$(grpc_interop_test_flags <server_ip> <server_port> <test_case>)
-# [[ -n flags ]] || return 1
-grpc_interop_test_flags() {
- [[ -n $1 ]] && { # server_ip
- local server_ip=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: server_ip" 1>&2
- return 1
- }
- [[ -n $1 ]] && { # port
- local port=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: port" 1>&2
- return 1
- }
- [[ -n $1 ]] && { # test_case
- local test_case=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: test_case" 1>&2
- return 1
- }
- echo "--server_host_override=foo.test.google.fr --server_host=$server_ip --server_port=$port --test_case=$test_case"
-}
-
-# checks the positional args and assigns them to variables visible in the caller
-#
-# these are the positional args passed to grpc_interop_test after option flags
-# are removed
-#
-# five args are expected, in order
-# - test_case
-# - host <the gce docker instance on which to run the test>
-# - client to run
-# - server_host <the gce docker instance on which the test server is running>
-# - server type
-grpc_interop_test_args() {
- [[ -n $1 ]] && { # test_case
- test_case=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: test_case" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # client_type
- case $1 in
- cxx|go|java|node|php|python|ruby|csharp_mono)
- grpc_client_platform='Docker'
- grpc_gen_test_cmd="grpc_interop_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- csharp_dotnet)
- grpc_client_platform='Windows'
- grpc_gen_test_cmd="grpc_interop_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- *)
- echo "bad client_type: $1" 1>&2
- return 1
- ;;
- esac
- } || {
- echo "$FUNCNAME: missing arg: client_type" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # grpc_server
- grpc_server=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: grpc_server" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # server_type
- case $1 in
- cxx) grpc_port=8010 ;;
- go) grpc_port=8020 ;;
- java) grpc_port=8030 ;;
- node) grpc_port=8040 ;;
- python) grpc_port=8050 ;;
- ruby) grpc_port=8060 ;;
- csharp_mono) grpc_port=8070 ;;
- csharp_dotnet) grpc_port=8070 ;;
- *) echo "bad server_type: $1" 1>&2; return 1 ;;
- esac
- shift
- } || {
- echo "$FUNCNAME: missing arg: server_type" 1>&2
- return 1
- }
-}
-
-# checks the positional args and assigns them to variables visible in the caller
-#
-# these are the positional args passed to grpc_cloud_prod_test after option flags
-# are removed
-#
-# three args are expected, in order
-# - test_case
-# - host <the gce docker instance on which to run the test>
-# - client to run
-grpc_cloud_prod_test_args() {
- [[ -n $1 ]] && { # test_case
- test_case=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: test_case" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # client_type
- case $1 in
- cxx|go|java|node|php|python|ruby|csharp_mono)
- grpc_client_platform='Docker'
- grpc_gen_test_cmd="grpc_cloud_prod_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- csharp_dotnet)
- grpc_client_platform='Windows'
- grpc_gen_test_cmd="grpc_cloud_prod_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- *)
- echo "bad client_type: $1" 1>&2
- return 1
- ;;
- esac
- } || {
- echo "$FUNCNAME: missing arg: client_type" 1>&2
- return 1
- }
-}
-
-# checks the positional args and assigns them to variables visible in the caller
-#
-# these are the positional args passed to grpc_cloud_prod_auth_test after option flags
-# are removed
-#
-# three args are expected, in order
-# - test_case
-# - host <the gce docker instance on which to run the test>
-# - client to run
-grpc_cloud_prod_auth_test_args() {
- grpc_gen_test_cmd="grpc_cloud_prod_auth_"
- [[ -n $1 ]] && { # test_case
- test_case=$1
- test_command="service_account_creds"
- if [ "$test_case" == "compute_engine_creds" ]
- then
- test_command="compute_engine_creds"
- fi
- grpc_gen_test_cmd+=$test_command
- shift
- } || {
- echo "$FUNCNAME: missing arg: test_case" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-
- [[ -n $1 ]] && { # client_type
- case $1 in
- go|java|node|php|python|ruby|csharp_mono)
- grpc_client_platform='Docker'
- grpc_gen_test_cmd+="_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- cxx)
- if [ "$test_case" == "oauth2_auth_token" ]
- then
- grpc_gen_test_cmd="grpc_cloud_prod_auth_compute_engine_creds"
- fi
- grpc_client_platform='Docker'
- grpc_gen_test_cmd+="_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- csharp_dotnet)
- grpc_client_platform='Windows'
- grpc_gen_test_cmd+="_gen_$1_cmd"
- declare -F $grpc_gen_test_cmd >> /dev/null || {
- echo "-f: test_func for $1 => $grpc_gen_test_cmd is not defined" 1>&2
- return 2
- }
- shift
- ;;
- *)
- echo "bad client_type: $1" 1>&2
- return 1
- ;;
- esac
- } || {
- echo "$FUNCNAME: missing arg: client_type" 1>&2
- return 1
- }
-}
-
-_grpc_sync_scripts_args() {
- grpc_gce_script_root='tools/gce_setup'
-
- local OPTIND
- local OPTARG
- while getopts :s: name
- do
- case $name in
- s) grpc_gce_script_root=$OPTARG ;;
- :) continue ;; # ignore -s without args, just use the defaults
- \?) echo "-$OPTARG: unknown flag; it's ignored" 1>&2; continue ;;
- esac
- done
- shift $((OPTIND-1))
-
- [[ -d $grpc_gce_script_root ]] || {
- echo "Could not locate gce script dir: $grpc_gce_script_root" 1>&2
- return 1
- }
-
- [[ $# -lt 1 ]] && {
- echo "$FUNCNAME: missing arg: host1 [host2 ... hostN]" 1>&2
- return 1
- }
- grpc_hosts="$@"
-}
-
-# Updates the latest version of the support scripts on some hosts.
-#
-# call-seq;
-# grpc_sync_scripts <server_name1>, <server_name2> .. <server_name3>
-#
-# Updates the GCE docker instance <server_name>
-grpc_sync_scripts() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- local grpc_hosts grpc_gce_script_root
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_sync_scripts_args "$@" || return 1
-
- local func_lib="shared_startup_funcs.sh"
- local gce_func_lib="/var/local/startup_scripts/$func_lib"
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local host
- for host in $grpc_hosts
- do
- gce_has_instance $grpc_project $host || return 1;
- # Update the remote copy of the GCE func library.
- local src_func_lib="$grpc_gce_script_root/$func_lib"
- local rmt_func_lib="$host:$gce_func_lib"
- gcloud compute copy-files $src_func_lib $rmt_func_lib $project_opt $zone_opt || return 1
- done
-}
-
-grpc_sync_images_args() {
- [[ $# -lt 1 ]] && {
- echo "$FUNCNAME: missing arg: host1 [host2 ... hostN]" 1>&2
- return 1
- }
- grpc_hosts="$@"
-}
-
-# Updates all the known docker images on a host..
-#
-# call-seq;
-# grpc_sync_images <server_name1>, <server_name2> .. <server_name3>
-#
-# Updates the GCE docker instance <server_name>
-grpc_sync_images() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- local grpc_hosts
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f grpc_sync_images_args "$@" || return 1
-
- local func_lib="/var/local/startup_scripts/shared_startup_funcs.sh"
- local cmd="source $func_lib && grpc_docker_pull_known"
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local host
- for host in $grpc_hosts
- do
- gce_has_instance $grpc_project $host || return 1;
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && continue # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd"
- done
-}
-
-_grpc_show_servers_args() {
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
-}
-
-
-# Shows servers on a docker instance.
-#
-# call-seq;
-# grpc_show_servers <server_name>
-# E.g
-# grpc_show_server grpc-docker-server
-#
-# Shows the grpc servers on the GCE instance <server_name>
-grpc_show_servers() {
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # set by _grpc_show_servers
- local host
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_show_servers_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- local cmd="sudo docker ps | grep grpc_"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && continue # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd"
-}
-
-_grpc_build_proto_bins_args() {
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- host='grpc-docker-builder'
- }
-}
-
-# grpc_build_proto_bins
-#
-# - rebuilds the dist_proto docker image
-# * doing this builds the protoc and the ruby, python and cpp bins statically
-#
-# - runs a docker command that copies the built protos to the GCE host
-# - copies the built protos to the local machine
-grpc_build_proto_bins() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # set by _grpc_build_proto_bins_args
- local host
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_build_proto_bins_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
-
- # rebuild the dist_proto image
- local label='dist_proto'
- grpc_update_image -- -h $host $label || return 1
-
- # run a command to copy the generated archive to the docker host
- local docker_prefix='sudo docker run -v /tmp:/tmp/proto_bins_out'
- local tar_name='proto-bins*.tar.gz'
- local cp_cmd="/bin/bash -c 'cp -v /tmp/$tar_name /tmp/proto_bins_out'"
- local cmd="$docker_prefix grpc/$label $cp_cmd"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" || return 1
-
- # copy the tar.gz locally
- local rmt_tar="$host:/tmp/$tar_name"
- local local_copy="$(pwd)"
- gcloud compute copy-files $rmt_tar $local_copy $project_opt $zone_opt || return 1
-}
-
-_grpc_build_debs_args() {
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- host='grpc-docker-builder'
- }
-}
-
-# grpc_build_debs
-#
-# - rebuilds the build_debs
-# * doing this builds a deb package for release debs
-#
-# - runs a docker command that copies the debs from the docker instance to its
-# host
-# - copies the debs from the host to the local machine
-grpc_build_debs() {
- _grpc_ensure_gcloud_ssh || return 1;
-
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # set by _grpc_build_debs_args
- local host
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_build_debs_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
-
- # Update the remote distpackages_dir
- local src_dist_dir='tools/distpackages'
- local rmt_dist_dir="$host:~"
- gcloud compute copy-files $src_dist_dir $rmt_dist_dir $project_opt $zone_opt || return 1
-
- # rebuild the build_deb image
- local label='build_deb'
- grpc_update_image -- -h $host $label || return 1
-
- # run a command to copy the debs from the docker instance to the host.
- local docker_prefix='sudo docker run -v /tmp:/tmp/host_deb_out'
- local cp_cmd="/bin/bash -c 'cp -v /tmp/deb_out/*.deb /tmp/host_deb_out'"
- local cmd="$docker_prefix grpc/$label $cp_cmd"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" || return 1
-
- # copy the debs from host machine to the local one.
- local rmt_debs="$host:/tmp/*.deb"
- local local_copy="$(pwd)"
- gcloud compute copy-files $rmt_debs $local_copy $project_opt $zone_opt || return 1
-}
-
-_grpc_launch_servers_args() {
- [[ -n $1 ]] && { # host
- host=$1
- shift
- } || {
- echo "$FUNCNAME: missing arg: host" 1>&2
- return 1
- }
- [[ -n $1 ]] && {
- servers="$@"
- } || {
- servers="cxx java go node ruby python csharp_mono"
- echo "$FUNCNAME: no servers specified, will launch defaults '$servers'"
- }
-}
-
-# Launches servers on a docker instance.
-#
-# call-seq;
-# grpc_launch_servers <server_name> [server1 server2 ...]
-# E.g
-# grpc_launch_server grpc-docker-server ruby node
-#
-# Restarts all the specified servers on the GCE instance <server_name>
-# If no servers are specified, it launches all known servers
-grpc_launch_servers() {
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # set by _grpc_launch_servers_args
- local host servers
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f _grpc_launch_servers_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- # launch each of the servers in turn
- for server in $servers
- do
- local grpc_port
- case $server in
- cxx) grpc_port=8010 ;;
- go) grpc_port=8020 ;;
- java) grpc_port=8030 ;;
- node) grpc_port=8040 ;;
- python) grpc_port=8050 ;;
- ruby) grpc_port=8060 ;;
- csharp_mono) grpc_port=8070 ;;
- *) echo "bad server_type: $1" 1>&2; return 1 ;;
- esac
- local docker_label="grpc/$server"
- local docker_name="grpc_interop_$server"
-
- cmd="sudo docker kill $docker_name > /dev/null 2>&1; "
- cmd+="sudo docker rm $docker_name > /dev/null 2>&1; "
- cmd+="sudo docker run -d --name $docker_name"
- cmd+=" -p $grpc_port:$grpc_port $docker_label"
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- local ssh_cmd="bash -l -c \"$cmd\""
- echo "will run:"
- echo " $ssh_cmd"
- echo "on $host"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd"
- done
-}
-
-# Launch servers on windows.
-grpc_launch_windows_servers() {
- local host='grpc-windows-interop1'
- local killcmd="ps -e | grep Grpc.IntegrationTesting | awk '{print \\\$1}' | xargs kill -9"
- echo "killing all servers and clients on $host with command $killcmd"
- gcloud compute $project_opt ssh $zone_opt stoked-keyword-656@grpc-windows-proxy --command "ssh $host \"$killcmd\""
-
- local cmd='cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Server/bin/Debug && ./Grpc.IntegrationTesting.Server.exe --use_tls=true --port=8070'
- # gcloud's auto-uploading of RSA keys doesn't work for Windows VMs.
- # So we have a linux machine that is authorized to access the Windows
- # machine through ssh and we use gcloud auth support to logon to the proxy.
- echo "will run:"
- echo " $cmd"
- echo "on $host (through grpc-windows-proxy)"
- gcloud compute $project_opt ssh $zone_opt stoked-keyword-656@grpc-windows-proxy --command "ssh $host '$cmd'"
-}
-
-# Runs a test command on a docker instance
-#
-# The test command is issued via gcloud compute
-#
-# There are 3 possible results:
-# 1. successful return code and finished within 60 seconds
-# 2. failure return code and finished within 60 seconds
-# 3. command does not return within 60 seconds, in which case it will be killed.
-test_runner() {
- local project_opt="--project $grpc_project"
- local zone_opt="--zone $grpc_zone"
- [[ $dry_run == 1 ]] && return 0 # don't run the command on a dry run
- if [ "$grpc_client_platform" != "Windows" ]
- then
- echo "will run:"
- echo " $cmd"
- echo "on $host"
- gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" &
- else
- # gcloud's auto-uploading of RSA keys doesn't work for Windows VMs.
- # So we have a linux machine that is authorized to access the Windows
- # machine through ssh and we use gcloud auth support to logon to the proxy.
- echo "will run:"
- echo " $cmd"
- echo "on $host (through grpc-windows-proxy)"
- gcloud compute $project_opt ssh $zone_opt stoked-keyword-656@grpc-windows-proxy --command "ssh $host '$cmd'" &
- fi
- #
- PID=$!
- echo "pid is $PID"
- for x in {0..5}
- do
- if ps -p $PID
- then
- # test command has not returned and 60 seconds timeout has not reached
- sleep 10
- else
- # test command has returned, return the return code from the test command
- wait $PID
- local ret=$?
- echo " test runner return $ret before timeout"
- return $ret
- fi
- done
- kill $PID
- echo "test got killed by timeout return as failure"
- return 1
-}
-
-# Runs a test command on a docker instance.
-#
-# call-seq:
-# grpc_interop_test <test_name> <host> <client_type> \
-# <server_host> <server_type>
-#
-# N.B: server_name defaults to 'grpc-docker-server'
-#
-# requirements:
-# host is a GCE instance running docker with access to the gRPC docker images
-# server_name is a GCE docker instance running the gRPC server in docker
-# test_name is one of the named gRPC tests [http://go/grpc_interop_tests]
-# client_type is one of [cxx,go,java,php,python,ruby]
-# server_type is one of [cxx,go,java,python,ruby]
-#
-# it assumes:
-# that each grpc-imp has a docker image named grpc/<imp>, e.g, grpc/java
-# a test is run using $ docker run 'path/to/interop_test_bin --flags'
-# the required images are available on <host>
-#
-# server_name [default:grpc-docker-server] is an instance that runs the
-# <server_type> server on the standard test port for the <server_type>
-#
-# each server_type runs it tests on a standard test port as follows:
-# cxx: 8010
-# go: 8020
-# java: 8030
-# node: 8040
-# python: 8050
-# ruby: 8060
-# csharp: 8070
-#
-# each client_type should have an associated bash func:
-# grpc_interop_gen_<client_type>_cmd
-# the func provides the dockerized commmand for running client_type's test.
-# If no such func is available, tests for that client type cannot be run.
-#
-# the flags for running a test are the same:
-#
-# --server_host=<svr_addr> --server_port=<svr_port> --test_case=<...>
-grpc_interop_test() {
- _grpc_ensure_gcloud_ssh || return 1;
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
-
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # grpc_interop_test_args
- local test_case host grpc_gen_test_cmd grpc_server grpc_port grpc_client_platform
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f grpc_interop_test_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- local addr=$(gce_find_internal_ip $grpc_project $grpc_server)
- [[ -n $addr ]] || return 1
- local flags=$(grpc_interop_test_flags $addr $grpc_port $test_case)
- [[ -n $flags ]] || return 1
- cmd=$($grpc_gen_test_cmd $flags)
- [[ -n $cmd ]] || return 1
-
- test_runner
-}
-
-# Runs a test command on a docker instance.
-#
-# call-seq:
-# grpc_cloud_prod_test <test_name> <host> <client_type>
-#
-# requirements:
-# host is a GCE instance running docker with access to the gRPC docker images
-# test_name is one of the named gRPC tests [http://go/grpc_interop_tests]
-# client_type is one of [cxx,go,java,php,python,ruby]
-#
-# it assumes:
-# that each grpc-imp has a docker image named grpc/<imp>, e.g, grpc/java
-# a test is run using $ docker run 'path/to/interop_test_bin --flags'
-# the required images are available on <host>
-#
-# each client_type should have an associated bash func:
-# grpc_cloud_prod_gen_<client_type>_cmd
-# the func provides the dockerized commmand for running client_type's test.
-# If no such func is available, tests for that client type cannot be run.
-grpc_cloud_prod_test() {
- _grpc_ensure_gcloud_ssh || return 1;
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
-
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # grpc_cloud_prod_test_args
- local test_case host grpc_gen_test_cmd grpc_client_platform
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f grpc_cloud_prod_test_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- local test_case_flag=" --test_case=$test_case"
- cmd=$($grpc_gen_test_cmd $test_case_flag)
- [[ -n $cmd ]] || return 1
-
- test_runner
-}
-
-# Runs a test command on a docker instance.
-#
-# call-seq:
-# grpc_cloud_prod_auth_test <test_name> <host> <client_type>
-#
-# requirements:
-# host is a GCE instance running docker with access to the gRPC docker images
-# test_name is one of the named gRPC tests [http://go/grpc_interop_tests]
-# client_type is one of [cxx,go,java,php,python,ruby]
-#
-# it assumes:
-# that each grpc-imp has a docker image named grpc/<imp>, e.g, grpc/java
-# a test is run using $ docker run 'path/to/interop_test_bin --flags'
-# the required images are available on <host>
-#
-# each client_type should have an associated bash func:
-# grpc_cloud_prod_auth_<test_case>_gen_<client_type>_cmd
-# the func provides the dockerized commmand for running client_type's test.
-# If no such func is available, tests for that client type cannot be run.
-grpc_cloud_prod_auth_test() {
- _grpc_ensure_gcloud_ssh || return 1;
- # declare vars local so that they don't pollute the shell environment
- # where this func is used.
-
- local grpc_zone grpc_project dry_run # set by _grpc_set_project_and_zone
- # grpc_cloud_prod_test_args
- local test_case host grpc_gen_test_cmd
-
- # set the project zone and check that all necessary args are provided
- _grpc_set_project_and_zone -f grpc_cloud_prod_auth_test_args "$@" || return 1
- gce_has_instance $grpc_project $host || return 1;
-
- local test_case_flag=" --test_case=$test_case"
- cmd=$($grpc_gen_test_cmd $test_case_flag)
- [[ -n $cmd ]] || return 1
-
- test_runner
-}
-
-# constructs the full dockerized ruby interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_ruby_cmd() {
- local cmd_prefix="sudo docker run grpc/ruby bin/bash -l -c"
- local test_script="/var/local/git/grpc/src/ruby/bin/interop/interop_client.rb"
- local the_cmd="$cmd_prefix 'ruby $test_script --use_test_ca --use_tls $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized python interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_python_cmd() {
- local cmd_prefix="sudo docker run grpc/python bin/bash -l -c"
- local the_cmd="$cmd_prefix 'python -B -m interop.client --use_test_ca --use_tls $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized python interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_python_cmd() {
- local cmd_prefix="sudo docker run grpc/python bin/bash -l -c"
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local env_prefix="SSL_CERT_FILE=/cacerts/roots.pem"
- local the_cmd="$cmd_prefix '$env_prefix python -B -m interop.client --use_tls $gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized python service_account auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_python_cmd() {
- local cmd_prefix="sudo docker run grpc/python bin/bash -l -c";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_default_creds_test_flags)
- local env_prefix="SSL_CERT_FILE=/cacerts/roots.pem"
- env_prefix+=" GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json"
- local the_cmd="$cmd_prefix '$env_prefix python -B -m interop.client --use_tls $gfe_flags $added_gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized python gce auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_python_cmd() {
- local cmd_prefix="sudo docker run grpc/python bin/bash -l -c";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_gce_test_flags)
- local env_prefix="SSL_CERT_FILE=/cacerts/roots.pem"
- local the_cmd="$cmd_prefix '$env_prefix python -B -m interop.client --use_tls $gfe_flags $added_gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized ruby interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_ruby_cmd() {
- local cmd_prefix="sudo docker run grpc/ruby bin/bash -l -c"
- local test_script="/var/local/git/grpc/src/ruby/bin/interop/interop_client.rb"
- local test_script+=" --use_tls"
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local env_prefix="SSL_CERT_FILE=/cacerts/roots.pem"
- local the_cmd="$cmd_prefix '$env_prefix ruby $test_script $gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized Go interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_go_cmd() {
- local cmd_prefix="sudo docker run grpc/go /bin/bash -c"
- local test_script="cd src/google.golang.org/grpc/interop/client"
- local test_script+=" && go run client.go --use_tls=true"
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local gfe_flags+=" --tls_ca_file=\"\""
- local added_gfe_flags=$(_grpc_svc_acc_test_flags)
- local the_cmd="$cmd_prefix '$test_script $gfe_flags $added_gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized Go interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_go_cmd() {
- local cmd_prefix="sudo docker run grpc/go /bin/bash -c"
- local test_script="cd src/google.golang.org/grpc/interop/client"
- local test_script+=" && go run client.go --use_tls=true"
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local gfe_flags+=" --tls_ca_file=\"\""
- local added_gfe_flags=$(_grpc_gce_test_flags)
- local the_cmd="$cmd_prefix '$test_script $gfe_flags $added_gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized ruby service_account auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_ruby_cmd() {
- local cmd_prefix="sudo docker run grpc/ruby bin/bash -l -c";
- local test_script="/var/local/git/grpc/src/ruby/bin/interop/interop_client.rb"
- local test_script+=" --use_tls"
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_default_creds_test_flags)
- local env_prefix="SSL_CERT_FILE=/cacerts/roots.pem"
- env_prefix+=" GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json"
- local the_cmd="$cmd_prefix '$env_prefix ruby $test_script $gfe_flags $added_gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized ruby gce auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_ruby_cmd() {
- local cmd_prefix="sudo docker run grpc/ruby bin/bash -l -c";
- local test_script="/var/local/git/grpc/src/ruby/bin/interop/interop_client.rb"
- local test_script+=" --use_tls"
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_gce_test_flags)
- local env_prefix="SSL_CERT_FILE=/cacerts/roots.pem"
- local the_cmd="$cmd_prefix '$env_prefix ruby $test_script $gfe_flags $added_gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized ruby jwt_tokens auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_jwt_token_creds_gen_ruby_cmd() {
- local cmd_prefix="sudo docker run grpc/ruby bin/bash -l -c";
- local test_script="/var/local/git/grpc/src/ruby/bin/interop/interop_client.rb"
- local test_script+=" --use_tls"
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local env_prefix="SSL_CERT_FILE=/cacerts/roots.pem"
- env_prefix+=" GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json"
- local the_cmd="$cmd_prefix '$env_prefix ruby $test_script $gfe_flags $added_gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized Go interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_go_cmd() {
- local cmd_prefix="sudo docker run grpc/go /bin/bash -c"
- local test_script="cd src/google.golang.org/grpc/interop/client"
- local test_script+=" && go run client.go --use_tls=true"
- local the_cmd="$cmd_prefix '$test_script $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized Go interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_go_cmd() {
- local cmd_prefix="sudo docker run grpc/go /bin/bash -c"
- local test_script="cd src/google.golang.org/grpc/interop/client"
- local test_script+=" && go run client.go --use_tls=true"
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local gfe_flags+=" --tls_ca_file=\"\""
- local the_cmd="$cmd_prefix '$test_script $gfe_flags $@'"
- echo $the_cmd
-}
-
-# constructs the full dockerized java interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_java_cmd() {
- local cmd_prefix="sudo docker run grpc/java";
- local test_script="/var/local/git/grpc-java/run-test-client.sh --use_test_ca=true --use_tls=true";
- local the_cmd="$cmd_prefix $test_script $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized java interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_java_cmd() {
- local cmd_prefix="sudo docker run grpc/java";
- local test_script="/var/local/git/grpc-java/run-test-client.sh --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized java service_account auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_java_cmd() {
- local cmd_prefix="sudo docker run grpc/java";
- local test_script="/var/local/git/grpc-java/run-test-client.sh --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_svc_acc_test_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized java gce auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_java_cmd() {
- local cmd_prefix="sudo docker run grpc/java";
- local test_script="/var/local/git/grpc-java/run-test-client.sh --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_gce_test_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized php interop test cmd.
-#
-# TODO(mlumish): update this to use the script once that's on git
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_php_cmd() {
- local cmd_prefix="sudo docker run grpc/php bin/bash -l -c";
- local test_script="cd /var/local/git/grpc/src/php/tests/interop";
- local test_script+=" && php -d extension_dir=../../ext/grpc/modules/";
- local test_script+=" -d extension=grpc.so interop_client.php";
- local the_cmd="$cmd_prefix '$test_script $@ 1>&2'";
- echo $the_cmd
-}
-
-# constructs the full dockerized php gce=>prod interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_php_cmd() {
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- local cmd_prefix="sudo docker run $env_flag grpc/php";
- local test_script="/var/local/git/grpc/src/php/bin/interop_client.sh";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized php service_account auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_php_cmd() {
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- env_flag+="-e GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local cmd_prefix="sudo docker run $env_flag grpc/php";
- local test_script="/var/local/git/grpc/src/php/bin/interop_client.sh";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local added_gfe_flags=$(_grpc_default_creds_test_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized php compute_engine auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_php_cmd() {
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- local cmd_prefix="sudo docker run $env_flag grpc/php";
- local test_script="/var/local/git/grpc/src/php/bin/interop_client.sh";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local added_gfe_flags=$(_grpc_gce_test_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized php jwt_token_creds auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_jwt_token_creds_gen_php_cmd() {
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- env_flag+="-e GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local cmd_prefix="sudo docker run $env_flag grpc/php";
- local test_script="/var/local/git/grpc/src/php/bin/interop_client.sh";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized node interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_node_cmd() {
- local cmd_prefix="sudo docker run grpc/node";
- local test_script="/usr/bin/nodejs /var/local/git/grpc/src/node/interop/interop_client.js --use_tls=true --use_test_ca=true";
- local the_cmd="$cmd_prefix $test_script $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized node gce=>prod interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_node_cmd() {
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- local cmd_prefix="sudo docker run $env_flag grpc/node";
- local test_script="/usr/bin/nodejs /var/local/git/grpc/src/node/interop/interop_client.js --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized node service_account auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_node_cmd() {
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- env_flag+="-e GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local cmd_prefix="sudo docker run $env_flag grpc/node";
- local test_script="/usr/bin/nodejs /var/local/git/grpc/src/node/interop/interop_client.js --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized node gce auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_node_cmd() {
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- local cmd_prefix="sudo docker run $env_flag grpc/node";
- local test_script="/usr/bin/nodejs /var/local/git/grpc/src/node/interop/interop_client.js --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_gce_test_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized cpp interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_cxx_cmd() {
- local cmd_prefix="sudo docker run grpc/cxx";
- local test_script="/var/local/git/grpc/bins/opt/interop_client --use_tls --use_test_ca";
- local the_cmd="$cmd_prefix $test_script $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized cpp gce=>prod interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_cxx_cmd() {
- local cmd_prefix="sudo docker run grpc/cxx";
- local test_script="/var/local/git/grpc/bins/opt/interop_client --use_tls";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized cpp service_account auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_cxx_cmd() {
- local cmd_prefix="sudo docker run grpc/cxx";
- local test_script="/var/local/git/grpc/bins/opt/interop_client --use_tls";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_svc_acc_test_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized cpp gce auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_cxx_cmd() {
- local cmd_prefix="sudo docker run grpc/cxx";
- local test_script="/var/local/git/grpc/bins/opt/interop_client --use_tls";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_gce_test_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized cpp jwt_token auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_jwt_token_creds_gen_cxx_cmd() {
- local cmd_prefix="sudo docker run grpc/cxx";
- local test_script="/var/local/git/grpc/bins/opt/interop_client --use_tls";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local added_gfe_flags=$(_grpc_jwt_token_test_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized csharp-mono interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_csharp_mono_cmd() {
- local workdir_flag="-w /var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug"
- local cmd_prefix="sudo docker run $workdir_flag grpc/csharp_mono";
- local test_script="mono Grpc.IntegrationTesting.Client.exe --use_tls=true --use_test_ca=true";
- local the_cmd="$cmd_prefix $test_script $@";
- echo $the_cmd
-}
-
-# constructs the csharp-dotnet interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_interop_gen_csharp_dotnet_cmd() {
- local set_workdir="cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug &&"
- local test_script="./Grpc.IntegrationTesting.Client.exe --use_tls=true --use_test_ca=true";
- local the_cmd="$set_workdir $test_script $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized csharp-mono gce=>prod interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_csharp_mono_cmd() {
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- local workdir_flag="-w /var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug"
- local cmd_prefix="sudo docker run $env_flag $workdir_flag grpc/csharp_mono";
- local test_script="mono Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the csharp-dotnet gce=>prod interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_gen_csharp_dotnet_cmd() {
- local set_workdir="cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug &&"
- local test_script="./Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local set_certfile="SSL_CERT_FILE=/cacerts/roots.pem "
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$set_workdir $set_certfile $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized csharp-mono service_account auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_csharp_mono_cmd() {
- local workdir_flag="-w /var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug"
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- env_flag+="-e GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local cmd_prefix="sudo docker run $workdir_flag $env_flag grpc/csharp_mono";
- local test_script="mono Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the csharp-dotnet service_account auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_service_account_creds_gen_csharp_dotnet_cmd() {
- local set_workdir="cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug &&"
- local test_script="./Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local set_certfile="SSL_CERT_FILE=/cacerts/roots.pem "
- local set_creds="GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$set_workdir $set_certfile $set_creds $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized csharp-mono gce auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_csharp_mono_cmd() {
- local workdir_flag="-w /var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug"
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- local cmd_prefix="sudo docker run $workdir_flag $env_flag grpc/csharp_mono";
- local test_script="mono Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags)
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the csharp-dotnet gce auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_compute_engine_creds_gen_csharp_dotnet_cmd() {
- local set_workdir="cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug &&"
- local test_script="./Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local set_certfile="SSL_CERT_FILE=/cacerts/roots.pem "
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$set_workdir $set_certfile $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized csharp-mono oauth2_auth_token auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_oauth2_auth_token_gen_csharp_mono_cmd() {
- local workdir_flag="-w /var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug"
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- env_flag+="-e GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local cmd_prefix="sudo docker run $workdir_flag $env_flag grpc/csharp_mono";
- local test_script="mono Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the csharp-dotnet oauth2_auth_token auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_oauth2_auth_token_gen_csharp_dotnet_cmd() {
- local set_workdir="cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug &&"
- local test_script="./Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local set_certfile="SSL_CERT_FILE=/cacerts/roots.pem "
- local set_creds="GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$set_workdir $set_certfile $set_creds $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the full dockerized csharp-mono per_rpc_creds auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_per_rpc_creds_gen_csharp_mono_cmd() {
- local workdir_flag="-w /var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug"
- local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
- env_flag+="-e GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local cmd_prefix="sudo docker run $workdir_flag $env_flag grpc/csharp_mono";
- local test_script="mono Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$cmd_prefix $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# constructs the csharp-dotnet per_rpc_creds auth interop test cmd.
-#
-# call-seq:
-# flags= .... # generic flags to include the command
-# cmd=$($grpc_gen_test_cmd $flags)
-grpc_cloud_prod_auth_per_rpc_creds_gen_csharp_dotnet_cmd() {
- local set_workdir="cd /cygdrive/c/github/grpc/src/csharp/Grpc.IntegrationTesting.Client/bin/Debug &&"
- local test_script="./Grpc.IntegrationTesting.Client.exe --use_tls=true";
- local set_certfile="SSL_CERT_FILE=/cacerts/roots.pem "
- local set_creds="GOOGLE_APPLICATION_CREDENTIALS=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json "
- local gfe_flags=$(_grpc_prod_gfe_flags);
- local the_cmd="$set_workdir $set_certfile $set_creds $test_script $gfe_flags $@";
- echo $the_cmd
-}
-
-# outputs the flags passed to gfe tests
-_grpc_prod_gfe_flags() {
- echo " --server_port=443 --server_host=grpc-test.sandbox.google.com --server_host_override=grpc-test.sandbox.google.com"
-}
-
-# outputs the flags passed to the service account auth tests
-_grpc_svc_acc_test_flags() {
- echo " --service_account_key_file=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json --oauth_scope=https://www.googleapis.com/auth/xapi.zoo"
-}
-
-# outputs the flags passed to the service account auth tests
-_grpc_jwt_token_test_flags() {
- echo " --service_account_key_file=/service_account/stubbyCloudTestingTest-ee3fce360ac5.json"
-}
-
-# default credentials test flag
-_grpc_default_creds_test_flags() {
- echo " --oauth_scope=https://www.googleapis.com/auth/xapi.zoo"
-}
-
-# outputs the flags passed to the gcloud auth tests
-_grpc_gce_test_flags() {
- echo " --default_service_account=155450119199-r5aaqa2vqoa9g5mv2m6s3m1l293rlmel@developer.gserviceaccount.com --oauth_scope=https://www.googleapis.com/auth/xapi.zoo"
-}