diff options
author | Qi Zhao <toqizhao@gmail.com> | 2015-10-05 13:12:42 -0700 |
---|---|---|
committer | Qi Zhao <toqizhao@gmail.com> | 2015-10-05 13:12:42 -0700 |
commit | 69d5c190368f432ed67c818c7c8a8fae13b57778 (patch) | |
tree | ab352fd9889fe9e71c1233abf18720d42b11128c | |
parent | 91054e685594dcc0ab01b2353cb7f6a4acd0bb05 (diff) | |
parent | 4b6bc1e8595755a73c8c4e879b322ccad8b3dfe3 (diff) |
Merge pull request #3631 from jtattermusch/interop_go
Add go support to run_interop_tests.py
-rw-r--r-- | tools/jenkins/grpc_interop_go/Dockerfile | 36 | ||||
-rwxr-xr-x | tools/jenkins/grpc_interop_go/build_interop.sh | 50 | ||||
-rwxr-xr-x | tools/run_tests/run_interop_tests.py | 34 |
3 files changed, 117 insertions, 3 deletions
diff --git a/tools/jenkins/grpc_interop_go/Dockerfile b/tools/jenkins/grpc_interop_go/Dockerfile new file mode 100644 index 0000000000..bb60f09f24 --- /dev/null +++ b/tools/jenkins/grpc_interop_go/Dockerfile @@ -0,0 +1,36 @@ +# 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. + +FROM golang:1.4 + +# Using login shell removes Go from path, so we add it. +RUN ln -s /usr/src/go/bin/go /usr/local/bin + +# Define the default command. +CMD ["bash"] diff --git a/tools/jenkins/grpc_interop_go/build_interop.sh b/tools/jenkins/grpc_interop_go/build_interop.sh new file mode 100755 index 0000000000..78dd4ea9cf --- /dev/null +++ b/tools/jenkins/grpc_interop_go/build_interop.sh @@ -0,0 +1,50 @@ +#!/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. +# +# Builds Go interop server and client in a base image. +set -e + +# Clone just the grpc-go source code without any dependencies. +# We are cloning from a local git repo that contains the right revision +# to test instead of using "go get" to download from Github directly. +git clone --recursive /var/local/jenkins/grpc-go src/gooogle.golang.org/grpc + +# Get dependencies from GitHub +# NOTE: once grpc-go dependencies change, this needs to be updated manually +# but we don't expect this to happen any time soon. +go get github.com/golang/protobuf/proto +go get golang.org/x/net/context +go get golang.org/x/net/trace +go get golang.org/x/oauth2 +go get google.golang.org/cloud + +# Build the interop client and server +(cd src/google.golang.org/grpc/interop/client && go install) +(cd src/google.golang.org/grpc/interop/server && go install) diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py index 46b34fea4c..f0935fb5d6 100755 --- a/tools/run_tests/run_interop_tests.py +++ b/tools/run_tests/run_interop_tests.py @@ -61,8 +61,9 @@ _CLOUD_TO_CLOUD_BASE_ARGS = [ # supported by C core SslCredentials instead. _SSL_CERT_ENV = { 'SSL_CERT_FILE':'/usr/local/share/grpc/roots.pem' } -# TODO(jtatttermusch) unify usage of --use_tls and --use_tls=true -# TODO(jtatttermusch) unify usage of --use_prod_roots and --use_test_ca +# TODO(jtattermusch) unify usage of --use_tls and --use_tls=true +# TODO(jtattermusch) unify usage of --use_prod_roots and --use_test_ca +# TODO(jtattermusch) go uses --tls_ca_file instead of --use_test_ca class CXXLanguage: @@ -140,6 +141,32 @@ class JavaLanguage: return 'java' +class GoLanguage: + + def __init__(self): + self.client_cmdline_base = ['go', 'run', 'client.go'] + # TODO: this relies on running inside docker + self.client_cwd = '/go/src/google.golang.org/grpc/interop/client' + self.server_cwd = '/go/src/google.golang.org/grpc/interop/server' + + def cloud_to_prod_args(self): + return (self.client_cmdline_base + _CLOUD_TO_PROD_BASE_ARGS + + ['--use_tls=true', '--tls_ca_file=""']) + + def cloud_to_cloud_args(self): + return (self.client_cmdline_base + _CLOUD_TO_CLOUD_BASE_ARGS + + ['--use_tls=true']) + + def cloud_to_prod_env(self): + return None + + def server_args(self): + return ['go', 'run', 'server.go', '--use_tls=true'] + + def __str__(self): + return 'go' + + class NodeLanguage: def __init__(self): @@ -215,6 +242,7 @@ class RubyLanguage: _LANGUAGES = { 'c++' : CXXLanguage(), 'csharp' : CSharpLanguage(), + 'go' : GoLanguage(), 'java' : JavaLanguage(), 'node' : NodeLanguage(), 'php' : PHPLanguage(), @@ -223,7 +251,7 @@ _LANGUAGES = { # languages supported as cloud_to_cloud servers # TODO(jtattermusch): enable other languages as servers as well -_SERVERS = ['c++', 'node', 'csharp', 'java'] +_SERVERS = ['c++', 'node', 'csharp', 'java', 'go'] # TODO(jtattermusch): add empty_stream once PHP starts supporting it. # TODO(jtattermusch): add timeout_on_sleeping_server once java starts supporting it. |