diff options
Diffstat (limited to 'tools')
34 files changed, 789 insertions, 1740 deletions
diff --git a/tools/debug/core/chttp2_ref_leak.py b/tools/debug/core/chttp2_ref_leak.py new file mode 100755 index 0000000000..d693dd9e54 --- /dev/null +++ b/tools/debug/core/chttp2_ref_leak.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python2.7 +# Copyright 2017 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Reads stdin to find chttp2_refcount log lines, and prints reference leaks +# to stdout + +import collections +import sys +import re + +def new_obj(): + return ['destroy'] + +outstanding = collections.defaultdict(new_obj) + +# Sample log line: +# chttp2:unref:0x629000005200 2->1 destroy [src/core/ext/transport/chttp2/transport/chttp2_transport.c:599] + +for line in sys.stdin: + m = re.search(r'chttp2:( ref|unref):0x([a-fA-F0-9]+) [^ ]+ ([^[]+) \[(.*)\]', line) + if m: + if m.group(1) == ' ref': + outstanding[m.group(2)].append(m.group(3)) + else: + outstanding[m.group(2)].remove(m.group(3)) + +for obj, remaining in outstanding.items(): + if remaining: + print 'LEAKED: %s %r' % (obj, remaining) + diff --git a/tools/dockerfile/test/node_jessie_x64/Dockerfile b/tools/dockerfile/test/node_jessie_x64/Dockerfile index 4f18dbae79..d0e5af64cc 100644 --- a/tools/dockerfile/test/node_jessie_x64/Dockerfile +++ b/tools/dockerfile/test/node_jessie_x64/Dockerfile @@ -102,5 +102,8 @@ RUN ln -s /usr/bin/ccache /usr/local/bin/clang++ RUN mkdir /var/local/jenkins +# Install Mako to generate files in grpc/grpc-node +RUN pip install Mako + # Define the default command. CMD ["bash"] diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index 584dd0af57..0f7e8cd3a8 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -933,6 +933,7 @@ include/grpc/support/tls_pthread.h \ include/grpc/support/useful.h \ include/grpc/support/workaround_list.h \ src/core/ext/transport/inproc/inproc_transport.h \ +src/core/lib/backoff/backoff.h \ src/core/lib/channel/channel_args.h \ src/core/lib/channel/channel_stack.h \ src/core/lib/channel/channel_stack_builder.h \ @@ -952,6 +953,7 @@ src/core/lib/debug/trace.h \ src/core/lib/http/format_request.h \ src/core/lib/http/httpcli.h \ src/core/lib/http/parser.h \ +src/core/lib/iomgr/block_annotate.h \ src/core/lib/iomgr/call_combiner.h \ src/core/lib/iomgr/closure.h \ src/core/lib/iomgr/combiner.h \ @@ -1028,8 +1030,6 @@ src/core/lib/support/arena.h \ src/core/lib/support/atomic.h \ src/core/lib/support/atomic_with_atm.h \ src/core/lib/support/atomic_with_std.h \ -src/core/lib/support/backoff.h \ -src/core/lib/support/block_annotate.h \ src/core/lib/support/env.h \ src/core/lib/support/memory.h \ src/core/lib/support/mpscq.h \ diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core index b8514fe311..c8fd2ee48b 100644 --- a/tools/doxygen/Doxyfile.core +++ b/tools/doxygen/Doxyfile.core @@ -772,6 +772,7 @@ doc/connection-backoff-interop-test-description.md \ doc/connection-backoff.md \ doc/connectivity-semantics-and-api.md \ doc/core/grpc-error.md \ +doc/core/moving-to-c++.md \ doc/core/pending_api_cleanups.md \ doc/cpp-style-guide.md \ doc/environment_variables.md \ diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index ee593e3ea0..f89cbf08cd 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -772,6 +772,7 @@ doc/connection-backoff-interop-test-description.md \ doc/connection-backoff.md \ doc/connectivity-semantics-and-api.md \ doc/core/grpc-error.md \ +doc/core/moving-to-c++.md \ doc/core/pending_api_cleanups.md \ doc/cpp-style-guide.md \ doc/environment_variables.md \ @@ -1056,6 +1057,8 @@ src/core/ext/transport/inproc/inproc_plugin.cc \ src/core/ext/transport/inproc/inproc_transport.cc \ src/core/ext/transport/inproc/inproc_transport.h \ src/core/lib/README.md \ +src/core/lib/backoff/backoff.cc \ +src/core/lib/backoff/backoff.h \ src/core/lib/channel/README.md \ src/core/lib/channel/channel_args.cc \ src/core/lib/channel/channel_args.h \ @@ -1096,6 +1099,7 @@ src/core/lib/http/httpcli_security_connector.cc \ src/core/lib/http/parser.cc \ src/core/lib/http/parser.h \ src/core/lib/iomgr/README.md \ +src/core/lib/iomgr/block_annotate.h \ src/core/lib/iomgr/call_combiner.cc \ src/core/lib/iomgr/call_combiner.h \ src/core/lib/iomgr/closure.cc \ @@ -1301,9 +1305,6 @@ src/core/lib/support/atomic.h \ src/core/lib/support/atomic_with_atm.h \ src/core/lib/support/atomic_with_std.h \ src/core/lib/support/avl.cc \ -src/core/lib/support/backoff.cc \ -src/core/lib/support/backoff.h \ -src/core/lib/support/block_annotate.h \ src/core/lib/support/cmdline.cc \ src/core/lib/support/cpu_iphone.cc \ src/core/lib/support/cpu_linux.cc \ diff --git a/tools/internal_ci/helper_scripts/prepare_build_linux_rc b/tools/internal_ci/helper_scripts/prepare_build_linux_rc index 2ade8dac51..ea2a17f2bc 100644 --- a/tools/internal_ci/helper_scripts/prepare_build_linux_rc +++ b/tools/internal_ci/helper_scripts/prepare_build_linux_rc @@ -32,11 +32,4 @@ PYTHONWARNINGS=ignore XDG_CACHE_HOME=/tmp/xdg-cache-home sudo -E pip install cov # Download Docker images from DockerHub export DOCKERHUB_ORGANIZATION=grpctesting -# If this is a PR using RUN_TESTS_FLAGS var, then add flags to filter tests -if [ -n "$KOKORO_GITHUB_PULL_REQUEST_NUMBER" ] && [ -n "$RUN_TESTS_FLAGS" ]; then - sudo apt-get install -y jq - ghprbTargetBranch=$(curl -s https://api.github.com/repos/grpc/grpc/pulls/$KOKORO_GITHUB_PULL_REQUEST_NUMBER | jq -r .base.ref) - export RUN_TESTS_FLAGS="$RUN_TESTS_FLAGS --filter_pr_tests --base_branch origin/$ghprbTargetBranch" -fi - git submodule update --init diff --git a/tools/internal_ci/helper_scripts/prepare_build_macos_rc b/tools/internal_ci/helper_scripts/prepare_build_macos_rc index dd98a12c65..8f2056096d 100644 --- a/tools/internal_ci/helper_scripts/prepare_build_macos_rc +++ b/tools/internal_ci/helper_scripts/prepare_build_macos_rc @@ -40,11 +40,12 @@ pip install google-api-python-client --user python export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json # If this is a PR using RUN_TESTS_FLAGS var, then add flags to filter tests -if [ -n "$KOKORO_GITHUB_PULL_REQUEST_NUMBER" ] && [ -n "$RUN_TESTS_FLAGS" ]; then - brew install jq - ghprbTargetBranch=$(curl -s https://api.github.com/repos/grpc/grpc/pulls/$KOKORO_GITHUB_PULL_REQUEST_NUMBER | jq -r .base.ref) - export RUN_TESTS_FLAGS="$RUN_TESTS_FLAGS --filter_pr_tests --base_branch origin/$ghprbTargetBranch" -fi +# TODO(matt-kwong): enable after fixing brew issue +# if [ -n "$KOKORO_GITHUB_PULL_REQUEST_NUMBER" ] && [ -n "$RUN_TESTS_FLAGS" ]; then +# brew install jq +# ghprbTargetBranch=$(curl -s https://api.github.com/repos/grpc/grpc/pulls/$KOKORO_GITHUB_PULL_REQUEST_NUMBER | jq -r .base.ref) +# export RUN_TESTS_FLAGS="$RUN_TESTS_FLAGS --filter_pr_tests --base_branch origin/$ghprbTargetBranch" +# fi set +ex # rvm script is very verbose and exits with errorcode source $HOME/.rvm/scripts/rvm @@ -60,7 +61,7 @@ pod repo update # needed by python # python pip install virtualenv --user python -pip install -U six tox setuptools twisted pyyaml --user python +pip install -U Mako six tox setuptools twisted pyyaml --user python export PYTHONPATH=/Library/Python/3.4/site-packages # set xcode version for Obj-C tests diff --git a/tools/internal_ci/linux/grpc_interop_badserver_python.sh b/tools/internal_ci/linux/grpc_interop_badserver_python.sh deleted file mode 100755 index c2bd4e79ac..0000000000 --- a/tools/internal_ci/linux/grpc_interop_badserver_python.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2017 gRPC authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -export LANG=en_US.UTF-8 - -# Enter the gRPC repo root -cd $(dirname $0)/../../.. - -source tools/internal_ci/helper_scripts/prepare_build_linux_rc -source tools/internal_ci/helper_scripts/prepare_build_interop_rc - -tools/run_tests/run_interop_tests.py -l python --use_docker --http2_server_interop - diff --git a/tools/internal_ci/linux/grpc_interop_tocloud.cfg b/tools/internal_ci/linux/grpc_interop_tocloud.cfg index 2803616007..13aec15770 100644 --- a/tools/internal_ci/linux/grpc_interop_tocloud.cfg +++ b/tools/internal_ci/linux/grpc_interop_tocloud.cfg @@ -15,8 +15,7 @@ # Config file for the internal CI (in protobuf text format) # Location of the continuous shell script in repository. -build_file: "grpc/tools/internal_ci/linux/grpc_interop_tocloud.sh" -# grpc_interop tests can take 6+ hours to complete. +build_file: "grpc/tools/internal_ci/linux/grpc_run_interop_tests.sh" timeout_mins: 60 action { define_artifacts { @@ -24,3 +23,8 @@ action { regex: "github/grpc/reports/**" } } + +env_vars { + key: "RUN_TESTS_FLAGS" + value: "-l all -s all --use_docker --http2_interop --internal_ci -t -j 12 --bq_result_table interop_results" +} diff --git a/tools/internal_ci/linux/grpc_interop_toprod.cfg b/tools/internal_ci/linux/grpc_interop_toprod.cfg index 903480a3d1..8d025c4f60 100644 --- a/tools/internal_ci/linux/grpc_interop_toprod.cfg +++ b/tools/internal_ci/linux/grpc_interop_toprod.cfg @@ -15,8 +15,7 @@ # Config file for the internal CI (in protobuf text format) # Location of the continuous shell script in repository. -build_file: "grpc/tools/internal_ci/linux/grpc_interop_toprod.sh" -# grpc_interop tests can take 6+ hours to complete. +build_file: "grpc/tools/internal_ci/linux/grpc_run_interop_tests.sh" timeout_mins: 60 action { define_artifacts { @@ -25,3 +24,7 @@ action { } } +env_vars { + key: "RUN_TESTS_FLAGS" + value: "-l all --cloud_to_prod --cloud_to_prod_auth --prod_servers default gateway_v4 --use_docker --internal_ci -t -j 12 --bq_result_table interop_results" +} diff --git a/tools/internal_ci/linux/grpc_interop_toprod.sh b/tools/internal_ci/linux/grpc_interop_toprod.sh deleted file mode 100755 index 3d06185406..0000000000 --- a/tools/internal_ci/linux/grpc_interop_toprod.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2017 gRPC authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -export LANG=en_US.UTF-8 - -# Enter the gRPC repo root -cd $(dirname $0)/../../.. - -source tools/internal_ci/helper_scripts/prepare_build_linux_rc -source tools/internal_ci/helper_scripts/prepare_build_interop_rc - -tools/run_tests/run_interop_tests.py \ - -l all \ - --cloud_to_prod \ - --cloud_to_prod_auth \ - --prod_servers default gateway_v4 \ - --use_docker --internal_ci -t -j 12 $@ - diff --git a/tools/internal_ci/linux/grpc_interop_badserver_java.sh b/tools/internal_ci/linux/grpc_run_interop_tests.sh index d25845ca50..1f4eda2d52 100755 --- a/tools/internal_ci/linux/grpc_interop_badserver_java.sh +++ b/tools/internal_ci/linux/grpc_run_interop_tests.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/bash # Copyright 2017 gRPC authors. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -23,5 +23,4 @@ cd $(dirname $0)/../../.. source tools/internal_ci/helper_scripts/prepare_build_linux_rc source tools/internal_ci/helper_scripts/prepare_build_interop_rc -tools/run_tests/run_interop_tests.py -l java --use_docker --http2_server_interop - +tools/run_tests/run_interop_tests.py $RUN_TESTS_FLAGS diff --git a/tools/internal_ci/linux/grpc_run_tests_matrix.sh b/tools/internal_ci/linux/grpc_run_tests_matrix.sh index bd1430b741..1018708f96 100755 --- a/tools/internal_ci/linux/grpc_run_tests_matrix.sh +++ b/tools/internal_ci/linux/grpc_run_tests_matrix.sh @@ -20,6 +20,13 @@ cd $(dirname $0)/../../.. source tools/internal_ci/helper_scripts/prepare_build_linux_rc +# If this is a PR using RUN_TESTS_FLAGS var, then add flags to filter tests +if [ -n "$KOKORO_GITHUB_PULL_REQUEST_NUMBER" ] && [ -n "$RUN_TESTS_FLAGS" ]; then + sudo apt-get install -y jq + ghprbTargetBranch=$(curl -s https://api.github.com/repos/grpc/grpc/pulls/$KOKORO_GITHUB_PULL_REQUEST_NUMBER | jq -r .base.ref) + export RUN_TESTS_FLAGS="$RUN_TESTS_FLAGS --filter_pr_tests --base_branch origin/$ghprbTargetBranch" +fi + tools/run_tests/run_tests_matrix.py $RUN_TESTS_FLAGS || FAILED="true" # Reveal leftover processes that might be left behind by the build diff --git a/tools/internal_ci/linux/grpc_interop_badserver_java.cfg b/tools/internal_ci/linux/pull_request/grpc_interop_tocloud.cfg index dc2114273e..cb18e8e868 100644 --- a/tools/internal_ci/linux/grpc_interop_badserver_java.cfg +++ b/tools/internal_ci/linux/pull_request/grpc_interop_tocloud.cfg @@ -15,12 +15,16 @@ # Config file for the internal CI (in protobuf text format) # Location of the continuous shell script in repository. -build_file: "grpc/tools/internal_ci/linux/grpc_interop_badserver_java.sh" -# grpc_interop tests can take 6+ hours to complete. -timeout_mins: 480 +build_file: "grpc/tools/internal_ci/linux/grpc_run_interop_tests.sh" +timeout_mins: 60 action { define_artifacts { - regex: "**/report.xml" + regex: "**/sponge_log.xml" regex: "github/grpc/reports/**" } } + +env_vars { + key: "RUN_TESTS_FLAGS" + value: "-l all -s all --use_docker --http2_interop --internal_ci -t -j 12" +} diff --git a/tools/internal_ci/linux/grpc_interop_badserver_python.cfg b/tools/internal_ci/linux/pull_request/grpc_interop_toprod.cfg index ec738fcf74..e141d9f648 100644 --- a/tools/internal_ci/linux/grpc_interop_badserver_python.cfg +++ b/tools/internal_ci/linux/pull_request/grpc_interop_toprod.cfg @@ -15,12 +15,16 @@ # Config file for the internal CI (in protobuf text format) # Location of the continuous shell script in repository. -build_file: "grpc/tools/internal_ci/linux/grpc_interop_badserver_python.sh" -# grpc_interop tests can take 6+ hours to complete. -timeout_mins: 480 +build_file: "grpc/tools/internal_ci/linux/grpc_run_interop_tests.sh" +timeout_mins: 60 action { define_artifacts { - regex: "**/report.xml" + regex: "**/sponge_log.xml" regex: "github/grpc/reports/**" } } + +env_vars { + key: "RUN_TESTS_FLAGS" + value: "-l all --allow_flakes --cloud_to_prod --cloud_to_prod_auth --prod_servers default gateway_v4 --use_docker --internal_ci -t -j 12" +} diff --git a/tools/interop_matrix/README.md b/tools/interop_matrix/README.md index c2f354399f..c0e9a33c5e 100644 --- a/tools/interop_matrix/README.md +++ b/tools/interop_matrix/README.md @@ -47,7 +47,7 @@ For more details on each step, refer to sections below. ## Instructions for running test cases against GCR images - Run `tools/interop_matrix/run_interop_matrix_tests.py`. Useful options: - - `--release` specifies a git release tag. Defaults to `--release=master`. Make sure the GCR images with the tag have been created using `create_matrix_images.py` above. + - `--release` specifies a git release tag. Defaults to `--release=all`. Make sure the GCR images with the tag have been created using `create_matrix_images.py` above. - `--language` specifies a language. Defaults to `--language=all`. For example, To test all languages for all gRPC releases across all runtimes, do `tools/interop_matrix/run_interop_matrix_test.py --release=all`. - The output for all the test cases is recorded in a junit style xml file (default to 'report.xml'). diff --git a/tools/interop_matrix/create_testcases.sh b/tools/interop_matrix/create_testcases.sh index d06fb34ff9..3d34b2ef25 100755 --- a/tools/interop_matrix/create_testcases.sh +++ b/tools/interop_matrix/create_testcases.sh @@ -31,9 +31,12 @@ TESTCASES_DIR=${GRPC_ROOT}/tools/interop_matrix/testcases echo "Create '$LANG' test cases for gRPC release '${RELEASE:=master}'" +echo $client_lang # Invoke run_interop_test in manual mode. +# TODO(adelez): Add cloud_gateways when we figure out how to skip them if not +# running in GCE. ${GRPC_ROOT}/tools/run_tests/run_interop_tests.py -l $LANG --use_docker \ - --cloud_to_prod --manual_run + --cloud_to_prod --prod_servers default gateway_v4 --manual_run # Clean up function cleanup { @@ -52,11 +55,18 @@ function cleanup { [ -e "$CMDS_SH" ] && rm $CMDS_SH } trap cleanup EXIT +# TODO(adelez): add test auth tests but do not run if not testing on GCE. # Running the testcases as sanity unless we are asked to skip. [ -z "$SKIP_TEST" ] && (echo "Running test cases: $CMDS_SH"; sh $CMDS_SH) +# Convert c++ to cxx. +if [$LANG == "c++" ]; then +client_lang="cxx" +else +client_lang=$LANG +fi mkdir -p $TESTCASES_DIR -testcase=$TESTCASES_DIR/${LANG}__$RELEASE +testcase=$TESTCASES_DIR/${client_lang}__$RELEASE if [ -e $testcase ]; then echo "Updating: $testcase" diff $testcase $CMDS_SH || true diff --git a/tools/interop_matrix/run_interop_matrix_tests.py b/tools/interop_matrix/run_interop_matrix_tests.py index 4315c8277d..48c918d25d 100755 --- a/tools/interop_matrix/run_interop_matrix_tests.py +++ b/tools/interop_matrix/run_interop_matrix_tests.py @@ -48,9 +48,8 @@ argp.add_argument('-j', '--jobs', default=multiprocessing.cpu_count(), type=int) argp.add_argument('--gcr_path', default='gcr.io/grpc-testing', help='Path of docker images in Google Container Registry') - argp.add_argument('--release', - default='master', + default='all', choices=['all', 'master'] + _RELEASES, help='Release tags to test. When testing all ' 'releases defined in client_matrix.py, use "all".') @@ -69,6 +68,13 @@ argp.add_argument('--report_file', default='report.xml', help='The result file to create.') +argp.add_argument('--allow_flakes', + default=False, + action='store_const', + const=True, + help=('Allow flaky tests to show as passing (re-runs failed ' + 'tests up to five times)')) + args = argp.parse_args() @@ -94,14 +100,15 @@ def find_all_images_for_lang(lang): for runtime in client_matrix.LANG_RUNTIME_MATRIX[lang]: image_path = '%s/grpc_interop_%s' % (args.gcr_path, runtime) output = subprocess.check_output(['gcloud', 'beta', 'container', 'images', - 'list-tags', '--format=json', image_path]) + 'list-tags', '--format=json', image_path]) docker_image_list = json.loads(output) # All images should have a single tag or no tag. + # TODO(adelez): Remove tagless images. tags = [i['tags'][0] for i in docker_image_list if i['tags']] jobset.message('START', 'Found images for %s: %s' % (image_path, tags), do_newline=True) skipped = len(docker_image_list) - len(tags) - jobset.message('START', 'Skipped images (no-tag/unknown-tag): %d' % skipped, + jobset.message('SKIPPED', 'Skipped images (no-tag/unknown-tag): %d' % skipped, do_newline=True) # Filter tags based on the releases. images[runtime] = [(tag,'%s:%s' % (image_path,tag)) for tag in tags if @@ -130,7 +137,8 @@ def find_test_cases(lang, release): spec = jobset.JobSpec(cmdline=line, shortname=shortname, timeout_seconds=_TEST_TIMEOUT, - shell=True) + shell=True, + flake_retries=5 if args.allow_flakes else 0) job_spec_list.append(spec) jobset.message('START', 'Loaded %s tests from %s' % (len(job_spec_list), testcases), @@ -148,6 +156,7 @@ def run_tests_for_lang(lang, runtime, images): images is a list of (<release-tag>, <image-full-path>) tuple. """ + total_num_failures = 0 for image_tuple in images: release, image = image_tuple jobset.message('START', 'Testing %s' % image, do_newline=True) @@ -161,6 +170,7 @@ def run_tests_for_lang(lang, runtime, images): maxjobs=args.jobs) if num_failures: jobset.message('FAILED', 'Some tests failed', do_newline=True) + total_num_failures += num_failures else: jobset.message('SUCCESS', 'All tests passed', do_newline=True) @@ -170,6 +180,9 @@ def run_tests_for_lang(lang, runtime, images): 'grpc_interop_matrix', '%s__%s %s'%(lang,runtime,release), str(uuid.uuid4())) + + return total_num_failures + _docker_images_cleanup = [] def cleanup(): @@ -180,9 +193,14 @@ def cleanup(): atexit.register(cleanup) languages = args.language if args.language != ['all'] else _LANGUAGES +total_num_failures = 0 for lang in languages: docker_images = find_all_images_for_lang(lang) for runtime in sorted(docker_images.keys()): - run_tests_for_lang(lang, runtime, docker_images[runtime]) + total_num_failures += run_tests_for_lang(lang, runtime, docker_images[runtime]) report_utils.create_xml_report_file(_xml_report_tree, args.report_file) + +if total_num_failures: + sys.exit(1) +sys.exit(0) diff --git a/tools/interop_matrix/testcases/cxx__master b/tools/interop_matrix/testcases/cxx__master index ccd2859530..e0fed53f08 100755 --- a/tools/interop_matrix/testcases/cxx__master +++ b/tools/interop_matrix/testcases/cxx__master @@ -1,5 +1,5 @@ #!/bin/bash -echo "Testing ${docker_image:=grpc_interop_cxx:1423f288-ac00-4f3a-9885-771258eecae3}" +echo "Testing ${docker_image:=grpc_interop_cxx:78de6f80-524d-4bc9-bfb2-f00c24ceafed}" docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary" docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary" docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong" @@ -9,3 +9,12 @@ docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin" docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response" docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_stream" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=client_streaming" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=server_streaming" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response" +docker run -i --rm=true -w /var/local/git/grpc --net=host $docker_image bash -c "bins/opt/interop_client --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server" diff --git a/tools/interop_matrix/testcases/go__master b/tools/interop_matrix/testcases/go__master index 2624c7f92c..33b25d6a16 100755 --- a/tools/interop_matrix/testcases/go__master +++ b/tools/interop_matrix/testcases/go__master @@ -1,5 +1,5 @@ #!/bin/bash -echo "Testing ${docker_image:=grpc_interop_go:41fffd01-a6c8-41b6-8136-c0aaa1ec2437}" +echo "Testing ${docker_image:=grpc_interop_go:dd8fbf3a-4964-4387-9997-5dadeea09835}" docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary" docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary" docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong" @@ -9,3 +9,12 @@ docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=h docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin" docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response" docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_stream" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=client_streaming" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=server_streaming" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response" +docker run -i --rm=true -w /go/src/google.golang.org/grpc/interop/client --net=host $docker_image bash -c "go run client.go --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server" diff --git a/tools/interop_matrix/testcases/java__master b/tools/interop_matrix/testcases/java__master index cf431646e9..dbd87279a6 100755 --- a/tools/interop_matrix/testcases/java__master +++ b/tools/interop_matrix/testcases/java__master @@ -1,5 +1,5 @@ #!/bin/bash -echo "Testing ${docker_image:=grpc_interop_java:ea528843-be34-4ff3-a136-e4609424e061}" +echo "Testing ${docker_image:=grpc_interop_java:a764b50c-1788-4387-9b9e-5cfa93927006}" docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary" docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary" docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong" @@ -9,3 +9,12 @@ docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_i docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin" docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response" docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_stream" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=client_streaming" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=server_streaming" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response" +docker run -i --rm=true -w /var/local/git/grpc/../grpc-java --net=host $docker_image bash -c "./run-test-client.sh --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server" diff --git a/tools/jenkins/run_full_performance.sh b/tools/jenkins/run_full_performance.sh index 9598fd7734..195cc68003 100755 --- a/tools/jenkins/run_full_performance.sh +++ b/tools/jenkins/run_full_performance.sh @@ -21,7 +21,7 @@ cd $(dirname $0)/../.. # run 8core client vs 8core server tools/run_tests/run_performance_tests.py \ - -l c++ csharp node ruby java python go node_express php_protobuf_php php_protobuf_c \ + -l c++ csharp node ruby java python go node_express php7 php7_protobuf_c \ --netperf \ --category scalable \ --bq_result_table performance_test.performance_experiment \ diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json index 95556b2e6f..21b3bef691 100644 --- a/tools/run_tests/generated/sources_and_headers.json +++ b/tools/run_tests/generated/sources_and_headers.json @@ -104,6 +104,23 @@ "gpr", "gpr_test_util", "grpc", + "grpc_test_util" + ], + "headers": [], + "is_filegroup": false, + "language": "c", + "name": "backoff_test", + "src": [ + "test/core/backoff/backoff_test.c" + ], + "third_party": false, + "type": "target" + }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", "grpc_test_util", "test_tcp_server" ], @@ -734,21 +751,6 @@ "headers": [], "is_filegroup": false, "language": "c", - "name": "gpr_backoff_test", - "src": [ - "test/core/support/backoff_test.c" - ], - "third_party": false, - "type": "target" - }, - { - "deps": [ - "gpr", - "gpr_test_util" - ], - "headers": [], - "is_filegroup": false, - "language": "c", "name": "gpr_cmdline_test", "src": [ "test/core/support/cmdline_test.c" @@ -3493,6 +3495,28 @@ "gpr_test_util", "grpc", "grpc++", + "grpc++_test", + "grpc_test_util" + ], + "headers": [ + "test/core/end2end/end2end_tests.h" + ], + "is_filegroup": false, + "language": "c++", + "name": "h2_ssl_cert_test", + "src": [ + "test/core/end2end/end2end_tests.h", + "test/core/end2end/h2_ssl_cert_test.cc" + ], + "third_party": false, + "type": "target" + }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc++", "grpc++_test_util", "grpc_test_util" ], @@ -5296,24 +5320,6 @@ "headers": [], "is_filegroup": false, "language": "c", - "name": "h2_ssl_cert_test", - "src": [ - "test/core/end2end/fixtures/h2_ssl_cert.c" - ], - "third_party": false, - "type": "target" - }, - { - "deps": [ - "end2end_tests", - "gpr", - "gpr_test_util", - "grpc", - "grpc_test_util" - ], - "headers": [], - "is_filegroup": false, - "language": "c", "name": "h2_ssl_proxy_test", "src": [ "test/core/end2end/fixtures/h2_ssl_proxy.c" @@ -7773,7 +7779,6 @@ "src/core/lib/support/arena.cc", "src/core/lib/support/atm.cc", "src/core/lib/support/avl.cc", - "src/core/lib/support/backoff.cc", "src/core/lib/support/cmdline.cc", "src/core/lib/support/cpu_iphone.cc", "src/core/lib/support/cpu_linux.cc", @@ -7854,8 +7859,6 @@ "src/core/lib/support/atomic.h", "src/core/lib/support/atomic_with_atm.h", "src/core/lib/support/atomic_with_std.h", - "src/core/lib/support/backoff.h", - "src/core/lib/support/block_annotate.h", "src/core/lib/support/env.h", "src/core/lib/support/memory.h", "src/core/lib/support/mpscq.h", @@ -7903,8 +7906,6 @@ "src/core/lib/support/atomic.h", "src/core/lib/support/atomic_with_atm.h", "src/core/lib/support/atomic_with_std.h", - "src/core/lib/support/backoff.h", - "src/core/lib/support/block_annotate.h", "src/core/lib/support/env.h", "src/core/lib/support/memory.h", "src/core/lib/support/mpscq.h", @@ -7997,6 +7998,7 @@ "language": "c", "name": "grpc_base", "src": [ + "src/core/lib/backoff/backoff.cc", "src/core/lib/channel/channel_args.cc", "src/core/lib/channel/channel_stack.cc", "src/core/lib/channel/channel_stack_builder.cc", @@ -8150,6 +8152,7 @@ "include/grpc/slice_buffer.h", "include/grpc/status.h", "include/grpc/support/workaround_list.h", + "src/core/lib/backoff/backoff.h", "src/core/lib/channel/channel_args.h", "src/core/lib/channel/channel_stack.h", "src/core/lib/channel/channel_stack_builder.h", @@ -8168,6 +8171,7 @@ "src/core/lib/http/format_request.h", "src/core/lib/http/httpcli.h", "src/core/lib/http/parser.h", + "src/core/lib/iomgr/block_annotate.h", "src/core/lib/iomgr/call_combiner.h", "src/core/lib/iomgr/closure.h", "src/core/lib/iomgr/combiner.h", @@ -8283,6 +8287,7 @@ "include/grpc/slice_buffer.h", "include/grpc/status.h", "include/grpc/support/workaround_list.h", + "src/core/lib/backoff/backoff.h", "src/core/lib/channel/channel_args.h", "src/core/lib/channel/channel_stack.h", "src/core/lib/channel/channel_stack_builder.h", @@ -8301,6 +8306,7 @@ "src/core/lib/http/format_request.h", "src/core/lib/http/httpcli.h", "src/core/lib/http/parser.h", + "src/core/lib/iomgr/block_annotate.h", "src/core/lib/iomgr/call_combiner.h", "src/core/lib/iomgr/closure.h", "src/core/lib/iomgr/combiner.h", diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json index 1fefb52f07..91c7d4c38e 100644 --- a/tools/run_tests/generated/tests.json +++ b/tools/run_tests/generated/tests.json @@ -21,7 +21,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -43,7 +44,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -65,7 +67,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -87,7 +90,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -109,7 +113,31 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true + }, + { + "args": [], + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "cpu_cost": 1.0, + "exclude_configs": [], + "exclude_iomgrs": [], + "flaky": false, + "gtest": false, + "language": "c", + "name": "backoff_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "uses_polling": true }, { "args": [], @@ -133,7 +161,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -155,7 +184,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -177,7 +207,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -199,7 +230,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -221,7 +253,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -243,7 +276,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -265,7 +299,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -287,7 +322,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -309,7 +345,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -331,7 +368,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -353,7 +391,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -375,7 +414,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -397,7 +437,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -419,7 +460,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -441,7 +483,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -465,7 +508,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -487,7 +531,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -511,7 +556,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -533,7 +579,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -555,7 +602,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -579,7 +627,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -601,7 +650,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -619,7 +669,8 @@ "name": "ev_epollsig_linux_test", "platforms": [ "linux" - ] + ], + "uses_polling": true }, { "args": [], @@ -641,7 +692,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -661,7 +713,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -683,7 +736,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -705,7 +759,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -725,7 +780,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -745,7 +801,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -767,7 +824,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -789,29 +847,8 @@ "mac", "posix", "windows" - ] - }, - { - "args": [], - "ci_platforms": [ - "linux", - "mac", - "posix", - "windows" ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "gtest": false, - "language": "c", - "name": "gpr_backoff_test", - "platforms": [ - "linux", - "mac", - "posix", - "windows" - ] + "uses_polling": true }, { "args": [], @@ -833,7 +870,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -855,7 +893,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -877,7 +916,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -899,7 +939,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -921,7 +962,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -943,7 +985,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -965,7 +1008,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": false }, { "args": [], @@ -987,7 +1031,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1009,7 +1054,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1031,7 +1077,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1053,7 +1100,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1075,7 +1123,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1097,7 +1146,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1119,7 +1169,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1141,7 +1192,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1163,7 +1215,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1185,7 +1238,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1207,7 +1261,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1229,7 +1284,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1251,7 +1307,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1273,7 +1330,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1295,7 +1353,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1319,7 +1378,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1341,7 +1401,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1363,7 +1424,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1383,7 +1445,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -1405,7 +1468,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1427,7 +1491,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1445,7 +1510,8 @@ "name": "handshake_client", "platforms": [ "linux" - ] + ], + "uses_polling": true }, { "args": [], @@ -1463,7 +1529,8 @@ "name": "handshake_server", "platforms": [ "linux" - ] + ], + "uses_polling": true }, { "args": [], @@ -1485,7 +1552,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1507,7 +1575,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1529,7 +1598,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1551,7 +1621,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1571,7 +1642,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -1587,7 +1659,8 @@ "name": "httpscli_test", "platforms": [ "linux" - ] + ], + "uses_polling": true }, { "args": [], @@ -1609,7 +1682,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1631,7 +1705,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1653,7 +1728,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1675,7 +1751,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1697,7 +1774,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1719,7 +1797,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1741,7 +1820,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1761,7 +1841,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -1783,7 +1864,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1805,7 +1887,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1827,7 +1910,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1849,7 +1933,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1871,7 +1956,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1893,7 +1979,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1917,7 +2004,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1939,7 +2027,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1961,7 +2050,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -1979,7 +2069,8 @@ "name": "pollset_set_test", "platforms": [ "linux" - ] + ], + "uses_polling": true }, { "args": [], @@ -2001,7 +2092,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2023,7 +2115,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2045,7 +2138,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2067,7 +2161,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2091,7 +2186,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2115,7 +2211,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2137,7 +2234,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2159,7 +2257,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2181,7 +2280,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2203,7 +2303,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2225,7 +2326,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2247,7 +2349,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2269,7 +2372,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2291,7 +2395,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2313,7 +2418,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2333,7 +2439,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2355,7 +2462,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2377,7 +2485,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2399,7 +2508,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2421,7 +2531,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2445,7 +2556,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2467,7 +2579,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2489,7 +2602,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2513,7 +2627,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2535,7 +2650,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2557,7 +2673,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2581,7 +2698,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2605,7 +2723,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2627,7 +2746,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2649,7 +2769,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2671,7 +2792,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2691,7 +2813,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2713,7 +2836,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2735,7 +2859,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2757,7 +2882,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -2779,7 +2905,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2801,7 +2928,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -2823,7 +2951,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [ @@ -2845,7 +2974,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -2867,7 +2997,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -2889,7 +3020,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -2911,7 +3043,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -2933,7 +3066,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -2955,7 +3089,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -2977,7 +3112,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -2999,7 +3135,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -3026,7 +3163,8 @@ "mac", "posix" ], - "timeout_seconds": 1200 + "timeout_seconds": 1200, + "uses_polling": true }, { "args": [ @@ -3053,7 +3191,8 @@ "mac", "posix" ], - "timeout_seconds": 1200 + "timeout_seconds": 1200, + "uses_polling": true }, { "args": [ @@ -3080,7 +3219,8 @@ "mac", "posix" ], - "timeout_seconds": 1200 + "timeout_seconds": 1200, + "uses_polling": true }, { "args": [ @@ -3107,7 +3247,8 @@ "mac", "posix" ], - "timeout_seconds": 1200 + "timeout_seconds": 1200, + "uses_polling": true }, { "args": [ @@ -3129,7 +3270,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -3151,7 +3293,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -3173,7 +3316,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3195,7 +3339,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3217,7 +3362,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3237,7 +3383,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -3263,7 +3410,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3285,7 +3433,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3307,7 +3456,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3329,7 +3479,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3351,7 +3502,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3373,7 +3525,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3395,7 +3548,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3417,7 +3571,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3439,7 +3594,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3461,7 +3617,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3483,7 +3640,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3505,7 +3663,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [ @@ -3529,7 +3688,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3551,7 +3711,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3573,7 +3734,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3599,7 +3761,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3625,7 +3788,31 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true + }, + { + "args": [], + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "cpu_cost": 1.0, + "exclude_configs": [], + "exclude_iomgrs": [], + "flaky": false, + "gtest": true, + "language": "c++", + "name": "h2_ssl_cert_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "uses_polling": true }, { "args": [], @@ -3647,7 +3834,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3669,7 +3857,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3689,7 +3878,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -3711,7 +3901,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3733,7 +3924,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3755,7 +3947,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3777,7 +3970,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3799,7 +3993,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3819,7 +4014,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -3841,7 +4037,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3861,7 +4058,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -3883,7 +4081,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3905,7 +4104,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3927,7 +4127,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3947,7 +4148,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -3969,7 +4171,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -3991,7 +4194,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4013,7 +4217,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4035,7 +4240,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4055,7 +4261,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -4077,7 +4284,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4100,7 +4308,8 @@ "posix", "windows" ], - "timeout_seconds": 1200 + "timeout_seconds": 1200, + "uses_polling": true }, { "args": [], @@ -4120,7 +4329,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [], @@ -4142,7 +4352,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4166,7 +4377,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4190,7 +4402,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4214,7 +4427,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4238,7 +4452,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4262,7 +4477,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4286,7 +4502,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4310,7 +4527,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4334,7 +4552,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4358,7 +4577,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4382,7 +4602,8 @@ "mac", "posix", "windows" - ] + ], + "uses_polling": true }, { "args": [], @@ -4402,7 +4623,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -4425,7 +4647,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -4448,7 +4671,8 @@ "linux", "mac", "posix" - ] + ], + "uses_polling": true }, { "args": [ @@ -26400,1344 +26624,6 @@ "ci_platforms": [ "windows", "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "bad_hostname" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "bad_ping" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "binary_metadata" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "call_creds" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "cancel_after_accept" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "cancel_after_client_done" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "cancel_after_invoke" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "cancel_after_round_trip" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "cancel_before_invoke" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "cancel_in_a_vacuum" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "cancel_with_status" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "compressed_payload" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "connectivity" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [ - "uv" - ], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "default_host" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "disappearing_server" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": true, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "empty_batch" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "filter_call_init_fails" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "filter_causes_close" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "filter_latency" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "graceful_server_shutdown" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "high_initial_seqno" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "hpack_size" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "idempotent_request" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "invoke_large_request" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "keepalive_timeout" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "large_metadata" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "load_reporting_hook" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "max_concurrent_streams" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "max_connection_age" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "max_connection_idle" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [ - "uv" - ], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "max_message_length" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "negative_deadline" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "network_status_change" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "no_logging" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "no_op" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "payload" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "ping" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "ping_pong_streaming" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "registered_call" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "request_with_flags" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "request_with_payload" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "resource_quota_server" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "server_finishes_request" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "shutdown_finishes_calls" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "shutdown_finishes_tags" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "simple_cacheable_request" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "simple_delayed_request" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "simple_metadata" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "simple_request" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "stream_compression_compressed_payload" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "stream_compression_payload" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "stream_compression_ping_pong_streaming" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "streaming_error_response" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "trailing_metadata" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "workaround_cronet_compression" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 1.0, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "write_buffering" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "write_buffering_at_end" - ], - "ci_platforms": [ - "windows", - "linux", - "mac", - "posix" - ], - "cpu_cost": 0.1, - "exclude_configs": [], - "exclude_iomgrs": [], - "flaky": false, - "language": "c", - "name": "h2_ssl_cert_test", - "platforms": [ - "windows", - "linux", - "mac", - "posix" - ] - }, - { - "args": [ - "authority_not_supported" - ], - "ci_platforms": [ - "windows", - "linux", "posix" ], "cpu_cost": 1.0, diff --git a/tools/run_tests/performance/build_performance.sh b/tools/run_tests/performance/build_performance.sh index e46d4e0040..e7d8db8e3e 100755 --- a/tools/run_tests/performance/build_performance.sh +++ b/tools/run_tests/performance/build_performance.sh @@ -31,6 +31,7 @@ then make CONFIG=${CONFIG} EMBED_OPENSSL=true EMBED_ZLIB=true qps_worker qps_json_driver -j8 fi +PHP_ALREADY_BUILT="" for language in $@ do case "$language" in @@ -43,6 +44,14 @@ do "go") tools/run_tests/performance/build_performance_go.sh ;; + "php7"|"php7_protobuf_c") + if [ -n "$PHP_ALREADY_BUILT" ]; then + echo "Skipping PHP build as already built by $PHP_ALREADY_BUILT" + else + PHP_ALREADY_BUILT=$language + tools/run_tests/performance/build_performance_php7.sh + fi + ;; "csharp") python tools/run_tests/run_tests.py -l $language -c $CONFIG --build_only -j 8 --compiler coreclr ;; diff --git a/tools/internal_ci/linux/grpc_interop_tocloud.sh b/tools/run_tests/performance/build_performance_php7.sh index e3ba25af5d..141c9fd1c8 100755 --- a/tools/internal_ci/linux/grpc_interop_tocloud.sh +++ b/tools/run_tests/performance/build_performance_php7.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/bash # Copyright 2017 gRPC authors. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,12 +15,16 @@ set -ex -export LANG=en_US.UTF-8 - -# Enter the gRPC repo root cd $(dirname $0)/../../.. +CONFIG=${CONFIG:-opt} +python tools/run_tests/run_tests.py -l php7 -c $CONFIG --build_only -j 8 -source tools/internal_ci/helper_scripts/prepare_build_linux_rc -source tools/internal_ci/helper_scripts/prepare_build_interop_rc +# Set up all dependences needed for PHP QPS test +cd src/php/tests/qps +composer install +# Install protobuf C-extension for php +cd vendor/google/protobuf/php/ext/google/protobuf +phpize +./configure +make -tools/run_tests/run_interop_tests.py -l all -s all --use_docker --http2_interop --internal_ci -t -j 12 $@ diff --git a/tools/run_tests/performance/massage_qps_stats.py b/tools/run_tests/performance/massage_qps_stats.py index 9b9355308a..ebbfe6c26c 100644 --- a/tools/run_tests/performance/massage_qps_stats.py +++ b/tools/run_tests/performance/massage_qps_stats.py @@ -74,6 +74,7 @@ def massage_qps_stats(scenario_result): stats["core_http2_initiate_write_due_to_transport_flow_control_unstalled"] = massage_qps_stats_helpers.counter(core_stats, "http2_initiate_write_due_to_transport_flow_control_unstalled") stats["core_http2_initiate_write_due_to_ping_response"] = massage_qps_stats_helpers.counter(core_stats, "http2_initiate_write_due_to_ping_response") stats["core_http2_initiate_write_due_to_force_rst_stream"] = massage_qps_stats_helpers.counter(core_stats, "http2_initiate_write_due_to_force_rst_stream") + stats["core_http2_spurious_writes_begun"] = massage_qps_stats_helpers.counter(core_stats, "http2_spurious_writes_begun") stats["core_hpack_recv_indexed"] = massage_qps_stats_helpers.counter(core_stats, "hpack_recv_indexed") stats["core_hpack_recv_lithdr_incidx"] = massage_qps_stats_helpers.counter(core_stats, "hpack_recv_lithdr_incidx") stats["core_hpack_recv_lithdr_incidx_v"] = massage_qps_stats_helpers.counter(core_stats, "hpack_recv_lithdr_incidx_v") diff --git a/tools/run_tests/performance/run_worker_php.sh b/tools/run_tests/performance/run_worker_php.sh index e524d5286d..8c7ceef2ff 100755 --- a/tools/run_tests/performance/run_worker_php.sh +++ b/tools/run_tests/performance/run_worker_php.sh @@ -17,17 +17,7 @@ source ~/.rvm/scripts/rvm set -ex cd $(dirname $0)/../../.. -repo=$(pwd) -# First set up all dependences needed for PHP QPS test -cd $repo -cd src/php/tests/qps -composer install -# Install protobuf C-extension for php -cd vendor/google/protobuf/php/ext/google/protobuf -phpize -./configure -make + # The proxy worker for PHP is implemented in Ruby -cd $repo ruby src/ruby/qps/proxy-worker.rb $@ diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py index 5019358ab3..8f01eb4b2a 100644 --- a/tools/run_tests/performance/scenario_config.py +++ b/tools/run_tests/performance/scenario_config.py @@ -800,39 +800,54 @@ class RubyLanguage: return 'ruby' -class PhpLanguage: +class Php7Language: - def __init__(self, use_protobuf_c_extension=False): + def __init__(self, php7_protobuf_c=False): pass - self.use_protobuf_c_extension=use_protobuf_c_extension + self.php7_protobuf_c=php7_protobuf_c self.safename = str(self) def worker_cmdline(self): - if self.use_protobuf_c_extension: - return ['tools/run_tests/performance/run_worker_php.sh -c'] + if self.php7_protobuf_c: + return ['tools/run_tests/performance/run_worker_php.sh --use_protobuf_c_extension'] return ['tools/run_tests/performance/run_worker_php.sh'] def worker_port_offset(self): + if self.php7_protobuf_c: + return 900 return 800 def scenarios(self): - php_extension_mode='php_protobuf_php_extension' - if self.use_protobuf_c_extension: - php_extension_mode='php_protobuf_c_extension' + php7_extension_mode='php7_protobuf_php_extension' + if self.php7_protobuf_c: + php7_extension_mode='php7_protobuf_c_extension' yield _ping_pong_scenario( - '%s_to_cpp_protobuf_sync_unary_ping_pong' % php_extension_mode, + '%s_to_cpp_protobuf_sync_unary_ping_pong' % php7_extension_mode, rpc_type='UNARY', client_type='SYNC_CLIENT', server_type='SYNC_SERVER', server_language='c++', async_server_threads=1) yield _ping_pong_scenario( - '%s_to_cpp_protobuf_sync_streaming_ping_pong' % php_extension_mode, + '%s_to_cpp_protobuf_sync_streaming_ping_pong' % php7_extension_mode, rpc_type='STREAMING', client_type='SYNC_CLIENT', server_type='SYNC_SERVER', server_language='c++', async_server_threads=1) - def __str__(self): - return 'php' + # TODO(ddyihai): Investigate why when async_server_threads=1/CPU usage 340%, the QPS performs + # better than async_server_threads=0/CPU usage 490%. + yield _ping_pong_scenario( + '%s_to_cpp_protobuf_sync_unary_qps_unconstrained' % php7_extension_mode, + rpc_type='UNARY', client_type='SYNC_CLIENT', server_type='ASYNC_SERVER', + server_language='c++', outstanding=1, async_server_threads=1, unconstrained_client='sync') + yield _ping_pong_scenario( + '%s_to_cpp_protobuf_sync_streaming_qps_unconstrained' % php7_extension_mode, + rpc_type='STREAMING', client_type='SYNC_CLIENT', server_type='ASYNC_SERVER', + server_language='c++', outstanding=1, async_server_threads=1, unconstrained_client='sync') + + def __str__(self): + if self.php7_protobuf_c: + return 'php7_protobuf_c' + return 'php7' class JavaLanguage: @@ -1031,8 +1046,8 @@ LANGUAGES = { 'node' : NodeLanguage(), 'node_express': NodeExpressLanguage(), 'ruby' : RubyLanguage(), - 'php_protobuf_php' : PhpLanguage(), - 'php_protobuf_c' : PhpLanguage(use_protobuf_c_extension=True), + 'php7' : Php7Language(), + 'php7_protobuf_c' : Php7Language(php7_protobuf_c=True), 'java' : JavaLanguage(), 'python' : PythonLanguage(), 'go' : GoLanguage(), diff --git a/tools/run_tests/performance/scenario_result_schema.json b/tools/run_tests/performance/scenario_result_schema.json index 2f0fd916d4..169221d18c 100644 --- a/tools/run_tests/performance/scenario_result_schema.json +++ b/tools/run_tests/performance/scenario_result_schema.json @@ -382,6 +382,11 @@ }, { "mode": "NULLABLE", + "name": "core_http2_spurious_writes_begun", + "type": "INTEGER" + }, + { + "mode": "NULLABLE", "name": "core_hpack_recv_indexed", "type": "INTEGER" }, @@ -1174,6 +1179,11 @@ }, { "mode": "NULLABLE", + "name": "core_http2_spurious_writes_begun", + "type": "INTEGER" + }, + { + "mode": "NULLABLE", "name": "core_hpack_recv_indexed", "type": "INTEGER" }, diff --git a/tools/run_tests/python_utils/jobset.py b/tools/run_tests/python_utils/jobset.py index d523095e70..658b814d81 100755 --- a/tools/run_tests/python_utils/jobset.py +++ b/tools/run_tests/python_utils/jobset.py @@ -412,7 +412,7 @@ class Jobset(object): if current_cpu_cost + spec.cpu_cost <= self._maxjobs: if len(self._running) < self._maxjobs_cpu_agnostic: break - self.reap() + self.reap(spec.shortname, spec.cpu_cost) if self.cancelled(): return False job = Job(spec, self._newline_on_success, @@ -424,7 +424,7 @@ class Jobset(object): self.resultset[job.GetSpec().shortname] = [] return True - def reap(self): + def reap(self, waiting_for=None, waiting_for_cost=None): """Collect the dead jobs.""" while self._running: dead = set() @@ -452,8 +452,12 @@ class Jobset(object): sofar = now - self._start_time remaining = sofar / self._completed * (self._remaining + len(self._running)) rstr = 'ETA %.1f sec; %s' % (remaining, rstr) - message('WAITING', '%s%d jobs running, %d complete, %d failed' % ( - rstr, len(self._running), self._completed, self._failures)) + if waiting_for is not None: + wstr = ' next: %s @ %.2f cpu' % (waiting_for, waiting_for_cost) + else: + wstr = '' + message('WAITING', '%s%d jobs running, %d complete, %d failed (load %.2f)%s' % ( + rstr, len(self._running), self._completed, self._failures, self.cpu_cost(), wstr)) if platform_string() == 'windows': time.sleep(0.1) else: diff --git a/tools/run_tests/python_utils/upload_test_results.py b/tools/run_tests/python_utils/upload_test_results.py index 15e827769e..ea97bc0aec 100644 --- a/tools/run_tests/python_utils/upload_test_results.py +++ b/tools/run_tests/python_utils/upload_test_results.py @@ -51,6 +51,19 @@ _RESULTS_SCHEMA = [ ('cpu_measured', 'FLOAT', 'Actual CPU usage of test'), ('return_code', 'INTEGER', 'Exit code of test'), ] +_INTEROP_RESULTS_SCHEMA = [ + ('job_name', 'STRING', 'Name of Jenkins/Kokoro job'), + ('build_id', 'INTEGER', 'Build ID of Jenkins/Kokoro job'), + ('build_url', 'STRING', 'URL of Jenkins/Kokoro job'), + ('test_name', 'STRING', 'Unique test name combining client, server, and test_name'), + ('suite', 'STRING', 'Test suite: cloud_to_cloud, cloud_to_prod, or cloud_to_prod_auth'), + ('client', 'STRING', 'Client language'), + ('server', 'STRING', 'Server host name'), + ('test_case', 'STRING', 'Name of test case'), + ('result', 'STRING', 'Test result: PASSED, TIMEOUT, FAILED, or SKIPPED'), + ('timestamp', 'TIMESTAMP', 'Timestamp of test run'), + ('elapsed_time', 'FLOAT', 'How long test took to run'), +] def _get_build_metadata(test_results): @@ -114,3 +127,41 @@ def upload_results_to_bq(resultset, bq_table, args, platform): else: print('Error uploading result to bigquery, all attempts failed.') sys.exit(1) + + +def upload_interop_results_to_bq(resultset, bq_table, args): + """Upload interop test results to a BQ table. + + Args: + resultset: dictionary generated by jobset.run + bq_table: string name of table to create/upload results to in BQ + args: args in run_interop_tests.py, generated by argparse + """ + bq = big_query_utils.create_big_query() + big_query_utils.create_partitioned_table(bq, _PROJECT_ID, _DATASET_ID, bq_table, _INTEROP_RESULTS_SCHEMA, _DESCRIPTION, + partition_type=_PARTITION_TYPE, expiration_ms= _EXPIRATION_MS) + + for shortname, results in six.iteritems(resultset): + for result in results: + test_results = {} + _get_build_metadata(test_results) + test_results['elapsed_time'] = '%.2f' % result.elapsed_time + test_results['result'] = result.state + test_results['test_name'] = shortname + test_results['suite'] = shortname.split(':')[0] + test_results['client'] = shortname.split(':')[1] + test_results['server'] = shortname.split(':')[2] + test_results['test_case'] = shortname.split(':')[3] + test_results['timestamp'] = time.strftime('%Y-%m-%d %H:%M:%S') + row = big_query_utils.make_row(str(uuid.uuid4()), test_results) + # TODO(jtattermusch): rows are inserted one by one, very inefficient + max_retries = 3 + for attempt in range(max_retries): + if big_query_utils.insert_rows(bq, _PROJECT_ID, _DATASET_ID, bq_table, [row]): + break + else: + if attempt < max_retries - 1: + print('Error uploading result to bigquery, will retry.') + else: + print('Error uploading result to bigquery, all attempts failed.') + sys.exit(1) diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py index 1537641aee..192f8e76eb 100755 --- a/tools/run_tests/run_interop_tests.py +++ b/tools/run_tests/run_interop_tests.py @@ -35,6 +35,11 @@ import traceback import python_utils.dockerjob as dockerjob import python_utils.jobset as jobset import python_utils.report_utils as report_utils +# It's ok to not import because this is only necessary to upload results to BQ. +try: + from python_utils.upload_test_results import upload_interop_results_to_bq +except ImportError as e: + print(e) # Docker doesn't clean up after itself, so we do it on exit. atexit.register(lambda: subprocess.call(['stty', 'echo'])) @@ -956,6 +961,11 @@ argp.add_argument('--internal_ci', const=True, help=('Put reports into subdirectories to improve ' 'presentation of results by Internal CI.')) +argp.add_argument('--bq_result_table', + default='', + type=str, + nargs='?', + help='Upload test results to a specified BQ table.') args = argp.parse_args() servers = set(s for s in itertools.chain.from_iterable(_SERVERS @@ -1205,6 +1215,8 @@ try: num_failures, resultset = jobset.run(jobs, newline_on_success=True, maxjobs=args.jobs, skip_jobs=args.manual_run) + if args.bq_result_table and resultset: + upload_interop_results_to_bq(resultset, args.bq_result_table, args) if num_failures: jobset.message('FAILED', 'Some tests failed', do_newline=True) else: diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 63fd406975..501f973c63 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -285,7 +285,7 @@ class CLanguage(object): continue polling_strategies = (_POLLING_STRATEGIES.get(self.platform, ['all']) if target.get('uses_polling', True) - else ['all']) + else ['none']) if self.args.iomgr_platform == 'uv': polling_strategies = ['all'] for polling_strategy in polling_strategies: @@ -1550,8 +1550,11 @@ class BuildAndRunError(object): def _has_epollexclusive(): + binary = 'bins/%s/check_epollexclusive' % args.config + if not os.path.exists(binary): + return False try: - subprocess.check_call('bins/%s/check_epollexclusive' % args.config) + subprocess.check_call(binary) return True except subprocess.CalledProcessError, e: return False |