diff options
author | Craig Tiller <craig.tiller@gmail.com> | 2015-11-13 13:44:40 +0000 |
---|---|---|
committer | Craig Tiller <craig.tiller@gmail.com> | 2015-11-13 13:44:40 +0000 |
commit | 860f484f43841d14df61cfeda6ca5e637ed99d19 (patch) | |
tree | b2470444ffb18fdb0ae7bb90db52626181f28224 /tools | |
parent | 61ead3e061f685f87e284bf41f7ed1cb44f347b4 (diff) | |
parent | bd50ed8057aa9823a0fd4d0b6d5b1722c199a70d (diff) |
Merge branch 'new_op' into better-profile
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/http2_interop/http2_interop.test | bin | 0 -> 6210464 bytes | |||
-rw-r--r-- | tools/http2_interop/http2interop.go | 137 | ||||
-rw-r--r-- | tools/http2_interop/http2interop_test.go | 95 | ||||
-rwxr-xr-x | tools/jenkins/build_docker_and_run_tests.sh | 1 | ||||
-rwxr-xr-x | tools/jenkins/build_interop_image.sh | 1 | ||||
-rw-r--r-- | tools/jenkins/grpc_interop_http2/Dockerfile | 36 | ||||
-rwxr-xr-x | tools/jenkins/grpc_interop_http2/build_interop.sh | 42 | ||||
-rwxr-xr-x | tools/run_tests/dockerjob.py | 2 | ||||
-rwxr-xr-x | tools/run_tests/jobset.py | 71 | ||||
-rwxr-xr-x | tools/run_tests/post_tests_c.sh | 12 | ||||
-rw-r--r-- | tools/run_tests/report_utils.py | 215 | ||||
-rwxr-xr-x | tools/run_tests/run_interop_tests.py | 191 | ||||
-rwxr-xr-x | tools/run_tests/run_tests.py | 75 | ||||
-rw-r--r-- | tools/run_tests/sources_and_headers.json | 797 | ||||
-rw-r--r-- | tools/run_tests/tests.json | 830 |
15 files changed, 2230 insertions, 275 deletions
diff --git a/tools/http2_interop/http2_interop.test b/tools/http2_interop/http2_interop.test Binary files differnew file mode 100755 index 0000000000..0700763dc3 --- /dev/null +++ b/tools/http2_interop/http2_interop.test diff --git a/tools/http2_interop/http2interop.go b/tools/http2_interop/http2interop.go index f1bca7fe13..8585a044e5 100644 --- a/tools/http2_interop/http2interop.go +++ b/tools/http2_interop/http2interop.go @@ -2,15 +2,38 @@ package http2interop import ( "crypto/tls" + "crypto/x509" "fmt" "io" - "log" + "net" + "testing" + "time" ) const ( Preface = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" ) +var ( + defaultTimeout = 1 * time.Second +) + +type HTTP2InteropCtx struct { + // Inputs + ServerHost string + ServerPort int + UseTLS bool + UseTestCa bool + ServerHostnameOverride string + + T *testing.T + + // Derived + serverSpec string + authority string + rootCAs *x509.CertPool +} + func parseFrame(r io.Reader) (Frame, error) { fh := FrameHeader{} if err := fh.Parse(r); err != nil { @@ -49,22 +72,8 @@ func streamFrame(w io.Writer, f Frame) error { return nil } -func getHttp2Conn(addr string) (*tls.Conn, error) { - config := &tls.Config{ - InsecureSkipVerify: true, - NextProtos: []string{"h2"}, - } - - conn, err := tls.Dial("tcp", addr, config) - if err != nil { - return nil, err - } - - return conn, nil -} - -func testClientShortSettings(addr string, length int) error { - c, err := getHttp2Conn(addr) +func testClientShortSettings(ctx *HTTP2InteropCtx, length int) error { + c, err := connect(ctx) if err != nil { return err } @@ -82,22 +91,22 @@ func testClientShortSettings(addr string, length int) error { Data: make([]byte, length), } if err := streamFrame(c, sf); err != nil { + ctx.T.Log("Unable to stream frame", sf) return err } for { - frame, err := parseFrame(c) - if err != nil { + if _, err := parseFrame(c); err != nil { + ctx.T.Log("Unable to parse frame") return err } - log.Println(frame) } return nil } -func testClientPrefaceWithStreamId(addr string) error { - c, err := getHttp2Conn(addr) +func testClientPrefaceWithStreamId(ctx *HTTP2InteropCtx) error { + c, err := connect(ctx) if err != nil { return err } @@ -119,18 +128,16 @@ func testClientPrefaceWithStreamId(addr string) error { } for { - frame, err := parseFrame(c) - if err != nil { + if _, err := parseFrame(c); err != nil { return err } - log.Println(frame) } return nil } -func testUnknownFrameType(addr string) error { - c, err := getHttp2Conn(addr) +func testUnknownFrameType(ctx *HTTP2InteropCtx) error { + c, err := connect(ctx) if err != nil { return err } @@ -143,6 +150,7 @@ func testUnknownFrameType(addr string) error { // Send some settings, which are part of the client preface sf := &SettingsFrame{} if err := streamFrame(c, sf); err != nil { + ctx.T.Log("Unable to stream frame", sf) return err } @@ -154,6 +162,7 @@ func testUnknownFrameType(addr string) error { }, } if err := streamFrame(c, fh); err != nil { + ctx.T.Log("Unable to stream frame", fh) return err } } @@ -162,12 +171,14 @@ func testUnknownFrameType(addr string) error { Data: []byte("01234567"), } if err := streamFrame(c, pf); err != nil { + ctx.T.Log("Unable to stream frame", sf) return err } for { frame, err := parseFrame(c) if err != nil { + ctx.T.Log("Unable to parse frame") return err } if npf, ok := frame.(*PingFrame); !ok { @@ -183,8 +194,8 @@ func testUnknownFrameType(addr string) error { return nil } -func testShortPreface(addr string, prefacePrefix string) error { - c, err := getHttp2Conn(addr) +func testShortPreface(ctx *HTTP2InteropCtx, prefacePrefix string) error { + c, err := connect(ctx) if err != nil { return err } @@ -201,17 +212,15 @@ func testShortPreface(addr string, prefacePrefix string) error { return err } -func testTLSMaxVersion(addr string, version uint16) error { - config := &tls.Config{ - InsecureSkipVerify: true, - NextProtos: []string{"h2"}, - MaxVersion: version, - } - conn, err := tls.Dial("tcp", addr, config) +func testTLSMaxVersion(ctx *HTTP2InteropCtx, version uint16) error { + config := buildTlsConfig(ctx) + config.MaxVersion = version + conn, err := connectWithTls(ctx, config) if err != nil { return err } defer conn.Close() + conn.SetDeadline(time.Now().Add(defaultTimeout)) buf := make([]byte, 256) if n, err := conn.Read(buf); err != nil { @@ -223,16 +232,15 @@ func testTLSMaxVersion(addr string, version uint16) error { return nil } -func testTLSApplicationProtocol(addr string) error { - config := &tls.Config{ - InsecureSkipVerify: true, - NextProtos: []string{"h2c"}, - } - conn, err := tls.Dial("tcp", addr, config) +func testTLSApplicationProtocol(ctx *HTTP2InteropCtx) error { + config := buildTlsConfig(ctx) + config.NextProtos = []string{"h2c"} + conn, err := connectWithTls(ctx, config) if err != nil { return err } defer conn.Close() + conn.SetDeadline(time.Now().Add(defaultTimeout)) buf := make([]byte, 256) if n, err := conn.Read(buf); err != nil { @@ -243,3 +251,48 @@ func testTLSApplicationProtocol(addr string) error { } return nil } + +func connect(ctx *HTTP2InteropCtx) (net.Conn, error) { + var conn net.Conn + var err error + if !ctx.UseTLS { + conn, err = connectWithoutTls(ctx) + } else { + config := buildTlsConfig(ctx) + conn, err = connectWithTls(ctx, config) + } + if err != nil { + return nil, err + } + conn.SetDeadline(time.Now().Add(defaultTimeout)) + + return conn, nil +} + +func buildTlsConfig(ctx *HTTP2InteropCtx) *tls.Config { + return &tls.Config{ + RootCAs: ctx.rootCAs, + NextProtos: []string{"h2"}, + ServerName: ctx.authority, + MinVersion: tls.VersionTLS12, + // TODO(carl-mastrangelo): remove this once all test certificates have been updated. + InsecureSkipVerify: true, + } +} + +func connectWithoutTls(ctx *HTTP2InteropCtx) (net.Conn, error) { + conn, err := net.DialTimeout("tcp", ctx.serverSpec, defaultTimeout) + if err != nil { + return nil, err + } + return conn, nil +} + +func connectWithTls(ctx *HTTP2InteropCtx, config *tls.Config) (*tls.Conn, error) { + conn, err := connectWithoutTls(ctx) + if err != nil { + return nil, err + } + + return tls.Client(conn, config), nil +} diff --git a/tools/http2_interop/http2interop_test.go b/tools/http2_interop/http2interop_test.go index 3b687c035e..dc2960048f 100644 --- a/tools/http2_interop/http2interop_test.go +++ b/tools/http2_interop/http2interop_test.go @@ -2,46 +2,117 @@ package http2interop import ( "crypto/tls" + "crypto/x509" + "strings" "flag" + "fmt" "io" + "io/ioutil" "os" + "strconv" "testing" ) var ( - serverSpec = flag.String("spec", ":50051", "The server spec to test") + serverHost = flag.String("server_host", "", "The host to test") + serverPort = flag.Int("server_port", 443, "The port to test") + useTls = flag.Bool("use_tls", true, "Should TLS tests be run") + // TODO: implement + testCase = flag.String("test_case", "", "What test cases to run") + + // The rest of these are unused, but present to fulfill the client interface + serverHostOverride = flag.String("server_host_override", "", "Unused") + useTestCa = flag.Bool("use_test_ca", false, "Unused") + defaultServiceAccount = flag.String("default_service_account", "", "Unused") + oauthScope = flag.String("oauth_scope", "", "Unused") + serviceAccountKeyFile = flag.String("service_account_key_file", "", "Unused") ) +func InteropCtx(t *testing.T) *HTTP2InteropCtx { + ctx := &HTTP2InteropCtx{ + ServerHost: *serverHost, + ServerPort: *serverPort, + ServerHostnameOverride: *serverHostOverride, + UseTLS: *useTls, + UseTestCa: *useTestCa, + T: t, + } + + ctx.serverSpec = ctx.ServerHost + if ctx.ServerPort != -1 { + ctx.serverSpec += ":" + strconv.Itoa(ctx.ServerPort) + } + if ctx.ServerHostnameOverride == "" { + ctx.authority = ctx.ServerHost + } else { + ctx.authority = ctx.ServerHostnameOverride + } + + if ctx.UseTestCa { + // It would be odd if useTestCa was true, but not useTls. meh + certData, err := ioutil.ReadFile("src/core/tsi/test_creds/ca.pem") + if err != nil { + t.Fatal(err) + } + + ctx.rootCAs = x509.NewCertPool() + if !ctx.rootCAs.AppendCertsFromPEM(certData) { + t.Fatal(fmt.Errorf("Unable to parse pem data")) + } + } + + return ctx +} + +func (ctx *HTTP2InteropCtx) Close() error { + // currently a noop + return nil +} + func TestShortPreface(t *testing.T) { + ctx := InteropCtx(t) for i := 0; i < len(Preface)-1; i++ { - if err := testShortPreface(*serverSpec, Preface[:i]+"X"); err != io.EOF { + if err := testShortPreface(ctx, Preface[:i]+"X"); err != io.EOF { t.Error("Expected an EOF but was", err) } } } func TestUnknownFrameType(t *testing.T) { - if err := testUnknownFrameType(*serverSpec); err != nil { + ctx := InteropCtx(t) + if err := testUnknownFrameType(ctx); err != nil { t.Fatal(err) } } func TestTLSApplicationProtocol(t *testing.T) { - if err := testTLSApplicationProtocol(*serverSpec); err != io.EOF { - t.Fatal("Expected an EOF but was", err) - } + ctx := InteropCtx(t) + err := testTLSApplicationProtocol(ctx); + matchError(t, err, "EOF") } func TestTLSMaxVersion(t *testing.T) { - if err := testTLSMaxVersion(*serverSpec, tls.VersionTLS11); err != io.EOF { - t.Fatal("Expected an EOF but was", err) - } + ctx := InteropCtx(t) + err := testTLSMaxVersion(ctx, tls.VersionTLS11); + matchError(t, err, "EOF", "server selected unsupported protocol") } func TestClientPrefaceWithStreamId(t *testing.T) { - if err := testClientPrefaceWithStreamId(*serverSpec); err != io.EOF { - t.Fatal("Expected an EOF but was", err) - } + ctx := InteropCtx(t) + err := testClientPrefaceWithStreamId(ctx) + matchError(t, err, "EOF") +} + +func matchError(t *testing.T, err error, matches ... string) { + if err == nil { + t.Fatal("Expected an error") + } + for _, s := range matches { + if strings.Contains(err.Error(), s) { + return + } + } + t.Fatalf("Error %v not in %+v", err, matches) } func TestMain(m *testing.M) { diff --git a/tools/jenkins/build_docker_and_run_tests.sh b/tools/jenkins/build_docker_and_run_tests.sh index 5bb2b6b188..b44c380533 100755 --- a/tools/jenkins/build_docker_and_run_tests.sh +++ b/tools/jenkins/build_docker_and_run_tests.sh @@ -63,6 +63,7 @@ docker run \ -e "arch=$arch" \ -e CCACHE_DIR=/tmp/ccache \ -e XDG_CACHE_HOME=/tmp/xdg-cache-home \ + -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \ -i $TTY_FLAG \ -v "$git_root:/var/local/jenkins/grpc" \ -v /tmp/ccache:/tmp/ccache \ diff --git a/tools/jenkins/build_interop_image.sh b/tools/jenkins/build_interop_image.sh index 5dfa242513..d0c5470ed6 100755 --- a/tools/jenkins/build_interop_image.sh +++ b/tools/jenkins/build_interop_image.sh @@ -84,6 +84,7 @@ CONTAINER_NAME="build_${BASE_NAME}_$(uuidgen)" # Prepare image for interop tests, commit it on success. (docker run \ -e CCACHE_DIR=/tmp/ccache \ + -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \ -i $TTY_FLAG \ $MOUNT_ARGS \ $BUILD_INTEROP_DOCKER_EXTRA_ARGS \ diff --git a/tools/jenkins/grpc_interop_http2/Dockerfile b/tools/jenkins/grpc_interop_http2/Dockerfile new file mode 100644 index 0000000000..bb60f09f24 --- /dev/null +++ b/tools/jenkins/grpc_interop_http2/Dockerfile @@ -0,0 +1,36 @@ +# Copyright 2015, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +FROM golang:1.4 + +# Using login shell removes Go from path, so we add it. +RUN ln -s /usr/src/go/bin/go /usr/local/bin + +# Define the default command. +CMD ["bash"] diff --git a/tools/jenkins/grpc_interop_http2/build_interop.sh b/tools/jenkins/grpc_interop_http2/build_interop.sh new file mode 100755 index 0000000000..46ddaf929a --- /dev/null +++ b/tools/jenkins/grpc_interop_http2/build_interop.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Copyright 2015, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Builds http2 interop client in a base image. +set -e + +mkdir -p /var/local/git +git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc + +# copy service account keys if available +cp -r /var/local/jenkins/service_account $HOME || true + +# compile the tests +(cd /var/local/git/grpc/tools/http2_interop && go test -c) + diff --git a/tools/run_tests/dockerjob.py b/tools/run_tests/dockerjob.py index 1d67fe3033..7d64222ba0 100755 --- a/tools/run_tests/dockerjob.py +++ b/tools/run_tests/dockerjob.py @@ -101,7 +101,7 @@ class DockerJob: def __init__(self, spec): self._spec = spec - self._job = jobset.Job(spec, bin_hash=None, newline_on_success=True, travis=True, add_env={}, xml_report=None) + self._job = jobset.Job(spec, bin_hash=None, newline_on_success=True, travis=True, add_env={}) self._container_name = spec.container_name def mapped_port(self, port): diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py index a8ff9f613f..88d95027e2 100755 --- a/tools/run_tests/jobset.py +++ b/tools/run_tests/jobset.py @@ -34,15 +34,14 @@ import multiprocessing import os import platform import signal -import string import subprocess import sys import tempfile import time -import xml.etree.cElementTree as ET _DEFAULT_MAX_JOBS = 16 * multiprocessing.cpu_count() +_MAX_RESULT_SIZE = 8192 # setup a signal handler so that signal.pause registers 'something' @@ -130,14 +129,6 @@ def which(filename): raise Exception('%s not found' % filename) -def _filter_stdout(stdout): - """Filters out nonprintable and XML-illegal characters from stdout.""" - # keep whitespaces but remove formfeed and vertical tab characters - # that make XML report unparseable. - return filter(lambda x: x in string.printable and x != '\f' and x != '\v', - stdout.decode(errors='ignore')) - - class JobSpec(object): """Specifies what to run for a job.""" @@ -190,14 +181,12 @@ class JobResult(object): class Job(object): """Manages one job.""" - def __init__(self, spec, bin_hash, newline_on_success, travis, add_env, xml_report): + def __init__(self, spec, bin_hash, newline_on_success, travis, add_env): self._spec = spec self._bin_hash = bin_hash self._newline_on_success = newline_on_success self._travis = travis self._add_env = add_env.copy() - self._xml_test = ET.SubElement(xml_report, 'testcase', - name=self._spec.shortname) if xml_report is not None else None self._retries = 0 self._timeout_retries = 0 self._suppress_failure_message = False @@ -214,30 +203,33 @@ class Job(object): env.update(self._spec.environ) env.update(self._add_env) self._start = time.time() - self._process = subprocess.Popen(args=self._spec.cmdline, - stderr=subprocess.STDOUT, - stdout=self._tempfile, - cwd=self._spec.cwd, - shell=self._spec.shell, - env=env) + try_start = lambda: subprocess.Popen(args=self._spec.cmdline, + stderr=subprocess.STDOUT, + stdout=self._tempfile, + cwd=self._spec.cwd, + shell=self._spec.shell, + env=env) + delay = 0.3 + for i in range(0, 4): + try: + self._process = try_start() + break + except OSError: + message('WARNING', 'Failed to start %s, retrying in %f seconds' % (self._spec.shortname, delay)) + time.sleep(delay) + delay *= 2 + else: + self._process = try_start() self._state = _RUNNING def state(self, update_cache): """Poll current state of the job. Prints messages at completion.""" + self._tempfile.seek(0) + stdout = self._tempfile.read() + self.result.message = stdout[-_MAX_RESULT_SIZE:] if self._state == _RUNNING and self._process.poll() is not None: elapsed = time.time() - self._start - self._tempfile.seek(0) - stdout = self._tempfile.read() - filtered_stdout = _filter_stdout(stdout) - # TODO: looks like jenkins master is slow because parsing the junit results XMLs is not - # implemented efficiently. This is an experiment to workaround the issue by making sure - # results.xml file is small enough. - filtered_stdout = filtered_stdout[-128:] - self.result.message = filtered_stdout self.result.elapsed_time = elapsed - if self._xml_test is not None: - self._xml_test.set('time', str(elapsed)) - ET.SubElement(self._xml_test, 'system-out').text = filtered_stdout if self._process.returncode != 0: if self._retries < self._spec.flake_retries: message('FLAKE', '%s [ret=%d, pid=%d]' % ( @@ -256,8 +248,6 @@ class Job(object): self.result.state = 'FAILED' self.result.num_failures += 1 self.result.returncode = self._process.returncode - if self._xml_test is not None: - ET.SubElement(self._xml_test, 'failure', message='Failure') else: self._state = _SUCCESS message('PASSED', '%s [time=%.1fsec; retries=%d;%d]' % ( @@ -267,10 +257,6 @@ class Job(object): if self._bin_hash: update_cache.finished(self._spec.identity(), self._bin_hash) elif self._state == _RUNNING and time.time() - self._start > self._spec.timeout_seconds: - self._tempfile.seek(0) - stdout = self._tempfile.read() - filtered_stdout = _filter_stdout(stdout) - self.result.message = filtered_stdout if self._timeout_retries < self._spec.timeout_retries: message('TIMEOUT_FLAKE', self._spec.shortname, stdout, do_newline=True) self._timeout_retries += 1 @@ -285,9 +271,6 @@ class Job(object): self.kill() self.result.state = 'TIMEOUT' self.result.num_failures += 1 - if self._xml_test is not None: - ET.SubElement(self._xml_test, 'system-out').text = filtered_stdout - ET.SubElement(self._xml_test, 'error', message='Timeout') return self._state def kill(self): @@ -305,7 +288,7 @@ class Jobset(object): """Manages one run of jobs.""" def __init__(self, check_cancelled, maxjobs, newline_on_success, travis, - stop_on_failure, add_env, cache, xml_report): + stop_on_failure, add_env, cache): self._running = set() self._check_cancelled = check_cancelled self._cancelled = False @@ -317,7 +300,6 @@ class Jobset(object): self._cache = cache self._stop_on_failure = stop_on_failure self._hashes = {} - self._xml_report = xml_report self._add_env = add_env self.resultset = {} @@ -349,8 +331,7 @@ class Jobset(object): bin_hash, self._newline_on_success, self._travis, - self._add_env, - self._xml_report) + self._add_env) self._running.add(job) self.resultset[job.GetSpec().shortname] = [] return True @@ -424,13 +405,11 @@ def run(cmdlines, infinite_runs=False, stop_on_failure=False, cache=None, - xml_report=None, add_env={}): js = Jobset(check_cancelled, maxjobs if maxjobs is not None else _DEFAULT_MAX_JOBS, newline_on_success, travis, stop_on_failure, add_env, - cache if cache is not None else NoCache(), - xml_report) + cache if cache is not None else NoCache()) for cmdline in cmdlines: if not js.start(cmdline): break diff --git a/tools/run_tests/post_tests_c.sh b/tools/run_tests/post_tests_c.sh index f2f3ce9432..4409526dab 100755 --- a/tools/run_tests/post_tests_c.sh +++ b/tools/run_tests/post_tests_c.sh @@ -34,8 +34,12 @@ if [ "$CONFIG" != "gcov" ] ; then exit ; fi root=$(readlink -f $(dirname $0)/../..) out=$root/reports/c_cxx_coverage -tmp=$(mktemp) +tmp1=$(mktemp) +tmp2=$(mktemp) cd $root -lcov --capture --directory . --output-file $tmp -genhtml $tmp --output-directory $out -rm $tmp +lcov --capture --directory . --output-file $tmp1 +lcov --extract $tmp1 "$root/src/*" "$root/include/*" --output-file $tmp2 +genhtml $tmp2 --output-directory $out +rm $tmp2 +rm $tmp1 + diff --git a/tools/run_tests/report_utils.py b/tools/run_tests/report_utils.py new file mode 100644 index 0000000000..bb9eca4254 --- /dev/null +++ b/tools/run_tests/report_utils.py @@ -0,0 +1,215 @@ +# Copyright 2015, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Generate XML and HTML test reports.""" + +import os +import string +import xml.etree.cElementTree as ET + + +def _filter_msg(msg, output_format): + """Filters out nonprintable and illegal characters from the message.""" + if output_format in ['XML', 'HTML']: + # keep whitespaces but remove formfeed and vertical tab characters + # that make XML report unparseable. + filtered_msg = filter( + lambda x: x in string.printable and x != '\f' and x != '\v', + msg.decode(errors='ignore')) + if output_format == 'HTML': + filtered_msg = filtered_msg.replace('"', '"') + return filtered_msg + else: + return msg + + +def render_xml_report(resultset, xml_report): + """Generate JUnit-like XML report.""" + root = ET.Element('testsuites') + testsuite = ET.SubElement(root, 'testsuite', id='1', package='grpc', + name='tests') + for shortname, results in resultset.iteritems(): + for result in results: + xml_test = ET.SubElement(testsuite, 'testcase', name=shortname) + if result.elapsed_time: + xml_test.set('time', str(result.elapsed_time)) + ET.SubElement(xml_test, 'system-out').text = _filter_msg(result.message, + 'XML') + if result.state == 'FAILED': + ET.SubElement(xml_test, 'failure', message='Failure') + elif result.state == 'TIMEOUT': + ET.SubElement(xml_test, 'error', message='Timeout') + tree = ET.ElementTree(root) + tree.write(xml_report, encoding='UTF-8') + + +# TODO(adelez): Use mako template. +def fill_one_test_result(shortname, resultset, html_str): + if shortname in resultset: + # Because interop tests does not have runs_per_test flag, each test is run + # once. So there should only be one element for each result. + result = resultset[shortname][0] + if result.state == 'PASSED': + html_str = '%s<td bgcolor=\"green\">PASS</td>\n' % html_str + else: + tooltip = '' + if result.returncode > 0 or result.message: + if result.returncode > 0: + tooltip = 'returncode: %d ' % result.returncode + if result.message: + escaped_msg = _filter_msg(result.message, 'HTML') + tooltip = '%smessage: %s' % (tooltip, escaped_msg) + if result.state == 'FAILED': + html_str = '%s<td bgcolor=\"red\">' % html_str + if tooltip: + html_str = ('%s<a href=\"#\" data-toggle=\"tooltip\" ' + 'data-placement=\"auto\" title=\"%s\">FAIL</a></td>\n' % + (html_str, tooltip)) + else: + html_str = '%sFAIL</td>\n' % html_str + elif result.state == 'TIMEOUT': + html_str = '%s<td bgcolor=\"yellow\">' % html_str + if tooltip: + html_str = ('%s<a href=\"#\" data-toggle=\"tooltip\" ' + 'data-placement=\"auto\" title=\"%s\">TIMEOUT</a></td>\n' + % (html_str, tooltip)) + else: + html_str = '%sTIMEOUT</td>\n' % html_str + else: + html_str = '%s<td bgcolor=\"magenta\">Not implemented</td>\n' % html_str + + return html_str + + +def render_html_report(client_langs, server_langs, test_cases, auth_test_cases, + http2_cases, resultset, num_failures, cloud_to_prod, + http2_interop): + """Generate html report.""" + sorted_test_cases = sorted(test_cases) + sorted_auth_test_cases = sorted(auth_test_cases) + sorted_http2_cases = sorted(http2_cases) + sorted_client_langs = sorted(client_langs) + sorted_server_langs = sorted(server_langs) + html_str = ('<!DOCTYPE html>\n' + '<html lang=\"en\">\n' + '<head><title>Interop Test Result</title></head>\n' + '<body>\n') + if num_failures > 1: + html_str = ( + '%s<p><h2><font color=\"red\">%d tests failed!</font></h2></p>\n' % + (html_str, num_failures)) + elif num_failures: + html_str = ( + '%s<p><h2><font color=\"red\">%d test failed!</font></h2></p>\n' % + (html_str, num_failures)) + else: + html_str = ( + '%s<p><h2><font color=\"green\">All tests passed!</font></h2></p>\n' % + html_str) + if cloud_to_prod: + # Each column header is the client language. + html_str = ('%s<h2>Cloud to Prod</h2>\n' + '<table style=\"width:100%%\" border=\"1\">\n' + '<tr bgcolor=\"#00BFFF\">\n' + '<th>Client languages ►</th>\n') % html_str + for client_lang in sorted_client_langs: + html_str = '%s<th>%s\n' % (html_str, client_lang) + html_str = '%s</tr>\n' % html_str + for test_case in sorted_test_cases + sorted_auth_test_cases: + html_str = '%s<tr><td><b>%s</b></td>\n' % (html_str, test_case) + for client_lang in sorted_client_langs: + if not test_case in sorted_auth_test_cases: + shortname = 'cloud_to_prod:%s:%s' % (client_lang, test_case) + else: + shortname = 'cloud_to_prod_auth:%s:%s' % (client_lang, test_case) + html_str = fill_one_test_result(shortname, resultset, html_str) + html_str = '%s</tr>\n' % html_str + html_str = '%s</table>\n' % html_str + if http2_interop: + # Each column header is the server language. + html_str = ('%s<h2>HTTP/2 Interop</h2>\n' + '<table style=\"width:100%%\" border=\"1\">\n' + '<tr bgcolor=\"#00BFFF\">\n' + '<th>Servers ►<br/>' + 'Test Cases ▼</th>\n') % html_str + for server_lang in sorted_server_langs: + html_str = '%s<th>%s\n' % (html_str, server_lang) + if cloud_to_prod: + html_str = '%s<th>%s\n' % (html_str, "prod") + html_str = '%s</tr>\n' % html_str + for test_case in sorted_http2_cases: + html_str = '%s<tr><td><b>%s</b></td>\n' % (html_str, test_case) + # Fill up the cells with test result. + for server_lang in sorted_server_langs: + shortname = 'cloud_to_cloud:%s:%s_server:%s' % ( + "http2", server_lang, test_case) + html_str = fill_one_test_result(shortname, resultset, html_str) + if cloud_to_prod: + shortname = 'cloud_to_prod:%s:%s' % ("http2", test_case) + html_str = fill_one_test_result(shortname, resultset, html_str) + html_str = '%s</tr>\n' % html_str + html_str = '%s</table>\n' % html_str + if server_langs: + for test_case in sorted_test_cases: + # Each column header is the client language. + html_str = ('%s<h2>%s</h2>\n' + '<table style=\"width:100%%\" border=\"1\">\n' + '<tr bgcolor=\"#00BFFF\">\n' + '<th>Client languages ►<br/>' + 'Server languages ▼</th>\n') % (html_str, test_case) + for client_lang in sorted_client_langs: + html_str = '%s<th>%s\n' % (html_str, client_lang) + html_str = '%s</tr>\n' % html_str + # Each row head is the server language. + for server_lang in sorted_server_langs: + html_str = '%s<tr><td><b>%s</b></td>\n' % (html_str, server_lang) + # Fill up the cells with test result. + for client_lang in sorted_client_langs: + shortname = 'cloud_to_cloud:%s:%s_server:%s' % ( + client_lang, server_lang, test_case) + html_str = fill_one_test_result(shortname, resultset, html_str) + html_str = '%s</tr>\n' % html_str + html_str = '%s</table>\n' % html_str + + html_str = ('%s\n' + '<script>\n' + '$(document).ready(function(){' + '$(\'[data-toggle=\"tooltip\"]\').tooltip();\n' + '});\n' + '</script>\n' + '</body>\n' + '</html>') % html_str + + # Write to reports/index.html as set up in Jenkins plugin. + html_report_dir = 'reports' + if not os.path.exists(html_report_dir): + os.mkdir(html_report_dir) + html_file_path = os.path.join(html_report_dir, 'index.html') + with open(html_file_path, 'w') as f: + f.write(html_str) diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py index 729f962bb1..1686942b0a 100755 --- a/tools/run_tests/run_interop_tests.py +++ b/tools/run_tests/run_interop_tests.py @@ -33,10 +33,10 @@ import argparse import dockerjob import itertools -import xml.etree.cElementTree as ET import jobset import multiprocessing import os +import report_utils import subprocess import sys import tempfile @@ -159,6 +159,31 @@ class GoLanguage: return 'go' +class Http2Client: + """Represents the HTTP/2 Interop Test + + This pretends to be a language in order to be built and run, but really it + isn't. + """ + def __init__(self): + self.client_cwd = None + self.safename = str(self) + + def client_args(self): + return ['tools/http2_interop/http2_interop.test'] + + def cloud_to_prod_env(self): + return {} + + def global_env(self): + return {} + + def unimplemented_test_cases(self): + return _TEST_CASES + + def __str__(self): + return 'http2' + class NodeLanguage: def __init__(self): @@ -281,6 +306,7 @@ _TEST_CASES = ['large_unary', 'empty_unary', 'ping_pong', _AUTH_TEST_CASES = ['compute_engine_creds', 'jwt_token_creds', 'oauth2_auth_token', 'per_rpc_creds'] +_HTTP2_TEST_CASES = ["tls"] def docker_run_cmdline(cmdline, image, docker_args=[], cwd=None, environ=None): """Wraps given cmdline array to create 'docker run' cmdline from it.""" @@ -439,6 +465,7 @@ def server_jobspec(language, docker_image): environ=environ, docker_args=['-p', str(_DEFAULT_SERVER_PORT), '--name', container_name]) + server_job = jobset.JobSpec( cmdline=docker_cmdline, environ=environ, @@ -471,126 +498,6 @@ def build_interop_image_jobspec(language, tag=None): return build_job -# TODO(adelez): Use mako template. -def fill_one_test_result(shortname, resultset, html_str): - if shortname in resultset: - # Because interop tests does not have runs_per_test flag, each test is run - # once. So there should only be one element for each result. - result = resultset[shortname][0] - if result.state == 'PASSED': - html_str = '%s<td bgcolor=\"green\">PASS</td>\n' % html_str - else: - tooltip = '' - if result.returncode > 0 or result.message: - if result.returncode > 0: - tooltip = 'returncode: %d ' % result.returncode - if result.message: - escaped_msg = result.message.replace('"', '"') - tooltip = '%smessage: %s' % (tooltip, escaped_msg) - if result.state == 'FAILED': - html_str = '%s<td bgcolor=\"red\">' % html_str - if tooltip: - html_str = ('%s<a href=\"#\" data-toggle=\"tooltip\" ' - 'data-placement=\"auto\" title=\"%s\">FAIL</a></td>\n' % - (html_str, tooltip)) - else: - html_str = '%sFAIL</td>\n' % html_str - elif result.state == 'TIMEOUT': - html_str = '%s<td bgcolor=\"yellow\">' % html_str - if tooltip: - html_str = ('%s<a href=\"#\" data-toggle=\"tooltip\" ' - 'data-placement=\"auto\" title=\"%s\">TIMEOUT</a></td>\n' - % (html_str, tooltip)) - else: - html_str = '%sTIMEOUT</td>\n' % html_str - else: - html_str = '%s<td bgcolor=\"magenta\">Not implemented</td>\n' % html_str - - return html_str - - -def render_html_report(client_langs, server_langs, resultset, - num_failures): - """Generate html report.""" - sorted_test_cases = sorted(_TEST_CASES) - sorted_auth_test_cases = sorted(_AUTH_TEST_CASES) - sorted_client_langs = sorted(client_langs) - sorted_server_langs = sorted(server_langs) - html_str = ('<!DOCTYPE html>\n' - '<html lang=\"en\">\n' - '<head><title>Interop Test Result</title></head>\n' - '<body>\n') - if num_failures > 1: - html_str = ( - '%s<p><h2><font color=\"red\">%d tests failed!</font></h2></p>\n' % - (html_str, num_failures)) - elif num_failures: - html_str = ( - '%s<p><h2><font color=\"red\">%d test failed!</font></h2></p>\n' % - (html_str, num_failures)) - else: - html_str = ( - '%s<p><h2><font color=\"green\">All tests passed!</font></h2></p>\n' % - html_str) - if args.cloud_to_prod_auth or args.cloud_to_prod: - # Each column header is the client language. - html_str = ('%s<h2>Cloud to Prod</h2>\n' - '<table style=\"width:100%%\" border=\"1\">\n' - '<tr bgcolor=\"#00BFFF\">\n' - '<th>Client languages ►</th>\n') % html_str - for client_lang in sorted_client_langs: - html_str = '%s<th>%s\n' % (html_str, client_lang) - html_str = '%s</tr>\n' % html_str - for test_case in sorted_test_cases + sorted_auth_test_cases: - html_str = '%s<tr><td><b>%s</b></td>\n' % (html_str, test_case) - for client_lang in sorted_client_langs: - if not test_case in sorted_auth_test_cases: - shortname = 'cloud_to_prod:%s:%s' % (client_lang, test_case) - else: - shortname = 'cloud_to_prod_auth:%s:%s' % (client_lang, test_case) - html_str = fill_one_test_result(shortname, resultset, html_str) - html_str = '%s</tr>\n' % html_str - html_str = '%s</table>\n' % html_str - if servers: - for test_case in sorted_test_cases: - # Each column header is the client language. - html_str = ('%s<h2>%s</h2>\n' - '<table style=\"width:100%%\" border=\"1\">\n' - '<tr bgcolor=\"#00BFFF\">\n' - '<th>Client languages ►<br/>' - 'Server languages ▼</th>\n') % (html_str, test_case) - for client_lang in sorted_client_langs: - html_str = '%s<th>%s\n' % (html_str, client_lang) - html_str = '%s</tr>\n' % html_str - # Each row head is the server language. - for server_lang in sorted_server_langs: - html_str = '%s<tr><td><b>%s</b></td>\n' % (html_str, server_lang) - # Fill up the cells with test result. - for client_lang in sorted_client_langs: - shortname = 'cloud_to_cloud:%s:%s_server:%s' % ( - client_lang, server_lang, test_case) - html_str = fill_one_test_result(shortname, resultset, html_str) - html_str = '%s</tr>\n' % html_str - html_str = '%s</table>\n' % html_str - - html_str = ('%s\n' - '<script>\n' - '$(document).ready(function(){' - '$(\'[data-toggle=\"tooltip\"]\').tooltip();\n' - '});\n' - '</script>\n' - '</body>\n' - '</html>') % html_str - - # Write to reports/index.html as set up in Jenkins plugin. - html_report_dir = 'reports' - if not os.path.exists(html_report_dir): - os.mkdir(html_report_dir) - html_file_path = os.path.join(html_report_dir, 'index.html') - with open(html_file_path, 'w') as f: - f.write(html_str) - - argp = argparse.ArgumentParser(description='Run interop tests.') argp.add_argument('-l', '--language', choices=['all'] + sorted(_LANGUAGES), @@ -636,6 +543,12 @@ argp.add_argument('--allow_flakes', action='store_const', const=True, help='Allow flaky tests to show as passing (re-runs failed tests up to five times)') +argp.add_argument('--http2_interop', + default=False, + action='store_const', + const=True, + help='Enable HTTP/2 interop tests') + args = argp.parse_args() servers = set(s for s in itertools.chain.from_iterable(_SERVERS @@ -659,12 +572,16 @@ languages = set(_LANGUAGES[l] for l in itertools.chain.from_iterable( _LANGUAGES.iterkeys() if x == 'all' else [x] for x in args.language)) + +http2Interop = Http2Client() if args.http2_interop else None docker_images={} if args.use_docker: # languages for which to build docker images languages_to_build = set(_LANGUAGES[k] for k in set([str(l) for l in languages] + [s for s in servers])) + if args.http2_interop: + languages_to_build.add(http2Interop) build_jobs = [] for l in languages_to_build: @@ -706,6 +623,13 @@ try: test_job = cloud_to_prod_jobspec(language, test_case, docker_image=docker_images.get(str(language))) jobs.append(test_job) + + if args.http2_interop: + for test_case in _HTTP2_TEST_CASES: + test_job = cloud_to_prod_jobspec(http2Interop, test_case, + docker_image=docker_images.get(str(http2Interop))) + jobs.append(test_job) + if args.cloud_to_prod_auth: for language in languages: @@ -733,6 +657,16 @@ try: server_port, docker_image=docker_images.get(str(language))) jobs.append(test_job) + + if args.http2_interop: + for test_case in _HTTP2_TEST_CASES: + test_job = cloud_to_cloud_jobspec(http2Interop, + test_case, + server_name, + server_host, + server_port, + docker_image=docker_images.get(str(http2Interop))) + jobs.append(test_job) if not jobs: print 'No jobs to run.' @@ -740,22 +674,19 @@ try: dockerjob.remove_image(image, skip_nonexistent=True) sys.exit(1) - root = ET.Element('testsuites') - testsuite = ET.SubElement(root, 'testsuite', id='1', package='grpc', name='tests') - num_failures, resultset = jobset.run(jobs, newline_on_success=True, - maxjobs=args.jobs, xml_report=testsuite) + maxjobs=args.jobs) if num_failures: jobset.message('FAILED', 'Some tests failed', do_newline=True) else: jobset.message('SUCCESS', 'All tests passed', do_newline=True) - tree = ET.ElementTree(root) - tree.write('report.xml', encoding='UTF-8') + report_utils.render_xml_report(resultset, 'report.xml') - # Generate HTML report. - render_html_report(set([str(l) for l in languages]), servers, - resultset, num_failures) + report_utils.render_html_report( + set([str(l) for l in languages]), servers, _TEST_CASES, _AUTH_TEST_CASES, + _HTTP2_TEST_CASES, resultset, num_failures, + args.cloud_to_prod_auth or args.cloud_to_prod, args.http2_interop) finally: # Check if servers are still running. diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 4232637c7f..85c73d6fbd 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -46,10 +46,10 @@ import sys import tempfile import traceback import time -import xml.etree.cElementTree as ET import urllib2 import jobset +import report_utils import watch_dirs ROOT = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '../..')) @@ -147,9 +147,9 @@ class CLanguage(object): self.platform = platform_string() self.test_lang = test_lang - def test_specs(self, config, travis): + def test_specs(self, config, args): out = [] - binaries = get_c_tests(travis, self.test_lang) + binaries = get_c_tests(args.travis, self.test_lang) for target in binaries: if config.build_config in target['exclude_configs']: continue @@ -160,11 +160,16 @@ class CLanguage(object): binary = 'bins/%s/%s' % (config.build_config, target['name']) if os.path.isfile(binary): out.append(config.job_spec([binary], [binary])) - else: + elif args.regex == '.*' or platform_string() == 'windows': print '\nWARNING: binary not found, skipping', binary return sorted(out) - def make_targets(self): + def make_targets(self, test_regex): + if platform_string() != 'windows' and test_regex != '.*': + # use the regex to minimize the number of things to build + return [target['name'] + for target in get_c_tests(False, self.test_lang) + if re.search(test_regex, target['name'])] if platform_string() == 'windows': # don't build tools on windows just yet return ['buildtests_%s' % self.make_target] @@ -196,7 +201,7 @@ class CLanguage(object): class NodeLanguage(object): - def test_specs(self, config, travis): + def test_specs(self, config, args): return [config.job_spec(['tools/run_tests/run_node.sh'], None, environ=_FORCE_ENVIRON_FOR_WRAPPERS)] @@ -204,7 +209,7 @@ class NodeLanguage(object): # Default to 1 week cache expiration return [['tools/run_tests/pre_build_node.sh']] - def make_targets(self): + def make_targets(self, test_regex): return [] def build_steps(self): @@ -225,14 +230,14 @@ class NodeLanguage(object): class PhpLanguage(object): - def test_specs(self, config, travis): + def test_specs(self, config, args): return [config.job_spec(['src/php/bin/run_tests.sh'], None, environ=_FORCE_ENVIRON_FOR_WRAPPERS)] def pre_build_steps(self): return [] - def make_targets(self): + def make_targets(self, test_regex): return ['static_c', 'shared_c'] def build_steps(self): @@ -257,7 +262,7 @@ class PythonLanguage(object): self._build_python_versions = ['2.7'] self._has_python_versions = [] - def test_specs(self, config, travis): + def test_specs(self, config, args): environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS) environment['PYVER'] = '2.7' return [config.job_spec( @@ -271,7 +276,7 @@ class PythonLanguage(object): def pre_build_steps(self): return [] - def make_targets(self): + def make_targets(self, test_regex): return ['static_c', 'grpc_python_plugin', 'shared_c'] def build_steps(self): @@ -303,14 +308,14 @@ class PythonLanguage(object): class RubyLanguage(object): - def test_specs(self, config, travis): + def test_specs(self, config, args): return [config.job_spec(['tools/run_tests/run_ruby.sh'], None, environ=_FORCE_ENVIRON_FOR_WRAPPERS)] def pre_build_steps(self): return [['tools/run_tests/pre_build_ruby.sh']] - def make_targets(self): + def make_targets(self, test_regex): return ['static_c'] def build_steps(self): @@ -333,7 +338,7 @@ class CSharpLanguage(object): def __init__(self): self.platform = platform_string() - def test_specs(self, config, travis): + def test_specs(self, config, args): assemblies = ['Grpc.Core.Tests', 'Grpc.Examples.Tests', 'Grpc.HealthCheck.Tests', @@ -361,7 +366,7 @@ class CSharpLanguage(object): else: return [['tools/run_tests/pre_build_csharp.sh']] - def make_targets(self): + def make_targets(self, test_regex): # For Windows, this target doesn't really build anything, # everything is build by buildall script later. if self.platform == 'windows': @@ -390,14 +395,14 @@ class CSharpLanguage(object): class ObjCLanguage(object): - def test_specs(self, config, travis): + def test_specs(self, config, args): return [config.job_spec(['src/objective-c/tests/run_tests.sh'], None, environ=_FORCE_ENVIRON_FOR_WRAPPERS)] def pre_build_steps(self): return [] - def make_targets(self): + def make_targets(self, test_regex): return ['grpc_objective_c_plugin', 'interop_server'] def build_steps(self): @@ -418,14 +423,14 @@ class ObjCLanguage(object): class Sanity(object): - def test_specs(self, config, travis): + def test_specs(self, config, args): return [config.job_spec(['tools/run_tests/run_sanity.sh'], None), config.job_spec(['tools/run_tests/check_sources_and_headers.py'], None)] def pre_build_steps(self): return [] - def make_targets(self): + def make_targets(self, test_regex): return ['run_dep_checks'] def build_steps(self): @@ -446,13 +451,13 @@ class Sanity(object): class Build(object): - def test_specs(self, config, travis): + def test_specs(self, config, args): return [] def pre_build_steps(self): return [] - def make_targets(self): + def make_targets(self, test_regex): return ['static'] def build_steps(self): @@ -662,7 +667,7 @@ make_targets = {} for l in languages: makefile = l.makefile_name() make_targets[makefile] = make_targets.get(makefile, set()).union( - set(l.make_targets())) + set(l.make_targets(args.regex))) build_steps = list(set( jobset.JobSpec(cmdline, environ={'CONFIG': cfg}, flake_retries=5) @@ -830,12 +835,12 @@ def _calculate_num_runs_failures(list_of_results): return num_runs, num_failures def _build_and_run( - check_cancelled, newline_on_success, travis, cache, xml_report=None): + check_cancelled, newline_on_success, cache, xml_report=None): """Do one pass of building & running tests.""" # build latest sequentially num_failures, _ = jobset.run( build_steps, maxjobs=1, stop_on_failure=True, - newline_on_success=newline_on_success, travis=travis) + newline_on_success=newline_on_success, travis=args.travis) if num_failures: return 1 @@ -844,17 +849,18 @@ def _build_and_run( for _ in range(0, args.antagonists)] port_server_port = 32767 _start_port_server(port_server_port) + resultset = None try: infinite_runs = runs_per_test == 0 one_run = set( spec for config in run_configs for language in languages - for spec in language.test_specs(config, args.travis) + for spec in language.test_specs(config, args) if re.search(args.regex, spec.shortname)) # When running on travis, we want out test runs to be as similar as possible # for reproducibility purposes. - if travis: + if args.travis: massaged_one_run = sorted(one_run, key=lambda x: x.shortname) else: # whereas otherwise, we want to shuffle things up to give all tests a @@ -867,15 +873,11 @@ def _build_and_run( else itertools.repeat(massaged_one_run, runs_per_test)) all_runs = itertools.chain.from_iterable(runs_sequence) - root = ET.Element('testsuites') if xml_report else None - testsuite = ET.SubElement(root, 'testsuite', id='1', package='grpc', name='tests') if xml_report else None - number_failures, resultset = jobset.run( - all_runs, check_cancelled, newline_on_success=newline_on_success, - travis=travis, infinite_runs=infinite_runs, maxjobs=args.jobs, + all_runs, check_cancelled, newline_on_success=newline_on_success, + travis=args.travis, infinite_runs=infinite_runs, maxjobs=args.jobs, stop_on_failure=args.stop_on_failure, cache=cache if not xml_report else None, - xml_report=testsuite, add_env={'GRPC_TEST_PORT_SERVER': 'localhost:%d' % port_server_port}) if resultset: for k, v in resultset.iteritems(): @@ -893,13 +895,12 @@ def _build_and_run( finally: for antagonist in antagonists: antagonist.kill() - if xml_report: - tree = ET.ElementTree(root) - tree.write(xml_report, encoding='UTF-8') + if xml_report and resultset: + report_utils.render_xml_report(resultset, xml_report) number_failures, _ = jobset.run( post_tests_steps, maxjobs=1, stop_on_failure=True, - newline_on_success=newline_on_success, travis=travis) + newline_on_success=newline_on_success, travis=args.travis) if number_failures: return 3 @@ -920,7 +921,6 @@ if forever: previous_success = success success = _build_and_run(check_cancelled=have_files_changed, newline_on_success=False, - travis=args.travis, cache=test_cache) == 0 if not previous_success and success: jobset.message('SUCCESS', @@ -932,7 +932,6 @@ if forever: else: result = _build_and_run(check_cancelled=lambda: False, newline_on_success=args.newline_on_success, - travis=args.travis, cache=test_cache, xml_report=args.xml_report) if result == 0: diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 787b067acc..d3493bbe2c 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1580,6 +1580,23 @@ "grpc", "grpc++", "grpc++_test_util", + "grpc_test_util", + "qps" + ], + "headers": [], + "language": "c++", + "name": "secure_sync_unary_ping_pong_test", + "src": [ + "test/cpp/qps/secure_sync_unary_ping_pong_test.cc" + ] + }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc++", + "grpc++_test_util", "grpc_test_util" ], "headers": [], @@ -1875,6 +1892,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_compress", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_compress_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_compress", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -2070,6 +2102,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_compress", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_compress_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_compress", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -2370,6 +2417,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_fakesec", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_fakesec_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_fakesec", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -2565,6 +2627,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_fakesec", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_fakesec_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_fakesec", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -2865,6 +2942,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_full", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_full_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_full", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -3060,6 +3152,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_full", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_full_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_full", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -3360,6 +3467,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_full+poll", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_full+poll_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_full+poll", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -3555,6 +3677,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_full+poll", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_full+poll_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_full+poll", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -3855,6 +3992,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_oauth2", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_oauth2_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_oauth2", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -4050,6 +4202,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_oauth2", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_oauth2_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_oauth2", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -4350,6 +4517,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_proxy", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_proxy_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_proxy", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -4500,6 +4682,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_proxy", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_proxy_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_proxy", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -4785,6 +4982,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_sockpair", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_sockpair", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -4935,6 +5147,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_sockpair", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_sockpair", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -5220,6 +5447,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_sockpair+trace", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair+trace_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_sockpair+trace", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -5370,6 +5612,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_sockpair+trace", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair+trace_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_sockpair+trace", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -5655,6 +5912,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_sockpair_1byte", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair_1byte_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_sockpair_1byte", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -5805,6 +6077,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_sockpair_1byte", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair_1byte_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_sockpair_1byte", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -6090,6 +6377,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_ssl", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_ssl_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_ssl", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -6285,6 +6587,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_ssl", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_ssl_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_ssl", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -6585,6 +6902,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_ssl+poll", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_ssl+poll_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_ssl+poll", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -6780,6 +7112,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_ssl+poll", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_ssl+poll_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_ssl+poll", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -7080,6 +7427,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_ssl_proxy", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_ssl_proxy_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_ssl_proxy", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -7230,6 +7592,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_ssl_proxy", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_ssl_proxy_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_ssl_proxy", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -7515,6 +7892,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_uchannel", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_uchannel_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_uchannel", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -7710,6 +8102,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_uchannel", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_uchannel_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_uchannel", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -8010,6 +8417,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_uds", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_uds_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_uds", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -8190,6 +8612,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_uds", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_uds_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_uds", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -8490,6 +8927,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_uds+poll", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_uds+poll_cancel_with_status_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_uds+poll", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -8670,6 +9122,21 @@ "deps": [ "end2end_certs", "end2end_fixture_h2_uds+poll", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "h2_uds+poll_negative_deadline_test", + "src": [] + }, + { + "deps": [ + "end2end_certs", + "end2end_fixture_h2_uds+poll", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -8947,6 +9414,20 @@ { "deps": [ "end2end_fixture_h2_compress", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_compress_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_compress", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -9129,6 +9610,20 @@ { "deps": [ "end2end_fixture_h2_compress", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_compress_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_compress", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -9395,6 +9890,20 @@ { "deps": [ "end2end_fixture_h2_full", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_full_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_full", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -9577,6 +10086,20 @@ { "deps": [ "end2end_fixture_h2_full", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_full_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_full", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -9843,6 +10366,20 @@ { "deps": [ "end2end_fixture_h2_full+poll", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_full+poll_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_full+poll", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -10025,6 +10562,20 @@ { "deps": [ "end2end_fixture_h2_full+poll", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_full+poll_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_full+poll", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -10291,6 +10842,20 @@ { "deps": [ "end2end_fixture_h2_proxy", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_proxy_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_proxy", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -10431,6 +10996,20 @@ { "deps": [ "end2end_fixture_h2_proxy", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_proxy_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_proxy", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -10683,6 +11262,20 @@ { "deps": [ "end2end_fixture_h2_sockpair", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_sockpair", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -10823,6 +11416,20 @@ { "deps": [ "end2end_fixture_h2_sockpair", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_sockpair", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -11075,6 +11682,20 @@ { "deps": [ "end2end_fixture_h2_sockpair+trace", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair+trace_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_sockpair+trace", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -11215,6 +11836,20 @@ { "deps": [ "end2end_fixture_h2_sockpair+trace", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair+trace_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_sockpair+trace", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -11467,6 +12102,20 @@ { "deps": [ "end2end_fixture_h2_sockpair_1byte", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair_1byte_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_sockpair_1byte", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -11607,6 +12256,20 @@ { "deps": [ "end2end_fixture_h2_sockpair_1byte", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_sockpair_1byte_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_sockpair_1byte", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -11859,6 +12522,20 @@ { "deps": [ "end2end_fixture_h2_uchannel", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_uchannel_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_uchannel", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -12041,6 +12718,20 @@ { "deps": [ "end2end_fixture_h2_uchannel", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_uchannel_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_uchannel", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -12307,6 +12998,20 @@ { "deps": [ "end2end_fixture_h2_uds", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_uds_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_uds", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -12475,6 +13180,20 @@ { "deps": [ "end2end_fixture_h2_uds", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_uds_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_uds", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -12741,6 +13460,20 @@ { "deps": [ "end2end_fixture_h2_uds+poll", + "end2end_test_cancel_with_status", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_uds+poll_cancel_with_status_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_uds+poll", "end2end_test_census_simple_request", "gpr", "gpr_test_util", @@ -12909,6 +13642,20 @@ { "deps": [ "end2end_fixture_h2_uds+poll", + "end2end_test_negative_deadline", + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [], + "language": "c", + "name": "h2_uds+poll_negative_deadline_nosec_test", + "src": [] + }, + { + "deps": [ + "end2end_fixture_h2_uds+poll", "end2end_test_no_op", "gpr", "gpr_test_util", @@ -14641,8 +15388,16 @@ "test/cpp/qps/stats.h", "test/cpp/qps/timer.h", "test/cpp/util/benchmark_config.h", - "test/proto/qpstest.grpc.pb.h", - "test/proto/qpstest.pb.h" + "test/proto/benchmarks/control.grpc.pb.h", + "test/proto/benchmarks/control.pb.h", + "test/proto/benchmarks/payloads.grpc.pb.h", + "test/proto/benchmarks/payloads.pb.h", + "test/proto/benchmarks/services.grpc.pb.h", + "test/proto/benchmarks/services.pb.h", + "test/proto/benchmarks/stats.grpc.pb.h", + "test/proto/benchmarks/stats.pb.h", + "test/proto/messages.grpc.pb.h", + "test/proto/messages.pb.h" ], "language": "c++", "name": "qps", @@ -15107,6 +15862,25 @@ "test/core/end2end/tests/cancel_test_helpers.h" ], "language": "c", + "name": "end2end_test_cancel_with_status", + "src": [ + "test/core/end2end/end2end_tests.h", + "test/core/end2end/tests/cancel_test_helpers.h", + "test/core/end2end/tests/cancel_with_status.c" + ] + }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [ + "test/core/end2end/end2end_tests.h", + "test/core/end2end/tests/cancel_test_helpers.h" + ], + "language": "c", "name": "end2end_test_census_simple_request", "src": [ "test/core/end2end/end2end_tests.h", @@ -15354,6 +16128,25 @@ "test/core/end2end/tests/cancel_test_helpers.h" ], "language": "c", + "name": "end2end_test_negative_deadline", + "src": [ + "test/core/end2end/end2end_tests.h", + "test/core/end2end/tests/cancel_test_helpers.h", + "test/core/end2end/tests/negative_deadline.c" + ] + }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc_test_util_unsecure", + "grpc_unsecure" + ], + "headers": [ + "test/core/end2end/end2end_tests.h", + "test/core/end2end/tests/cancel_test_helpers.h" + ], + "language": "c", "name": "end2end_test_no_op", "src": [ "test/core/end2end/end2end_tests.h", diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 8b7cbb91d7..00ef157e98 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -1524,6 +1524,22 @@ "exclude_configs": [], "flaky": false, "language": "c++", + "name": "secure_sync_unary_ping_pong_test", + "platforms": [ + "linux", + "mac", + "posix" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], + "exclude_configs": [], + "flaky": false, + "language": "c++", "name": "server_crash_test", "platforms": [ "linux", @@ -1787,6 +1803,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_compress_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_compress_census_simple_request_test", "platforms": [ "linux", @@ -2021,6 +2055,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_compress_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_compress_no_op_test", "platforms": [ "linux", @@ -2372,6 +2424,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_fakesec_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_fakesec_census_simple_request_test", "platforms": [ "linux", @@ -2593,6 +2662,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_fakesec_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_fakesec_no_op_test", "platforms": [ "linux", @@ -2942,6 +3028,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_full_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_full_census_simple_request_test", "platforms": [ "linux", @@ -3176,6 +3280,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_full_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_full_no_op_test", "platforms": [ "linux", @@ -3485,6 +3607,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_full+poll_cancel_with_status_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_full+poll_census_simple_request_test", "platforms": [ "linux" @@ -3641,6 +3775,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_full+poll_negative_deadline_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_full+poll_no_op_test", "platforms": [ "linux" @@ -3923,6 +4069,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_oauth2_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_oauth2_census_simple_request_test", "platforms": [ "linux", @@ -4144,6 +4307,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_oauth2_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_oauth2_no_op_test", "platforms": [ "linux", @@ -4484,6 +4664,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_proxy_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_proxy_census_simple_request_test", "platforms": [ "linux", @@ -4654,6 +4851,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_proxy_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_proxy_no_op_test", "platforms": [ "linux", @@ -4977,6 +5191,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair_census_simple_request_test", "platforms": [ "linux", @@ -5147,6 +5378,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair_no_op_test", "platforms": [ "linux", @@ -5479,6 +5727,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair+trace_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair+trace_census_simple_request_test", "platforms": [ "linux", @@ -5659,6 +5925,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair+trace_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair+trace_no_op_test", "platforms": [ "linux", @@ -5992,6 +6276,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair_1byte_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair_1byte_census_simple_request_test", "platforms": [ "linux", @@ -6162,6 +6463,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair_1byte_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair_1byte_no_op_test", "platforms": [ "linux", @@ -6494,6 +6812,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_ssl_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_ssl_census_simple_request_test", "platforms": [ "linux", @@ -6728,6 +7064,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_ssl_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_ssl_no_op_test", "platforms": [ "linux", @@ -7037,6 +7391,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_ssl+poll_cancel_with_status_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_ssl+poll_census_simple_request_test", "platforms": [ "linux" @@ -7193,6 +7559,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_ssl+poll_negative_deadline_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_ssl+poll_no_op_test", "platforms": [ "linux" @@ -7475,6 +7853,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_ssl_proxy_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_ssl_proxy_census_simple_request_test", "platforms": [ "linux", @@ -7645,6 +8040,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_ssl_proxy_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_ssl_proxy_no_op_test", "platforms": [ "linux", @@ -7977,6 +8389,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uchannel_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uchannel_census_simple_request_test", "platforms": [ "linux", @@ -8211,6 +8641,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uchannel_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uchannel_no_op_test", "platforms": [ "linux", @@ -8554,6 +9002,22 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uds_cancel_with_status_test", + "platforms": [ + "linux", + "mac", + "posix" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uds_census_simple_request_test", "platforms": [ "linux", @@ -8746,6 +9210,22 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uds_negative_deadline_test", + "platforms": [ + "linux", + "mac", + "posix" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uds_no_op_test", "platforms": [ "linux", @@ -9032,6 +9512,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uds+poll_cancel_with_status_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uds+poll_census_simple_request_test", "platforms": [ "linux" @@ -9176,6 +9668,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uds+poll_negative_deadline_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uds+poll_no_op_test", "platforms": [ "linux" @@ -9449,6 +9953,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_compress_cancel_with_status_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_compress_census_simple_request_nosec_test", "platforms": [ "linux", @@ -9683,6 +10205,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_compress_negative_deadline_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_compress_no_op_nosec_test", "platforms": [ "linux", @@ -10025,6 +10565,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_full_cancel_with_status_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_full_census_simple_request_nosec_test", "platforms": [ "linux", @@ -10259,6 +10817,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_full_negative_deadline_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_full_no_op_nosec_test", "platforms": [ "linux", @@ -10556,6 +11132,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_full+poll_cancel_with_status_nosec_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_full+poll_census_simple_request_nosec_test", "platforms": [ "linux" @@ -10712,6 +11300,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_full+poll_negative_deadline_nosec_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_full+poll_no_op_nosec_test", "platforms": [ "linux" @@ -10977,6 +11577,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_proxy_cancel_with_status_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_proxy_census_simple_request_nosec_test", "platforms": [ "linux", @@ -11147,6 +11764,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_proxy_negative_deadline_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_proxy_no_op_nosec_test", "platforms": [ "linux", @@ -11453,6 +12087,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair_cancel_with_status_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair_census_simple_request_nosec_test", "platforms": [ "linux", @@ -11623,6 +12274,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair_negative_deadline_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair_no_op_nosec_test", "platforms": [ "linux", @@ -11937,6 +12605,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair+trace_cancel_with_status_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair+trace_census_simple_request_nosec_test", "platforms": [ "linux", @@ -12117,6 +12803,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair+trace_negative_deadline_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair+trace_no_op_nosec_test", "platforms": [ "linux", @@ -12433,6 +13137,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair_1byte_cancel_with_status_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair_1byte_census_simple_request_nosec_test", "platforms": [ "linux", @@ -12603,6 +13324,23 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_sockpair_1byte_negative_deadline_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_sockpair_1byte_no_op_nosec_test", "platforms": [ "linux", @@ -12917,6 +13655,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uchannel_cancel_with_status_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uchannel_census_simple_request_nosec_test", "platforms": [ "linux", @@ -13151,6 +13907,24 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uchannel_negative_deadline_nosec_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uchannel_no_op_nosec_test", "platforms": [ "linux", @@ -13478,6 +14252,22 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uds_cancel_with_status_nosec_test", + "platforms": [ + "linux", + "mac", + "posix" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uds_census_simple_request_nosec_test", "platforms": [ "linux", @@ -13670,6 +14460,22 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uds_negative_deadline_nosec_test", + "platforms": [ + "linux", + "mac", + "posix" + ] + }, + { + "ci_platforms": [ + "linux", + "mac", + "posix" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uds_no_op_nosec_test", "platforms": [ "linux", @@ -13944,6 +14750,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uds+poll_cancel_with_status_nosec_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uds+poll_census_simple_request_nosec_test", "platforms": [ "linux" @@ -14088,6 +14906,18 @@ "exclude_configs": [], "flaky": false, "language": "c", + "name": "h2_uds+poll_negative_deadline_nosec_test", + "platforms": [ + "linux" + ] + }, + { + "ci_platforms": [ + "linux" + ], + "exclude_configs": [], + "flaky": false, + "language": "c", "name": "h2_uds+poll_no_op_nosec_test", "platforms": [ "linux" |