diff options
author | Craig Tiller <ctiller@google.com> | 2015-05-12 14:08:56 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2015-05-12 14:08:56 -0700 |
commit | 54478f8562b812595b0d9102fc4703cdb04a627f (patch) | |
tree | 818aacc26522a41fe7921e12e9adb360c9bc1183 /tools | |
parent | 6efa6eb5b35ca660651c78b03243366908a9d187 (diff) | |
parent | a468c36601dd5997580129bbd66b5ebed02521f8 (diff) |
Merge github.com:grpc/grpc into bye-bye-completion-queue-pie
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/gce_setup/cloud_prod_test.sh | 62 | ||||
-rwxr-xr-x | tools/gce_setup/grpc_docker.sh | 63 | ||||
-rwxr-xr-x | tools/gce_setup/interop_test.sh | 67 |
3 files changed, 185 insertions, 7 deletions
diff --git a/tools/gce_setup/cloud_prod_test.sh b/tools/gce_setup/cloud_prod_test.sh new file mode 100755 index 0000000000..94869ee9b6 --- /dev/null +++ b/tools/gce_setup/cloud_prod_test.sh @@ -0,0 +1,62 @@ +#!/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. + +thisfile=$(readlink -ne "${BASH_SOURCE[0]}") +test_case=$1 +client_vm=$2 +result=cloud_prod_result.$1 +cur=$(date "+%Y-%m-%d-%H-%M-%S") +log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/prod_result/$test_case/$cur + +main() { + source grpc_docker.sh + clients=(cxx java go ruby node csharp_mono python php) + for client in "${clients[@]}" + do + log_file_name=cloud_{$test_case}_{$client}.txt + if grpc_cloud_prod_test $test_case $client_vm $client > /tmp/$log_file_name 2>&1 + then + echo " ['$test_case', '$client', 'prod', true, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/$result.txt + else + echo " ['$test_case', '$client', 'prod', false, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/$result.txt + fi + gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/prod_result/$test_case/$cur/$log_file_name + rm /tmp/$log_file_name + done + if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + cat pre.html /tmp/$result.txt post.html > /tmp/$result.html + gsutil cp /tmp/$result.html gs://stoked-keyword-656-output/prod_result/$test_case/$cur/$result.html + rm /tmp/$result.txt + rm /tmp/$result.html + fi +} + +set -x +main "$@" diff --git a/tools/gce_setup/grpc_docker.sh b/tools/gce_setup/grpc_docker.sh index d3a7bdef28..c49efbab60 100755 --- a/tools/gce_setup/grpc_docker.sh +++ b/tools/gce_setup/grpc_docker.sh @@ -384,6 +384,7 @@ grpc_interop_test_args() { [[ -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 @@ -391,6 +392,11 @@ grpc_interop_test_args() { } shift ;; + csharp_dotnet) + grpc_client_platform='Windows' + grpc_gen_test_cmd="grpc_interop_gen_$1_cmd" + shift + ;; *) echo "bad client_type: $1" 1>&2 return 1 @@ -456,6 +462,7 @@ grpc_cloud_prod_test_args() { [[ -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 @@ -463,6 +470,11 @@ grpc_cloud_prod_test_args() { } shift ;; + csharp_dotnet) + grpc_client_platform='Windows' + grpc_gen_test_cmd="grpc_cloud_prod_gen_$1_cmd" + shift + ;; *) echo "bad client_type: $1" 1>&2 return 1 @@ -851,12 +863,23 @@ grpc_launch_servers() { test_runner() { 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" & + 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} @@ -924,7 +947,7 @@ grpc_interop_test() { 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 + 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 @@ -966,7 +989,7 @@ grpc_cloud_prod_test() { 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 + 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 @@ -1431,6 +1454,18 @@ grpc_interop_gen_csharp_mono_cmd() { 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: @@ -1446,6 +1481,20 @@ grpc_cloud_prod_gen_csharp_mono_cmd() { 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: diff --git a/tools/gce_setup/interop_test.sh b/tools/gce_setup/interop_test.sh new file mode 100755 index 0000000000..037b117e1a --- /dev/null +++ b/tools/gce_setup/interop_test.sh @@ -0,0 +1,67 @@ +#!/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. + +thisfile=$(readlink -ne "${BASH_SOURCE[0]}") +test_case=$1 +client_vm=$2 +server_vm=$3 +result=interop_result.$1 +cur=$(date "+%Y-%m-%d-%H-%M-%S") +log_link=https://pantheon.corp.google.com/m/cloudstorage/b/stoked-keyword-656-output/o/interop_result/$test_case/$cur + +main() { + source grpc_docker.sh + clients=(cxx java go ruby node csharp_mono python php) + servers=(cxx java go ruby node python csharp_mono) + for client in "${clients[@]}" + do + for server in "${servers[@]}" + do + log_file_name=cloud_{$test_case}_{$client}_{$server}.txt + if grpc_interop_test $test_case $client_vm $client $server_vm $server> /tmp/$log_file_name 2>&1 + then + echo " ['$test_case', '$client', '$server', true, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/$result.txt + else + echo " ['$test_case', '$client', '$server', false, '<a href="$log_link/$log_file_name">log</a>']," >> /tmp/$result.txt + fi + gsutil cp /tmp/$log_file_name gs://stoked-keyword-656-output/interop_result/$test_case/$cur/$log_file_name + rm /tmp/$log_file_name + done + done + if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + cat pre.html /tmp/$result.txt post.html > /tmp/$result.html + gsutil cp /tmp/$result.html gs://stoked-keyword-656-output/interop_result/$test_case/$cur/$result.html + rm /tmp/$result.txt + rm /tmp/$result.html + fi +} + +set -x +main "$@" |