aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/run_tests
diff options
context:
space:
mode:
Diffstat (limited to 'tools/run_tests')
-rw-r--r--tools/run_tests/artifact_targets.py34
-rw-r--r--tools/run_tests/build_artifact_node.bat6
-rwxr-xr-xtools/run_tests/build_artifact_node.sh2
-rw-r--r--tools/run_tests/build_artifact_python.bat29
-rwxr-xr-xtools/run_tests/build_artifact_python.sh46
-rw-r--r--tools/run_tests/distribtest_targets.py4
-rwxr-xr-xtools/run_tests/dockerize/build_and_run_docker.sh78
-rwxr-xr-xtools/run_tests/dockerize/build_docker_and_run_tests.sh99
-rwxr-xr-xtools/run_tests/dockerize/build_interop_image.sh103
-rwxr-xr-xtools/run_tests/dockerize/build_interop_stress_image.sh108
-rwxr-xr-xtools/run_tests/dockerize/docker_run.sh54
-rwxr-xr-xtools/run_tests/dockerize/docker_run_tests.sh67
-rw-r--r--tools/run_tests/package_targets.py4
-rwxr-xr-xtools/run_tests/performance/run_worker_node.sh2
-rw-r--r--tools/run_tests/performance/scenario_config.py856
-rwxr-xr-xtools/run_tests/run_interop_tests.py2
-rwxr-xr-xtools/run_tests/run_performance_tests.py50
-rwxr-xr-xtools/run_tests/run_stress_tests.py2
-rwxr-xr-xtools/run_tests/run_tests.py16
-rw-r--r--tools/run_tests/sanity/sanity_tests.yaml1
-rw-r--r--tools/run_tests/sources_and_headers.json29
-rw-r--r--tools/run_tests/stress_test/configs/asan.json2
-rw-r--r--tools/run_tests/stress_test/configs/csharp.json4
-rw-r--r--tools/run_tests/stress_test/configs/go.json2
-rw-r--r--tools/run_tests/stress_test/configs/java.json2
-rw-r--r--tools/run_tests/stress_test/configs/node-cxx.json4
-rw-r--r--tools/run_tests/stress_test/configs/node.json2
-rw-r--r--tools/run_tests/stress_test/configs/opt-tsan-asan.json6
-rw-r--r--tools/run_tests/stress_test/configs/opt.json2
-rw-r--r--tools/run_tests/stress_test/configs/python.json98
-rw-r--r--tools/run_tests/stress_test/configs/ruby.json92
-rw-r--r--tools/run_tests/stress_test/configs/tsan.json2
-rwxr-xr-xtools/run_tests/stress_test/run_on_gke.py13
-rw-r--r--tools/run_tests/tests.json249
34 files changed, 1426 insertions, 644 deletions
diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index e61c46d8b5..bd1269ceb7 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -43,10 +43,10 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
for k,v in environ.iteritems():
docker_args += ['-e', '%s=%s' % (k, v)]
docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
- 'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh',
+ 'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh',
'OUTPUT_DIR': 'artifacts'}
jobspec = jobset.JobSpec(
- cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+ cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
environ=docker_env,
shortname='build_artifact.%s' % (name),
timeout_seconds=30*60,
@@ -84,12 +84,16 @@ python_version_arch_map = {
class PythonArtifact:
"""Builds Python artifacts."""
- def __init__(self, platform, arch):
- self.name = 'python_%s_%s' % (platform, arch)
+ def __init__(self, platform, arch, manylinux_build=None):
+ if manylinux_build:
+ self.name = 'python_%s_%s_%s' % (platform, arch, manylinux_build)
+ else:
+ self.name = 'python_%s_%s' % (platform, arch)
self.platform = platform
self.arch = arch
self.labels = ['artifact', 'python', platform, arch]
self.python_version = python_version_arch_map[arch]
+ self.manylinux_build = manylinux_build
def pre_build_jobspecs(self):
return []
@@ -99,14 +103,26 @@ class PythonArtifact:
if self.platform == 'linux':
if self.arch == 'x86':
environ['SETARCH_CMD'] = 'linux32'
+ # Inside the manylinux container, the python installations are located in
+ # special places...
+ environ['PYTHON'] = '/opt/python/{}/bin/python'.format(self.manylinux_build)
+ environ['PIP'] = '/opt/python/{}/bin/pip'.format(self.manylinux_build)
+ # Our docker image has all the prerequisites pip-installed already.
+ environ['SKIP_PIP_INSTALL'] = '1'
+ # Platform autodetection for the manylinux1 image breaks so we set the
+ # defines ourselves.
+ # TODO(atash) get better platform-detection support in core so we don't
+ # need to do this manually...
+ environ['CFLAGS'] = '-DGPR_MANYLINUX1=1'
return create_docker_jobspec(self.name,
- 'tools/dockerfile/grpc_artifact_linux_%s' % self.arch,
+ 'tools/dockerfile/grpc_artifact_python_manylinux_%s' % self.arch,
'tools/run_tests/build_artifact_python.sh',
environ=environ)
elif self.platform == 'windows':
return create_jobspec(self.name,
['tools\\run_tests\\build_artifact_python.bat',
- self.python_version
+ self.python_version,
+ '32' if self.arch == 'x86' else '64'
],
shell=True)
else:
@@ -307,8 +323,10 @@ def targets():
for Cls in (CSharpExtArtifact, NodeExtArtifact, ProtocArtifact)
for platform in ('linux', 'macos', 'windows')
for arch in ('x86', 'x64')] +
- [PythonArtifact('linux', 'x86'),
- PythonArtifact('linux', 'x64'),
+ [PythonArtifact('linux', 'x86', 'cp27-cp27m'),
+ PythonArtifact('linux', 'x86', 'cp27-cp27mu'),
+ PythonArtifact('linux', 'x64', 'cp27-cp27m'),
+ PythonArtifact('linux', 'x64', 'cp27-cp27mu'),
PythonArtifact('macos', 'x64'),
PythonArtifact('windows', 'x86'),
PythonArtifact('windows', 'x64'),
diff --git a/tools/run_tests/build_artifact_node.bat b/tools/run_tests/build_artifact_node.bat
index 84c63c28a2..c5bd726db7 100644
--- a/tools/run_tests/build_artifact_node.bat
+++ b/tools/run_tests/build_artifact_node.bat
@@ -27,7 +27,7 @@
@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-set node_versions=0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0
+set node_versions=0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 6.0.0
set PATH=%PATH%;C:\Program Files\nodejs\;%APPDATA%\npm
@@ -38,12 +38,12 @@ call npm update || goto :error
mkdir artifacts
for %%v in (%node_versions%) do (
- call node-pre-gyp configure build --target=%%v --target_arch=%1
+ call .\node_modules\.bin\node-pre-gyp.cmd configure build --target=%%v --target_arch=%1
@rem Try again after removing openssl headers
rmdir "%HOMEDRIVE%%HOMEPATH%\.node-gyp\%%v\include\node\openssl" /S /Q
rmdir "%HOMEDRIVE%%HOMEPATH%\.node-gyp\iojs-%%v\include\node\openssl" /S /Q
- call node-pre-gyp build package testpackage --target=%%v --target_arch=%1 || goto :error
+ call .\node_modules\.bin\node-pre-gyp.cmd build package testpackage --target=%%v --target_arch=%1 || goto :error
xcopy /Y /I /S build\stage\* artifacts\ || goto :error
)
diff --git a/tools/run_tests/build_artifact_node.sh b/tools/run_tests/build_artifact_node.sh
index ef3476a038..9d06472aa4 100755
--- a/tools/run_tests/build_artifact_node.sh
+++ b/tools/run_tests/build_artifact_node.sh
@@ -42,7 +42,7 @@ mkdir -p artifacts
npm update
-node_versions=( 0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 )
+node_versions=( 0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 6.0.0 )
for version in ${node_versions[@]}
do
diff --git a/tools/run_tests/build_artifact_python.bat b/tools/run_tests/build_artifact_python.bat
index 023d394549..fea0275426 100644
--- a/tools/run_tests/build_artifact_python.bat
+++ b/tools/run_tests/build_artifact_python.bat
@@ -41,7 +41,7 @@ copy /Y vsprojects\Release\grpc_dll.dll src\python\grpcio\grpc\_cython\_windows\
copy /Y vsprojects\x64\Release\grpc_dll.dll src\python\grpcio\grpc\_cython\_windows\grpc_c.64.python || goto :error
-set PATH=C:\%1;C:\%1\scripts;%PATH%
+set PATH=C:\%1;C:\%1\scripts;C:\msys64\mingw%2\bin;%PATH%
pip install --upgrade six
pip install --upgrade setuptools
@@ -50,10 +50,37 @@ pip install -rrequirements.txt
set GRPC_PYTHON_USE_CUSTOM_BDIST=0
set GRPC_PYTHON_BUILD_WITH_CYTHON=1
+@rem TODO(atash): maybe we could avoid the grpc_c.(32|64).python shim above if
+@rem this used the right python build?
python setup.py bdist_wheel
+@rem Build gRPC Python tools
+@rem
+@rem Because this is windows and *everything seems to hate Windows* we have to
+@rem set all of these flags ourselves because Python won't help us (see the
+@rem setup.py of the grpcio_tools project).
+set GRPC_PYTHON_CFLAGS=-fno-wrapv -frtti -std=c++11
+@rem Further confusing things, MSYS2's mingw64 tries to dynamically link
+@rem libgcc, libstdc++, and winpthreads. We have to override this or our
+@rem extensions end up linking to MSYS2 DLLs, which the normal Python on
+@rem Windows user won't have... and ON TOP OF THIS, there's MinGW's GCC default
+@rem behavior of linking msvcrt.dll as the C runtime library, which we need to
+@rem override so that Python's distutils doesn't link us against multiple C
+@rem runtimes.
+python -c "from distutils.cygwinccompiler import get_msvcr; print(get_msvcr()[0])" > temp.txt
+set /p PYTHON_MSVCR=<temp.txt
+set GRPC_PYTHON_LDFLAGS=-static-libgcc -static-libstdc++ -mcrtdll=%PYTHON_MSVCR% -static -lpthread
+python tools\distrib\python\make_grpcio_tools.py
+if %2 == 32 (
+ python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32
+) else (
+ python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64
+)
+python tools\distrib\python\grpcio_tools\setup.py bdist_wheel
+
mkdir artifacts
xcopy /Y /I /S dist\* artifacts\ || goto :error
+xcopy /Y /I /S tools\distrib\python\grpcio_tools\dist\* artifacts\ || goto :error
goto :EOF
diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index 1f23f9fade..4320f978e3 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -32,36 +32,52 @@ set -ex
cd $(dirname $0)/../..
+export GRPC_PYTHON_USE_CUSTOM_BDIST=0
+export GRPC_PYTHON_BUILD_WITH_CYTHON=1
+export PYTHON=${PYTHON:-python}
+export PIP=${PIP:-pip}
+export AUDITWHEEL=${AUDITWHEEL:-auditwheel}
+
+
if [ "$SKIP_PIP_INSTALL" == "" ]
then
- pip install --upgrade six
+ ${PIP} install --upgrade six
# There's a bug in newer versions of setuptools (see
# https://bitbucket.org/pypa/setuptools/issues/503/pkg_resources_vendorpackagingrequirementsi)
- pip install --upgrade 'setuptools==18'
- pip install -rrequirements.txt
+ ${PIP} pip install --upgrade 'setuptools==18'
+ ${PIP} install -rrequirements.txt
fi
-export GRPC_PYTHON_USE_CUSTOM_BDIST=0
-export GRPC_PYTHON_BUILD_WITH_CYTHON=1
-
# Build the source distribution first because MANIFEST.in cannot override
# exclusion of built shared objects among package resources (for some
# inexplicable reason).
-${SETARCH_CMD} python setup.py \
+${SETARCH_CMD} ${PYTHON} setup.py \
sdist
-# The bdist_wheel_grpc_custom command is finicky about command output ordering
-# and thus ought to be run in a shell command separate of others. Further, it
-# trashes the actual bdist_wheel output, so it should be run first so that
-# bdist_wheel may be run unmolested.
-${SETARCH_CMD} python setup.py \
- build_tagged_ext
-
# Wheel has a bug where directories don't get excluded.
# https://bitbucket.org/pypa/wheel/issues/99/cannot-exclude-directory
-${SETARCH_CMD} python setup.py \
+${SETARCH_CMD} ${PYTHON} setup.py \
bdist_wheel
+# Build gRPC tools package source distribution
+${SETARCH_CMD} ${PYTHON} tools/distrib/python/grpcio_tools/setup.py \
+ sdist
+
+# Build gRPC tools package binary distribution
+${PYTHON} tools/distrib/python/make_grpcio_tools.py
+CFLAGS="$CFLAGS -fno-wrapv" ${SETARCH_CMD} \
+ ${PYTHON} tools/distrib/python/grpcio_tools/setup.py bdist_wheel
+
mkdir -p artifacts
+if command -v ${AUDITWHEEL}
+then
+ for wheel in dist/*.whl; do
+ ${AUDITWHEEL} repair $wheel -w artifacts/
+ done
+ for wheel in tools/distrib/python/grpcio_tools/dist/*.whl; do
+ ${AUDITWHEEL} repair $wheel -w artifacts/
+ done
+fi
cp -r dist/* artifacts
+cp -r tools/distrib/python/grpcio_tools/dist/* artifacts
diff --git a/tools/run_tests/distribtest_targets.py b/tools/run_tests/distribtest_targets.py
index 34cc1cd710..ae918be21d 100644
--- a/tools/run_tests/distribtest_targets.py
+++ b/tools/run_tests/distribtest_targets.py
@@ -44,9 +44,9 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
for k,v in environ.iteritems():
docker_args += ['-e', '%s=%s' % (k, v)]
docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
- 'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh'}
+ 'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh'}
jobspec = jobset.JobSpec(
- cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+ cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
environ=docker_env,
shortname='distribtest.%s' % (name),
timeout_seconds=30*60,
diff --git a/tools/run_tests/dockerize/build_and_run_docker.sh b/tools/run_tests/dockerize/build_and_run_docker.sh
new file mode 100755
index 0000000000..1ef34b2f96
--- /dev/null
+++ b/tools/run_tests/dockerize/build_and_run_docker.sh
@@ -0,0 +1,78 @@
+#!/bin/bash
+# Copyright 2016, 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 docker image and runs a command under it.
+# You should never need to call this script on your own.
+
+set -ex
+
+cd $(dirname $0)/../../..
+git_root=$(pwd)
+cd -
+
+# Inputs
+# DOCKERFILE_DIR - Directory in which Dockerfile file is located.
+# DOCKER_RUN_SCRIPT - Script to run under docker (relative to grpc repo root)
+# OUTPUT_DIR - Directory that will be copied from inside docker after finishing.
+# $@ - Extra args to pass to docker run
+
+# Use image name based on Dockerfile location checksum
+DOCKER_IMAGE_NAME=$(basename $DOCKERFILE_DIR)_$(sha1sum $DOCKERFILE_DIR/Dockerfile | cut -f1 -d\ )
+
+# Make sure docker image has been built. Should be instantaneous if so.
+docker build -t $DOCKER_IMAGE_NAME $DOCKERFILE_DIR
+
+# Choose random name for docker container
+CONTAINER_NAME="build_and_run_docker_$(uuidgen)"
+
+# Run command inside docker
+docker run \
+ "$@" \
+ -e EXTERNAL_GIT_ROOT="/var/local/jenkins/grpc" \
+ -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \
+ -v "$git_root:/var/local/jenkins/grpc:ro" \
+ -w /var/local/git/grpc \
+ --name=$CONTAINER_NAME \
+ $DOCKER_IMAGE_NAME \
+ bash -l "/var/local/jenkins/grpc/$DOCKER_RUN_SCRIPT" || FAILED="true"
+
+# Copy output artifacts
+if [ "$OUTPUT_DIR" != "" ]
+then
+ docker cp "$CONTAINER_NAME:/var/local/git/grpc/$OUTPUT_DIR" "$git_root" || FAILED="true"
+fi
+
+# remove the container, possibly killing it first
+docker rm -f $CONTAINER_NAME || true
+
+if [ "$FAILED" != "" ]
+then
+ exit 1
+fi
diff --git a/tools/run_tests/dockerize/build_docker_and_run_tests.sh b/tools/run_tests/dockerize/build_docker_and_run_tests.sh
new file mode 100755
index 0000000000..c2ea6f2c6e
--- /dev/null
+++ b/tools/run_tests/dockerize/build_docker_and_run_tests.sh
@@ -0,0 +1,99 @@
+#!/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.
+#
+# This script is invoked by run_tests.py to accommodate "test under docker"
+# scenario. You should never need to call this script on your own.
+
+set -ex
+
+cd $(dirname $0)/../../..
+git_root=$(pwd)
+cd -
+
+# Ensure existence of ccache directory
+mkdir -p /tmp/ccache
+
+# Ensure existence of the home directory for XDG caches (e.g. what pip uses for
+# its cache location now that --download-cache is deprecated).
+mkdir -p /tmp/xdg-cache-home
+
+# Create a local branch so the child Docker script won't complain
+git branch -f jenkins-docker
+
+# Inputs
+# DOCKERFILE_DIR - Directory in which Dockerfile file is located.
+# DOCKER_RUN_SCRIPT - Script to run under docker (relative to grpc repo root)
+
+# Use image name based on Dockerfile location checksum
+DOCKER_IMAGE_NAME=$(basename $DOCKERFILE_DIR)_$(sha1sum $DOCKERFILE_DIR/Dockerfile | cut -f1 -d\ )
+
+# Make sure docker image has been built. Should be instantaneous if so.
+docker build -t $DOCKER_IMAGE_NAME $DOCKERFILE_DIR
+
+# Choose random name for docker container
+CONTAINER_NAME="run_tests_$(uuidgen)"
+
+# Git root as seen by the docker instance
+docker_instance_git_root=/var/local/jenkins/grpc
+
+# Run tests inside docker
+docker run \
+ -e "RUN_TESTS_COMMAND=$RUN_TESTS_COMMAND" \
+ -e "config=$config" \
+ -e "arch=$arch" \
+ -e CCACHE_DIR=/tmp/ccache \
+ -e XDG_CACHE_HOME=/tmp/xdg-cache-home \
+ -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \
+ -e HOST_GIT_ROOT=$git_root \
+ -e LOCAL_GIT_ROOT=$docker_instance_git_root \
+ -e "BUILD_ID=$BUILD_ID" \
+ -i $TTY_FLAG \
+ -v "$git_root:$docker_instance_git_root" \
+ -v /tmp/ccache:/tmp/ccache \
+ -v /tmp/npm-cache:/tmp/npm-cache \
+ -v /tmp/xdg-cache-home:/tmp/xdg-cache-home \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v $(which docker):/bin/docker \
+ -w /var/local/git/grpc \
+ --name=$CONTAINER_NAME \
+ $DOCKER_IMAGE_NAME \
+ bash -l "/var/local/jenkins/grpc/$DOCKER_RUN_SCRIPT" || DOCKER_FAILED="true"
+
+docker cp "$CONTAINER_NAME:/var/local/git/grpc/reports.zip" $git_root || true
+unzip -o $git_root/reports.zip -d $git_root || true
+rm -f reports.zip
+
+# remove the container, possibly killing it first
+docker rm -f $CONTAINER_NAME || true
+
+if [ "$DOCKER_FAILED" != "" ] && [ "$XML_REPORT" == "" ]
+then
+ exit 1
+fi
diff --git a/tools/run_tests/dockerize/build_interop_image.sh b/tools/run_tests/dockerize/build_interop_image.sh
new file mode 100755
index 0000000000..48a216a124
--- /dev/null
+++ b/tools/run_tests/dockerize/build_interop_image.sh
@@ -0,0 +1,103 @@
+#!/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.
+#
+# This script is invoked by run_interop_tests.py to build the docker image
+# for interop testing. You should never need to call this script on your own.
+
+set -x
+
+# Params:
+# INTEROP_IMAGE - name of tag of the final interop image
+# BASE_NAME - base name used to locate the base Dockerfile and build script
+# TTY_FLAG - optional -t flag to make docker allocate tty
+# BUILD_INTEROP_DOCKER_EXTRA_ARGS - optional args to be passed to the
+# docker run command
+
+cd `dirname $0`/../../..
+GRPC_ROOT=`pwd`
+MOUNT_ARGS="-v $GRPC_ROOT:/var/local/jenkins/grpc:ro"
+
+GRPC_JAVA_ROOT=`cd ../grpc-java && pwd`
+if [ "$GRPC_JAVA_ROOT" != "" ]
+then
+ MOUNT_ARGS+=" -v $GRPC_JAVA_ROOT:/var/local/jenkins/grpc-java:ro"
+else
+ echo "WARNING: grpc-java not found, it won't be mounted to the docker container."
+fi
+
+GRPC_GO_ROOT=`cd ../grpc-go && pwd`
+if [ "$GRPC_GO_ROOT" != "" ]
+then
+ MOUNT_ARGS+=" -v $GRPC_GO_ROOT:/var/local/jenkins/grpc-go:ro"
+else
+ echo "WARNING: grpc-go not found, it won't be mounted to the docker container."
+fi
+
+mkdir -p /tmp/ccache
+
+# Mount service account dir if available.
+# If service_directory does not contain the service account JSON file,
+# some of the tests will fail.
+if [ -e $HOME/service_account ]
+then
+ MOUNT_ARGS+=" -v $HOME/service_account:/var/local/jenkins/service_account:ro"
+fi
+
+# Use image name based on Dockerfile checksum
+BASE_IMAGE=${BASE_NAME}_base:`sha1sum tools/dockerfile/interoptest/$BASE_NAME/Dockerfile | cut -f1 -d\ `
+
+# Make sure base docker image has been built. Should be instantaneous if so.
+docker build -t $BASE_IMAGE --force-rm=true tools/dockerfile/interoptest/$BASE_NAME || exit $?
+
+# Create a local branch so the child Docker script won't complain
+git branch -f jenkins-docker
+
+CONTAINER_NAME="build_${BASE_NAME}_$(uuidgen)"
+
+# Prepare image for interop tests, commit it on success.
+(docker run \
+ -e CCACHE_DIR=/tmp/ccache \
+ -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \
+ -e THIS_IS_REALLY_NEEDED_ONCE_AGAIN='For issue 4835. See https://github.com/docker/docker/issues/14203 for why docker is awful' \
+ -i $TTY_FLAG \
+ $MOUNT_ARGS \
+ $BUILD_INTEROP_DOCKER_EXTRA_ARGS \
+ -v /tmp/ccache:/tmp/ccache \
+ --name=$CONTAINER_NAME \
+ $BASE_IMAGE \
+ bash -l /var/local/jenkins/grpc/tools/dockerfile/interoptest/$BASE_NAME/build_interop.sh \
+ && docker commit $CONTAINER_NAME $INTEROP_IMAGE \
+ && echo "Successfully built image $INTEROP_IMAGE")
+EXITCODE=$?
+
+# remove intermediate container, possibly killing it first
+docker rm -f $CONTAINER_NAME
+
+exit $EXITCODE
diff --git a/tools/run_tests/dockerize/build_interop_stress_image.sh b/tools/run_tests/dockerize/build_interop_stress_image.sh
new file mode 100755
index 0000000000..4407c8da90
--- /dev/null
+++ b/tools/run_tests/dockerize/build_interop_stress_image.sh
@@ -0,0 +1,108 @@
+#!/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.
+#
+# This script is invoked by run_interop_tests.py to build the docker image
+# for interop testing. You should never need to call this script on your own.
+
+set -x
+
+# Params:
+# INTEROP_IMAGE - Name of tag of the final interop image
+# INTEROP_IMAGE_REPOSITORY_TAG - Optional. If set, the created image will be tagged using
+# the command: 'docker tag $INTEROP_IMAGE $INTEROP_IMAGE_REPOSITORY_TAG'
+# BASE_NAME - Base name used to locate the base Dockerfile and build script
+# BUILD_TYPE - The 'CONFIG' variable passed to the 'make' command (example:
+# asan, tsan. Default value: opt).
+# TTY_FLAG - optional -t flag to make docker allocate tty
+# BUILD_INTEROP_DOCKER_EXTRA_ARGS - optional args to be passed to the
+# docker run command
+
+cd `dirname $0`/../../..
+GRPC_ROOT=`pwd`
+MOUNT_ARGS="-v $GRPC_ROOT:/var/local/jenkins/grpc:ro"
+
+GRPC_JAVA_ROOT=`cd ../grpc-java && pwd`
+if [ "$GRPC_JAVA_ROOT" != "" ]
+then
+ MOUNT_ARGS+=" -v $GRPC_JAVA_ROOT:/var/local/jenkins/grpc-java:ro"
+else
+ echo "WARNING: grpc-java not found, it won't be mounted to the docker container."
+fi
+
+GRPC_GO_ROOT=`cd ../grpc-go && pwd`
+if [ "$GRPC_GO_ROOT" != "" ]
+then
+ MOUNT_ARGS+=" -v $GRPC_GO_ROOT:/var/local/jenkins/grpc-go:ro"
+else
+ echo "WARNING: grpc-go not found, it won't be mounted to the docker container."
+fi
+
+mkdir -p /tmp/ccache
+
+# Mount service account dir if available.
+# If service_directory does not contain the service account JSON file,
+# some of the tests will fail.
+if [ -e $HOME/service_account ]
+then
+ MOUNT_ARGS+=" -v $HOME/service_account:/var/local/jenkins/service_account:ro"
+fi
+
+# Use image name based on Dockerfile checksum
+BASE_IMAGE=${BASE_NAME}_base:`sha1sum tools/dockerfile/stress_test/$BASE_NAME/Dockerfile | cut -f1 -d\ `
+
+# Make sure base docker image has been built. Should be instantaneous if so.
+docker build -t $BASE_IMAGE --force-rm=true tools/dockerfile/stress_test/$BASE_NAME || exit $?
+
+# Create a local branch so the child Docker script won't complain
+git branch -f jenkins-docker
+
+CONTAINER_NAME="build_${BASE_NAME}_$(uuidgen)"
+
+# Prepare image for interop tests, commit it on success.
+(docker run \
+ -e CCACHE_DIR=/tmp/ccache \
+ -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \
+ -e BUILD_TYPE=${BUILD_TYPE:=opt} \
+ -i $TTY_FLAG \
+ $MOUNT_ARGS \
+ $BUILD_INTEROP_DOCKER_EXTRA_ARGS \
+ -v /tmp/ccache:/tmp/ccache \
+ --name=$CONTAINER_NAME \
+ $BASE_IMAGE \
+ bash -l /var/local/jenkins/grpc/tools/dockerfile/stress_test/$BASE_NAME/build_interop_stress.sh \
+ && docker commit $CONTAINER_NAME $INTEROP_IMAGE \
+ && ( if [ -n "$INTEROP_IMAGE_REPOSITORY_TAG" ]; then docker tag -f $INTEROP_IMAGE $INTEROP_IMAGE_REPOSITORY_TAG ; fi ) \
+ && echo "Successfully built image $INTEROP_IMAGE")
+EXITCODE=$?
+
+# remove intermediate container, possibly killing it first
+docker rm -f $CONTAINER_NAME
+
+exit $EXITCODE
diff --git a/tools/run_tests/dockerize/docker_run.sh b/tools/run_tests/dockerize/docker_run.sh
new file mode 100755
index 0000000000..f04b1cfb55
--- /dev/null
+++ b/tools/run_tests/dockerize/docker_run.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+# Copyright 2016, 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.
+#
+# This script is invoked by build_docker_* inside a docker
+# container. You should never need to call this script on your own.
+
+set -ex
+
+if [ "$RELATIVE_COPY_PATH" == "" ]
+then
+ mkdir -p /var/local/git
+ git clone --recursive "$EXTERNAL_GIT_ROOT" /var/local/git/grpc
+else
+ mkdir -p "/var/local/git/grpc/$RELATIVE_COPY_PATH"
+ cp -r "$EXTERNAL_GIT_ROOT/$RELATIVE_COPY_PATH"/* "/var/local/git/grpc/$RELATIVE_COPY_PATH"
+fi
+
+$POST_GIT_STEP
+
+if [ -x "$(command -v rvm)" ]
+then
+ rvm use ruby-2.1
+fi
+
+cd /var/local/git/grpc
+
+$RUN_COMMAND
diff --git a/tools/run_tests/dockerize/docker_run_tests.sh b/tools/run_tests/dockerize/docker_run_tests.sh
new file mode 100755
index 0000000000..2fc66c21f5
--- /dev/null
+++ b/tools/run_tests/dockerize/docker_run_tests.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.
+#
+# This script is invoked by build_docker_and_run_tests.sh inside a docker
+# container. You should never need to call this script on your own.
+
+set -e
+
+export CONFIG=$config
+export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer
+
+# Ensure that programs depending on current-user-ownership of cache directories
+# are satisfied (it's being mounted from outside the image).
+chown $(whoami) $XDG_CACHE_HOME
+
+mkdir -p /var/local/git
+git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
+
+mkdir -p reports
+
+$POST_GIT_STEP
+
+exit_code=0
+
+$RUN_TESTS_COMMAND || exit_code=$?
+
+cd reports
+echo '<html><head></head><body>' > index.html
+find . -maxdepth 1 -mindepth 1 -type d | sort | while read d ; do
+ d=${d#*/}
+ n=${d//_/ }
+ echo "<a href='$d/index.html'>$n</a><br />" >> index.html
+done
+echo '</body></html>' >> index.html
+cd ..
+
+zip -r reports.zip reports
+find . -name report.xml | xargs zip reports.zip
+
+exit $exit_code
diff --git a/tools/run_tests/package_targets.py b/tools/run_tests/package_targets.py
index 87bc4865ce..820b539b59 100644
--- a/tools/run_tests/package_targets.py
+++ b/tools/run_tests/package_targets.py
@@ -42,10 +42,10 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
for k,v in environ.iteritems():
docker_args += ['-e', '%s=%s' % (k, v)]
docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
- 'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh',
+ 'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh',
'OUTPUT_DIR': 'artifacts'}
jobspec = jobset.JobSpec(
- cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+ cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
environ=docker_env,
shortname='build_package.%s' % (name),
timeout_seconds=30*60,
diff --git a/tools/run_tests/performance/run_worker_node.sh b/tools/run_tests/performance/run_worker_node.sh
index 46b6ff0177..9a53a311f4 100755
--- a/tools/run_tests/performance/run_worker_node.sh
+++ b/tools/run_tests/performance/run_worker_node.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
source ~/.nvm/nvm.sh
-nvm use 0.12
+nvm use 4
set -ex
diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index ddbe237569..8b23995149 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -34,6 +34,8 @@ WARMUP_SECONDS=5
JAVA_WARMUP_SECONDS=15 # Java needs more warmup time for JIT to kick in.
BENCHMARK_SECONDS=30
+SMOKETEST='smoketest'
+
SECURE_SECARGS = {'use_test_ca': True,
'server_host_override': 'foo.test.google.fr'}
@@ -69,6 +71,86 @@ DEEP=100
WIDE=64
+def _get_secargs(is_secure):
+ if is_secure:
+ return SECURE_SECARGS
+ else:
+ return None
+
+
+def remove_nonproto_fields(scenario):
+ """Remove special-purpose that contains some extra info about the scenario
+ but don't belong to the ScenarioConfig protobuf message"""
+ scenario.pop('CATEGORIES', None)
+ scenario.pop('SERVER_LANGUAGE', None)
+ return scenario
+
+
+def _ping_pong_scenario(name, rpc_type,
+ client_type, server_type,
+ secure=True,
+ use_generic_payload=False,
+ use_unconstrained_client=False,
+ server_language=None,
+ server_core_limit=0,
+ async_server_threads=0,
+ warmup_seconds=WARMUP_SECONDS,
+ categories=[]):
+ """Creates a basic ping pong scenario."""
+ scenario = {
+ 'name': name,
+ 'num_servers': 1,
+ 'num_clients': 1,
+ 'client_config': {
+ 'client_type': client_type,
+ 'security_params': _get_secargs(secure),
+ 'outstanding_rpcs_per_channel': 1,
+ 'client_channels': 1,
+ 'async_client_threads': 1,
+ 'rpc_type': rpc_type,
+ 'load_params': {
+ 'closed_loop': {}
+ },
+ 'histogram_params': HISTOGRAM_PARAMS,
+ },
+ 'server_config': {
+ 'server_type': server_type,
+ 'security_params': _get_secargs(secure),
+ 'core_limit': server_core_limit,
+ 'async_server_threads': async_server_threads,
+ },
+ 'warmup_seconds': warmup_seconds,
+ 'benchmark_seconds': BENCHMARK_SECONDS
+ }
+ if use_generic_payload:
+ if server_type != 'ASYNC_GENERIC_SERVER':
+ raise Exception('Use ASYNC_GENERIC_SERVER for generic payload.')
+ scenario['client_config']['payload_config'] = EMPTY_GENERIC_PAYLOAD
+ scenario['server_config']['payload_config'] = EMPTY_GENERIC_PAYLOAD
+ else:
+ # For proto payload, only the client should get the config.
+ scenario['client_config']['payload_config'] = EMPTY_PROTO_PAYLOAD
+
+ if use_unconstrained_client:
+ scenario['num_clients'] = 0 # use as many client as available.
+ # TODO(jtattermusch): for SYNC_CLIENT, this will create 100*64 threads
+ # and that's probably too much (at least for wrapped languages).
+ scenario['client_config']['outstanding_rpcs_per_channel'] = DEEP
+ scenario['client_config']['client_channels'] = WIDE
+ scenario['client_config']['async_client_threads'] = 0
+ else:
+ scenario['client_config']['outstanding_rpcs_per_channel'] = 1
+ scenario['client_config']['client_channels'] = 1
+ scenario['client_config']['async_client_threads'] = 1
+
+ if server_language:
+ # the SERVER_LANGUAGE field is recognized by run_performance_tests.py
+ scenario['SERVER_LANGUAGE'] = server_language
+ if categories:
+ scenario['CATEGORIES'] = categories
+ return scenario
+
+
class CXXLanguage:
def __init__(self):
@@ -83,205 +165,64 @@ class CXXLanguage:
def scenarios(self):
# TODO(ctiller): add 70% load latency test
for secure in [True, False]:
- if secure:
- secstr = 'secure'
- secargs = SECURE_SECARGS
- else:
- secstr = 'insecure'
- secargs = None
-
- yield {
- 'name': 'cpp_generic_async_streaming_ping_pong_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_generic_async_streaming_qps_unconstrained_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 0,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': DEEP,
- 'client_channels': WIDE,
- 'async_client_threads': 0,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': secargs,
- 'core_limit': SINGLE_MACHINE_CORES/2,
- 'async_server_threads': 0,
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_generic_async_streaming_qps_one_server_core_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 0,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': DEEP,
- 'client_channels': WIDE,
- 'async_client_threads': 0,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_protobuf_async_streaming_qps_unconstrained_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 0,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': DEEP,
- 'client_channels': WIDE,
- 'async_client_threads': 0,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': SINGLE_MACHINE_CORES/2,
- 'async_server_threads': 0,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_protobuf_async_streaming_ping_pong_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_protobuf_sync_unary_ping_pong_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 0,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 0,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_protobuf_async_unary_ping_pong_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
+ secstr = 'secure' if secure else 'insecure'
+ smoketest_categories = [SMOKETEST] if secure else None
+
+ yield _ping_pong_scenario(
+ 'cpp_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_generic_payload=True, server_core_limit=1, async_server_threads=1,
+ secure=secure,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_core_limit=1, async_server_threads=1,
+ secure=secure)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_core_limit=1, async_server_threads=1,
+ secure=secure,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_sync_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_core_limit=1, async_server_threads=1,
+ secure=secure)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_core_limit=SINGLE_MACHINE_CORES/2,
+ use_unconstrained_client=True,
+ secure=secure,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_core_limit=SINGLE_MACHINE_CORES/2,
+ use_unconstrained_client=True,
+ secure=secure)
+
+ yield _ping_pong_scenario(
+ 'cpp_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_unconstrained_client=True, use_generic_payload=True,
+ server_core_limit=SINGLE_MACHINE_CORES/2,
+ secure=secure,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'cpp_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_unconstrained_client=True, use_generic_payload=True,
+ server_core_limit=1, async_server_threads=1,
+ secure=secure)
def __str__(self):
return 'c++'
@@ -299,113 +240,46 @@ class CSharpLanguage:
return 100
def scenarios(self):
- secargs = SECURE_SECARGS
- yield {
- 'name': 'csharp_generic_async_streaming_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 0,
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'csharp_protobuf_async_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 0,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'csharp_protobuf_sync_to_async_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 0,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'csharp_to_cpp_protobuf_sync_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS,
- 'SERVER_LANGUAGE': 'c++' # recognized by run_performance_tests.py
- }
+ yield _ping_pong_scenario(
+ 'csharp_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_generic_payload=True,
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_sync_to_async_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True,
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True)
+
+ yield _ping_pong_scenario(
+ 'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1,
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'csharp_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1)
def __str__(self):
return 'csharp'
@@ -424,34 +298,45 @@ class NodeLanguage:
return 200
def scenarios(self):
- # TODO(jtattermusch): add more scenarios
- secargs = SECURE_SECARGS
- yield {
- 'name': 'node_protobuf_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ # use_generic_payload=True)
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ yield _ping_pong_scenario(
+ 'node_protobuf_unary_ping_pong', rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'node_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True,
+ categories=[SMOKETEST])
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_to_cpp_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ # server_language='c++', server_core_limit=1, async_server_threads=1)
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ # server_language='c++', server_core_limit=1, async_server_threads=1)
def __str__(self):
return 'node'
@@ -468,114 +353,52 @@ class PythonLanguage:
return 500
def scenarios(self):
- yield {
- 'name': 'python_to_cpp_protobuf_streaming_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': SECURE_SECARGS,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': SECURE_SECARGS,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS,
- 'SERVER_LANGUAGE': 'c++'
- }
- yield {
- 'name': 'python_protobuf_sync_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': SECURE_SECARGS,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': SECURE_SECARGS,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS,
- }
- yield {
- 'name': 'python_protobuf_async_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': SECURE_SECARGS,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': SECURE_SECARGS,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS,
- }
- yield {
- 'name': 'python_to_cpp_single_channel_throughput',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': SECURE_SECARGS,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': BIG_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': SECURE_SECARGS,
- 'core_limit': SINGLE_MACHINE_CORES/2,
- 'async_server_threads': 1,
- 'payload_config': BIG_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS,
- 'SERVER_LANGUAGE': 'c++'
- }
-
+ # TODO(jtattermusch): this scenario reports QPS 0.0
+ yield _ping_pong_scenario(
+ 'python_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_generic_payload=True,
+ categories=[SMOKETEST])
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ yield _ping_pong_scenario(
+ 'python_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ categories=[SMOKETEST])
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_protobuf_sync_unary_qps_unconstrained', rpc_type='UNARY',
+ # client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ yield _ping_pong_scenario(
+ 'python_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1,
+ categories=[SMOKETEST])
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ # server_language='c++', server_core_limit=1, async_server_threads=1)
+
def __str__(self):
return 'python'
@@ -592,34 +415,37 @@ class RubyLanguage:
return 300
def scenarios(self):
- # TODO(jtattermusch): add more scenarios
- secargs = SECURE_SECARGS
- yield {
- 'name': 'ruby_protobuf_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
+ yield _ping_pong_scenario(
+ 'ruby_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'ruby_protobuf_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ categories=[SMOKETEST])
+
+ # TODO: scenario reports QPS of 0.0
+ #yield _ping_pong_scenario(
+ # 'ruby_protobuf_sync_unary_qps_unconstrained', rpc_type='UNARY',
+ # client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ # TODO: scenario reports QPS of 0.0
+ #yield _ping_pong_scenario(
+ # 'ruby_protobuf_sync_streaming_qps_unconstrained', rpc_type='STREAMING',
+ # client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ yield _ping_pong_scenario(
+ 'ruby_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1)
+
+ yield _ping_pong_scenario(
+ 'ruby_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1)
def __str__(self):
return 'ruby'
@@ -638,41 +464,63 @@ class JavaLanguage:
return 400
def scenarios(self):
- # TODO(jtattermusch): add more scenarios
for secure in [True, False]:
- if secure:
- secstr = 'secure'
- secargs = SECURE_SECARGS
- else:
- secstr = 'insecure'
- secargs = None
-
- yield {
- 'name': 'java_protobuf_unary_ping_pong_%s' % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': JAVA_WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
+ secstr = 'secure' if secure else 'insecure'
+ smoketest_categories = [SMOKETEST] if secure else None
+
+ yield _ping_pong_scenario(
+ 'java_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_generic_payload=True, async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ yield _ping_pong_scenario(
+ 'java_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_unconstrained_client=True, use_generic_payload=True,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ yield _ping_pong_scenario(
+ 'java_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_unconstrained_client=True, use_generic_payload=True,
+ async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ # TODO(jtattermusch): add scenarios java vs C++
def __str__(self):
return 'java'
diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index 758be9304d..e813473421 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -542,7 +542,7 @@ def build_interop_image_jobspec(language, tag=None):
env['BUILD_INTEROP_DOCKER_EXTRA_ARGS'] = \
'-v %s:/root/.composer/auth.json:ro' % host_file
build_job = jobset.JobSpec(
- cmdline=['tools/jenkins/build_interop_image.sh'],
+ cmdline=['tools/run_tests/dockerize/build_interop_image.sh'],
environ=env,
shortname='build_docker_%s' % (language),
timeout_seconds=30*60)
diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index 5519666e84..b1f5889e54 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -89,7 +89,7 @@ def create_qpsworker_job(language, shortname=None,
jobspec = jobset.JobSpec(
cmdline=cmdline,
shortname=shortname,
- timeout_seconds=30*60)
+ timeout_seconds=2*60*60)
return QpsWorkerJob(jobspec, language, host_and_port)
@@ -244,7 +244,7 @@ def start_qpsworkers(languages, worker_hosts):
def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
- bq_result_table=None):
+ category='all', bq_result_table=None):
"""Create jobspecs for scenarios to run."""
all_workers = [worker
for workers in workers_by_lang.values()
@@ -253,25 +253,26 @@ def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
for language in languages:
for scenario_json in language.scenarios():
if re.search(args.regex, scenario_json['name']):
- workers = workers_by_lang[str(language)]
- # 'SERVER_LANGUAGE' is an indicator for this script to pick
- # a server in different language. It doesn't belong to the Scenario
- # schema, so we also need to remove it.
- custom_server_lang = scenario_json.pop('SERVER_LANGUAGE', None)
- if custom_server_lang:
- if not workers_by_lang.get(custom_server_lang, []):
- print 'Warning: Skipping scenario %s as' % scenario_json['name']
- print('SERVER_LANGUAGE is set to %s yet the language has '
- 'not been selected with -l' % custom_server_lang)
- continue
- for idx in range(0, scenario_json['num_servers']):
- # replace first X workers by workers of a different language
- workers[idx] = workers_by_lang[custom_server_lang][idx]
- scenario = create_scenario_jobspec(scenario_json,
- workers,
- remote_host=remote_host,
- bq_result_table=bq_result_table)
- scenarios.append(scenario)
+ if category in scenario_json.get('CATEGORIES', []) or category == 'all':
+ workers = workers_by_lang[str(language)]
+ # 'SERVER_LANGUAGE' is an indicator for this script to pick
+ # a server in different language.
+ custom_server_lang = scenario_json.get('SERVER_LANGUAGE', None)
+ scenario_json = scenario_config.remove_nonproto_fields(scenario_json)
+ if custom_server_lang:
+ if not workers_by_lang.get(custom_server_lang, []):
+ print 'Warning: Skipping scenario %s as' % scenario_json['name']
+ print('SERVER_LANGUAGE is set to %s yet the language has '
+ 'not been selected with -l' % custom_server_lang)
+ continue
+ for idx in range(0, scenario_json['num_servers']):
+ # replace first X workers by workers of a different language
+ workers[idx] = workers_by_lang[custom_server_lang][idx]
+ scenario = create_scenario_jobspec(scenario_json,
+ workers,
+ remote_host=remote_host,
+ bq_result_table=bq_result_table)
+ scenarios.append(scenario)
# the very last scenario requests shutting down the workers.
scenarios.append(create_quit_jobspec(all_workers, remote_host=remote_host))
@@ -298,7 +299,7 @@ argp = argparse.ArgumentParser(description='Run performance tests.')
argp.add_argument('-l', '--language',
choices=['all'] + sorted(scenario_config.LANGUAGES.keys()),
nargs='+',
- default=['all'],
+ required=True,
help='Languages to benchmark.')
argp.add_argument('--remote_driver_host',
default=None,
@@ -311,6 +312,10 @@ argp.add_argument('-r', '--regex', default='.*', type=str,
help='Regex to select scenarios to run.')
argp.add_argument('--bq_result_table', default=None, type=str,
help='Bigquery "dataset.table" to upload results to.')
+argp.add_argument('--category',
+ choices=['smoketest','all'],
+ default='smoketest',
+ help='Select a category of tests to run. Smoketest runs by default.')
args = argp.parse_args()
@@ -354,6 +359,7 @@ try:
workers_by_lang=worker_addresses,
remote_host=args.remote_driver_host,
regex=args.regex,
+ category=args.category,
bq_result_table=args.bq_result_table)
if not scenarios:
raise Exception('No scenarios to run')
diff --git a/tools/run_tests/run_stress_tests.py b/tools/run_tests/run_stress_tests.py
index 0ba8f51c58..e42ee24ffb 100755
--- a/tools/run_tests/run_stress_tests.py
+++ b/tools/run_tests/run_stress_tests.py
@@ -195,7 +195,7 @@ def build_interop_stress_image_jobspec(language, tag=None):
tag = 'grpc_interop_stress_%s:%s' % (language.safename, uuid.uuid4())
env = {'INTEROP_IMAGE': tag,
'BASE_NAME': 'grpc_interop_stress_%s' % language.safename}
- build_job = jobset.JobSpec(cmdline=['tools/jenkins/build_interop_stress_image.sh'],
+ build_job = jobset.JobSpec(cmdline=['tools/run_tests/dockerize/build_interop_stress_image.sh'],
environ=env,
shortname='build_docker_%s' % (language),
timeout_seconds=30 * 60)
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index dea481ef90..37291f4d3f 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -272,12 +272,17 @@ class NodeLanguage(object):
def __init__(self):
self.platform = platform_string()
- self.node_version = '0.12'
def configure(self, config, args):
self.config = config
self.args = args
- _check_compiler(self.args.compiler, ['default'])
+ _check_compiler(self.args.compiler, ['default', 'node0.12',
+ 'node4', 'node5'])
+ if self.args.compiler == 'default':
+ self.node_version = '4'
+ else:
+ # Take off the word "node"
+ self.node_version = self.args.compiler[4:]
def test_specs(self):
if self.platform == 'windows':
@@ -802,7 +807,8 @@ argp.add_argument('--compiler',
'gcc4.4', 'gcc4.9', 'gcc5.3',
'clang3.4', 'clang3.6',
'vs2010', 'vs2013', 'vs2015',
- 'python2.7', 'python3.4'],
+ 'python2.7', 'python3.4',
+ 'node0.12', 'node4', 'node5'],
default='default',
help='Selects compiler to use. Allowed values depend on the platform and language.')
argp.add_argument('--build_only',
@@ -906,13 +912,13 @@ if args.use_docker:
env = os.environ.copy()
env['RUN_TESTS_COMMAND'] = run_tests_cmd
env['DOCKERFILE_DIR'] = dockerfile_dir
- env['DOCKER_RUN_SCRIPT'] = 'tools/jenkins/docker_run_tests.sh'
+ env['DOCKER_RUN_SCRIPT'] = 'tools/run_tests/dockerize/docker_run_tests.sh'
if args.xml_report:
env['XML_REPORT'] = args.xml_report
if not args.travis:
env['TTY_FLAG'] = '-t' # enables Ctrl-C when not on Jenkins.
- subprocess.check_call(['tools/jenkins/build_docker_and_run_tests.sh'],
+ subprocess.check_call(['tools/run_tests/dockerize/build_docker_and_run_tests.sh'],
shell=True,
env=env)
sys.exit(0)
diff --git a/tools/run_tests/sanity/sanity_tests.yaml b/tools/run_tests/sanity/sanity_tests.yaml
index efc21e6591..c5945c602f 100644
--- a/tools/run_tests/sanity/sanity_tests.yaml
+++ b/tools/run_tests/sanity/sanity_tests.yaml
@@ -10,3 +10,4 @@
- script: tools/distrib/check_trailing_newlines.sh
- script: tools/distrib/check_nanopb_output.sh
- script: tools/distrib/check_include_guards.py
+- script: tools/distrib/python/check_grpcio_tools.py
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index f546f3b995..8b1aa574e8 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -2248,8 +2248,8 @@
"grpc_test_util"
],
"headers": [
- "src/proto/grpc/lb/v0/load_balancer.grpc.pb.h",
- "src/proto/grpc/lb/v0/load_balancer.pb.h"
+ "src/proto/grpc/lb/v1/load_balancer.grpc.pb.h",
+ "src/proto/grpc/lb/v1/load_balancer.pb.h"
],
"language": "c++",
"name": "grpclb_api_test",
@@ -3397,6 +3397,23 @@
],
"headers": [],
"language": "c",
+ "name": "large_metadata_bad_client_test",
+ "src": [
+ "test/core/bad_client/tests/large_metadata.c"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "bad_client_test",
+ "gpr",
+ "gpr_test_util",
+ "grpc_test_util_unsecure",
+ "grpc_unsecure"
+ ],
+ "headers": [],
+ "language": "c",
"name": "server_registered_method_bad_client_test",
"src": [
"test/core/bad_client/tests/server_registered_method.c"
@@ -5903,6 +5920,7 @@
],
"headers": [
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -5913,6 +5931,7 @@
"name": "grpc_codegen",
"src": [
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -5931,15 +5950,15 @@
],
"headers": [
"src/core/ext/lb_policy/grpclb/load_balancer_api.h",
- "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
+ "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
],
"language": "c",
"name": "grpc_lb_policy_grpclb",
"src": [
"src/core/ext/lb_policy/grpclb/load_balancer_api.c",
"src/core/ext/lb_policy/grpclb/load_balancer_api.h",
- "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
- "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
+ "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
+ "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
],
"third_party": false,
"type": "filegroup"
diff --git a/tools/run_tests/stress_test/configs/asan.json b/tools/run_tests/stress_test/configs/asan.json
index cb9f55763b..7ae11ccbf1 100644
--- a/tools/run_tests/stress_test/configs/asan.json
+++ b/tools/run_tests/stress_test/configs/asan.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_cxx_asan" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "asan"
}
diff --git a/tools/run_tests/stress_test/configs/csharp.json b/tools/run_tests/stress_test/configs/csharp.json
index b7090696b4..587e1552b9 100644
--- a/tools/run_tests/stress_test/configs/csharp.json
+++ b/tools/run_tests/stress_test/configs/csharp.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_csharp" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_csharp"
}
},
@@ -80,7 +80,7 @@
"buildDockerImages": true,
"pollIntervalSecs": 60,
"testDurationSecs": 7200,
- "kubernetesProxyPort": 8001,
+ "kubernetesProxyPort": 8009,
"datasetIdNamePrefix": "stress_test_csharp",
"summaryTableId": "summary",
"qpsTableId": "qps",
diff --git a/tools/run_tests/stress_test/configs/go.json b/tools/run_tests/stress_test/configs/go.json
index 36b465e763..f1b2b523d3 100644
--- a/tools/run_tests/stress_test/configs/go.json
+++ b/tools/run_tests/stress_test/configs/go.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_go" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_go"
}
},
diff --git a/tools/run_tests/stress_test/configs/java.json b/tools/run_tests/stress_test/configs/java.json
index 275384c066..2ce6c00780 100644
--- a/tools/run_tests/stress_test/configs/java.json
+++ b/tools/run_tests/stress_test/configs/java.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_java" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_java"
}
},
diff --git a/tools/run_tests/stress_test/configs/node-cxx.json b/tools/run_tests/stress_test/configs/node-cxx.json
index c4245bf9df..094c1236e7 100644
--- a/tools/run_tests/stress_test/configs/node-cxx.json
+++ b/tools/run_tests/stress_test/configs/node-cxx.json
@@ -1,12 +1,12 @@
{
"dockerImages": {
"grpc_stress_cxx_opt" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "opt"
},
"grpc_stress_node": {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_node"
}
},
diff --git a/tools/run_tests/stress_test/configs/node.json b/tools/run_tests/stress_test/configs/node.json
index 7a48c56a5e..85eb9e0003 100644
--- a/tools/run_tests/stress_test/configs/node.json
+++ b/tools/run_tests/stress_test/configs/node.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_node" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_node"
}
},
diff --git a/tools/run_tests/stress_test/configs/opt-tsan-asan.json b/tools/run_tests/stress_test/configs/opt-tsan-asan.json
index 936d15169e..fcb3678c02 100644
--- a/tools/run_tests/stress_test/configs/opt-tsan-asan.json
+++ b/tools/run_tests/stress_test/configs/opt-tsan-asan.json
@@ -1,17 +1,17 @@
{
"dockerImages": {
"grpc_stress_cxx_opt" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "opt"
},
"grpc_stress_cxx_tsan": {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "tsan"
},
"grpc_stress_cxx_asan": {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "asan"
}
diff --git a/tools/run_tests/stress_test/configs/opt.json b/tools/run_tests/stress_test/configs/opt.json
index f45b824048..5e0e930d45 100644
--- a/tools/run_tests/stress_test/configs/opt.json
+++ b/tools/run_tests/stress_test/configs/opt.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_cxx_opt" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "opt"
}
diff --git a/tools/run_tests/stress_test/configs/python.json b/tools/run_tests/stress_test/configs/python.json
new file mode 100644
index 0000000000..4f85de1d5f
--- /dev/null
+++ b/tools/run_tests/stress_test/configs/python.json
@@ -0,0 +1,98 @@
+{
+ "dockerImages": {
+ "grpc_stress_python" : {
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
+ "dockerFileDir": "grpc_interop_stress_python"
+ }
+ },
+
+ "clientTemplates": {
+ "baseTemplates": {
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py",
+ "pollIntervalSecs": 60,
+ "clientArgs": {
+ "num_channels_per_server":5,
+ "num_stubs_per_channel":10,
+ "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
+ "metrics_port": 8081
+ },
+ "metricsPort": 8081,
+ "metricsArgs": {
+ "metrics_server_address": "localhost:8081",
+ "total_only": "true"
+ },
+ "env": {
+ "PYTHONPATH": "/var/local/git/grpc/src/python/gens:/var/local/git/grpc/src/python/grpcio",
+ "LD_LIBRARY_PATH":"/var/local/git/grpc/libs/opt"
+ }
+ }
+ },
+ "templates": {
+ "python_client": {
+ "baseTemplate": "default",
+ "stressClientCmd": [
+ "python",
+ "/var/local/git/grpc/src/python/grpcio/tests/stress/client.py"
+ ],
+ "metricsClientCmd": ["/var/local/git/grpc/bins/opt/metrics_client"]
+ }
+ }
+ },
+
+ "serverTemplates": {
+ "baseTemplates":{
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py",
+ "serverPort": 8080,
+ "serverArgs": {
+ "port": 8080
+ },
+ "env": {
+ "PYTHONPATH": "/var/local/git/grpc/src/python/gens:/var/local/git/grpc/src/python/grpcio",
+ "LD_LIBRARY_PATH":"/var/local/git/grpc/libs/opt"
+ }
+ }
+ },
+ "templates": {
+ "python_server": {
+ "baseTemplate": "default",
+ "stressServerCmd": [
+ "python",
+ "/var/local/git/grpc/src/python/grpcio/tests/interop/server.py"
+ ]
+ }
+ }
+ },
+
+ "testMatrix": {
+ "serverPodSpecs": {
+ "python-stress-server": {
+ "serverTemplate": "python_server",
+ "dockerImage": "grpc_stress_python",
+ "numInstances": 1
+ }
+ },
+
+ "clientPodSpecs": {
+ "python-stress-client": {
+ "clientTemplate": "python_client",
+ "dockerImage": "grpc_stress_python",
+ "numInstances": 5,
+ "serverPodSpec": "python-stress-server"
+ }
+ }
+ },
+
+ "globalSettings": {
+ "buildDockerImages": true,
+ "pollIntervalSecs": 60,
+ "testDurationSecs": 7200,
+ "kubernetesProxyPort": 8011,
+ "datasetIdNamePrefix": "stress_test_python",
+ "summaryTableId": "summary",
+ "qpsTableId": "qps",
+ "podWarmupSecs": 60
+ }
+}
+
diff --git a/tools/run_tests/stress_test/configs/ruby.json b/tools/run_tests/stress_test/configs/ruby.json
new file mode 100644
index 0000000000..7e2afcbb69
--- /dev/null
+++ b/tools/run_tests/stress_test/configs/ruby.json
@@ -0,0 +1,92 @@
+{
+ "dockerImages": {
+ "grpc_stress_ruby" : {
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
+ "dockerFileDir": "grpc_interop_stress_ruby"
+ }
+ },
+
+ "clientTemplates": {
+ "baseTemplates": {
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py",
+ "pollIntervalSecs": 60,
+ "clientArgs": {
+ "num_channels_per_server":5,
+ "num_stubs_per_channel":10,
+ "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
+ "metrics_port": 8081
+ },
+ "metricsPort": 8081,
+ "metricsArgs": {
+ "metrics_server_address": "localhost:8081",
+ "total_only": "true"
+ }
+ }
+ },
+ "templates": {
+ "ruby_client": {
+ "baseTemplate": "default",
+ "stressClientCmd": [
+ "/var/local/git/grpc/tools/gcp/stress_test/run_ruby.sh",
+ "ruby",
+ "/var/local/git/grpc/src/ruby/stress/stress_client.rb"
+ ],
+ "metricsClientCmd": ["/var/local/git/grpc/bins/opt/metrics_client"]
+ }
+ }
+ },
+
+ "serverTemplates": {
+ "baseTemplates":{
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py",
+ "serverPort": 8080,
+ "serverArgs": {
+ "port": 8080
+ }
+ }
+ },
+ "templates": {
+ "ruby_server": {
+ "baseTemplate": "default",
+ "stressServerCmd": [
+ "/var/local/git/grpc/tools/gcp/stress_test/run_ruby.sh",
+ "ruby",
+ "/var/local/git/grpc/src/ruby/pb/test/server.rb"
+ ]
+ }
+ }
+ },
+
+ "testMatrix": {
+ "serverPodSpecs": {
+ "stress-server-ruby": {
+ "serverTemplate": "ruby_server",
+ "dockerImage": "grpc_stress_ruby",
+ "numInstances": 1
+ }
+ },
+
+ "clientPodSpecs": {
+ "stress-client-ruby": {
+ "clientTemplate": "ruby_client",
+ "dockerImage": "grpc_stress_ruby",
+ "numInstances": 10,
+ "serverPodSpec": "stress-server-ruby"
+ }
+ }
+ },
+
+ "globalSettings": {
+ "buildDockerImages": true,
+ "pollIntervalSecs": 60,
+ "testDurationSecs": 7200,
+ "kubernetesProxyPort": 8001,
+ "datasetIdNamePrefix": "stress_test_ruby",
+ "summaryTableId": "summary",
+ "qpsTableId": "qps",
+ "podWarmupSecs": 60
+ }
+}
+
diff --git a/tools/run_tests/stress_test/configs/tsan.json b/tools/run_tests/stress_test/configs/tsan.json
index 6ef3bdf7ea..abc759c79d 100644
--- a/tools/run_tests/stress_test/configs/tsan.json
+++ b/tools/run_tests/stress_test/configs/tsan.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_cxx_tsan" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "tsan"
}
diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py
index d4f1c4ad3d..583e58316f 100755
--- a/tools/run_tests/stress_test/run_on_gke.py
+++ b/tools/run_tests/stress_test/run_on_gke.py
@@ -69,7 +69,7 @@ class ClientTemplate:
def __init__(self, name, stress_client_cmd, metrics_client_cmd, metrics_port,
wrapper_script_path, poll_interval_secs, client_args_dict,
- metrics_args_dict, will_run_forever):
+ metrics_args_dict, will_run_forever, env_dict):
self.name = name
self.stress_client_cmd = stress_client_cmd
self.metrics_client_cmd = metrics_client_cmd
@@ -79,19 +79,21 @@ class ClientTemplate:
self.client_args_dict = client_args_dict
self.metrics_args_dict = metrics_args_dict
self.will_run_forever = will_run_forever
+ self.env_dict = env_dict
class ServerTemplate:
""" Contains all the common settings used by a stress server """
def __init__(self, name, server_cmd, wrapper_script_path, server_port,
- server_args_dict, will_run_forever):
+ server_args_dict, will_run_forever, env_dict):
self.name = name
self.server_cmd = server_cmd
self.wrapper_script_path = wrapper_script_path
self.server_port = server_port
self.server_args_dict = server_args_dict
self.will_run_forever = will_run_forever
+ self.env_dict = env_dict
class DockerImage:
@@ -240,6 +242,7 @@ class Gke:
# server_pod_spec.template.wrapper_script_path) are are injected into the
# container via environment variables
server_env = self.gke_env.copy()
+ server_env.update(server_pod_spec.template.env_dict)
server_env.update({
'STRESS_TEST_IMAGE_TYPE': 'SERVER',
'STRESS_TEST_CMD': server_pod_spec.template.server_cmd,
@@ -283,6 +286,7 @@ class Gke:
# client_pod_spec.template.wrapper_script_path) are are injected into the
# container via environment variables
client_env = self.gke_env.copy()
+ client_env.update(client_pod_spec.template.env_dict)
client_env.update({
'STRESS_TEST_IMAGE_TYPE': 'CLIENT',
'STRESS_TEST_CMD': client_pod_spec.template.stress_client_cmd,
@@ -425,7 +429,8 @@ class Config:
template_name, stress_client_cmd, metrics_client_cmd,
temp_dict['metricsPort'], temp_dict['wrapperScriptPath'],
temp_dict['pollIntervalSecs'], temp_dict['clientArgs'].copy(),
- temp_dict['metricsArgs'].copy(), temp_dict.get('willRunForever', 1))
+ temp_dict['metricsArgs'].copy(), temp_dict.get('willRunForever', 1),
+ temp_dict.get('env', {}).copy())
return client_templates_dict
@@ -461,7 +466,7 @@ class Config:
server_templates_dict[template_name] = ServerTemplate(
template_name, stress_server_cmd, temp_dict['wrapperScriptPath'],
temp_dict['serverPort'], temp_dict['serverArgs'].copy(),
- temp_dict.get('willRunForever', 1))
+ temp_dict.get('willRunForever', 1), temp_dict.get('env', {}).copy())
return server_templates_dict
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index cf1154426f..1939da7aec 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -2726,6 +2726,27 @@
"flaky": false,
"gtest": false,
"language": "c",
+ "name": "large_metadata_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ]
+ },
+ {
+ "args": [],
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
"name": "server_registered_method_bad_client_test",
"platforms": [
"linux",
@@ -21531,7 +21552,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21552,7 +21575,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21573,7 +21598,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21594,7 +21621,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21615,7 +21644,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21636,7 +21667,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21657,7 +21690,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21678,7 +21713,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21699,7 +21736,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21720,7 +21759,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21741,7 +21782,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21762,7 +21805,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21783,7 +21828,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21804,7 +21851,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21825,7 +21874,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21846,7 +21897,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21867,7 +21920,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21888,7 +21943,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21909,7 +21966,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21930,7 +21989,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21951,7 +22012,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21972,7 +22035,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21993,7 +22058,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22014,7 +22081,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22035,7 +22104,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22056,7 +22127,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22077,7 +22150,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22098,7 +22173,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22119,7 +22196,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22140,7 +22219,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22161,7 +22242,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22182,7 +22265,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22942,7 +23027,7 @@
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -22963,12 +23048,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -22989,12 +23074,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23015,12 +23100,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23041,12 +23126,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23067,12 +23152,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23093,7 +23178,33 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure"
+ "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_secure"
+ },
+ {
+ "args": [
+ "--scenario_json",
+ "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ ],
+ "boringssl": true,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1000.0,
+ "defaults": "boringssl",
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_run_localhost",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_secure"
},
{
"args": [
@@ -23124,7 +23235,7 @@
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23145,12 +23256,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23171,12 +23282,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23197,12 +23308,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23223,12 +23334,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23249,12 +23360,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23275,7 +23386,33 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure"
+ "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_insecure"
+ },
+ {
+ "args": [
+ "--scenario_json",
+ "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ ],
+ "boringssl": true,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1000.0,
+ "defaults": "boringssl",
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_run_localhost",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_insecure"
},
{
"args": [