From 3f2133fc971b8150b0ee7ac61d6228dd723b9902 Mon Sep 17 00:00:00 2001 From: Paul Querna Date: Sun, 13 Mar 2016 15:11:23 -0700 Subject: [PATCH 01/74] kSCNetworkReachabilityFlagsIsWWAN is only available on iOS, not all Mac targets. --- .../GRPCClient/private/GRPCReachabilityFlagNames.xmacro.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/objective-c/GRPCClient/private/GRPCReachabilityFlagNames.xmacro.h b/src/objective-c/GRPCClient/private/GRPCReachabilityFlagNames.xmacro.h index 02871d5d028..4b92504b555 100644 --- a/src/objective-c/GRPCClient/private/GRPCReachabilityFlagNames.xmacro.h +++ b/src/objective-c/GRPCClient/private/GRPCReachabilityFlagNames.xmacro.h @@ -54,7 +54,9 @@ GRPC_XMACRO_ITEM. #endif +#if TARGET_OS_IPHONE GRPC_XMACRO_ITEM(isCell, IsWWAN) +#endif GRPC_XMACRO_ITEM(reachable, Reachable) GRPC_XMACRO_ITEM(transientConnection, TransientConnection) GRPC_XMACRO_ITEM(connectionRequired, ConnectionRequired) From 32173c5c3c8803ba3132452d9512437a76d857e6 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:12:45 -0700 Subject: [PATCH 02/74] First version of json fuzzer --- Makefile | 43 ++++++++-- build.yaml | 33 +++++--- templates/Makefile.template | 5 +- .../tools/dockerfile/test/fuzzers.template | 50 ++++++++++++ .../vsprojects/buildtests_c.sln.template | 2 +- templates/vsprojects/grpc.sln.template | 2 +- templates/vsprojects/vcxproj.template | 2 + test/core/json/fuzzer.c | 50 ++++++++++++ .../test/fuzzers/json_fuzzer_test/Dockerfile | 80 +++++++++++++++++++ tools/fuzzer/build_and_run_fuzzer.sh | 35 ++++++++ tools/jenkins/run_fuzzer.sh | 40 ++++++++++ tools/run_tests/sources_and_headers.json | 16 ++++ 12 files changed, 340 insertions(+), 18 deletions(-) create mode 100644 templates/tools/dockerfile/test/fuzzers.template create mode 100644 test/core/json/fuzzer.c create mode 100644 tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile create mode 100755 tools/fuzzer/build_and_run_fuzzer.sh create mode 100755 tools/jenkins/run_fuzzer.sh diff --git a/Makefile b/Makefile index 44a4b12bac5..16b2c026b36 100644 --- a/Makefile +++ b/Makefile @@ -109,7 +109,7 @@ CC_easan = clang CXX_easan = clang++ LD_easan = clang LDXX_easan = clang++ -CPPFLAGS_easan = -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS +CPPFLAGS_easan = -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS LDFLAGS_easan = -fsanitize=address DEFINES_easan = _DEBUG DEBUG GRPC_EXECUTION_CONTEXT_SANITIZER DEFINES_easan += GRPC_TEST_SLOWDOWN_BUILD_FACTOR=3 @@ -120,7 +120,7 @@ CC_asan = clang CXX_asan = clang++ LD_asan = clang LDXX_asan = clang++ -CPPFLAGS_asan = -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS +CPPFLAGS_asan = -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS LDFLAGS_asan = -fsanitize=address DEFINES_asan += GRPC_TEST_SLOWDOWN_BUILD_FACTOR=3 @@ -130,7 +130,7 @@ CC_msan = clang CXX_msan = clang++ LD_msan = clang LDXX_msan = clang++ -CPPFLAGS_msan = -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS +CPPFLAGS_msan = -O0 -fsanitize-coverage=edge -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,) DEFINES_msan = NDEBUG DEFINES_msan += GRPC_TEST_SLOWDOWN_BUILD_FACTOR=4 @@ -159,7 +159,7 @@ CC_asan-noleaks = clang CXX_asan-noleaks = clang++ LD_asan-noleaks = clang LDXX_asan-noleaks = clang++ -CPPFLAGS_asan-noleaks = -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS +CPPFLAGS_asan-noleaks = -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS LDFLAGS_asan-noleaks = -fsanitize=address DEFINES_asan-noleaks += GRPC_TEST_SLOWDOWN_BUILD_FACTOR=3 @@ -177,7 +177,7 @@ CC_ubsan = clang CXX_ubsan = clang++ LD_ubsan = clang LDXX_ubsan = clang++ -CPPFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument +CPPFLAGS_ubsan = -O1 -fsanitize-coverage=edge -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument LDFLAGS_ubsan = -fsanitize=undefined DEFINES_ubsan = NDEBUG DEFINES_ubsan += GRPC_TEST_SLOWDOWN_BUILD_FACTOR=1.5 @@ -933,6 +933,7 @@ httpcli_test: $(BINDIR)/$(CONFIG)/httpcli_test httpscli_test: $(BINDIR)/$(CONFIG)/httpscli_test init_test: $(BINDIR)/$(CONFIG)/init_test invalid_call_argument_test: $(BINDIR)/$(CONFIG)/invalid_call_argument_test +json_fuzzer_test: $(BINDIR)/$(CONFIG)/json_fuzzer_test json_rewrite: $(BINDIR)/$(CONFIG)/json_rewrite json_rewrite_test: $(BINDIR)/$(CONFIG)/json_rewrite_test json_stream_error_test: $(BINDIR)/$(CONFIG)/json_stream_error_test @@ -7904,6 +7905,38 @@ endif endif +JSON_FUZZER_TEST_SRC = \ + test/core/json/fuzzer.c \ + +JSON_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(JSON_FUZZER_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/json_fuzzer_test: openssl_dep_error + +else + + + +$(BINDIR)/$(CONFIG)/json_fuzzer_test: $(JSON_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LDXX) $(LDFLAGS) $(JSON_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/json_fuzzer_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/json/fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + +deps_json_fuzzer_test: $(JSON_FUZZER_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(JSON_FUZZER_TEST_OBJS:.o=.dep) +endif +endif + + JSON_REWRITE_SRC = \ test/core/json/json_rewrite.c \ diff --git a/build.yaml b/build.yaml index 8a655119698..ab91b6e5dc6 100644 --- a/build.yaml +++ b/build.yaml @@ -1620,6 +1620,18 @@ targets: - grpc - gpr_test_util - gpr +- name: json_fuzzer_test + build: fuzzer + language: c + src: + - test/core/json/fuzzer.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr + corpus_dirs: + - test/core/json/corpus - name: json_rewrite build: test run: false @@ -2762,8 +2774,8 @@ vspackages: configs: asan: CC: clang - CPPFLAGS: -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument - -DGPR_NO_DIRECT_SYSCALLS + CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer + -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS CXX: clang++ LD: clang LDFLAGS: -fsanitize=address @@ -2775,8 +2787,8 @@ configs: timeout_multiplier: 3 asan-noleaks: CC: clang - CPPFLAGS: -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument - -DGPR_NO_DIRECT_SYSCALLS + CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer + -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS CXX: clang++ LD: clang LDFLAGS: -fsanitize=address @@ -2793,8 +2805,8 @@ configs: DEFINES: _DEBUG DEBUG easan: CC: clang - CPPFLAGS: -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument - -DGPR_NO_DIRECT_SYSCALLS + CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer + -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS CXX: clang++ DEFINES: _DEBUG DEBUG GRPC_EXECUTION_CONTEXT_SANITIZER LD: clang @@ -2843,9 +2855,9 @@ configs: valgrind: --tool=memcheck --leak-check=full msan: CC: clang - CPPFLAGS: -O0 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer - -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument - -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS + CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=memory -fsanitize-memory-track-origins + -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 + -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS CXX: clang++ DEFINES: NDEBUG LD: clang @@ -2878,7 +2890,8 @@ configs: timeout_multiplier: 5 ubsan: CC: clang - CPPFLAGS: -O1 -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument + CPPFLAGS: -O1 -fsanitize-coverage=edge -fsanitize=undefined -fno-omit-frame-pointer + -Wno-unused-command-line-argument CXX: clang++ DEFINES: NDEBUG LD: clang diff --git a/templates/Makefile.template b/templates/Makefile.template index c54c146620f..57fc1461313 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -1737,7 +1737,7 @@ $(LIBDIR)/$(CONFIG)/lib${dep}.a\ % endfor - % if tgt.language == "c++" or tgt.boringssl: + % if tgt.language == "c++" or tgt.boringssl or tgt.build == 'fuzzer': ## C++ targets specificies. % if tgt.build == 'protoc': $(E) "[HOSTLD] Linking $@" @@ -1790,6 +1790,9 @@ $(GTEST_LIB)\ % elif tgt.language == 'c++' and tgt.build == 'benchmark': $(GTEST_LIB)\ + % endif + % if tgt.build == 'fuzzer': + -lFuzzer\ % endif -o $(BINDIR)/$(CONFIG)/${tgt.name} % if tgt.build == 'protoc' or tgt.language == 'c++': diff --git a/templates/tools/dockerfile/test/fuzzers.template b/templates/tools/dockerfile/test/fuzzers.template new file mode 100644 index 00000000000..d9e3806191b --- /dev/null +++ b/templates/tools/dockerfile/test/fuzzers.template @@ -0,0 +1,50 @@ +%YAML 1.2 +--- +foreach: targets +output_name: ${selected.name}/Dockerfile +cond: selected.build == 'fuzzer' +template: | + # Copyright 2015-2016, Google Inc. + # All rights reserved. + # + # Redistribution and use in source and binary forms, with or without + # modification, are permitted provided that the following conditions are + # met: + # + # * Redistributions of source code must retain the above copyright + # notice, this list of conditions and the following disclaimer. + # * Redistributions in binary form must reproduce the above + # copyright notice, this list of conditions and the following disclaimer + # in the documentation and/or other materials provided with the + # distribution. + # * Neither the name of Google Inc. nor the names of its + # contributors may be used to endorse or promote products derived from + # this software without specific prior written permission. + # + # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + FROM debian:jessie + + <%include file="../apt_get_basic.include"/> + <%include file="../cxx_deps.include"/> + RUN git clone -n -b master http://llvm.org/git/llvm.git && ${'\\'} + cd llvm && ${'\\'} + git checkout 308857f && ${'\\'} + cd .. + RUN clang++ -c -g -O2 -std=c++11 llvm/lib/Fuzzer/*.cpp -IFuzzer + RUN ar ruv libFuzzer.a Fuzzer*.o + RUN mv libFuzzer.a /usr/lib + RUN rm -f Fuzzer*.o + RUN mkdir /var/local/jenkins + # Define the default command. + CMD ["bash"] diff --git a/templates/vsprojects/buildtests_c.sln.template b/templates/vsprojects/buildtests_c.sln.template index a985fea64dd..21312ab79a4 100644 --- a/templates/vsprojects/buildtests_c.sln.template +++ b/templates/vsprojects/buildtests_c.sln.template @@ -2,6 +2,6 @@ --- | <%namespace file="sln_defs.include" import="gen_solution"/>\ <% - solution_projects = [p for p in vsprojects if p.build != 'protoc' and p.language == 'c' and not p.boringssl and not p.zlib] + solution_projects = [p for p in vsprojects if p.build not in ['protoc', 'fuzzer'] and p.language == 'c' and not p.boringssl and not p.zlib] %>\ ${gen_solution(solution_projects, use_dlls='yes')} diff --git a/templates/vsprojects/grpc.sln.template b/templates/vsprojects/grpc.sln.template index dbbb2c2ad19..ded98383dad 100644 --- a/templates/vsprojects/grpc.sln.template +++ b/templates/vsprojects/grpc.sln.template @@ -2,6 +2,6 @@ --- | <%namespace file="sln_defs.include" import="gen_solution"/>\ <% - solution_projects = [p for p in vsprojects if p.build not in ['protoc', 'test'] and p.language in ['c', 'c++'] and p.vs_proj_dir == '.' and not (p.build == 'private' and p.language == 'c++')] + solution_projects = [p for p in vsprojects if p.build not in ['protoc', 'test', 'fuzzer'] and p.language in ['c', 'c++'] and p.vs_proj_dir == '.' and not (p.build == 'private' and p.language == 'c++')] %>\ ${gen_solution(solution_projects, use_dlls='yes')} diff --git a/templates/vsprojects/vcxproj.template b/templates/vsprojects/vcxproj.template index ecf113b4a8a..0bb208f4436 100644 --- a/templates/vsprojects/vcxproj.template +++ b/templates/vsprojects/vcxproj.template @@ -2,12 +2,14 @@ --- foreach: vsprojects output_name: ${selected.vs_proj_dir}/${selected.name}/${selected.name}.vcxproj +cond: selected.build not in ['fuzzer'] template: | <%namespace file="vcxproj_defs.include" import="gen_project"/>\ ${gen_project(selected.name, vsprojects)} --- foreach: vsprojects output_name: ${selected.vs_proj_dir}/${selected.name}/${selected.name}.vcxproj.filters +cond: selected.build not in ['fuzzer'] template: | <%namespace file="vcxproj.filters_defs.include" import="gen_filters"/>\ ${gen_filters(selected.name, vsprojects)} diff --git a/test/core/json/fuzzer.c b/test/core/json/fuzzer.c new file mode 100644 index 00000000000..eb29da3bf7c --- /dev/null +++ b/test/core/json/fuzzer.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2015-2016, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +#include "src/core/json/json.h" + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + char *s = gpr_malloc(size); + memcpy(s, data, size); + grpc_json *x; + if ((x = grpc_json_parse_string_with_len(s, size))) { + grpc_json_destroy(x); + } + gpr_free(s); + return 0; +} diff --git a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile b/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile new file mode 100644 index 00000000000..b84d51136e1 --- /dev/null +++ b/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile @@ -0,0 +1,80 @@ +# Copyright 2015-2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +FROM debian:jessie + +# Install Git and basic packages. +RUN apt-get update && apt-get install -y \ + autoconf \ + autotools-dev \ + build-essential \ + bzip2 \ + ccache \ + curl \ + gcc \ + gcc-multilib \ + git \ + golang \ + gyp \ + lcov \ + libc6 \ + libc6-dbg \ + libc6-dev \ + libgtest-dev \ + libtool \ + make \ + perl \ + strace \ + python-dev \ + python-setuptools \ + python-yaml \ + telnet \ + unzip \ + wget \ + zip && apt-get clean + +#================ +# Build profiling +RUN apt-get update && apt-get install -y time && apt-get clean + +#================= +# C++ dependencies +RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean + +RUN git clone -n -b master http://llvm.org/git/llvm.git && \ + cd llvm && \ + git checkout 308857f && \ + cd .. +RUN clang++ -c -g -O2 -std=c++11 llvm/lib/Fuzzer/*.cpp -IFuzzer +RUN ar ruv libFuzzer.a Fuzzer*.o +RUN mv libFuzzer.a /usr/lib +RUN rm -f Fuzzer*.o +RUN mkdir /var/local/jenkins +# Define the default command. +CMD ["bash"] diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh new file mode 100755 index 00000000000..a2108988d89 --- /dev/null +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# Copyright 2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +set -ex + +make CONFIG=$config $1 +bins/$config/$1 diff --git a/tools/jenkins/run_fuzzer.sh b/tools/jenkins/run_fuzzer.sh new file mode 100755 index 00000000000..f695820a572 --- /dev/null +++ b/tools/jenkins/run_fuzzer.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# Copyright 2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Builds and runs a fuzzer (specified by the first command line argument) + +set -ex + +export RUN_COMMAND="tools/fuzzer/build_and_run_fuzzer.sh $1" +export DOCKER_RUN_SCRIPT=tools/jenkins/docker_run.sh +export DOCKERFILE_DIR=tools/dockerfile/test/fuzzers/$1 +export OUTPUT_DIR= + +tools/jenkins/build_and_run_docker.sh -e RUN_COMMAND="$RUN_COMMAND" diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 503adba2fbf..d1e660698b6 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -1010,6 +1010,22 @@ "third_party": false, "type": "target" }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "json_fuzzer_test", + "src": [ + "test/core/json/fuzzer.c" + ], + "third_party": false, + "type": "target" + }, { "deps": [ "gpr", From 655fb5751aab6cb59500dc3eb5285114714a54e8 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:24:28 -0700 Subject: [PATCH 03/74] Pass thru config --- tools/jenkins/run_fuzzer.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/jenkins/run_fuzzer.sh b/tools/jenkins/run_fuzzer.sh index f695820a572..f2423c40ff7 100755 --- a/tools/jenkins/run_fuzzer.sh +++ b/tools/jenkins/run_fuzzer.sh @@ -37,4 +37,6 @@ export DOCKER_RUN_SCRIPT=tools/jenkins/docker_run.sh export DOCKERFILE_DIR=tools/dockerfile/test/fuzzers/$1 export OUTPUT_DIR= -tools/jenkins/build_and_run_docker.sh -e RUN_COMMAND="$RUN_COMMAND" +tools/jenkins/build_and_run_docker.sh \ + -e RUN_COMMAND="$RUN_COMMAND" \ + -e config="$config" From 1b872f2020d3867b9f6f2e04c23b6446752e2585 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:31:34 -0700 Subject: [PATCH 04/74] huh --- tools/fuzzer/build_and_run_fuzzer.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index a2108988d89..c58fef2f0f7 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -31,5 +31,6 @@ set -ex +du make CONFIG=$config $1 bins/$config/$1 From 2360226ec283e91a8701052941a2675e4cd43f0d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:33:47 -0700 Subject: [PATCH 05/74] huh --- tools/fuzzer/build_and_run_fuzzer.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index c58fef2f0f7..cd046840146 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -31,6 +31,5 @@ set -ex -du -make CONFIG=$config $1 +make CONFIG=$config $1 Q= bins/$config/$1 From a5d8bc2b5c76050790c38d98ee40eb153ad50497 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:36:21 -0700 Subject: [PATCH 06/74] Grab submodules --- tools/fuzzer/build_and_run_fuzzer.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index cd046840146..ace79523ea2 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -31,5 +31,6 @@ set -ex -make CONFIG=$config $1 Q= +git submodule update --init +make CONFIG=$config $1 bins/$config/$1 From e6f1cb06c7dcbf7c4f6f684120581bb1c0ade6f0 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:44:14 -0700 Subject: [PATCH 07/74] x --- tools/fuzzer/build_and_run_fuzzer.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index ace79523ea2..67e3a5b99f2 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -32,5 +32,6 @@ set -ex git submodule update --init +make run_dep_checks make CONFIG=$config $1 bins/$config/$1 From 9812c6f69d0b5f5b266a10932370b11ec62e1296 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:46:18 -0700 Subject: [PATCH 08/74] adddeps --- templates/tools/dockerfile/test/fuzzers.template | 1 + .../test/fuzzers/json_fuzzer_test/Dockerfile | 15 +++++++++++++++ tools/fuzzer/build_and_run_fuzzer.sh | 1 - 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/templates/tools/dockerfile/test/fuzzers.template b/templates/tools/dockerfile/test/fuzzers.template index d9e3806191b..d4e3d644110 100644 --- a/templates/tools/dockerfile/test/fuzzers.template +++ b/templates/tools/dockerfile/test/fuzzers.template @@ -37,6 +37,7 @@ template: | <%include file="../apt_get_basic.include"/> <%include file="../cxx_deps.include"/> + <%include file="../run_tests_addons.include"/> RUN git clone -n -b master http://llvm.org/git/llvm.git && ${'\\'} cd llvm && ${'\\'} git checkout 308857f && ${'\\'} diff --git a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile b/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile index b84d51136e1..beae39c5965 100644 --- a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile +++ b/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile @@ -67,6 +67,21 @@ RUN apt-get update && apt-get install -y time && apt-get clean # C++ dependencies RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean +# Prepare ccache +RUN ln -s /usr/bin/ccache /usr/local/bin/gcc +RUN ln -s /usr/bin/ccache /usr/local/bin/g++ +RUN ln -s /usr/bin/ccache /usr/local/bin/cc +RUN ln -s /usr/bin/ccache /usr/local/bin/c++ +RUN ln -s /usr/bin/ccache /usr/local/bin/clang +RUN ln -s /usr/bin/ccache /usr/local/bin/clang++ + +#====================== +# Zookeeper dependencies +# TODO(jtattermusch): is zookeeper still needed? +RUN apt-get install -y libzookeeper-mt-dev + +RUN mkdir /var/local/jenkins + RUN git clone -n -b master http://llvm.org/git/llvm.git && \ cd llvm && \ git checkout 308857f && \ diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index 67e3a5b99f2..ace79523ea2 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -32,6 +32,5 @@ set -ex git submodule update --init -make run_dep_checks make CONFIG=$config $1 bins/$config/$1 From eb784f359d8dd5a85b8d9fd67f0350bef7004fc1 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:50:49 -0700 Subject: [PATCH 09/74] stuff --- templates/tools/dockerfile/test/fuzzers.template | 1 - tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile | 1 - tools/fuzzer/build_and_run_fuzzer.sh | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/templates/tools/dockerfile/test/fuzzers.template b/templates/tools/dockerfile/test/fuzzers.template index d4e3d644110..763a6169eac 100644 --- a/templates/tools/dockerfile/test/fuzzers.template +++ b/templates/tools/dockerfile/test/fuzzers.template @@ -46,6 +46,5 @@ template: | RUN ar ruv libFuzzer.a Fuzzer*.o RUN mv libFuzzer.a /usr/lib RUN rm -f Fuzzer*.o - RUN mkdir /var/local/jenkins # Define the default command. CMD ["bash"] diff --git a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile b/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile index beae39c5965..1c95555df73 100644 --- a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile +++ b/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile @@ -90,6 +90,5 @@ RUN clang++ -c -g -O2 -std=c++11 llvm/lib/Fuzzer/*.cpp -IFuzzer RUN ar ruv libFuzzer.a Fuzzer*.o RUN mv libFuzzer.a /usr/lib RUN rm -f Fuzzer*.o -RUN mkdir /var/local/jenkins # Define the default command. CMD ["bash"] diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index ace79523ea2..b335859ecc2 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -32,5 +32,5 @@ set -ex git submodule update --init -make CONFIG=$config $1 +make CONFIG=$config $1 -j3 bins/$config/$1 From 815b207555802e1a345fa83f4457ef0c3dc1188b Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:51:47 -0700 Subject: [PATCH 10/74] x --- tools/fuzzer/build_and_run_fuzzer.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index b335859ecc2..db95249fc17 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -32,5 +32,6 @@ set -ex git submodule update --init +make run_dep_checks make CONFIG=$config $1 -j3 bins/$config/$1 From be615dc9da786e852c470093cc77eb8f34a841a2 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 15:01:41 -0700 Subject: [PATCH 11/74] x --- tools/fuzzer/build_and_run_fuzzer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index db95249fc17..67e3a5b99f2 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -33,5 +33,5 @@ set -ex git submodule update --init make run_dep_checks -make CONFIG=$config $1 -j3 +make CONFIG=$config $1 bins/$config/$1 From 238e847ac1483c9b2deae3322f58666ebae3d740 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 15:02:16 -0700 Subject: [PATCH 12/74] x --- tools/fuzzer/build_and_run_fuzzer.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index 67e3a5b99f2..4dbb6d8f69d 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -32,6 +32,7 @@ set -ex git submodule update --init +ls -R make run_dep_checks make CONFIG=$config $1 bins/$config/$1 From c5296f6d23cb6840a8e8aa09e377b193a341a77d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 15:02:34 -0700 Subject: [PATCH 13/74] x --- tools/fuzzer/build_and_run_fuzzer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index 4dbb6d8f69d..044de71aace 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -32,7 +32,7 @@ set -ex git submodule update --init -ls -R +find . | sort make run_dep_checks make CONFIG=$config $1 bins/$config/$1 From 50b89533b55e465c201885063e255740b68c1277 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 15:22:42 -0700 Subject: [PATCH 14/74] x --- tools/fuzzer/build_and_run_fuzzer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index 044de71aace..6b63ef02ca8 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -33,6 +33,6 @@ set -ex git submodule update --init find . | sort -make run_dep_checks +make CONFIG=$config run_dep_checks make CONFIG=$config $1 bins/$config/$1 From a4134159ab7a6084ff7692d6dfb744428c0df958 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 16:02:51 -0700 Subject: [PATCH 15/74] j --- .../tools/dockerfile/clang_update.include | 2 +- .../tools/dockerfile/test/fuzzers.template | 5 +-- .../dockerfile/test/cxx_jessie_x64/Dockerfile | 2 +- .../test/fuzzers/json_fuzzer_test/Dockerfile | 37 +++++++++++++++++-- 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/templates/tools/dockerfile/clang_update.include b/templates/tools/dockerfile/clang_update.include index 83ab3e0bbbf..a44fe717d88 100644 --- a/templates/tools/dockerfile/clang_update.include +++ b/templates/tools/dockerfile/clang_update.include @@ -29,4 +29,4 @@ RUN cd llvm-build && cmake ${'\\'} -DCMAKE_INSTALL_PREFIX:STRING=/usr ${'\\'} -DLLVM_TARGETS_TO_BUILD:STRING=X86 ${'\\'} ../llvm -RUN make -C llvm-build && make -C llvm-build install && rm -rf llvm-build +RUN make -C llvm-build -j 12 && make -C llvm-build install && rm -rf llvm-build diff --git a/templates/tools/dockerfile/test/fuzzers.template b/templates/tools/dockerfile/test/fuzzers.template index 763a6169eac..6cf8694f3b9 100644 --- a/templates/tools/dockerfile/test/fuzzers.template +++ b/templates/tools/dockerfile/test/fuzzers.template @@ -37,11 +37,8 @@ template: | <%include file="../apt_get_basic.include"/> <%include file="../cxx_deps.include"/> + <%include file="../clang_update.include"/> <%include file="../run_tests_addons.include"/> - RUN git clone -n -b master http://llvm.org/git/llvm.git && ${'\\'} - cd llvm && ${'\\'} - git checkout 308857f && ${'\\'} - cd .. RUN clang++ -c -g -O2 -std=c++11 llvm/lib/Fuzzer/*.cpp -IFuzzer RUN ar ruv libFuzzer.a Fuzzer*.o RUN mv libFuzzer.a /usr/lib diff --git a/tools/dockerfile/test/cxx_jessie_x64/Dockerfile b/tools/dockerfile/test/cxx_jessie_x64/Dockerfile index b848f233b70..685d2038b0a 100644 --- a/tools/dockerfile/test/cxx_jessie_x64/Dockerfile +++ b/tools/dockerfile/test/cxx_jessie_x64/Dockerfile @@ -98,7 +98,7 @@ RUN cd llvm-build && cmake \ -DCMAKE_INSTALL_PREFIX:STRING=/usr \ -DLLVM_TARGETS_TO_BUILD:STRING=X86 \ ../llvm -RUN make -C llvm-build && make -C llvm-build install && rm -rf llvm-build +RUN make -C llvm-build -j 12 && make -C llvm-build install && rm -rf llvm-build # Prepare ccache RUN ln -s /usr/bin/ccache /usr/local/bin/gcc diff --git a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile b/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile index 1c95555df73..9335a2a97c4 100644 --- a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile +++ b/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile @@ -67,6 +67,39 @@ RUN apt-get update && apt-get install -y time && apt-get clean # C++ dependencies RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean +#================= +# Update clang to a version with improved tsan + +RUN apt-get update && apt-get -y install python cmake && apt-get clean + +RUN git clone -n -b release_38 http://llvm.org/git/llvm.git && \ + cd llvm && git checkout ad57503 && cd .. +RUN git clone -n -b release_38 http://llvm.org/git/clang.git && \ + cd clang && git checkout ad2c56e && cd .. +RUN git clone -n -b release_38 http://llvm.org/git/compiler-rt.git && \ + cd compiler-rt && git checkout 3176922 && cd .. +RUN git clone -n -b release_38 \ + http://llvm.org/git/clang-tools-extra.git && cd clang-tools-extra && \ + git checkout c288525 && cd .. +RUN git clone -n -b release_38 http://llvm.org/git/libcxx.git && \ + cd libcxx && git checkout fda3549 && cd .. +RUN git clone -n -b release_38 http://llvm.org/git/libcxxabi.git && \ + cd libcxxabi && git checkout 8d4e51d && cd .. + +RUN mv clang llvm/tools +RUN mv compiler-rt llvm/projects +RUN mv clang-tools-extra llvm/tools/clang/tools +RUN mv libcxx llvm/projects +RUN mv libcxxabi llvm/projects + +RUN mkdir llvm-build +RUN cd llvm-build && cmake \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DCMAKE_INSTALL_PREFIX:STRING=/usr \ + -DLLVM_TARGETS_TO_BUILD:STRING=X86 \ + ../llvm +RUN make -C llvm-build -j 12 && make -C llvm-build install && rm -rf llvm-build + # Prepare ccache RUN ln -s /usr/bin/ccache /usr/local/bin/gcc RUN ln -s /usr/bin/ccache /usr/local/bin/g++ @@ -82,10 +115,6 @@ RUN apt-get install -y libzookeeper-mt-dev RUN mkdir /var/local/jenkins -RUN git clone -n -b master http://llvm.org/git/llvm.git && \ - cd llvm && \ - git checkout 308857f && \ - cd .. RUN clang++ -c -g -O2 -std=c++11 llvm/lib/Fuzzer/*.cpp -IFuzzer RUN ar ruv libFuzzer.a Fuzzer*.o RUN mv libFuzzer.a /usr/lib From c90886096a4530562f22ba9708c2a6caef14cde1 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Fri, 18 Mar 2016 00:24:33 +0100 Subject: [PATCH 16/74] Fixing json parsing issues detected by libfuzz. --- src/core/json/json_reader.c | 7 +++++-- test/core/json/json_test.c | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/core/json/json_reader.c b/src/core/json/json_reader.c index 30da6f28f39..9a97826287e 100644 --- a/src/core/json/json_reader.c +++ b/src/core/json/json_reader.c @@ -280,13 +280,14 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader *reader) { break; case GRPC_JSON_STATE_OBJECT_KEY_STRING: - GPR_ASSERT(reader->unicode_high_surrogate == 0); + if (reader->unicode_high_surrogate != 0) + return GRPC_JSON_PARSE_ERROR; if (c == '"') { reader->state = GRPC_JSON_STATE_OBJECT_KEY_END; json_reader_set_key(reader); json_reader_string_clear(reader); } else { - if (c <= 0x001f) return GRPC_JSON_PARSE_ERROR; + if (c < 32) return GRPC_JSON_PARSE_ERROR; json_reader_string_add_char(reader, c); } break; @@ -362,6 +363,8 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader *reader) { reader->in_object = 0; reader->in_array = 1; break; + default: + return GRPC_JSON_PARSE_ERROR; } break; diff --git a/test/core/json/json_test.c b/test/core/json/json_test.c index 5add80d753e..035265a6be5 100644 --- a/test/core/json/json_test.c +++ b/test/core/json/json_test.c @@ -64,6 +64,7 @@ static testing_pair testing_pairs[] = { /* Testing UTF-8 character "𝄞", U+11D1E. */ {"\"\xf0\x9d\x84\x9e\"", "\"\\ud834\\udd1e\""}, {"\"\\ud834\\udd1e\"", "\"\\ud834\\udd1e\""}, + {"{\"\\ud834\\udd1e\":0}", "{\"\\ud834\\udd1e\":0}"}, /* Testing nested empty containers. */ { " [ [ ] , { } , [ ] ] ", "[[],{},[]]", @@ -85,20 +86,31 @@ static testing_pair testing_pairs[] = { /* Testing plain invalid things, exercising the state machine. */ {"\\", NULL}, {"nu ll", NULL}, + {"{\"foo\": bar}", NULL}, + {"{\"foo\": bar\"x\"}", NULL}, {"fals", NULL}, /* Testing unterminated string. */ {"\"\\x", NULL}, /* Testing invalid UTF-16 number. */ {"\"\\u123x", NULL}, + {"{\"\\u123x", NULL}, /* Testing imbalanced surrogate pairs. */ {"\"\\ud834f", NULL}, + {"{\"\\ud834f\":0}", NULL}, {"\"\\ud834\\n", NULL}, + {"{\"\\ud834\\n\":0}", NULL}, {"\"\\udd1ef", NULL}, + {"{\"\\udd1ef\":0}", NULL}, {"\"\\ud834\\ud834\"", NULL}, + {"{\"\\ud834\\ud834\"\":0}", NULL}, {"\"\\ud834\\u1234\"", NULL}, + {"{\"\\ud834\\u1234\"\":0}", NULL}, {"\"\\ud834]\"", NULL}, + {"{\"\\ud834]\"\":0}", NULL}, {"\"\\ud834 \"", NULL}, + {"{\"\\ud834 \"\":0}", NULL}, {"\"\\ud834\\\\\"", NULL}, + {"{\"\\ud834\\\\\"\":0}", NULL}, /* Testing embedded invalid whitechars. */ {"\"\n\"", NULL}, {"\"\t\"", NULL}, From dc559c96979b45c8694586915fdecc7b0e21e51d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 07:29:18 -0700 Subject: [PATCH 17/74] Add fuzzer found crash to corpus --- .../json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0 | 1 + 1 file changed, 1 insertion(+) create mode 100644 test/core/json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0 diff --git a/test/core/json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0 b/test/core/json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0 new file mode 100644 index 00000000000..6d3bcfe0240 --- /dev/null +++ b/test/core/json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0 @@ -0,0 +1 @@ +)!:{"*?'ʳ!!*!):!*:::\udbD8)!:{!`!?`!?'!*m,');'` \ No newline at end of file From c2c026e84376e8e65d7af84b9df33071c0511d1d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 08:28:21 -0700 Subject: [PATCH 18/74] Renames --- templates/tools/dockerfile/clang_update.include | 2 +- .../Dockerfile.template} | 14 +++++--------- tools/dockerfile/test/cxx_jessie_x64/Dockerfile | 2 +- .../json_fuzzer_test => fuzzer}/Dockerfile | 2 +- tools/fuzzer/build_and_run_fuzzer.sh | 3 --- tools/jenkins/run_fuzzer.sh | 2 +- 6 files changed, 9 insertions(+), 16 deletions(-) rename templates/tools/dockerfile/test/{fuzzers.template => fuzzer/Dockerfile.template} (86%) rename tools/dockerfile/test/{fuzzers/json_fuzzer_test => fuzzer}/Dockerfile (98%) diff --git a/templates/tools/dockerfile/clang_update.include b/templates/tools/dockerfile/clang_update.include index a44fe717d88..4f827c8dc21 100644 --- a/templates/tools/dockerfile/clang_update.include +++ b/templates/tools/dockerfile/clang_update.include @@ -1,5 +1,5 @@ #================= -# Update clang to a version with improved tsan +# Update clang to a version with improved tsan and fuzzing capabilities RUN apt-get update && apt-get -y install python cmake && apt-get clean diff --git a/templates/tools/dockerfile/test/fuzzers.template b/templates/tools/dockerfile/test/fuzzer/Dockerfile.template similarity index 86% rename from templates/tools/dockerfile/test/fuzzers.template rename to templates/tools/dockerfile/test/fuzzer/Dockerfile.template index 6cf8694f3b9..479be0556a0 100644 --- a/templates/tools/dockerfile/test/fuzzers.template +++ b/templates/tools/dockerfile/test/fuzzer/Dockerfile.template @@ -1,9 +1,5 @@ %YAML 1.2 ---- -foreach: targets -output_name: ${selected.name}/Dockerfile -cond: selected.build == 'fuzzer' -template: | +--- | # Copyright 2015-2016, Google Inc. # All rights reserved. # @@ -35,10 +31,10 @@ template: | FROM debian:jessie - <%include file="../apt_get_basic.include"/> - <%include file="../cxx_deps.include"/> - <%include file="../clang_update.include"/> - <%include file="../run_tests_addons.include"/> + <%include file="../../apt_get_basic.include"/> + <%include file="../../cxx_deps.include"/> + <%include file="../../clang_update.include"/> + <%include file="../../run_tests_addons.include"/> RUN clang++ -c -g -O2 -std=c++11 llvm/lib/Fuzzer/*.cpp -IFuzzer RUN ar ruv libFuzzer.a Fuzzer*.o RUN mv libFuzzer.a /usr/lib diff --git a/tools/dockerfile/test/cxx_jessie_x64/Dockerfile b/tools/dockerfile/test/cxx_jessie_x64/Dockerfile index 685d2038b0a..6c7aece4ff5 100644 --- a/tools/dockerfile/test/cxx_jessie_x64/Dockerfile +++ b/tools/dockerfile/test/cxx_jessie_x64/Dockerfile @@ -68,7 +68,7 @@ RUN apt-get update && apt-get install -y time && apt-get clean RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean #================= -# Update clang to a version with improved tsan +# Update clang to a version with improved tsan and fuzzing capabilities RUN apt-get update && apt-get -y install python cmake && apt-get clean diff --git a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile b/tools/dockerfile/test/fuzzer/Dockerfile similarity index 98% rename from tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile rename to tools/dockerfile/test/fuzzer/Dockerfile index 9335a2a97c4..7b35c009e37 100644 --- a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile +++ b/tools/dockerfile/test/fuzzer/Dockerfile @@ -68,7 +68,7 @@ RUN apt-get update && apt-get install -y time && apt-get clean RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean #================= -# Update clang to a version with improved tsan +# Update clang to a version with improved tsan and fuzzing capabilities RUN apt-get update && apt-get -y install python cmake && apt-get clean diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index 6b63ef02ca8..a2108988d89 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -31,8 +31,5 @@ set -ex -git submodule update --init -find . | sort -make CONFIG=$config run_dep_checks make CONFIG=$config $1 bins/$config/$1 diff --git a/tools/jenkins/run_fuzzer.sh b/tools/jenkins/run_fuzzer.sh index f2423c40ff7..94ee493700f 100755 --- a/tools/jenkins/run_fuzzer.sh +++ b/tools/jenkins/run_fuzzer.sh @@ -34,7 +34,7 @@ set -ex export RUN_COMMAND="tools/fuzzer/build_and_run_fuzzer.sh $1" export DOCKER_RUN_SCRIPT=tools/jenkins/docker_run.sh -export DOCKERFILE_DIR=tools/dockerfile/test/fuzzers/$1 +export DOCKERFILE_DIR=tools/dockerfile/test/fuzzer export OUTPUT_DIR= tools/jenkins/build_and_run_docker.sh \ From d7b20b8ae17fb9c3d6ac71b70dc298b14de6853d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 08:29:12 -0700 Subject: [PATCH 19/74] Add timeout --- tools/fuzzer/build_and_run_fuzzer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index a2108988d89..21834a97418 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -32,4 +32,4 @@ set -ex make CONFIG=$config $1 -bins/$config/$1 +bins/$config/$1 -timeout 60 From 3100eb8a28c0fdc8ee85345df6aa8a2506a8d5a2 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 08:31:05 -0700 Subject: [PATCH 20/74] Add timeout properly --- tools/fuzzer/build_and_run_fuzzer.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index 21834a97418..a57ef09cf76 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -31,5 +31,5 @@ set -ex -make CONFIG=$config $1 -bins/$config/$1 -timeout 60 +make CONFIG=$config $1 -j3 +bins/$config/$1 -timeout=60 From 0dca61fe2e249a7e6434391c84eb59541ab3b963 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 08:37:52 -0700 Subject: [PATCH 21/74] Add timeout properly --- tools/fuzzer/build_and_run_fuzzer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index a57ef09cf76..48d09b4d9fa 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -32,4 +32,4 @@ set -ex make CONFIG=$config $1 -j3 -bins/$config/$1 -timeout=60 +bins/$config/$1 -max_total_time=60 From c6d6a024b7f70848c8ef349e003fcac7f5e0459e Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 11:52:36 -0700 Subject: [PATCH 22/74] Complete fuzzer framework --- templates/tools/fuzzer/runners.template | 38 ++++++++++++++++++++++++ tools/fuzzer/build_and_run_fuzzer.sh | 4 ++- tools/fuzzer/runners/json_fuzzer_test.sh | 32 ++++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 templates/tools/fuzzer/runners.template create mode 100644 tools/fuzzer/runners/json_fuzzer_test.sh diff --git a/templates/tools/fuzzer/runners.template b/templates/tools/fuzzer/runners.template new file mode 100644 index 00000000000..20707163954 --- /dev/null +++ b/templates/tools/fuzzer/runners.template @@ -0,0 +1,38 @@ +%YAML 1.2 +--- +foreach: targets +cond: selected.build == 'fuzzer' +output_name: ${selected.name}.sh +template: | + #!/bin/bash + # Copyright 2016, Google Inc. + # All rights reserved. + # + # Redistribution and use in source and binary forms, with or without + # modification, are permitted provided that the following conditions are + # met: + # + # * Redistributions of source code must retain the above copyright + # notice, this list of conditions and the following disclaimer. + # * Redistributions in binary form must reproduce the above + # copyright notice, this list of conditions and the following disclaimer + # in the documentation and/or other materials provided with the + # distribution. + # * Neither the name of Google Inc. nor the names of its + # contributors may be used to endorse or promote products derived from + # this software without specific prior written permission. + # + # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + # + + bins/$config/${selected.name} -max_total_time=60 fuzzer_output ${' '.join(selected.corpus_dirs)} diff --git a/tools/fuzzer/build_and_run_fuzzer.sh b/tools/fuzzer/build_and_run_fuzzer.sh index 48d09b4d9fa..bbe68884add 100755 --- a/tools/fuzzer/build_and_run_fuzzer.sh +++ b/tools/fuzzer/build_and_run_fuzzer.sh @@ -31,5 +31,7 @@ set -ex +cd $(dirname $0)/../.. make CONFIG=$config $1 -j3 -bins/$config/$1 -max_total_time=60 +mkdir -p fuzzer_output +. tools/fuzzer/runners/$1.sh diff --git a/tools/fuzzer/runners/json_fuzzer_test.sh b/tools/fuzzer/runners/json_fuzzer_test.sh new file mode 100644 index 00000000000..47e457232d9 --- /dev/null +++ b/tools/fuzzer/runners/json_fuzzer_test.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Copyright 2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +bins/$config/json_fuzzer_test -max_total_time=60 fuzzer_output test/core/json/corpus From 71c610d512fa349cb1d58d4500d4dd761d80b578 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 15:57:08 -0700 Subject: [PATCH 23/74] Expand fuzzers --- Makefile | 99 ++++++++++++++++++ build.yaml | 36 +++++++ src/core/httpcli/parser.c | 14 ++- src/core/transport/chttp2/hpack_parser.c | 40 ++++--- src/core/transport/chttp2/hpack_table.c | 24 +++-- .../042dc4512fa3d391c5170cf3aa61e6a638f84342 | 1 + .../0e9bbe975f2027e8c39c89f85f667530368e7d11 | 1 + .../14b57bcbf1e17b1db1de491ef2ba3768f704b7dc | 1 + .../1794310671a060eead6e5ee66ac978a18ec7e84f | 2 + .../1d30b2a79afbaf2828ff42b9a9647e942ba1ab80 | 1 + .../1fcf5d9c333b70596cf5ba04d1f7affdf445b971 | 3 + .../23162c8a8936e20b195404c21337ee734d02a6bc | 1 + .../23f3198b815ca60bdadcaae682b9f965dda387f1 | 1 + .../2ef3893b43f1f60b77b59ce06a6bce9815d78eaf | 2 + .../356c3c129e203b5c74550b4209764d74b9caefce | 1 + .../3b58860f3451d3e7aad99690a8d39782ca5116fc | 4 + .../47b5228404451fc9d4071fa69192514bb4ce33c1 | 1 + .../636c5606fc23713a1bae88c8899c0541cfad4fd8 | 4 + .../63fe493b270b17426d77a27cbf3abac5b2c2794a | 1 + .../655300a902b62662296a8e46bfb04fbcb07182cb | 1 + .../6b70979a70a038ff6607d6cf85485ee95baf58e6 | 1 + .../7314ab3545a7535a26e0e8aad67caea5534d68b1 | 2 + .../884dcaee2908ffe5f12b65b8eba81016099c4266 | 1 + .../96c8d266b7dc037288ef305c996608270f72e7fb | 2 + .../975536c71ade4800415a7e9c2f1b45c35a6d5ea8 | 1 + .../99750aa67d30beaea8af565c829d4999aa8cb91b | 1 + .../a1f0f9b75bb354eb063d7cba4fcfa2d0b88d63de | 1 + .../a296eb3d1d436ed7df7195b10aa3c4de3896f98d | 1 + .../a8b8e66050b424f1b8c07d46f868199fb7f60e38 | 1 + .../af55baf8c8855e563befdf1eefbcbd46c5ddb8d2 | 1 + .../b3c0bf66c2bf5d24ef1daf4cc5a9d6d5bd0e8bfd | 1 + .../ceb4e2264ba7a8d5be47d276b37ec09489e00245 | 1 + .../cf4395958f5bfb46fd6f535a39657d016c75114c | 1 + .../d46668372b7e20154a89409a7430a28e642afdca | 1 + .../d6fe7412a0a1d1c733160246f3fa425f4f97682a | 1 + test/core/client_config/uri_corpus/dns.txt | 1 + .../ea02d9fea9bad5b89cf353a0169238f584177e71 | 4 + .../ec4731dddf94ed3ea92ae4d5a71f145ab6e3f6ee | 1 + .../ed2f78646f19fc47dd85ff0877c232b71913ece2 | 1 + .../f6889f4a6350fea1596a3adea5cdac02bd5d1ff3 | 2 + .../f6f3bd030f0d321efe7c51ca3f057de23509af67 | 1 + .../f97598cff03306af3c70400608fec47268b5075d | 2 + .../f9e1ec1fc642b575bc9955618b7065747f56b101 | 1 + .../fe0630a3aeed2ec6f474f362e4c839478290d5c4 | 1 + test/core/client_config/uri_corpus/ipv4.txt | 1 + test/core/client_config/uri_corpus/ipv6.txt | 1 + test/core/client_config/uri_corpus/unix.txt | 1 + test/core/client_config/uri_fuzzer_test.c | 52 +++++++++ .../0299ca2580e4398d170c4a336e0c33eb2cd9d427 | 2 + .../05e613853d64a9669ea3cf41b0de777dc24931ba | 2 + .../069352518a1d1baa05f317c677d275cefda2ac97 | 2 + .../0c5b7c2569410b526605e308309a7f36574e530d | 4 + .../0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf | 3 + .../1e1273f90187fdf5df3625764245610f86af6aa4 | 3 + .../33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 | 2 + .../35f0c561297cfc840ddaeebb9fc61091f4eadece | 2 + .../39b19c41ba537f37511eff7727733715db432e76 | 2 + .../3e3c4756d5e40b5aa250954cbac86b826e70a7ac | 3 + .../3fb034e66ee5494a67acae1b4e6ff64ba92a2046 | 2 + .../487725eb38511c79a9340bf4560a1411061fa6fa | 2 + .../4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 | 2 + .../5028c56a5116a186b7343ff59567b47347a0796d | 3 + .../5b6292bdf009b0daecbc90b85cca30a88c36eec5 | 2 + .../657368df512ca6294b9df16adf935a3f374a8be2 | 3 + .../81f59a12b458ec3604035cb962165c604d1355e6 | 2 + .../8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 | 4 + .../97e4499d450c95660de86747f527e670f2012548 | 3 + .../aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 | 2 + .../b04fea5c041c707db0ad9c09a81672557b52cc47 | 2 + .../c55ce9995b002e88a102ae2891a71e8bacb346c8 | 2 + .../ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 | 3 + .../d4c3e4cf5d035596433c30eaabbd2b2925f4b453 | 3 + .../d936dad71c129cf659097dc3db64550c4dd467f4 | 2 + .../fc5d4b9117ba9e87388174aee4f4970bdfe8d066 | 1 + test/core/httpcli/corpus/response1.txt | 4 + test/core/httpcli/fuzzer.c | 50 +++++++++ .../0141fcddc9807ee093313b2256f1306fbbdc6cda | 1 + .../06995c2f3f01c7ec50547415dc324c64030b7a3e | Bin 0 -> 4 bytes .../06f7ce769fe07804fc842462d4be8c1aa2ba82c2 | 1 + .../0828169ba82152a8907f1001e3d98804397d4610 | 1 + .../0a10bd140c6c5fb109a0816ca061739688a6db9a | Bin 0 -> 24 bytes .../0c9996d4fef87bacd7a001e99a515b3ba3d5788f | Bin 0 -> 35 bytes .../0d6210208831fe55951af56cdeee3d54a91a5361 | 1 + .../0d784965b2262df7ed7a1eb57b92a718cc76bde8 | 1 + .../0e9196f951874edbb5ed098739ea5c8b6c0751c2 | Bin 0 -> 64 bytes .../1e8befb98cbaba059d6771abd1680e19484e7723 | Bin 0 -> 27 bytes .../311dac5092e36134d3490f98aa4207425e0ee941 | 1 + .../342ff1db70a7616b4ef76c03a42802c6702c18cb | 1 + .../38228bf98cdb50fd3fa830ba5a9d4c7399063dff | 1 + .../3a4bb427a85bdc5bf66ac71db073c99e0dc9f881 | 1 + .../3aec8d9311130dfbb6584fe6e619579c21992b5f | 1 + .../3c5af4d73e94d0e8ad5666b6acb340f929031e95 | 1 + .../3f8983e457033cc85997c356935ba9c21460e86b | 1 + .../4256437fc5897c0cd5d755816e4e68c7be326849 | Bin 0 -> 11 bytes .../471a307b81dc37459087d41532741c5c9d7ba836 | 1 + .../48bcce2c6487b18706ef0c609ca39c456215bac8 | 1 + .../4c7a034d3a3b4f29d99caf021a0e9bbb89706c2e | Bin 0 -> 64 bytes .../50b3f4b6aed97f442496d27f3b4315a18ba76d5f | 1 + .../51eff6fcbfe1a51ceb3f5f2140c01eea89b4313d | 1 + .../5653c44a5b520bdf2bdc599b7966f1d7c44950b3 | 1 + .../5a99df42fb7bbafa2d55714ee235b1c46776b2ad | 1 + .../5bab61eb53176449e25c2c82f172b82cb13ffb9d | 1 + .../65566df65e8f55428b6672cc351df414fa8f936c | 1 + .../65bb703af35d5afb824cd68c41d7a1aeb3848d35 | 1 + .../78176d80c1d74c4b1b820d386ae483ac4d1d92b7 | 1 + .../7a28fc2e9c72d51d29e87eed63ed405c9779b5e1 | 1 + .../7ba7239a29d6183960e3986abc8f19cfb548b905 | 1 + .../8057c32b8bd28a5ec2105d62f2abe8cf69c9f5fc | 1 + .../86bae059b18af8ae263e5ae0022b67da0cfc0fbe | 1 + .../8762a523cdb78d2344d553fa52a229bd63c44e51 | 1 + .../8fbbf3c0eaa25b64d0a97a8ee08006539e649199 | 1 + .../96903512b1f1dec08206123f024b62d0e31cd4dc | 1 + .../999821e3750a7f2c9db663d2d100b4404c225040 | 1 + .../99b2ed83be40cab431d1940e8de2dc3ebfe9352f | Bin 0 -> 47 bytes .../9e56bb3b68d2e2617cb2d2f0f3941f7fc832e462 | 1 + .../a871e7ce66afd4f57702cd1299de06cd08995561 | Bin 0 -> 31 bytes .../ac94b2788f5252f9e2e8502c7c75e04bef4c0b76 | 1 + .../af417c83e831a96fda1bdde99a1af6509ef2df3d | 1 + .../b0587e6e319f4b56d877e7ed46bc7da9b1e7249c | 1 + .../b244c690157ff21d073940ef8c77d1898f37cf8e | 1 + .../bcf4684ce097faa7e9d99b6e93cc2de24f57aee3 | Bin 0 -> 7 bytes .../ccd3b8aa26c52f6d9c607c26ebdf621142aff745 | Bin 0 -> 25 bytes .../d76d0c7f24ae3cc3f530d5306b8dcc15290c7ff2 | 1 + .../df01203edfa2dfe9e108ddde786ae48235624fef | Bin 0 -> 27 bytes .../e25adf8de44f5978d00b7e8c52aee89c5cd1fe93 | 1 + .../e29f05162e3d96d5549f96aa4a54c868535b2847 | 1 + .../e4ce52007d001806fc9368b62c124dfc56e8471c | 1 + .../eb48ebd4d01e5623dd16ae61938b3333fab3ce78 | 1 + .../eef2f30b5e2ecd98ebefb12d57aba8b4ad52d904 | 1 + .../ef23911de1a27d03d2d4983ca1527e17d6a7092b | 1 + .../ef5b7fc62a2daecf1e8f928b1fa3ebd028413a41 | Bin 0 -> 64 bytes .../efdd6824bd2456e3e408e0e84369c4fa3aa14f41 | 1 + .../efec040a5de1969df5e37e4bc50a0a8f0de341d8 | 1 + .../f4628084cf46f139babb886a782b4ab5977d5d2e | 1 + .../f7cf30724ab740918eee6e4a6b6658ae3d7706e8 | 1 + .../f823828ffd2a60efee36f1de52cb0f024ac5b4bb | 1 + .../fb15042c268625089ef6c8aa3d8a6f12d1d02c74 | 1 + .../chttp2/hpack_parser_fuzzer_test.c | 53 ++++++++++ .../runners/hpack_parser_fuzzer_test.sh | 32 ++++++ tools/fuzzer/runners/httpcli_fuzzer_test.sh | 32 ++++++ tools/fuzzer/runners/uri_fuzzer_test.sh | 32 ++++++ tools/run_tests/sources_and_headers.json | 48 +++++++++ 142 files changed, 662 insertions(+), 24 deletions(-) create mode 100644 test/core/client_config/uri_corpus/042dc4512fa3d391c5170cf3aa61e6a638f84342 create mode 100644 test/core/client_config/uri_corpus/0e9bbe975f2027e8c39c89f85f667530368e7d11 create mode 100644 test/core/client_config/uri_corpus/14b57bcbf1e17b1db1de491ef2ba3768f704b7dc create mode 100644 test/core/client_config/uri_corpus/1794310671a060eead6e5ee66ac978a18ec7e84f create mode 100644 test/core/client_config/uri_corpus/1d30b2a79afbaf2828ff42b9a9647e942ba1ab80 create mode 100644 test/core/client_config/uri_corpus/1fcf5d9c333b70596cf5ba04d1f7affdf445b971 create mode 100644 test/core/client_config/uri_corpus/23162c8a8936e20b195404c21337ee734d02a6bc create mode 100644 test/core/client_config/uri_corpus/23f3198b815ca60bdadcaae682b9f965dda387f1 create mode 100644 test/core/client_config/uri_corpus/2ef3893b43f1f60b77b59ce06a6bce9815d78eaf create mode 100644 test/core/client_config/uri_corpus/356c3c129e203b5c74550b4209764d74b9caefce create mode 100644 test/core/client_config/uri_corpus/3b58860f3451d3e7aad99690a8d39782ca5116fc create mode 100644 test/core/client_config/uri_corpus/47b5228404451fc9d4071fa69192514bb4ce33c1 create mode 100644 test/core/client_config/uri_corpus/636c5606fc23713a1bae88c8899c0541cfad4fd8 create mode 100644 test/core/client_config/uri_corpus/63fe493b270b17426d77a27cbf3abac5b2c2794a create mode 100644 test/core/client_config/uri_corpus/655300a902b62662296a8e46bfb04fbcb07182cb create mode 100644 test/core/client_config/uri_corpus/6b70979a70a038ff6607d6cf85485ee95baf58e6 create mode 100644 test/core/client_config/uri_corpus/7314ab3545a7535a26e0e8aad67caea5534d68b1 create mode 100644 test/core/client_config/uri_corpus/884dcaee2908ffe5f12b65b8eba81016099c4266 create mode 100644 test/core/client_config/uri_corpus/96c8d266b7dc037288ef305c996608270f72e7fb create mode 100644 test/core/client_config/uri_corpus/975536c71ade4800415a7e9c2f1b45c35a6d5ea8 create mode 100644 test/core/client_config/uri_corpus/99750aa67d30beaea8af565c829d4999aa8cb91b create mode 100644 test/core/client_config/uri_corpus/a1f0f9b75bb354eb063d7cba4fcfa2d0b88d63de create mode 100644 test/core/client_config/uri_corpus/a296eb3d1d436ed7df7195b10aa3c4de3896f98d create mode 100644 test/core/client_config/uri_corpus/a8b8e66050b424f1b8c07d46f868199fb7f60e38 create mode 100644 test/core/client_config/uri_corpus/af55baf8c8855e563befdf1eefbcbd46c5ddb8d2 create mode 100644 test/core/client_config/uri_corpus/b3c0bf66c2bf5d24ef1daf4cc5a9d6d5bd0e8bfd create mode 100644 test/core/client_config/uri_corpus/ceb4e2264ba7a8d5be47d276b37ec09489e00245 create mode 100644 test/core/client_config/uri_corpus/cf4395958f5bfb46fd6f535a39657d016c75114c create mode 100644 test/core/client_config/uri_corpus/d46668372b7e20154a89409a7430a28e642afdca create mode 100644 test/core/client_config/uri_corpus/d6fe7412a0a1d1c733160246f3fa425f4f97682a create mode 100644 test/core/client_config/uri_corpus/dns.txt create mode 100644 test/core/client_config/uri_corpus/ea02d9fea9bad5b89cf353a0169238f584177e71 create mode 100644 test/core/client_config/uri_corpus/ec4731dddf94ed3ea92ae4d5a71f145ab6e3f6ee create mode 100644 test/core/client_config/uri_corpus/ed2f78646f19fc47dd85ff0877c232b71913ece2 create mode 100644 test/core/client_config/uri_corpus/f6889f4a6350fea1596a3adea5cdac02bd5d1ff3 create mode 100644 test/core/client_config/uri_corpus/f6f3bd030f0d321efe7c51ca3f057de23509af67 create mode 100644 test/core/client_config/uri_corpus/f97598cff03306af3c70400608fec47268b5075d create mode 100644 test/core/client_config/uri_corpus/f9e1ec1fc642b575bc9955618b7065747f56b101 create mode 100644 test/core/client_config/uri_corpus/fe0630a3aeed2ec6f474f362e4c839478290d5c4 create mode 100644 test/core/client_config/uri_corpus/ipv4.txt create mode 100644 test/core/client_config/uri_corpus/ipv6.txt create mode 100644 test/core/client_config/uri_corpus/unix.txt create mode 100644 test/core/client_config/uri_fuzzer_test.c create mode 100644 test/core/httpcli/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 create mode 100644 test/core/httpcli/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba create mode 100644 test/core/httpcli/corpus/069352518a1d1baa05f317c677d275cefda2ac97 create mode 100644 test/core/httpcli/corpus/0c5b7c2569410b526605e308309a7f36574e530d create mode 100644 test/core/httpcli/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf create mode 100644 test/core/httpcli/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 create mode 100644 test/core/httpcli/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 create mode 100644 test/core/httpcli/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece create mode 100644 test/core/httpcli/corpus/39b19c41ba537f37511eff7727733715db432e76 create mode 100644 test/core/httpcli/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac create mode 100644 test/core/httpcli/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 create mode 100644 test/core/httpcli/corpus/487725eb38511c79a9340bf4560a1411061fa6fa create mode 100644 test/core/httpcli/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 create mode 100644 test/core/httpcli/corpus/5028c56a5116a186b7343ff59567b47347a0796d create mode 100644 test/core/httpcli/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 create mode 100644 test/core/httpcli/corpus/657368df512ca6294b9df16adf935a3f374a8be2 create mode 100644 test/core/httpcli/corpus/81f59a12b458ec3604035cb962165c604d1355e6 create mode 100644 test/core/httpcli/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 create mode 100644 test/core/httpcli/corpus/97e4499d450c95660de86747f527e670f2012548 create mode 100644 test/core/httpcli/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 create mode 100644 test/core/httpcli/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 create mode 100644 test/core/httpcli/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 create mode 100644 test/core/httpcli/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 create mode 100644 test/core/httpcli/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 create mode 100644 test/core/httpcli/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 create mode 100644 test/core/httpcli/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 create mode 100644 test/core/httpcli/corpus/response1.txt create mode 100644 test/core/httpcli/fuzzer.c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0141fcddc9807ee093313b2256f1306fbbdc6cda create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/06995c2f3f01c7ec50547415dc324c64030b7a3e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/06f7ce769fe07804fc842462d4be8c1aa2ba82c2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0828169ba82152a8907f1001e3d98804397d4610 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0a10bd140c6c5fb109a0816ca061739688a6db9a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0c9996d4fef87bacd7a001e99a515b3ba3d5788f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0d6210208831fe55951af56cdeee3d54a91a5361 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0d784965b2262df7ed7a1eb57b92a718cc76bde8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0e9196f951874edbb5ed098739ea5c8b6c0751c2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/1e8befb98cbaba059d6771abd1680e19484e7723 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/311dac5092e36134d3490f98aa4207425e0ee941 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/342ff1db70a7616b4ef76c03a42802c6702c18cb create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/38228bf98cdb50fd3fa830ba5a9d4c7399063dff create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3a4bb427a85bdc5bf66ac71db073c99e0dc9f881 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3aec8d9311130dfbb6584fe6e619579c21992b5f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3c5af4d73e94d0e8ad5666b6acb340f929031e95 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3f8983e457033cc85997c356935ba9c21460e86b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/4256437fc5897c0cd5d755816e4e68c7be326849 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/471a307b81dc37459087d41532741c5c9d7ba836 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/48bcce2c6487b18706ef0c609ca39c456215bac8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/4c7a034d3a3b4f29d99caf021a0e9bbb89706c2e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/50b3f4b6aed97f442496d27f3b4315a18ba76d5f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/51eff6fcbfe1a51ceb3f5f2140c01eea89b4313d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5653c44a5b520bdf2bdc599b7966f1d7c44950b3 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5a99df42fb7bbafa2d55714ee235b1c46776b2ad create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/65566df65e8f55428b6672cc351df414fa8f936c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/65bb703af35d5afb824cd68c41d7a1aeb3848d35 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/78176d80c1d74c4b1b820d386ae483ac4d1d92b7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/7a28fc2e9c72d51d29e87eed63ed405c9779b5e1 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/7ba7239a29d6183960e3986abc8f19cfb548b905 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8057c32b8bd28a5ec2105d62f2abe8cf69c9f5fc create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/86bae059b18af8ae263e5ae0022b67da0cfc0fbe create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8762a523cdb78d2344d553fa52a229bd63c44e51 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8fbbf3c0eaa25b64d0a97a8ee08006539e649199 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/96903512b1f1dec08206123f024b62d0e31cd4dc create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/999821e3750a7f2c9db663d2d100b4404c225040 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/99b2ed83be40cab431d1940e8de2dc3ebfe9352f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9e56bb3b68d2e2617cb2d2f0f3941f7fc832e462 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a871e7ce66afd4f57702cd1299de06cd08995561 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ac94b2788f5252f9e2e8502c7c75e04bef4c0b76 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/af417c83e831a96fda1bdde99a1af6509ef2df3d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/b0587e6e319f4b56d877e7ed46bc7da9b1e7249c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/b244c690157ff21d073940ef8c77d1898f37cf8e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/bcf4684ce097faa7e9d99b6e93cc2de24f57aee3 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ccd3b8aa26c52f6d9c607c26ebdf621142aff745 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d76d0c7f24ae3cc3f530d5306b8dcc15290c7ff2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/df01203edfa2dfe9e108ddde786ae48235624fef create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e25adf8de44f5978d00b7e8c52aee89c5cd1fe93 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e29f05162e3d96d5549f96aa4a54c868535b2847 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e4ce52007d001806fc9368b62c124dfc56e8471c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/eb48ebd4d01e5623dd16ae61938b3333fab3ce78 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/eef2f30b5e2ecd98ebefb12d57aba8b4ad52d904 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ef23911de1a27d03d2d4983ca1527e17d6a7092b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ef5b7fc62a2daecf1e8f928b1fa3ebd028413a41 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/efdd6824bd2456e3e408e0e84369c4fa3aa14f41 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/efec040a5de1969df5e37e4bc50a0a8f0de341d8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f4628084cf46f139babb886a782b4ab5977d5d2e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f7cf30724ab740918eee6e4a6b6658ae3d7706e8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f823828ffd2a60efee36f1de52cb0f024ac5b4bb create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/fb15042c268625089ef6c8aa3d8a6f12d1d02c74 create mode 100644 test/core/transport/chttp2/hpack_parser_fuzzer_test.c create mode 100644 tools/fuzzer/runners/hpack_parser_fuzzer_test.sh create mode 100644 tools/fuzzer/runners/httpcli_fuzzer_test.sh create mode 100644 tools/fuzzer/runners/uri_fuzzer_test.sh diff --git a/Makefile b/Makefile index 2275f5698ba..0f8a10aa079 100644 --- a/Makefile +++ b/Makefile @@ -925,9 +925,11 @@ grpc_jwt_verifier_test: $(BINDIR)/$(CONFIG)/grpc_jwt_verifier_test grpc_print_google_default_creds_token: $(BINDIR)/$(CONFIG)/grpc_print_google_default_creds_token grpc_security_connector_test: $(BINDIR)/$(CONFIG)/grpc_security_connector_test grpc_verify_jwt: $(BINDIR)/$(CONFIG)/grpc_verify_jwt +hpack_parser_fuzzer_test: $(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test hpack_parser_test: $(BINDIR)/$(CONFIG)/hpack_parser_test hpack_table_test: $(BINDIR)/$(CONFIG)/hpack_table_test httpcli_format_request_test: $(BINDIR)/$(CONFIG)/httpcli_format_request_test +httpcli_fuzzer_test: $(BINDIR)/$(CONFIG)/httpcli_fuzzer_test httpcli_parser_test: $(BINDIR)/$(CONFIG)/httpcli_parser_test httpcli_test: $(BINDIR)/$(CONFIG)/httpcli_test httpscli_test: $(BINDIR)/$(CONFIG)/httpscli_test @@ -967,6 +969,7 @@ transport_connectivity_state_test: $(BINDIR)/$(CONFIG)/transport_connectivity_st transport_metadata_test: $(BINDIR)/$(CONFIG)/transport_metadata_test transport_security_test: $(BINDIR)/$(CONFIG)/transport_security_test udp_server_test: $(BINDIR)/$(CONFIG)/udp_server_test +uri_fuzzer_test: $(BINDIR)/$(CONFIG)/uri_fuzzer_test uri_parser_test: $(BINDIR)/$(CONFIG)/uri_parser_test workqueue_test: $(BINDIR)/$(CONFIG)/workqueue_test alarm_cpp_test: $(BINDIR)/$(CONFIG)/alarm_cpp_test @@ -7649,6 +7652,38 @@ endif endif +HPACK_PARSER_FUZZER_TEST_SRC = \ + test/core/transport/chttp2/hpack_parser_fuzzer_test.c \ + +HPACK_PARSER_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_PARSER_FUZZER_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test: openssl_dep_error + +else + + + +$(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test: $(HPACK_PARSER_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LDXX) $(LDFLAGS) $(HPACK_PARSER_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/transport/chttp2/hpack_parser_fuzzer_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + +deps_hpack_parser_fuzzer_test: $(HPACK_PARSER_FUZZER_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(HPACK_PARSER_FUZZER_TEST_OBJS:.o=.dep) +endif +endif + + HPACK_PARSER_TEST_SRC = \ test/core/transport/chttp2/hpack_parser_test.c \ @@ -7745,6 +7780,38 @@ endif endif +HTTPCLI_FUZZER_TEST_SRC = \ + test/core/httpcli/fuzzer.c \ + +HTTPCLI_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTPCLI_FUZZER_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/httpcli_fuzzer_test: openssl_dep_error + +else + + + +$(BINDIR)/$(CONFIG)/httpcli_fuzzer_test: $(HTTPCLI_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LDXX) $(LDFLAGS) $(HTTPCLI_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/httpcli_fuzzer_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/httpcli/fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + +deps_httpcli_fuzzer_test: $(HTTPCLI_FUZZER_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(HTTPCLI_FUZZER_TEST_OBJS:.o=.dep) +endif +endif + + HTTPCLI_PARSER_TEST_SRC = \ test/core/httpcli/parser_test.c \ @@ -8993,6 +9060,38 @@ endif endif +URI_FUZZER_TEST_SRC = \ + test/core/client_config/uri_fuzzer_test.c \ + +URI_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(URI_FUZZER_TEST_SRC)))) +ifeq ($(NO_SECURE),true) + +# You can't build secure targets if you don't have OpenSSL. + +$(BINDIR)/$(CONFIG)/uri_fuzzer_test: openssl_dep_error + +else + + + +$(BINDIR)/$(CONFIG)/uri_fuzzer_test: $(URI_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + $(E) "[LD] Linking $@" + $(Q) mkdir -p `dirname $@` + $(Q) $(LDXX) $(LDFLAGS) $(URI_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/uri_fuzzer_test + +endif + +$(OBJDIR)/$(CONFIG)/test/core/client_config/uri_fuzzer_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a + +deps_uri_fuzzer_test: $(URI_FUZZER_TEST_OBJS:.o=.dep) + +ifneq ($(NO_SECURE),true) +ifneq ($(NO_DEPS),true) +-include $(URI_FUZZER_TEST_OBJS:.o=.dep) +endif +endif + + URI_PARSER_TEST_SRC = \ test/core/client_config/uri_parser_test.c \ diff --git a/build.yaml b/build.yaml index 7fa0ca7c6c8..6ada7e77e3a 100644 --- a/build.yaml +++ b/build.yaml @@ -1532,6 +1532,18 @@ targets: - grpc - gpr_test_util - gpr +- name: hpack_parser_fuzzer_test + build: fuzzer + language: c + src: + - test/core/transport/chttp2/hpack_parser_fuzzer_test.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr + corpus_dirs: + - test/core/transport/chttp2/hpack_parser_corpus - name: hpack_parser_test build: test language: c @@ -1562,6 +1574,18 @@ targets: - grpc - gpr_test_util - gpr +- name: httpcli_fuzzer_test + build: fuzzer + language: c + src: + - test/core/httpcli/fuzzer.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr + corpus_dirs: + - test/core/httpcli/corpus - name: httpcli_parser_test build: test language: c @@ -1993,6 +2017,18 @@ targets: - mac - linux - posix +- name: uri_fuzzer_test + build: fuzzer + language: c + src: + - test/core/client_config/uri_fuzzer_test.c + deps: + - grpc_test_util + - grpc + - gpr_test_util + - gpr + corpus_dirs: + - test/core/client_config/uri_corpus - name: uri_parser_test build: test language: c diff --git a/src/core/httpcli/parser.c b/src/core/httpcli/parser.c index c314f025a00..eb059e78040 100644 --- a/src/core/httpcli/parser.c +++ b/src/core/httpcli/parser.c @@ -39,6 +39,8 @@ #include #include +extern int grpc_http_trace; + static int handle_response_line(grpc_httpcli_parser *parser) { uint8_t *beg = parser->cur_line; uint8_t *cur = beg; @@ -65,7 +67,9 @@ static int handle_response_line(grpc_httpcli_parser *parser) { return 1; error: - gpr_log(GPR_ERROR, "Failed parsing response line"); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, "Failed parsing response line"); + } return 0; } @@ -85,7 +89,9 @@ static int add_header(grpc_httpcli_parser *parser) { GPR_ASSERT(cur != end); if (*cur == ' ' || *cur == '\t') { - gpr_log(GPR_ERROR, "Continued header lines not supported yet"); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, "Continued header lines not supported yet"); + } goto error; } @@ -93,7 +99,9 @@ static int add_header(grpc_httpcli_parser *parser) { cur++; } if (cur == end) { - gpr_log(GPR_ERROR, "Didn't find ':' in header string"); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, "Didn't find ':' in header string"); + } goto error; } GPR_ASSERT(cur >= beg); diff --git a/src/core/transport/chttp2/hpack_parser.c b/src/core/transport/chttp2/hpack_parser.c index a63c7db1f61..d0d2c7b42d3 100644 --- a/src/core/transport/chttp2/hpack_parser.c +++ b/src/core/transport/chttp2/hpack_parser.c @@ -34,9 +34,9 @@ #include "src/core/transport/chttp2/hpack_parser.h" #include "src/core/transport/chttp2/internal.h" +#include #include #include -#include /* This is here for grpc_is_binary_header * TODO(murgatroid99): Remove this @@ -52,6 +52,8 @@ #include "src/core/support/string.h" #include "src/core/transport/chttp2/bin_encoder.h" +extern int grpc_http_trace; + typedef enum { NOT_BINARY, B64_BYTE0, @@ -723,7 +725,9 @@ static int finish_indexed_field(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { grpc_mdelem *md = grpc_chttp2_hptbl_lookup(&p->table, p->index); if (md == NULL) { - gpr_log(GPR_ERROR, "Invalid HPACK index received: %d", p->index); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, "Invalid HPACK index received: %d", p->index); + } return 0; } GRPC_MDELEM_REF(md); @@ -919,7 +923,9 @@ static int parse_lithdr_nvridx_v(grpc_chttp2_hpack_parser *p, /* finish parsing a max table size change */ static int finish_max_tbl_size(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { - gpr_log(GPR_INFO, "MAX TABLE SIZE: %d", p->index); + if (grpc_http_trace) { + gpr_log(GPR_INFO, "MAX TABLE SIZE: %d", p->index); + } return grpc_chttp2_hptbl_set_current_table_size(&p->table, p->index) && parse_begin(p, cur, end); } @@ -960,7 +966,9 @@ static int parse_error(grpc_chttp2_hpack_parser *p, const uint8_t *cur, static int parse_illegal_op(grpc_chttp2_hpack_parser *p, const uint8_t *cur, const uint8_t *end) { GPR_ASSERT(cur != end); - gpr_log(GPR_DEBUG, "Illegal hpack op code %d", *cur); + if (grpc_http_trace) { + gpr_log(GPR_DEBUG, "Illegal hpack op code %d", *cur); + } return parse_error(p, cur, end); } @@ -1069,10 +1077,12 @@ static int parse_value4(grpc_chttp2_hpack_parser *p, const uint8_t *cur, } error: - gpr_log(GPR_ERROR, - "integer overflow in hpack integer decoding: have 0x%08x, " - "got byte 0x%02x on byte 5", - *p->parsing.value, *cur); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, + "integer overflow in hpack integer decoding: have 0x%08x, " + "got byte 0x%02x on byte 5", + *p->parsing.value, *cur); + } return parse_error(p, cur, end); } @@ -1094,10 +1104,12 @@ static int parse_value5up(grpc_chttp2_hpack_parser *p, const uint8_t *cur, return parse_next(p, cur + 1, end); } - gpr_log(GPR_ERROR, - "integer overflow in hpack integer decoding: have 0x%08x, " - "got byte 0x%02x sometime after byte 5", - *p->parsing.value, *cur); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, + "integer overflow in hpack integer decoding: have 0x%08x, " + "got byte 0x%02x sometime after byte 5", + *p->parsing.value, *cur); + } return parse_error(p, cur, end); } @@ -1329,7 +1341,9 @@ static is_binary_header is_binary_literal_header(grpc_chttp2_hpack_parser *p) { static is_binary_header is_binary_indexed_header(grpc_chttp2_hpack_parser *p) { grpc_mdelem *elem = grpc_chttp2_hptbl_lookup(&p->table, p->index); if (!elem) { - gpr_log(GPR_ERROR, "Invalid HPACK index received: %d", p->index); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, "Invalid HPACK index received: %d", p->index); + } return ERROR_HEADER; } return grpc_is_binary_header( diff --git a/src/core/transport/chttp2/hpack_table.c b/src/core/transport/chttp2/hpack_table.c index f1ce3b84fdc..54ac59e0568 100644 --- a/src/core/transport/chttp2/hpack_table.c +++ b/src/core/transport/chttp2/hpack_table.c @@ -41,6 +41,8 @@ #include "src/core/support/murmur_hash.h" +extern int grpc_http_trace; + static struct { const char *key; const char *value; @@ -264,12 +266,16 @@ int grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl *tbl, return 1; } if (bytes > tbl->max_bytes) { - gpr_log(GPR_ERROR, - "Attempt to make hpack table %d bytes when max is %d bytes", bytes, - tbl->max_bytes); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, + "Attempt to make hpack table %d bytes when max is %d bytes", + bytes, tbl->max_bytes); + } return 0; } - gpr_log(GPR_DEBUG, "Update hpack parser table size to %d", bytes); + if (grpc_http_trace) { + gpr_log(GPR_DEBUG, "Update hpack parser table size to %d", bytes); + } while (tbl->mem_used > bytes) { evict1(tbl); } @@ -293,10 +299,12 @@ int grpc_chttp2_hptbl_add(grpc_chttp2_hptbl *tbl, grpc_mdelem *md) { GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD; if (tbl->current_table_bytes > tbl->max_bytes) { - gpr_log(GPR_ERROR, - "HPACK max table size reduced to %d but not reflected by hpack " - "stream (still at %d)", - tbl->max_bytes, tbl->current_table_bytes); + if (grpc_http_trace) { + gpr_log(GPR_ERROR, + "HPACK max table size reduced to %d but not reflected by hpack " + "stream (still at %d)", + tbl->max_bytes, tbl->current_table_bytes); + } return 0; } diff --git a/test/core/client_config/uri_corpus/042dc4512fa3d391c5170cf3aa61e6a638f84342 b/test/core/client_config/uri_corpus/042dc4512fa3d391c5170cf3aa61e6a638f84342 new file mode 100644 index 00000000000..597a6db294c --- /dev/null +++ b/test/core/client_config/uri_corpus/042dc4512fa3d391c5170cf3aa61e6a638f84342 @@ -0,0 +1 @@ +i \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/0e9bbe975f2027e8c39c89f85f667530368e7d11 b/test/core/client_config/uri_corpus/0e9bbe975f2027e8c39c89f85f667530368e7d11 new file mode 100644 index 00000000000..d56b8fc6c88 --- /dev/null +++ b/test/core/client_config/uri_corpus/0e9bbe975f2027e8c39c89f85f667530368e7d11 @@ -0,0 +1 @@ +:iii?+n!ij \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/14b57bcbf1e17b1db1de491ef2ba3768f704b7dc b/test/core/client_config/uri_corpus/14b57bcbf1e17b1db1de491ef2ba3768f704b7dc new file mode 100644 index 00000000000..3936e8964c5 --- /dev/null +++ b/test/core/client_config/uri_corpus/14b57bcbf1e17b1db1de491ef2ba3768f704b7dc @@ -0,0 +1 @@ +:i?=niI_!'; \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/1794310671a060eead6e5ee66ac978a18ec7e84f b/test/core/client_config/uri_corpus/1794310671a060eead6e5ee66ac978a18ec7e84f new file mode 100644 index 00000000000..a94c4cf58dd --- /dev/null +++ b/test/core/client_config/uri_corpus/1794310671a060eead6e5ee66ac978a18ec7e84f @@ -0,0 +1,2 @@ +~ipip~6::1 +v::1 diff --git a/test/core/client_config/uri_corpus/1d30b2a79afbaf2828ff42b9a9647e942ba1ab80 b/test/core/client_config/uri_corpus/1d30b2a79afbaf2828ff42b9a9647e942ba1ab80 new file mode 100644 index 00000000000..875ac2a4f91 --- /dev/null +++ b/test/core/client_config/uri_corpus/1d30b2a79afbaf2828ff42b9a9647e942ba1ab80 @@ -0,0 +1 @@ +:il0P/8?n!$i: \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/1fcf5d9c333b70596cf5ba04d1f7affdf445b971 b/test/core/client_config/uri_corpus/1fcf5d9c333b70596cf5ba04d1f7affdf445b971 new file mode 100644 index 00000000000..59469af5285 --- /dev/null +++ b/test/core/client_config/uri_corpus/1fcf5d9c333b70596cf5ba04d1f7affdf445b971 @@ -0,0 +1,3 @@ +iiP*v:::pip~6:::0 +v:::11 + diff --git a/test/core/client_config/uri_corpus/23162c8a8936e20b195404c21337ee734d02a6bc b/test/core/client_config/uri_corpus/23162c8a8936e20b195404c21337ee734d02a6bc new file mode 100644 index 00000000000..2f902351bd8 --- /dev/null +++ b/test/core/client_config/uri_corpus/23162c8a8936e20b195404c21337ee734d02a6bc @@ -0,0 +1 @@ +:ii/i?n!%i* \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/23f3198b815ca60bdadcaae682b9f965dda387f1 b/test/core/client_config/uri_corpus/23f3198b815ca60bdadcaae682b9f965dda387f1 new file mode 100644 index 00000000000..4bdc3f60c02 --- /dev/null +++ b/test/core/client_config/uri_corpus/23f3198b815ca60bdadcaae682b9f965dda387f1 @@ -0,0 +1 @@ +uni::.i?n(!ipR6/ \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/2ef3893b43f1f60b77b59ce06a6bce9815d78eaf b/test/core/client_config/uri_corpus/2ef3893b43f1f60b77b59ce06a6bce9815d78eaf new file mode 100644 index 00000000000..fb7665d0ccb --- /dev/null +++ b/test/core/client_config/uri_corpus/2ef3893b43f1f60b77b59ce06a6bce9815d78eaf @@ -0,0 +1,2 @@ +:/i?n!ipv6:./::abc.* + diff --git a/test/core/client_config/uri_corpus/356c3c129e203b5c74550b4209764d74b9caefce b/test/core/client_config/uri_corpus/356c3c129e203b5c74550b4209764d74b9caefce new file mode 100644 index 00000000000..6c1e22fa32a --- /dev/null +++ b/test/core/client_config/uri_corpus/356c3c129e203b5c74550b4209764d74b9caefce @@ -0,0 +1 @@ +unix://ii:#v6i?n! \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/3b58860f3451d3e7aad99690a8d39782ca5116fc b/test/core/client_config/uri_corpus/3b58860f3451d3e7aad99690a8d39782ca5116fc new file mode 100644 index 00000000000..725b2086c5b --- /dev/null +++ b/test/core/client_config/uri_corpus/3b58860f3451d3e7aad99690a8d39782ca5116fc @@ -0,0 +1,4 @@ +i:i?nip~&2./:::abipip~6c.* + +::1 +v::1 diff --git a/test/core/client_config/uri_corpus/47b5228404451fc9d4071fa69192514bb4ce33c1 b/test/core/client_config/uri_corpus/47b5228404451fc9d4071fa69192514bb4ce33c1 new file mode 100644 index 00000000000..23d52e19a8a --- /dev/null +++ b/test/core/client_config/uri_corpus/47b5228404451fc9d4071fa69192514bb4ce33c1 @@ -0,0 +1 @@ +:iiP/i?n!'i* \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/636c5606fc23713a1bae88c8899c0541cfad4fd8 b/test/core/client_config/uri_corpus/636c5606fc23713a1bae88c8899c0541cfad4fd8 new file mode 100644 index 00000000000..1dc4931ac6e --- /dev/null +++ b/test/core/client_config/uri_corpus/636c5606fc23713a1bae88c8899c0541cfad4fd8 @@ -0,0 +1,4 @@ +:i?n!ip~f2:./::abipip~6c.* + +::1 +v::1 diff --git a/test/core/client_config/uri_corpus/63fe493b270b17426d77a27cbf3abac5b2c2794a b/test/core/client_config/uri_corpus/63fe493b270b17426d77a27cbf3abac5b2c2794a new file mode 100644 index 00000000000..7b9532914e6 --- /dev/null +++ b/test/core/client_config/uri_corpus/63fe493b270b17426d77a27cbf3abac5b2c2794a @@ -0,0 +1 @@ +:i?=niI!'; \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/655300a902b62662296a8e46bfb04fbcb07182cb b/test/core/client_config/uri_corpus/655300a902b62662296a8e46bfb04fbcb07182cb new file mode 100644 index 00000000000..4eaca392656 --- /dev/null +++ b/test/core/client_config/uri_corpus/655300a902b62662296a8e46bfb04fbcb07182cb @@ -0,0 +1 @@ +unix://ii:pv6i?n! \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/6b70979a70a038ff6607d6cf85485ee95baf58e6 b/test/core/client_config/uri_corpus/6b70979a70a038ff6607d6cf85485ee95baf58e6 new file mode 100644 index 00000000000..57cbd72dbcd --- /dev/null +++ b/test/core/client_config/uri_corpus/6b70979a70a038ff6607d6cf85485ee95baf58e6 @@ -0,0 +1 @@ +uni::/i?n!ipR6/ \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/7314ab3545a7535a26e0e8aad67caea5534d68b1 b/test/core/client_config/uri_corpus/7314ab3545a7535a26e0e8aad67caea5534d68b1 new file mode 100644 index 00000000000..e13cf5a8e63 --- /dev/null +++ b/test/core/client_config/uri_corpus/7314ab3545a7535a26e0e8aad67caea5534d68b1 @@ -0,0 +1,2 @@ +ipip~6:::1 +v:::1 diff --git a/test/core/client_config/uri_corpus/884dcaee2908ffe5f12b65b8eba81016099c4266 b/test/core/client_config/uri_corpus/884dcaee2908ffe5f12b65b8eba81016099c4266 new file mode 100644 index 00000000000..58ecc7e2afa --- /dev/null +++ b/test/core/client_config/uri_corpus/884dcaee2908ffe5f12b65b8eba81016099c4266 @@ -0,0 +1 @@ +ip*v:::1 diff --git a/test/core/client_config/uri_corpus/96c8d266b7dc037288ef305c996608270f72e7fb b/test/core/client_config/uri_corpus/96c8d266b7dc037288ef305c996608270f72e7fb new file mode 100644 index 00000000000..efb392b7d99 --- /dev/null +++ b/test/core/client_config/uri_corpus/96c8d266b7dc037288ef305c996608270f72e7fb @@ -0,0 +1,2 @@ +:/i/n!ipv6:::/a.b.c1 + diff --git a/test/core/client_config/uri_corpus/975536c71ade4800415a7e9c2f1b45c35a6d5ea8 b/test/core/client_config/uri_corpus/975536c71ade4800415a7e9c2f1b45c35a6d5ea8 new file mode 100644 index 00000000000..71552225470 --- /dev/null +++ b/test/core/client_config/uri_corpus/975536c71ade4800415a7e9c2f1b45c35a6d5ea8 @@ -0,0 +1 @@ +ilP.i;?n!#i!; \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/99750aa67d30beaea8af565c829d4999aa8cb91b b/test/core/client_config/uri_corpus/99750aa67d30beaea8af565c829d4999aa8cb91b new file mode 100644 index 00000000000..4061e02189e --- /dev/null +++ b/test/core/client_config/uri_corpus/99750aa67d30beaea8af565c829d4999aa8cb91b @@ -0,0 +1 @@ +unix::/i?n!ipv6/ \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/a1f0f9b75bb354eb063d7cba4fcfa2d0b88d63de b/test/core/client_config/uri_corpus/a1f0f9b75bb354eb063d7cba4fcfa2d0b88d63de new file mode 100644 index 00000000000..736e63e7e7e --- /dev/null +++ b/test/core/client_config/uri_corpus/a1f0f9b75bb354eb063d7cba4fcfa2d0b88d63de @@ -0,0 +1 @@ +:ilP/i;n!#i: \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/a296eb3d1d436ed7df7195b10aa3c4de3896f98d b/test/core/client_config/uri_corpus/a296eb3d1d436ed7df7195b10aa3c4de3896f98d new file mode 100644 index 00000000000..dff2f8920de --- /dev/null +++ b/test/core/client_config/uri_corpus/a296eb3d1d436ed7df7195b10aa3c4de3896f98d @@ -0,0 +1 @@ +u+ni::/i?n!ipR3/ \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/a8b8e66050b424f1b8c07d46f868199fb7f60e38 b/test/core/client_config/uri_corpus/a8b8e66050b424f1b8c07d46f868199fb7f60e38 new file mode 100644 index 00000000000..13a115481d2 --- /dev/null +++ b/test/core/client_config/uri_corpus/a8b8e66050b424f1b8c07d46f868199fb7f60e38 @@ -0,0 +1 @@ +uni::pi:miP/?ni.!(Ri?)8/n!'i* \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/af55baf8c8855e563befdf1eefbcbd46c5ddb8d2 b/test/core/client_config/uri_corpus/af55baf8c8855e563befdf1eefbcbd46c5ddb8d2 new file mode 100644 index 00000000000..fe019fc4091 --- /dev/null +++ b/test/core/client_config/uri_corpus/af55baf8c8855e563befdf1eefbcbd46c5ddb8d2 @@ -0,0 +1 @@ +uni::.i!in:/i/n!ipv6:?(pR;::/a.2b \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/b3c0bf66c2bf5d24ef1daf4cc5a9d6d5bd0e8bfd b/test/core/client_config/uri_corpus/b3c0bf66c2bf5d24ef1daf4cc5a9d6d5bd0e8bfd new file mode 100644 index 00000000000..6e12167b521 --- /dev/null +++ b/test/core/client_config/uri_corpus/b3c0bf66c2bf5d24ef1daf4cc5a9d6d5bd0e8bfd @@ -0,0 +1 @@ +:ii/iilP.i;?n?n!#i!;!%* \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/ceb4e2264ba7a8d5be47d276b37ec09489e00245 b/test/core/client_config/uri_corpus/ceb4e2264ba7a8d5be47d276b37ec09489e00245 new file mode 100644 index 00000000000..b5655220d74 --- /dev/null +++ b/test/core/client_config/uri_corpus/ceb4e2264ba7a8d5be47d276b37ec09489e00245 @@ -0,0 +1 @@ +:i?P-niI!'i \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/cf4395958f5bfb46fd6f535a39657d016c75114c b/test/core/client_config/uri_corpus/cf4395958f5bfb46fd6f535a39657d016c75114c new file mode 100644 index 00000000000..a7656724f51 --- /dev/null +++ b/test/core/client_config/uri_corpus/cf4395958f5bfb46fd6f535a39657d016c75114c @@ -0,0 +1 @@ +unix://ipv6::: \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/d46668372b7e20154a89409a7430a28e642afdca b/test/core/client_config/uri_corpus/d46668372b7e20154a89409a7430a28e642afdca new file mode 100644 index 00000000000..d658fb8ee09 --- /dev/null +++ b/test/core/client_config/uri_corpus/d46668372b7e20154a89409a7430a28e642afdca @@ -0,0 +1 @@ +:ilP/i?n!#i: \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/d6fe7412a0a1d1c733160246f3fa425f4f97682a b/test/core/client_config/uri_corpus/d6fe7412a0a1d1c733160246f3fa425f4f97682a new file mode 100644 index 00000000000..6d37b5fd450 --- /dev/null +++ b/test/core/client_config/uri_corpus/d6fe7412a0a1d1c733160246f3fa425f4f97682a @@ -0,0 +1 @@ +:ilP/i?n,!#i: \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/dns.txt b/test/core/client_config/uri_corpus/dns.txt new file mode 100644 index 00000000000..577e1054e4b --- /dev/null +++ b/test/core/client_config/uri_corpus/dns.txt @@ -0,0 +1 @@ +dns:10.2.1.1 diff --git a/test/core/client_config/uri_corpus/ea02d9fea9bad5b89cf353a0169238f584177e71 b/test/core/client_config/uri_corpus/ea02d9fea9bad5b89cf353a0169238f584177e71 new file mode 100644 index 00000000000..52f5a2382ac --- /dev/null +++ b/test/core/client_config/uri_corpus/ea02d9fea9bad5b89cf353a0169238f584177e71 @@ -0,0 +1,4 @@ +i:i?n!ip~f2.:/::abipip~6c.* + +::1 +v::1 diff --git a/test/core/client_config/uri_corpus/ec4731dddf94ed3ea92ae4d5a71f145ab6e3f6ee b/test/core/client_config/uri_corpus/ec4731dddf94ed3ea92ae4d5a71f145ab6e3f6ee new file mode 100644 index 00000000000..c3c93fed6af --- /dev/null +++ b/test/core/client_config/uri_corpus/ec4731dddf94ed3ea92ae4d5a71f145ab6e3f6ee @@ -0,0 +1 @@ +ii-i?n!%* \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/ed2f78646f19fc47dd85ff0877c232b71913ece2 b/test/core/client_config/uri_corpus/ed2f78646f19fc47dd85ff0877c232b71913ece2 new file mode 100644 index 00000000000..45065e2f000 --- /dev/null +++ b/test/core/client_config/uri_corpus/ed2f78646f19fc47dd85ff0877c232b71913ece2 @@ -0,0 +1 @@ +:ii/i?n!%* \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/f6889f4a6350fea1596a3adea5cdac02bd5d1ff3 b/test/core/client_config/uri_corpus/f6889f4a6350fea1596a3adea5cdac02bd5d1ff3 new file mode 100644 index 00000000000..02151c8b6af --- /dev/null +++ b/test/core/client_config/uri_corpus/f6889f4a6350fea1596a3adea5cdac02bd5d1ff3 @@ -0,0 +1,2 @@ +:ipip~6:::1 +vii/:::iunix:?n/1/ipv6!% \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/f6f3bd030f0d321efe7c51ca3f057de23509af67 b/test/core/client_config/uri_corpus/f6f3bd030f0d321efe7c51ca3f057de23509af67 new file mode 100644 index 00000000000..8034e133d7b --- /dev/null +++ b/test/core/client_config/uri_corpus/f6f3bd030f0d321efe7c51ca3f057de23509af67 @@ -0,0 +1 @@ +:iiP/i?n!i* \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/f97598cff03306af3c70400608fec47268b5075d b/test/core/client_config/uri_corpus/f97598cff03306af3c70400608fec47268b5075d new file mode 100644 index 00000000000..240946dbaac --- /dev/null +++ b/test/core/client_config/uri_corpus/f97598cff03306af3c70400608fec47268b5075d @@ -0,0 +1,2 @@ +unix://ipv6:::/a.b.c1 + diff --git a/test/core/client_config/uri_corpus/f9e1ec1fc642b575bc9955618b7065747f56b101 b/test/core/client_config/uri_corpus/f9e1ec1fc642b575bc9955618b7065747f56b101 new file mode 100644 index 00000000000..d089a593462 --- /dev/null +++ b/test/core/client_config/uri_corpus/f9e1ec1fc642b575bc9955618b7065747f56b101 @@ -0,0 +1 @@ +:ilP.i;?n!#i; \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/fe0630a3aeed2ec6f474f362e4c839478290d5c4 b/test/core/client_config/uri_corpus/fe0630a3aeed2ec6f474f362e4c839478290d5c4 new file mode 100644 index 00000000000..66eefbcc14d --- /dev/null +++ b/test/core/client_config/uri_corpus/fe0630a3aeed2ec6f474f362e4c839478290d5c4 @@ -0,0 +1 @@ +:miP/i?)n!'i* \ No newline at end of file diff --git a/test/core/client_config/uri_corpus/ipv4.txt b/test/core/client_config/uri_corpus/ipv4.txt new file mode 100644 index 00000000000..fe29486b6e7 --- /dev/null +++ b/test/core/client_config/uri_corpus/ipv4.txt @@ -0,0 +1 @@ +ipv4:10.2.1.1 diff --git a/test/core/client_config/uri_corpus/ipv6.txt b/test/core/client_config/uri_corpus/ipv6.txt new file mode 100644 index 00000000000..7b6932be00b --- /dev/null +++ b/test/core/client_config/uri_corpus/ipv6.txt @@ -0,0 +1 @@ +ipv6:::1 diff --git a/test/core/client_config/uri_corpus/unix.txt b/test/core/client_config/uri_corpus/unix.txt new file mode 100644 index 00000000000..7a0997ec9a6 --- /dev/null +++ b/test/core/client_config/uri_corpus/unix.txt @@ -0,0 +1 @@ +unix:///a.b.c diff --git a/test/core/client_config/uri_fuzzer_test.c b/test/core/client_config/uri_fuzzer_test.c new file mode 100644 index 00000000000..f39288f1407 --- /dev/null +++ b/test/core/client_config/uri_fuzzer_test.c @@ -0,0 +1,52 @@ +/* + * + * Copyright 2015-2016, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +#include "src/core/client_config/uri_parser.h" + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + char *s = gpr_malloc(size + 1); + memcpy(s, data, size); + s[size] = 0; + + grpc_uri *x; + if ((x = grpc_uri_parse(s, 1))) { + grpc_uri_destroy(x); + } + gpr_free(s); + return 0; +} diff --git a/test/core/httpcli/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 b/test/core/httpcli/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 new file mode 100644 index 00000000000..3d6face56a0 --- /dev/null +++ b/test/core/httpcli/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 @@ -0,0 +1,2 @@ +HTTP/1.1 200 OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba b/test/core/httpcli/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba new file mode 100644 index 00000000000..5cbaf2e460f --- /dev/null +++ b/test/core/httpcli/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba @@ -0,0 +1,2 @@ +HTTP/1.1 8) pMKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/069352518a1d1baa05f317c677d275cefda2ac97 b/test/core/httpcli/corpus/069352518a1d1baa05f317c677d275cefda2ac97 new file mode 100644 index 00000000000..8831f0786bb --- /dev/null +++ b/test/core/httpcli/corpus/069352518a1d1baa05f317c677d275cefda2ac97 @@ -0,0 +1,2 @@ +HTTP/1.1 80) OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/0c5b7c2569410b526605e308309a7f36574e530d b/test/core/httpcli/corpus/0c5b7c2569410b526605e308309a7f36574e530d new file mode 100644 index 00000000000..c79e456904b --- /dev/null +++ b/test/core/httpcli/corpus/0c5b7c2569410b526605e308309a7f36574e530d @@ -0,0 +1,4 @@ +H TTP/16.1 200 OK +test: h!ello + +abcd diff --git a/test/core/httpcli/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf b/test/core/httpcli/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf new file mode 100644 index 00000000000..7b979b5e10f --- /dev/null +++ b/test/core/httpcli/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf @@ -0,0 +1,3 @@ +HTTP/1.1 200 OKH +tHTTP/01.021 Oes,H +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 b/test/core/httpcli/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 new file mode 100644 index 00000000000..67382b4f3af --- /dev/null +++ b/test/core/httpcli/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 @@ -0,0 +1,3 @@ +HTTP/1.1 200 OKHHTTP/1.200 OKH + +tHTHTTP/0 20T:tes/01. \ No newline at end of file diff --git a/test/core/httpcli/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 b/test/core/httpcli/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 new file mode 100644 index 00000000000..cce8ded71af --- /dev/null +++ b/test/core/httpcli/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 @@ -0,0 +1,2 @@ +HTTP/1*9y 200 OKm +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece b/test/core/httpcli/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece new file mode 100644 index 00000000000..8df43e4dcee --- /dev/null +++ b/test/core/httpcli/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece @@ -0,0 +1,2 @@ +HTTP/1.9y 200 OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/39b19c41ba537f37511eff7727733715db432e76 b/test/core/httpcli/corpus/39b19c41ba537f37511eff7727733715db432e76 new file mode 100644 index 00000000000..fefa4512a87 --- /dev/null +++ b/test/core/httpcli/corpus/39b19c41ba537f37511eff7727733715db432e76 @@ -0,0 +1,2 @@ +HTTP/1.1 000 OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac b/test/core/httpcli/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac new file mode 100644 index 00000000000..b967b57614d --- /dev/null +++ b/test/core/httpcli/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac @@ -0,0 +1,3 @@ +HTTP/1.1 200 OKH +tHTTP/01.021 : Oes,H +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 b/test/core/httpcli/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 new file mode 100644 index 00000000000..7d20266703c --- /dev/null +++ b/test/core/httpcli/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 @@ -0,0 +1,2 @@ +HTTP/1.1y 200 OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/487725eb38511c79a9340bf4560a1411061fa6fa b/test/core/httpcli/corpus/487725eb38511c79a9340bf4560a1411061fa6fa new file mode 100644 index 00000000000..c59c4d22466 --- /dev/null +++ b/test/core/httpcli/corpus/487725eb38511c79a9340bf4560a1411061fa6fa @@ -0,0 +1,2 @@ +HTTP/01.021 O,H +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 b/test/core/httpcli/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 new file mode 100644 index 00000000000..49d1c8f1d2e --- /dev/null +++ b/test/core/httpcli/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 @@ -0,0 +1,2 @@ +HTTP/1.1 200 OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/5028c56a5116a186b7343ff59567b47347a0796d b/test/core/httpcli/corpus/5028c56a5116a186b7343ff59567b47347a0796d new file mode 100644 index 00000000000..5f2c4dfef05 --- /dev/null +++ b/test/core/httpcli/corpus/5028c56a5116a186b7343ff59567b47347a0796d @@ -0,0 +1,3 @@ +HTTP/1.1 200 OKH + HTDP/01.021 : Oes,H +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 b/test/core/httpcli/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 new file mode 100644 index 00000000000..9a15ab025fe --- /dev/null +++ b/test/core/httpcli/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 @@ -0,0 +1,2 @@ +HTTP/1. 200 OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/657368df512ca6294b9df16adf935a3f374a8be2 b/test/core/httpcli/corpus/657368df512ca6294b9df16adf935a3f374a8be2 new file mode 100644 index 00000000000..1f14f69103f --- /dev/null +++ b/test/core/httpcli/corpus/657368df512ca6294b9df16adf935a3f374a8be2 @@ -0,0 +1,3 @@ +HTT +/1.1 201 OKH +des \ No newline at end of file diff --git a/test/core/httpcli/corpus/81f59a12b458ec3604035cb962165c604d1355e6 b/test/core/httpcli/corpus/81f59a12b458ec3604035cb962165c604d1355e6 new file mode 100644 index 00000000000..d4223ccf818 --- /dev/null +++ b/test/core/httpcli/corpus/81f59a12b458ec3604035cb962165c604d1355e6 @@ -0,0 +1,2 @@ +HTTP/1.1 8p) )MKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 b/test/core/httpcli/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 new file mode 100644 index 00000000000..99e2c48bbd4 --- /dev/null +++ b/test/core/httpcli/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 @@ -0,0 +1,4 @@ +HTTP/1.1 200 OKH +tHTHTTP/1. 20TP/01.020(: Oes,H0 OKH + +tteses \ No newline at end of file diff --git a/test/core/httpcli/corpus/97e4499d450c95660de86747f527e670f2012548 b/test/core/httpcli/corpus/97e4499d450c95660de86747f527e670f2012548 new file mode 100644 index 00000000000..b1927fbf63d --- /dev/null +++ b/test/core/httpcli/corpus/97e4499d450c95660de86747f527e670f2012548 @@ -0,0 +1,3 @@ +HTHHTT`TT +/1.1 201 P*/OKH +des1.1 2T \ No newline at end of file diff --git a/test/core/httpcli/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 b/test/core/httpcli/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 new file mode 100644 index 00000000000..837449dda35 --- /dev/null +++ b/test/core/httpcli/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 @@ -0,0 +1,2 @@ +HTTP/1.1 80 OH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 b/test/core/httpcli/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 new file mode 100644 index 00000000000..10905bed391 --- /dev/null +++ b/test/core/httpcli/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 @@ -0,0 +1,2 @@ +JHTTP/1.1 200 OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 b/test/core/httpcli/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 new file mode 100644 index 00000000000..2704e4fb392 --- /dev/null +++ b/test/core/httpcli/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 @@ -0,0 +1,2 @@ +HTTP/1.1 767) OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 b/test/core/httpcli/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 new file mode 100644 index 00000000000..f5cbbc69e78 --- /dev/null +++ b/test/core/httpcli/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 @@ -0,0 +1,3 @@ +HJHTHHTT`TT +/1.1 201 P*HHTT/T1/OKH +des1.1 2.1T 20T1 \ No newline at end of file diff --git a/test/core/httpcli/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 b/test/core/httpcli/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 new file mode 100644 index 00000000000..be33d81102f --- /dev/null +++ b/test/core/httpcli/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 @@ -0,0 +1,3 @@ +HTTP/1.1 200 OKH + HTTP/01.021 : Oes,H +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 b/test/core/httpcli/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 new file mode 100644 index 00000000000..ccf918751dc --- /dev/null +++ b/test/core/httpcli/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 @@ -0,0 +1,2 @@ +HTTP/1.200 OKH +tes \ No newline at end of file diff --git a/test/core/httpcli/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 b/test/core/httpcli/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 new file mode 100644 index 00000000000..06f1a3b8002 --- /dev/null +++ b/test/core/httpcli/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 @@ -0,0 +1 @@ +HH \ No newline at end of file diff --git a/test/core/httpcli/corpus/response1.txt b/test/core/httpcli/corpus/response1.txt new file mode 100644 index 00000000000..a17139982e7 --- /dev/null +++ b/test/core/httpcli/corpus/response1.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +test: hello + +abcd diff --git a/test/core/httpcli/fuzzer.c b/test/core/httpcli/fuzzer.c new file mode 100644 index 00000000000..ff960484db5 --- /dev/null +++ b/test/core/httpcli/fuzzer.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2015-2016, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +#include "src/core/httpcli/parser.h" + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + grpc_httpcli_parser parser; + grpc_httpcli_parser_init(&parser); + gpr_slice slice = gpr_slice_from_copied_buffer((const char *)data, size); + grpc_httpcli_parser_parse(&parser, slice); + grpc_httpcli_parser_eof(&parser); + gpr_slice_unref(slice); + grpc_httpcli_parser_destroy(&parser); + return 0; +} diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0141fcddc9807ee093313b2256f1306fbbdc6cda b/test/core/transport/chttp2/hpack_parser_corpus/0141fcddc9807ee093313b2256f1306fbbdc6cda new file mode 100644 index 00000000000..76b12506256 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0141fcddc9807ee093313b2256f1306fbbdc6cda @@ -0,0 +1 @@ +(?ۤ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/06995c2f3f01c7ec50547415dc324c64030b7a3e b/test/core/transport/chttp2/hpack_parser_corpus/06995c2f3f01c7ec50547415dc324c64030b7a3e new file mode 100644 index 0000000000000000000000000000000000000000..be20eb55defbcc12791ab47ff111d7777e72df99 GIT binary patch literal 4 LcmdO6Sdt6?0%rj> literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/06f7ce769fe07804fc842462d4be8c1aa2ba82c2 b/test/core/transport/chttp2/hpack_parser_corpus/06f7ce769fe07804fc842462d4be8c1aa2ba82c2 new file mode 100644 index 00000000000..0edc9f996f6 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/06f7ce769fe07804fc842462d4be8c1aa2ba82c2 @@ -0,0 +1 @@ +(cc \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0828169ba82152a8907f1001e3d98804397d4610 b/test/core/transport/chttp2/hpack_parser_corpus/0828169ba82152a8907f1001e3d98804397d4610 new file mode 100644 index 00000000000..af778fb8af4 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0828169ba82152a8907f1001e3d98804397d4610 @@ -0,0 +1 @@ +! cc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0a10bd140c6c5fb109a0816ca061739688a6db9a b/test/core/transport/chttp2/hpack_parser_corpus/0a10bd140c6c5fb109a0816ca061739688a6db9a new file mode 100644 index 0000000000000000000000000000000000000000..94a69970223d4ff8021cf199586d1b29853446e2 GIT binary patch literal 24 fcmdN|uw)$v1G~VNXbnZqlHTEa6~Ce(L@=IoS#T%cKkl literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0d6210208831fe55951af56cdeee3d54a91a5361 b/test/core/transport/chttp2/hpack_parser_corpus/0d6210208831fe55951af56cdeee3d54a91a5361 new file mode 100644 index 00000000000..001fd0bc880 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0d6210208831fe55951af56cdeee3d54a91a5361 @@ -0,0 +1 @@ +f!(!! i[! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0d784965b2262df7ed7a1eb57b92a718cc76bde8 b/test/core/transport/chttp2/hpack_parser_corpus/0d784965b2262df7ed7a1eb57b92a718cc76bde8 new file mode 100644 index 00000000000..398077e307c --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0d784965b2262df7ed7a1eb57b92a718cc76bde8 @@ -0,0 +1 @@ +! c' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0e9196f951874edbb5ed098739ea5c8b6c0751c2 b/test/core/transport/chttp2/hpack_parser_corpus/0e9196f951874edbb5ed098739ea5c8b6c0751c2 new file mode 100644 index 0000000000000000000000000000000000000000..8a3ef9ea824f1282c70774112333c6ec4171be4e GIT binary patch literal 64 zcmV-G0Kfn6TPPtR2_fZ2{Xr=xAt~)4yecW#Iy;AoD%Hd8DETQ}C@4E8Cp(rU?nY~b Wko7YuC(|j)(L*XJoRt76DDY(mE*Uxi literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/50b3f4b6aed97f442496d27f3b4315a18ba76d5f b/test/core/transport/chttp2/hpack_parser_corpus/50b3f4b6aed97f442496d27f3b4315a18ba76d5f new file mode 100644 index 00000000000..e2e8f9b231b --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/50b3f4b6aed97f442496d27f3b4315a18ba76d5f @@ -0,0 +1 @@ +;;? \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/51eff6fcbfe1a51ceb3f5f2140c01eea89b4313d b/test/core/transport/chttp2/hpack_parser_corpus/51eff6fcbfe1a51ceb3f5f2140c01eea89b4313d new file mode 100644 index 00000000000..b26118fd841 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/51eff6fcbfe1a51ceb3f5f2140c01eea89b4313d @@ -0,0 +1 @@ +cc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5653c44a5b520bdf2bdc599b7966f1d7c44950b3 b/test/core/transport/chttp2/hpack_parser_corpus/5653c44a5b520bdf2bdc599b7966f1d7c44950b3 new file mode 100644 index 00000000000..463f1a40fb0 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/5653c44a5b520bdf2bdc599b7966f1d7c44950b3 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5a99df42fb7bbafa2d55714ee235b1c46776b2ad b/test/core/transport/chttp2/hpack_parser_corpus/5a99df42fb7bbafa2d55714ee235b1c46776b2ad new file mode 100644 index 00000000000..198c062d33a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/5a99df42fb7bbafa2d55714ee235b1c46776b2ad @@ -0,0 +1 @@ +[! c' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d b/test/core/transport/chttp2/hpack_parser_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d new file mode 100644 index 00000000000..0d758c9c7bc --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/65566df65e8f55428b6672cc351df414fa8f936c b/test/core/transport/chttp2/hpack_parser_corpus/65566df65e8f55428b6672cc351df414fa8f936c new file mode 100644 index 00000000000..a273e997885 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/65566df65e8f55428b6672cc351df414fa8f936c @@ -0,0 +1 @@ +'[(!! [(!! !G!GA)(!)!):;* \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/65bb703af35d5afb824cd68c41d7a1aeb3848d35 b/test/core/transport/chttp2/hpack_parser_corpus/65bb703af35d5afb824cd68c41d7a1aeb3848d35 new file mode 100644 index 00000000000..8ac429215fe --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/65bb703af35d5afb824cd68c41d7a1aeb3848d35 @@ -0,0 +1 @@ +[! '(![(!! !G!GA)(!)!):;* \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/78176d80c1d74c4b1b820d386ae483ac4d1d92b7 b/test/core/transport/chttp2/hpack_parser_corpus/78176d80c1d74c4b1b820d386ae483ac4d1d92b7 new file mode 100644 index 00000000000..e9dc85e59cc --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/78176d80c1d74c4b1b820d386ae483ac4d1d92b7 @@ -0,0 +1 @@ +(?! c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/7a28fc2e9c72d51d29e87eed63ed405c9779b5e1 b/test/core/transport/chttp2/hpack_parser_corpus/7a28fc2e9c72d51d29e87eed63ed405c9779b5e1 new file mode 100644 index 00000000000..ad5695bc9ad --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/7a28fc2e9c72d51d29e87eed63ed405c9779b5e1 @@ -0,0 +1 @@ +cc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/7ba7239a29d6183960e3986abc8f19cfb548b905 b/test/core/transport/chttp2/hpack_parser_corpus/7ba7239a29d6183960e3986abc8f19cfb548b905 new file mode 100644 index 00000000000..8985a0765aa --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/7ba7239a29d6183960e3986abc8f19cfb548b905 @@ -0,0 +1 @@ +!cc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8057c32b8bd28a5ec2105d62f2abe8cf69c9f5fc b/test/core/transport/chttp2/hpack_parser_corpus/8057c32b8bd28a5ec2105d62f2abe8cf69c9f5fc new file mode 100644 index 00000000000..a38435872b0 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8057c32b8bd28a5ec2105d62f2abe8cf69c9f5fc @@ -0,0 +1 @@ +f!(!!c' i[![(!! [(!! !H![(!! !GA)(!)!*)GA)(!) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/86bae059b18af8ae263e5ae0022b67da0cfc0fbe b/test/core/transport/chttp2/hpack_parser_corpus/86bae059b18af8ae263e5ae0022b67da0cfc0fbe new file mode 100644 index 00000000000..fc8f2aea186 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/86bae059b18af8ae263e5ae0022b67da0cfc0fbe @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8762a523cdb78d2344d553fa52a229bd63c44e51 b/test/core/transport/chttp2/hpack_parser_corpus/8762a523cdb78d2344d553fa52a229bd63c44e51 new file mode 100644 index 00000000000..e92f115945c --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8762a523cdb78d2344d553fa52a229bd63c44e51 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8fbbf3c0eaa25b64d0a97a8ee08006539e649199 b/test/core/transport/chttp2/hpack_parser_corpus/8fbbf3c0eaa25b64d0a97a8ee08006539e649199 new file mode 100644 index 00000000000..532ee696019 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8fbbf3c0eaa25b64d0a97a8ee08006539e649199 @@ -0,0 +1 @@ +c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/96903512b1f1dec08206123f024b62d0e31cd4dc b/test/core/transport/chttp2/hpack_parser_corpus/96903512b1f1dec08206123f024b62d0e31cd4dc new file mode 100644 index 00000000000..b8c71bd5cdb --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/96903512b1f1dec08206123f024b62d0e31cd4dc @@ -0,0 +1 @@ +c[(! [(!\ !G![(!! !GA)(!)!*)GA)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/999821e3750a7f2c9db663d2d100b4404c225040 b/test/core/transport/chttp2/hpack_parser_corpus/999821e3750a7f2c9db663d2d100b4404c225040 new file mode 100644 index 00000000000..eafc76571c7 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/999821e3750a7f2c9db663d2d100b4404c225040 @@ -0,0 +1 @@ +[(!! ![! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/99b2ed83be40cab431d1940e8de2dc3ebfe9352f b/test/core/transport/chttp2/hpack_parser_corpus/99b2ed83be40cab431d1940e8de2dc3ebfe9352f new file mode 100644 index 0000000000000000000000000000000000000000..168a2155962cc73109e585baa5337e089528b76a GIT binary patch literal 47 zcmV+~0MP#oq#vX^+v4yEV=e%sDr2Ceu44!%01yZ8TPPt3WAG>;TnQndqzC|G+s)5m^8L literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9e56bb3b68d2e2617cb2d2f0f3941f7fc832e462 b/test/core/transport/chttp2/hpack_parser_corpus/9e56bb3b68d2e2617cb2d2f0f3941f7fc832e462 new file mode 100644 index 00000000000..ac4416657c8 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9e56bb3b68d2e2617cb2d2f0f3941f7fc832e462 @@ -0,0 +1 @@ +c'[(!! [(!! !G![(!! !GA)(!)!*)GA)(!) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a871e7ce66afd4f57702cd1299de06cd08995561 b/test/core/transport/chttp2/hpack_parser_corpus/a871e7ce66afd4f57702cd1299de06cd08995561 new file mode 100644 index 0000000000000000000000000000000000000000..59295acbf7955382684033362492806afe8bab0d GIT binary patch literal 31 jcmdN|uw)$v1G~VNXbnZq4o0RU@~2*CgV literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d76d0c7f24ae3cc3f530d5306b8dcc15290c7ff2 b/test/core/transport/chttp2/hpack_parser_corpus/d76d0c7f24ae3cc3f530d5306b8dcc15290c7ff2 new file mode 100644 index 00000000000..81cc0fcbfb8 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/d76d0c7f24ae3cc3f530d5306b8dcc15290c7ff2 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/df01203edfa2dfe9e108ddde786ae48235624fef b/test/core/transport/chttp2/hpack_parser_corpus/df01203edfa2dfe9e108ddde786ae48235624fef new file mode 100644 index 0000000000000000000000000000000000000000..a4520fbd22277b2a51bfa33b25fc49f82ff66bfb GIT binary patch literal 27 jcmdN|uw +#include + +#include +#include + +#include "src/core/transport/chttp2/hpack_parser.h" + +static void onhdr(void *ud, grpc_mdelem *md) { GRPC_MDELEM_UNREF(md); } + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + grpc_init(); + grpc_chttp2_hpack_parser parser; + grpc_chttp2_hpack_parser_init(&parser); + parser.on_header = onhdr; + grpc_chttp2_hpack_parser_parse(&parser, data, data + size); + grpc_chttp2_hpack_parser_destroy(&parser); + grpc_shutdown(); + return 0; +} diff --git a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh new file mode 100644 index 00000000000..932b69e8ce7 --- /dev/null +++ b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Copyright 2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +bins/$config/hpack_parser_fuzzer_test -max_total_time=60 fuzzer_output test/core/transport/chttp2/hpack_parser_corpus diff --git a/tools/fuzzer/runners/httpcli_fuzzer_test.sh b/tools/fuzzer/runners/httpcli_fuzzer_test.sh new file mode 100644 index 00000000000..c4b577879f1 --- /dev/null +++ b/tools/fuzzer/runners/httpcli_fuzzer_test.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Copyright 2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +bins/$config/httpcli_fuzzer_test -max_total_time=60 fuzzer_output test/core/httpcli/corpus diff --git a/tools/fuzzer/runners/uri_fuzzer_test.sh b/tools/fuzzer/runners/uri_fuzzer_test.sh new file mode 100644 index 00000000000..2da8d29d892 --- /dev/null +++ b/tools/fuzzer/runners/uri_fuzzer_test.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Copyright 2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +bins/$config/uri_fuzzer_test -max_total_time=60 fuzzer_output test/core/client_config/uri_corpus diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index d1e660698b6..5ebf6666e88 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -882,6 +882,22 @@ "third_party": false, "type": "target" }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "hpack_parser_fuzzer_test", + "src": [ + "test/core/transport/chttp2/hpack_parser_fuzzer_test.c" + ], + "third_party": false, + "type": "target" + }, { "deps": [ "gpr", @@ -930,6 +946,22 @@ "third_party": false, "type": "target" }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "httpcli_fuzzer_test", + "src": [ + "test/core/httpcli/fuzzer.c" + ], + "third_party": false, + "type": "target" + }, { "deps": [ "gpr", @@ -1551,6 +1583,22 @@ "third_party": false, "type": "target" }, + { + "deps": [ + "gpr", + "gpr_test_util", + "grpc", + "grpc_test_util" + ], + "headers": [], + "language": "c", + "name": "uri_fuzzer_test", + "src": [ + "test/core/client_config/uri_fuzzer_test.c" + ], + "third_party": false, + "type": "target" + }, { "deps": [ "gpr", From cd0fbbdd50608dc043a7668397b716167b8c6815 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 16:02:31 -0700 Subject: [PATCH 24/74] Expand fuzzer corpus --- .../hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4 | 1 + .../hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c | 1 + .../hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075 | 1 + .../hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f | 1 + .../hpack_parser_corpus/ce05678d812a5f8ae8e115938410116ce9169456 | 1 + 5 files changed, 5 insertions(+) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ce05678d812a5f8ae8e115938410116ce9169456 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4 b/test/core/transport/chttp2/hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4 new file mode 100644 index 00000000000..ebb1e884e31 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4 @@ -0,0 +1 @@ +!!c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c b/test/core/transport/chttp2/hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c new file mode 100644 index 00000000000..75aa45a0257 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c @@ -0,0 +1 @@ +;?0c[(! [N!\ !G![(!! !GA)(!)!*)GA)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075 b/test/core/transport/chttp2/hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075 new file mode 100644 index 00000000000..de4be3116b3 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075 @@ -0,0 +1 @@ +;?'c[(! [N!\ !G!*(!! !GA)(!)!*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f b/test/core/transport/chttp2/hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f new file mode 100644 index 00000000000..482d7db5558 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f @@ -0,0 +1 @@ +;?0c!(K [N!\ !G![(!! !GA)(!)!*GA)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ce05678d812a5f8ae8e115938410116ce9169456 b/test/core/transport/chttp2/hpack_parser_corpus/ce05678d812a5f8ae8e115938410116ce9169456 new file mode 100644 index 00000000000..6caf38a6237 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ce05678d812a5f8ae8e115938410116ce9169456 @@ -0,0 +1 @@ +;?0c!(K [N!\!G![(!! !GA)(!)!*GA)(;) \ No newline at end of file From 963c2b757a8576cf0e959bcfedfd03456915a470 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 16:03:34 -0700 Subject: [PATCH 25/74] Allow tracking fuzzer outputs on Jenkins --- tools/jenkins/run_fuzzer.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/jenkins/run_fuzzer.sh b/tools/jenkins/run_fuzzer.sh index 94ee493700f..513a594ae0e 100755 --- a/tools/jenkins/run_fuzzer.sh +++ b/tools/jenkins/run_fuzzer.sh @@ -35,7 +35,7 @@ set -ex export RUN_COMMAND="tools/fuzzer/build_and_run_fuzzer.sh $1" export DOCKER_RUN_SCRIPT=tools/jenkins/docker_run.sh export DOCKERFILE_DIR=tools/dockerfile/test/fuzzer -export OUTPUT_DIR= +export OUTPUT_DIR=fuzzer_output tools/jenkins/build_and_run_docker.sh \ -e RUN_COMMAND="$RUN_COMMAND" \ From 2a712736fe0d8611a8ea402f9fa3e893902bf864 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 14:59:22 -0700 Subject: [PATCH 26/74] Fixes --- Makefile | 8 ++++---- build.yaml | 4 ++-- tools/run_tests/sources_and_headers.json | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index e3124b1e439..d3b5ef88801 100644 --- a/Makefile +++ b/Makefile @@ -7831,7 +7831,7 @@ endif HTTP_REQUEST_FUZZER_TEST_SRC = \ - test/core/httpcli/request_fuzzer.c \ + test/core/http/request_fuzzer.c \ HTTP_REQUEST_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_REQUEST_FUZZER_TEST_SRC)))) ifeq ($(NO_SECURE),true) @@ -7851,7 +7851,7 @@ $(BINDIR)/$(CONFIG)/http_request_fuzzer_test: $(HTTP_REQUEST_FUZZER_TEST_OBJS) $ endif -$(OBJDIR)/$(CONFIG)/test/core/httpcli/request_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +$(OBJDIR)/$(CONFIG)/test/core/http/request_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a deps_http_request_fuzzer_test: $(HTTP_REQUEST_FUZZER_TEST_OBJS:.o=.dep) @@ -7863,7 +7863,7 @@ endif HTTP_RESPONSE_FUZZER_TEST_SRC = \ - test/core/httpcli/response_fuzzer.c \ + test/core/http/response_fuzzer.c \ HTTP_RESPONSE_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_RESPONSE_FUZZER_TEST_SRC)))) ifeq ($(NO_SECURE),true) @@ -7883,7 +7883,7 @@ $(BINDIR)/$(CONFIG)/http_response_fuzzer_test: $(HTTP_RESPONSE_FUZZER_TEST_OBJS) endif -$(OBJDIR)/$(CONFIG)/test/core/httpcli/response_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +$(OBJDIR)/$(CONFIG)/test/core/http/response_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a deps_http_response_fuzzer_test: $(HTTP_RESPONSE_FUZZER_TEST_OBJS:.o=.dep) diff --git a/build.yaml b/build.yaml index 510885b4363..bd75088cc6c 100644 --- a/build.yaml +++ b/build.yaml @@ -1589,7 +1589,7 @@ targets: build: fuzzer language: c src: - - test/core/httpcli/request_fuzzer.c + - test/core/http/request_fuzzer.c deps: - grpc_test_util - grpc @@ -1601,7 +1601,7 @@ targets: build: fuzzer language: c src: - - test/core/httpcli/response_fuzzer.c + - test/core/http/response_fuzzer.c deps: - grpc_test_util - grpc diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 3319c2cb1c4..2e5e5e7cdbf 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -957,7 +957,7 @@ "language": "c", "name": "http_request_fuzzer_test", "src": [ - "test/core/httpcli/request_fuzzer.c" + "test/core/http/request_fuzzer.c" ], "third_party": false, "type": "target" @@ -973,7 +973,7 @@ "language": "c", "name": "http_response_fuzzer_test", "src": [ - "test/core/httpcli/response_fuzzer.c" + "test/core/http/response_fuzzer.c" ], "third_party": false, "type": "target" From 2123974071e502cde2dea3a457dccfe66af58bc1 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 16:33:28 -0700 Subject: [PATCH 27/74] Merge fixes --- Makefile | 71 +++++-------------- build.yaml | 24 ++----- .../0299ca2580e4398d170c4a336e0c33eb2cd9d427 | 0 .../05e613853d64a9669ea3cf41b0de777dc24931ba | 0 .../069352518a1d1baa05f317c677d275cefda2ac97 | 0 .../0c5b7c2569410b526605e308309a7f36574e530d | 0 .../0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf | 0 .../1e1273f90187fdf5df3625764245610f86af6aa4 | 0 .../33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 | 0 .../35f0c561297cfc840ddaeebb9fc61091f4eadece | 0 .../39b19c41ba537f37511eff7727733715db432e76 | 0 .../3e3c4756d5e40b5aa250954cbac86b826e70a7ac | 0 .../3fb034e66ee5494a67acae1b4e6ff64ba92a2046 | 0 .../487725eb38511c79a9340bf4560a1411061fa6fa | 0 .../4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 | 0 .../5028c56a5116a186b7343ff59567b47347a0796d | 0 .../5b6292bdf009b0daecbc90b85cca30a88c36eec5 | 0 .../657368df512ca6294b9df16adf935a3f374a8be2 | 0 .../81f59a12b458ec3604035cb962165c604d1355e6 | 0 .../8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 | 0 .../97e4499d450c95660de86747f527e670f2012548 | 0 .../aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 | 0 .../b04fea5c041c707db0ad9c09a81672557b52cc47 | 0 .../c55ce9995b002e88a102ae2891a71e8bacb346c8 | 0 .../ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 | 0 .../d4c3e4cf5d035596433c30eaabbd2b2925f4b453 | 0 .../d936dad71c129cf659097dc3db64550c4dd467f4 | 0 .../fc5d4b9117ba9e87388174aee4f4970bdfe8d066 | 0 .../{request_corpus => corpus}/request1.txt | 0 .../{response_corpus => corpus}/response1.txt | 0 test/core/http/{request_fuzzer.c => fuzzer.c} | 12 ++-- test/core/http/response_fuzzer.c | 50 ------------- ...est_fuzzer_test.sh => http_fuzzer_test.sh} | 2 +- .../runners/http_response_fuzzer_test.sh | 32 --------- tools/run_tests/sources_and_headers.json | 24 ++----- 35 files changed, 36 insertions(+), 179 deletions(-) rename test/core/http/{response_corpus => corpus}/0299ca2580e4398d170c4a336e0c33eb2cd9d427 (100%) rename test/core/http/{response_corpus => corpus}/05e613853d64a9669ea3cf41b0de777dc24931ba (100%) rename test/core/http/{response_corpus => corpus}/069352518a1d1baa05f317c677d275cefda2ac97 (100%) rename test/core/http/{response_corpus => corpus}/0c5b7c2569410b526605e308309a7f36574e530d (100%) rename test/core/http/{response_corpus => corpus}/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf (100%) rename test/core/http/{response_corpus => corpus}/1e1273f90187fdf5df3625764245610f86af6aa4 (100%) rename test/core/http/{response_corpus => corpus}/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 (100%) rename test/core/http/{response_corpus => corpus}/35f0c561297cfc840ddaeebb9fc61091f4eadece (100%) rename test/core/http/{response_corpus => corpus}/39b19c41ba537f37511eff7727733715db432e76 (100%) rename test/core/http/{response_corpus => corpus}/3e3c4756d5e40b5aa250954cbac86b826e70a7ac (100%) rename test/core/http/{response_corpus => corpus}/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 (100%) rename test/core/http/{response_corpus => corpus}/487725eb38511c79a9340bf4560a1411061fa6fa (100%) rename test/core/http/{response_corpus => corpus}/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 (100%) rename test/core/http/{response_corpus => corpus}/5028c56a5116a186b7343ff59567b47347a0796d (100%) rename test/core/http/{response_corpus => corpus}/5b6292bdf009b0daecbc90b85cca30a88c36eec5 (100%) rename test/core/http/{response_corpus => corpus}/657368df512ca6294b9df16adf935a3f374a8be2 (100%) rename test/core/http/{response_corpus => corpus}/81f59a12b458ec3604035cb962165c604d1355e6 (100%) rename test/core/http/{response_corpus => corpus}/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 (100%) rename test/core/http/{response_corpus => corpus}/97e4499d450c95660de86747f527e670f2012548 (100%) rename test/core/http/{response_corpus => corpus}/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 (100%) rename test/core/http/{response_corpus => corpus}/b04fea5c041c707db0ad9c09a81672557b52cc47 (100%) rename test/core/http/{response_corpus => corpus}/c55ce9995b002e88a102ae2891a71e8bacb346c8 (100%) rename test/core/http/{response_corpus => corpus}/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 (100%) rename test/core/http/{response_corpus => corpus}/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 (100%) rename test/core/http/{response_corpus => corpus}/d936dad71c129cf659097dc3db64550c4dd467f4 (100%) rename test/core/http/{response_corpus => corpus}/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 (100%) rename test/core/http/{request_corpus => corpus}/request1.txt (100%) rename test/core/http/{response_corpus => corpus}/response1.txt (100%) rename test/core/http/{request_fuzzer.c => fuzzer.c} (89%) delete mode 100644 test/core/http/response_fuzzer.c rename tools/fuzzer/runners/{http_request_fuzzer_test.sh => http_fuzzer_test.sh} (93%) delete mode 100644 tools/fuzzer/runners/http_response_fuzzer_test.sh diff --git a/Makefile b/Makefile index d3b5ef88801..b974126a974 100644 --- a/Makefile +++ b/Makefile @@ -928,9 +928,8 @@ grpc_verify_jwt: $(BINDIR)/$(CONFIG)/grpc_verify_jwt hpack_parser_fuzzer_test: $(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test hpack_parser_test: $(BINDIR)/$(CONFIG)/hpack_parser_test hpack_table_test: $(BINDIR)/$(CONFIG)/hpack_table_test +http_fuzzer_test: $(BINDIR)/$(CONFIG)/http_fuzzer_test http_parser_test: $(BINDIR)/$(CONFIG)/http_parser_test -http_request_fuzzer_test: $(BINDIR)/$(CONFIG)/http_request_fuzzer_test -http_response_fuzzer_test: $(BINDIR)/$(CONFIG)/http_response_fuzzer_test httpcli_format_request_test: $(BINDIR)/$(CONFIG)/httpcli_format_request_test httpcli_test: $(BINDIR)/$(CONFIG)/httpcli_test httpscli_test: $(BINDIR)/$(CONFIG)/httpscli_test @@ -7798,98 +7797,66 @@ endif endif -HTTP_PARSER_TEST_SRC = \ - test/core/http/parser_test.c \ +HTTP_FUZZER_TEST_SRC = \ + test/core/http/fuzzer.c \ -HTTP_PARSER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_PARSER_TEST_SRC)))) +HTTP_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_FUZZER_TEST_SRC)))) ifeq ($(NO_SECURE),true) # You can't build secure targets if you don't have OpenSSL. -$(BINDIR)/$(CONFIG)/http_parser_test: openssl_dep_error +$(BINDIR)/$(CONFIG)/http_fuzzer_test: openssl_dep_error else -$(BINDIR)/$(CONFIG)/http_parser_test: $(HTTP_PARSER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +$(BINDIR)/$(CONFIG)/http_fuzzer_test: $(HTTP_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(E) "[LD] Linking $@" $(Q) mkdir -p `dirname $@` - $(Q) $(LD) $(LDFLAGS) $(HTTP_PARSER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/http_parser_test + $(Q) $(LDXX) $(LDFLAGS) $(HTTP_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/http_fuzzer_test endif -$(OBJDIR)/$(CONFIG)/test/core/http/parser_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +$(OBJDIR)/$(CONFIG)/test/core/http/fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a -deps_http_parser_test: $(HTTP_PARSER_TEST_OBJS:.o=.dep) +deps_http_fuzzer_test: $(HTTP_FUZZER_TEST_OBJS:.o=.dep) ifneq ($(NO_SECURE),true) ifneq ($(NO_DEPS),true) --include $(HTTP_PARSER_TEST_OBJS:.o=.dep) +-include $(HTTP_FUZZER_TEST_OBJS:.o=.dep) endif endif -HTTP_REQUEST_FUZZER_TEST_SRC = \ - test/core/http/request_fuzzer.c \ - -HTTP_REQUEST_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_REQUEST_FUZZER_TEST_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure targets if you don't have OpenSSL. - -$(BINDIR)/$(CONFIG)/http_request_fuzzer_test: openssl_dep_error - -else - - - -$(BINDIR)/$(CONFIG)/http_request_fuzzer_test: $(HTTP_REQUEST_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a - $(E) "[LD] Linking $@" - $(Q) mkdir -p `dirname $@` - $(Q) $(LDXX) $(LDFLAGS) $(HTTP_REQUEST_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/http_request_fuzzer_test - -endif - -$(OBJDIR)/$(CONFIG)/test/core/http/request_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a - -deps_http_request_fuzzer_test: $(HTTP_REQUEST_FUZZER_TEST_OBJS:.o=.dep) - -ifneq ($(NO_SECURE),true) -ifneq ($(NO_DEPS),true) --include $(HTTP_REQUEST_FUZZER_TEST_OBJS:.o=.dep) -endif -endif - - -HTTP_RESPONSE_FUZZER_TEST_SRC = \ - test/core/http/response_fuzzer.c \ +HTTP_PARSER_TEST_SRC = \ + test/core/http/parser_test.c \ -HTTP_RESPONSE_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_RESPONSE_FUZZER_TEST_SRC)))) +HTTP_PARSER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_PARSER_TEST_SRC)))) ifeq ($(NO_SECURE),true) # You can't build secure targets if you don't have OpenSSL. -$(BINDIR)/$(CONFIG)/http_response_fuzzer_test: openssl_dep_error +$(BINDIR)/$(CONFIG)/http_parser_test: openssl_dep_error else -$(BINDIR)/$(CONFIG)/http_response_fuzzer_test: $(HTTP_RESPONSE_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +$(BINDIR)/$(CONFIG)/http_parser_test: $(HTTP_PARSER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(E) "[LD] Linking $@" $(Q) mkdir -p `dirname $@` - $(Q) $(LDXX) $(LDFLAGS) $(HTTP_RESPONSE_FUZZER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/http_response_fuzzer_test + $(Q) $(LD) $(LDFLAGS) $(HTTP_PARSER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/http_parser_test endif -$(OBJDIR)/$(CONFIG)/test/core/http/response_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a +$(OBJDIR)/$(CONFIG)/test/core/http/parser_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a -deps_http_response_fuzzer_test: $(HTTP_RESPONSE_FUZZER_TEST_OBJS:.o=.dep) +deps_http_parser_test: $(HTTP_PARSER_TEST_OBJS:.o=.dep) ifneq ($(NO_SECURE),true) ifneq ($(NO_DEPS),true) --include $(HTTP_RESPONSE_FUZZER_TEST_OBJS:.o=.dep) +-include $(HTTP_PARSER_TEST_OBJS:.o=.dep) endif endif diff --git a/build.yaml b/build.yaml index bd75088cc6c..76a126c9470 100644 --- a/build.yaml +++ b/build.yaml @@ -1575,40 +1575,28 @@ targets: - grpc - gpr_test_util - gpr -- name: http_parser_test - build: test - language: c - src: - - test/core/http/parser_test.c - deps: - - grpc_test_util - - grpc - - gpr_test_util - - gpr -- name: http_request_fuzzer_test +- name: http_fuzzer_test build: fuzzer language: c src: - - test/core/http/request_fuzzer.c + - test/core/http/fuzzer.c deps: - grpc_test_util - grpc - gpr_test_util - gpr corpus_dirs: - - test/core/http/request_corpus -- name: http_response_fuzzer_test - build: fuzzer + - test/core/http/corpus +- name: http_parser_test + build: test language: c src: - - test/core/http/response_fuzzer.c + - test/core/http/parser_test.c deps: - grpc_test_util - grpc - gpr_test_util - gpr - corpus_dirs: - - test/core/http/response_corpus - name: httpcli_format_request_test build: test language: c diff --git a/test/core/http/response_corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 b/test/core/http/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 similarity index 100% rename from test/core/http/response_corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 rename to test/core/http/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 diff --git a/test/core/http/response_corpus/05e613853d64a9669ea3cf41b0de777dc24931ba b/test/core/http/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba similarity index 100% rename from test/core/http/response_corpus/05e613853d64a9669ea3cf41b0de777dc24931ba rename to test/core/http/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba diff --git a/test/core/http/response_corpus/069352518a1d1baa05f317c677d275cefda2ac97 b/test/core/http/corpus/069352518a1d1baa05f317c677d275cefda2ac97 similarity index 100% rename from test/core/http/response_corpus/069352518a1d1baa05f317c677d275cefda2ac97 rename to test/core/http/corpus/069352518a1d1baa05f317c677d275cefda2ac97 diff --git a/test/core/http/response_corpus/0c5b7c2569410b526605e308309a7f36574e530d b/test/core/http/corpus/0c5b7c2569410b526605e308309a7f36574e530d similarity index 100% rename from test/core/http/response_corpus/0c5b7c2569410b526605e308309a7f36574e530d rename to test/core/http/corpus/0c5b7c2569410b526605e308309a7f36574e530d diff --git a/test/core/http/response_corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf b/test/core/http/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf similarity index 100% rename from test/core/http/response_corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf rename to test/core/http/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf diff --git a/test/core/http/response_corpus/1e1273f90187fdf5df3625764245610f86af6aa4 b/test/core/http/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 similarity index 100% rename from test/core/http/response_corpus/1e1273f90187fdf5df3625764245610f86af6aa4 rename to test/core/http/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 diff --git a/test/core/http/response_corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 b/test/core/http/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 similarity index 100% rename from test/core/http/response_corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 rename to test/core/http/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 diff --git a/test/core/http/response_corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece b/test/core/http/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece similarity index 100% rename from test/core/http/response_corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece rename to test/core/http/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece diff --git a/test/core/http/response_corpus/39b19c41ba537f37511eff7727733715db432e76 b/test/core/http/corpus/39b19c41ba537f37511eff7727733715db432e76 similarity index 100% rename from test/core/http/response_corpus/39b19c41ba537f37511eff7727733715db432e76 rename to test/core/http/corpus/39b19c41ba537f37511eff7727733715db432e76 diff --git a/test/core/http/response_corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac b/test/core/http/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac similarity index 100% rename from test/core/http/response_corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac rename to test/core/http/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac diff --git a/test/core/http/response_corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 b/test/core/http/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 similarity index 100% rename from test/core/http/response_corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 rename to test/core/http/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 diff --git a/test/core/http/response_corpus/487725eb38511c79a9340bf4560a1411061fa6fa b/test/core/http/corpus/487725eb38511c79a9340bf4560a1411061fa6fa similarity index 100% rename from test/core/http/response_corpus/487725eb38511c79a9340bf4560a1411061fa6fa rename to test/core/http/corpus/487725eb38511c79a9340bf4560a1411061fa6fa diff --git a/test/core/http/response_corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 b/test/core/http/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 similarity index 100% rename from test/core/http/response_corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 rename to test/core/http/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 diff --git a/test/core/http/response_corpus/5028c56a5116a186b7343ff59567b47347a0796d b/test/core/http/corpus/5028c56a5116a186b7343ff59567b47347a0796d similarity index 100% rename from test/core/http/response_corpus/5028c56a5116a186b7343ff59567b47347a0796d rename to test/core/http/corpus/5028c56a5116a186b7343ff59567b47347a0796d diff --git a/test/core/http/response_corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 b/test/core/http/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 similarity index 100% rename from test/core/http/response_corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 rename to test/core/http/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 diff --git a/test/core/http/response_corpus/657368df512ca6294b9df16adf935a3f374a8be2 b/test/core/http/corpus/657368df512ca6294b9df16adf935a3f374a8be2 similarity index 100% rename from test/core/http/response_corpus/657368df512ca6294b9df16adf935a3f374a8be2 rename to test/core/http/corpus/657368df512ca6294b9df16adf935a3f374a8be2 diff --git a/test/core/http/response_corpus/81f59a12b458ec3604035cb962165c604d1355e6 b/test/core/http/corpus/81f59a12b458ec3604035cb962165c604d1355e6 similarity index 100% rename from test/core/http/response_corpus/81f59a12b458ec3604035cb962165c604d1355e6 rename to test/core/http/corpus/81f59a12b458ec3604035cb962165c604d1355e6 diff --git a/test/core/http/response_corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 b/test/core/http/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 similarity index 100% rename from test/core/http/response_corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 rename to test/core/http/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 diff --git a/test/core/http/response_corpus/97e4499d450c95660de86747f527e670f2012548 b/test/core/http/corpus/97e4499d450c95660de86747f527e670f2012548 similarity index 100% rename from test/core/http/response_corpus/97e4499d450c95660de86747f527e670f2012548 rename to test/core/http/corpus/97e4499d450c95660de86747f527e670f2012548 diff --git a/test/core/http/response_corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 b/test/core/http/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 similarity index 100% rename from test/core/http/response_corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 rename to test/core/http/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 diff --git a/test/core/http/response_corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 b/test/core/http/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 similarity index 100% rename from test/core/http/response_corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 rename to test/core/http/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 diff --git a/test/core/http/response_corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 b/test/core/http/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 similarity index 100% rename from test/core/http/response_corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 rename to test/core/http/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 diff --git a/test/core/http/response_corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 b/test/core/http/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 similarity index 100% rename from test/core/http/response_corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 rename to test/core/http/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 diff --git a/test/core/http/response_corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 b/test/core/http/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 similarity index 100% rename from test/core/http/response_corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 rename to test/core/http/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 diff --git a/test/core/http/response_corpus/d936dad71c129cf659097dc3db64550c4dd467f4 b/test/core/http/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 similarity index 100% rename from test/core/http/response_corpus/d936dad71c129cf659097dc3db64550c4dd467f4 rename to test/core/http/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 diff --git a/test/core/http/response_corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 b/test/core/http/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 similarity index 100% rename from test/core/http/response_corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 rename to test/core/http/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 diff --git a/test/core/http/request_corpus/request1.txt b/test/core/http/corpus/request1.txt similarity index 100% rename from test/core/http/request_corpus/request1.txt rename to test/core/http/corpus/request1.txt diff --git a/test/core/http/response_corpus/response1.txt b/test/core/http/corpus/response1.txt similarity index 100% rename from test/core/http/response_corpus/response1.txt rename to test/core/http/corpus/response1.txt diff --git a/test/core/http/request_fuzzer.c b/test/core/http/fuzzer.c similarity index 89% rename from test/core/http/request_fuzzer.c rename to test/core/http/fuzzer.c index ff960484db5..0aa95ee9e4d 100644 --- a/test/core/http/request_fuzzer.c +++ b/test/core/http/fuzzer.c @@ -36,15 +36,15 @@ #include -#include "src/core/httpcli/parser.h" +#include "src/core/http/parser.h" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - grpc_httpcli_parser parser; - grpc_httpcli_parser_init(&parser); + grpc_http_parser parser; + grpc_http_parser_init(&parser); gpr_slice slice = gpr_slice_from_copied_buffer((const char *)data, size); - grpc_httpcli_parser_parse(&parser, slice); - grpc_httpcli_parser_eof(&parser); + grpc_http_parser_parse(&parser, slice); + grpc_http_parser_eof(&parser); gpr_slice_unref(slice); - grpc_httpcli_parser_destroy(&parser); + grpc_http_parser_destroy(&parser); return 0; } diff --git a/test/core/http/response_fuzzer.c b/test/core/http/response_fuzzer.c deleted file mode 100644 index ff960484db5..00000000000 --- a/test/core/http/response_fuzzer.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * - * Copyright 2015-2016, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -#include -#include - -#include - -#include "src/core/httpcli/parser.h" - -int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - grpc_httpcli_parser parser; - grpc_httpcli_parser_init(&parser); - gpr_slice slice = gpr_slice_from_copied_buffer((const char *)data, size); - grpc_httpcli_parser_parse(&parser, slice); - grpc_httpcli_parser_eof(&parser); - gpr_slice_unref(slice); - grpc_httpcli_parser_destroy(&parser); - return 0; -} diff --git a/tools/fuzzer/runners/http_request_fuzzer_test.sh b/tools/fuzzer/runners/http_fuzzer_test.sh similarity index 93% rename from tools/fuzzer/runners/http_request_fuzzer_test.sh rename to tools/fuzzer/runners/http_fuzzer_test.sh index fbcd8303796..afbc4f4c955 100644 --- a/tools/fuzzer/runners/http_request_fuzzer_test.sh +++ b/tools/fuzzer/runners/http_fuzzer_test.sh @@ -29,4 +29,4 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/http_request_fuzzer_test -max_total_time=60 fuzzer_output test/core/http/request_corpus +bins/$config/http_fuzzer_test -max_total_time=60 fuzzer_output test/core/http/corpus diff --git a/tools/fuzzer/runners/http_response_fuzzer_test.sh b/tools/fuzzer/runners/http_response_fuzzer_test.sh deleted file mode 100644 index 8e3f4943704..00000000000 --- a/tools/fuzzer/runners/http_response_fuzzer_test.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# Copyright 2016, Google Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -bins/$config/http_response_fuzzer_test -max_total_time=60 fuzzer_output test/core/http/response_corpus diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index 2e5e5e7cdbf..3ec51db5986 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -939,25 +939,9 @@ ], "headers": [], "language": "c", - "name": "http_parser_test", - "src": [ - "test/core/http/parser_test.c" - ], - "third_party": false, - "type": "target" - }, - { - "deps": [ - "gpr", - "gpr_test_util", - "grpc", - "grpc_test_util" - ], - "headers": [], - "language": "c", - "name": "http_request_fuzzer_test", + "name": "http_fuzzer_test", "src": [ - "test/core/http/request_fuzzer.c" + "test/core/http/fuzzer.c" ], "third_party": false, "type": "target" @@ -971,9 +955,9 @@ ], "headers": [], "language": "c", - "name": "http_response_fuzzer_test", + "name": "http_parser_test", "src": [ - "test/core/http/response_fuzzer.c" + "test/core/http/parser_test.c" ], "third_party": false, "type": "target" From 0418d38803db4703b949de13bec393d456035fc4 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 16:54:06 -0700 Subject: [PATCH 28/74] less-logs --- src/core/http/parser.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/core/http/parser.c b/src/core/http/parser.c index ebec8a5157f..8a129374cfd 100644 --- a/src/core/http/parser.c +++ b/src/core/http/parser.c @@ -39,6 +39,8 @@ #include #include +extern int grpc_http_trace; + static char *buf2str(void *buffer, size_t length) { char *out = gpr_malloc(length + 1); memcpy(out, buffer, length); @@ -72,7 +74,7 @@ static int handle_response_line(grpc_http_parser *parser) { return 1; error: - gpr_log(GPR_ERROR, "Failed parsing response line"); + if (grpc_http_trace) gpr_log(GPR_ERROR, "Failed parsing response line"); return 0; } @@ -125,7 +127,7 @@ static int handle_request_line(grpc_http_parser *parser) { return 1; error: - gpr_log(GPR_ERROR, "Failed parsing request line"); + if (grpc_http_trace) gpr_log(GPR_ERROR, "Failed parsing request line"); return 0; } @@ -150,7 +152,8 @@ static int add_header(grpc_http_parser *parser) { GPR_ASSERT(cur != end); if (*cur == ' ' || *cur == '\t') { - gpr_log(GPR_ERROR, "Continued header lines not supported yet"); + if (grpc_http_trace) + gpr_log(GPR_ERROR, "Continued header lines not supported yet"); goto error; } @@ -158,7 +161,7 @@ static int add_header(grpc_http_parser *parser) { cur++; } if (cur == end) { - gpr_log(GPR_ERROR, "Didn't find ':' in header string"); + if (grpc_http_trace) gpr_log(GPR_ERROR, "Didn't find ':' in header string"); goto error; } GPR_ASSERT(cur >= beg); @@ -249,8 +252,9 @@ static int addbyte(grpc_http_parser *parser, uint8_t byte) { case GRPC_HTTP_FIRST_LINE: case GRPC_HTTP_HEADERS: if (parser->cur_line_length >= GRPC_HTTP_PARSER_MAX_HEADER_LENGTH) { - gpr_log(GPR_ERROR, "HTTP client max line length (%d) exceeded", - GRPC_HTTP_PARSER_MAX_HEADER_LENGTH); + if (grpc_http_trace) + gpr_log(GPR_ERROR, "HTTP client max line length (%d) exceeded", + GRPC_HTTP_PARSER_MAX_HEADER_LENGTH); return 0; } parser->cur_line[parser->cur_line_length] = byte; From 75e50e4fbf3b2050a44267d151d16150d6954090 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 17:03:27 -0700 Subject: [PATCH 29/74] Expand corpus --- .../http/corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34 | 2 ++ .../http/corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55 | 3 +++ .../http/corpus/24756c396bc72894fd720092bb6f9c03e66b469f | 2 ++ .../http/corpus/276def41311933421ae7a9ee42e906c85b6a4d3f | 2 ++ .../http/corpus/29daa75432381937fd005cb25e314e328de6e9f9 | 2 ++ .../http/corpus/2a75204bc492084ad853682f8de3fb137d5907bc | 2 ++ .../http/corpus/2d34ba249b755a880525cf53c665633a5e359305 | 2 ++ .../http/corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b | 4 ++++ .../http/corpus/3953688866ccb3b4f371f1a858570d6afdb6452d | 3 +++ .../http/corpus/3f03265921120c6ffa61b944e213e062a5538d4b | 2 ++ .../http/corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9 | 4 ++++ .../http/corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5 | 2 ++ .../http/corpus/533f62b3f495ce704babf3ee8d840f196a714dff | 4 ++++ .../http/corpus/5892cbb284771fc9761caae37b19cd6e27dbc104 | 2 ++ .../http/corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee | 2 ++ .../http/corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0 | 2 ++ .../http/corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e | 2 ++ .../http/corpus/7fc4520094902ce2c760d70eaad5b674d2817337 | 5 +++++ .../http/corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c | 2 ++ .../http/corpus/9a996857196e0998a1278994a9bab3d35526e7f1 | 2 ++ .../http/corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8 | 3 +++ .../http/corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1 | 5 +++++ .../http/corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85 | 3 +++ .../http/corpus/c4acff8aa2ff886f35439f72625d05002990c940 | 4 ++++ .../http/corpus/cce734f1b263de6994f7950e0df7bf0c81449f70 | 3 +++ .../http/corpus/d51f7fcc089f269c7afecaaca51966bab5fde629 | 2 ++ .../http/corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b | 3 +++ .../http/corpus/e5c364b205855a2991ce07482aebb2a3a6147089 | 2 ++ .../http/corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb | 2 ++ .../http/corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b | 2 ++ test/core/http/corpus/request2.txt | 3 +++ test/core/http/corpus/request3.txt | 3 +++ test/core/http/corpus/request4.txt | 3 +++ test/core/http/corpus/request5.txt | 3 +++ test/core/http/corpus/response2.txt | 4 ++++ test/core/http/corpus/response3.txt | 5 +++++ tools/jenkins/run_fuzzer.sh | 1 + 37 files changed, 102 insertions(+) create mode 100644 test/core/http/corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34 create mode 100644 test/core/http/corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55 create mode 100644 test/core/http/corpus/24756c396bc72894fd720092bb6f9c03e66b469f create mode 100644 test/core/http/corpus/276def41311933421ae7a9ee42e906c85b6a4d3f create mode 100644 test/core/http/corpus/29daa75432381937fd005cb25e314e328de6e9f9 create mode 100644 test/core/http/corpus/2a75204bc492084ad853682f8de3fb137d5907bc create mode 100644 test/core/http/corpus/2d34ba249b755a880525cf53c665633a5e359305 create mode 100644 test/core/http/corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b create mode 100644 test/core/http/corpus/3953688866ccb3b4f371f1a858570d6afdb6452d create mode 100644 test/core/http/corpus/3f03265921120c6ffa61b944e213e062a5538d4b create mode 100644 test/core/http/corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9 create mode 100644 test/core/http/corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5 create mode 100644 test/core/http/corpus/533f62b3f495ce704babf3ee8d840f196a714dff create mode 100644 test/core/http/corpus/5892cbb284771fc9761caae37b19cd6e27dbc104 create mode 100644 test/core/http/corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee create mode 100644 test/core/http/corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0 create mode 100644 test/core/http/corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e create mode 100644 test/core/http/corpus/7fc4520094902ce2c760d70eaad5b674d2817337 create mode 100644 test/core/http/corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c create mode 100644 test/core/http/corpus/9a996857196e0998a1278994a9bab3d35526e7f1 create mode 100644 test/core/http/corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8 create mode 100644 test/core/http/corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1 create mode 100644 test/core/http/corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85 create mode 100644 test/core/http/corpus/c4acff8aa2ff886f35439f72625d05002990c940 create mode 100644 test/core/http/corpus/cce734f1b263de6994f7950e0df7bf0c81449f70 create mode 100644 test/core/http/corpus/d51f7fcc089f269c7afecaaca51966bab5fde629 create mode 100644 test/core/http/corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b create mode 100644 test/core/http/corpus/e5c364b205855a2991ce07482aebb2a3a6147089 create mode 100644 test/core/http/corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb create mode 100644 test/core/http/corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b create mode 100644 test/core/http/corpus/request2.txt create mode 100644 test/core/http/corpus/request3.txt create mode 100644 test/core/http/corpus/request4.txt create mode 100644 test/core/http/corpus/request5.txt create mode 100644 test/core/http/corpus/response2.txt create mode 100644 test/core/http/corpus/response3.txt diff --git a/test/core/http/corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34 b/test/core/http/corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34 new file mode 100644 index 00000000000..10967d975c2 --- /dev/null +++ b/test/core/http/corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34 @@ -0,0 +1,2 @@ +HTT/21. 200 HT!TP/1OKH.1HTTP 200 OKH +tHT//1T0P.1y 2001. \ No newline at end of file diff --git a/test/core/http/corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55 b/test/core/http/corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55 new file mode 100644 index 00000000000..deb8265a30e --- /dev/null +++ b/test/core/http/corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55 @@ -0,0 +1,3 @@ +JHTT/21. 20 HTTP/1.1 200 OKHHTTP/1.200 OKH + +tHTHTHTJHTTPT \ No newline at end of file diff --git a/test/core/http/corpus/24756c396bc72894fd720092bb6f9c03e66b469f b/test/core/http/corpus/24756c396bc72894fd720092bb6f9c03e66b469f new file mode 100644 index 00000000000..9f2e0e4a257 --- /dev/null +++ b/test/core/http/corpus/24756c396bc72894fd720092bb6f9c03e66b469f @@ -0,0 +1,2 @@ +JHTT/21. 200HTT/0OKH.1 HTTP/200 OKH +tH1.T \ No newline at end of file diff --git a/test/core/http/corpus/276def41311933421ae7a9ee42e906c85b6a4d3f b/test/core/http/corpus/276def41311933421ae7a9ee42e906c85b6a4d3f new file mode 100644 index 00000000000..4db04b260a5 --- /dev/null +++ b/test/core/http/corpus/276def41311933421ae7a9ee42e906c85b6a4d3f @@ -0,0 +1,2 @@ +ITTP/11 20O HTTP/11 2*0 OKH + HTDP/01.021 : OesHK ,H diff --git a/test/core/http/corpus/29daa75432381937fd005cb25e314e328de6e9f9 b/test/core/http/corpus/29daa75432381937fd005cb25e314e328de6e9f9 new file mode 100644 index 00000000000..cee70bfe71a --- /dev/null +++ b/test/core/http/corpus/29daa75432381937fd005cb25e314e328de6e9f9 @@ -0,0 +1,2 @@ +JHTT21. 200HTT/0OKH1 HTTP/100 OKH +tH1.T \ No newline at end of file diff --git a/test/core/http/corpus/2a75204bc492084ad853682f8de3fb137d5907bc b/test/core/http/corpus/2a75204bc492084ad853682f8de3fb137d5907bc new file mode 100644 index 00000000000..e76b00e34c8 --- /dev/null +++ b/test/core/http/corpus/2a75204bc492084ad853682f8de3fb137d5907bc @@ -0,0 +1,2 @@ +GET / HTTHTTP/1.1 200 OKH +t10H \ No newline at end of file diff --git a/test/core/http/corpus/2d34ba249b755a880525cf53c665633a5e359305 b/test/core/http/corpus/2d34ba249b755a880525cf53c665633a5e359305 new file mode 100644 index 00000000000..7435f52ea56 --- /dev/null +++ b/test/core/http/corpus/2d34ba249b755a880525cf53c665633a5e359305 @@ -0,0 +1,2 @@ +ITTP/11 20O HTTP/22 2*0 OKH + HTDP/01.021 : OesHK ,H diff --git a/test/core/http/corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b b/test/core/http/corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b new file mode 100644 index 00000000000..57efa3cabc8 --- /dev/null +++ b/test/core/http/corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b @@ -0,0 +1,4 @@ +JHTT/21. 200 HTTP/0OKH.1 200 OKH +tHTTP/01.021 Oes,H +t +t \ No newline at end of file diff --git a/test/core/http/corpus/3953688866ccb3b4f371f1a858570d6afdb6452d b/test/core/http/corpus/3953688866ccb3b4f371f1a858570d6afdb6452d new file mode 100644 index 00000000000..f85f1df035c --- /dev/null +++ b/test/core/http/corpus/3953688866ccb3b4f371f1a858570d6afdb6452d @@ -0,0 +1,3 @@ +HTTP/1.1 200 HH +OK TDP/01.021 : Oe:,H +tes \ No newline at end of file diff --git a/test/core/http/corpus/3f03265921120c6ffa61b944e213e062a5538d4b b/test/core/http/corpus/3f03265921120c6ffa61b944e213e062a5538d4b new file mode 100644 index 00000000000..8af90071c39 --- /dev/null +++ b/test/core/http/corpus/3f03265921120c6ffa61b944e213e062a5538d4b @@ -0,0 +1,2 @@ +@TTP/1.1y 002OKH +ves \ No newline at end of file diff --git a/test/core/http/corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9 b/test/core/http/corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9 new file mode 100644 index 00000000000..5996b9a75cc --- /dev/null +++ b/test/core/http/corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9 @@ -0,0 +1,4 @@ +JHTTP/1.1 +00 HTTP/1.1 200 OKHHTTPOKH /1. +200 OKtH + +tHTH \ No newline at end of file diff --git a/test/core/http/corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5 b/test/core/http/corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5 new file mode 100644 index 00000000000..8ac7ceb2d5f --- /dev/null +++ b/test/core/http/corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5 @@ -0,0 +1,2 @@ +ITTP/11 20O HK +tes \ No newline at end of file diff --git a/test/core/http/corpus/533f62b3f495ce704babf3ee8d840f196a714dff b/test/core/http/corpus/533f62b3f495ce704babf3ee8d840f196a714dff new file mode 100644 index 00000000000..6313cd967a0 --- /dev/null +++ b/test/core/http/corpus/533f62b3f495ce704babf3ee8d840f196a714dff @@ -0,0 +1,4 @@ +JHTT/21. 200 HTTP/1OKH.1 200 OKH +tHTTP/01.021 Oes,H +t +t \ No newline at end of file diff --git a/test/core/http/corpus/5892cbb284771fc9761caae37b19cd6e27dbc104 b/test/core/http/corpus/5892cbb284771fc9761caae37b19cd6e27dbc104 new file mode 100644 index 00000000000..fee55121522 --- /dev/null +++ b/test/core/http/corpus/5892cbb284771fc9761caae37b19cd6e27dbc104 @@ -0,0 +1,2 @@ +JHTTP/1.200:OKHHT/21. 20 HTTP/ +1.1 200 OKHHTtTP \ No newline at end of file diff --git a/test/core/http/corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee b/test/core/http/corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee new file mode 100644 index 00000000000..bd7e2395372 --- /dev/null +++ b/test/core/http/corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee @@ -0,0 +1,2 @@ +ITTP/11 20O HTTP/11 2*0 OKH + HTDP/01.021 : OesHK ,H diff --git a/test/core/http/corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0 b/test/core/http/corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0 new file mode 100644 index 00000000000..480708e0333 --- /dev/null +++ b/test/core/http/corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0 @@ -0,0 +1,2 @@ +@TTP/1.1y00'JHTTP/1.1 +00OH HTTP/ +ve1.1 200s \ No newline at end of file diff --git a/test/core/http/corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e b/test/core/http/corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e new file mode 100644 index 00000000000..0ed0dfadecc --- /dev/null +++ b/test/core/http/corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e @@ -0,0 +1,2 @@ +ITTP/11 20O HTTP/1.1 200 OKH + HTDP/01.021 : OesHK ,H diff --git a/test/core/http/corpus/7fc4520094902ce2c760d70eaad5b674d2817337 b/test/core/http/corpus/7fc4520094902ce2c760d70eaad5b674d2817337 new file mode 100644 index 00000000000..8fc481d92b2 --- /dev/null +++ b/test/core/http/corpus/7fc4520094902ce2c760d70eaad5b674d2817337 @@ -0,0 +1,5 @@ +JHTTP/1.GET / HTTP/1.0 +1 200 OKH + + +t \ No newline at end of file diff --git a/test/core/http/corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c b/test/core/http/corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c new file mode 100644 index 00000000000..776253d750e --- /dev/null +++ b/test/core/http/corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c @@ -0,0 +1,2 @@ +ITTp/11 20O HTTP/*1.1 200 OKH + HTDP/02.021 : OesHK ,H diff --git a/test/core/http/corpus/9a996857196e0998a1278994a9bab3d35526e7f1 b/test/core/http/corpus/9a996857196e0998a1278994a9bab3d35526e7f1 new file mode 100644 index 00000000000..0eb2c0da3a9 --- /dev/null +++ b/test/core/http/corpus/9a996857196e0998a1278994a9bab3d35526e7f1 @@ -0,0 +1,2 @@ +@TTP/1.1y002OKH +ves \ No newline at end of file diff --git a/test/core/http/corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8 b/test/core/http/corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8 new file mode 100644 index 00000000000..f93b9a08e30 --- /dev/null +++ b/test/core/http/corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8 @@ -0,0 +1,3 @@ +HTT/21. 200 HTTP/1.1 HT!TP/1OKH.1HTTP 200 OKH +tHT/:/80 OKH +1 \ No newline at end of file diff --git a/test/core/http/corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1 b/test/core/http/corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1 new file mode 100644 index 00000000000..4ea07dc1371 --- /dev/null +++ b/test/core/http/corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1 @@ -0,0 +1,5 @@ +JHTTP/1>GET / HTTP/2.0 +1 200 OKH + + +t \ No newline at end of file diff --git a/test/core/http/corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85 b/test/core/http/corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85 new file mode 100644 index 00000000000..2e95bac35c9 --- /dev/null +++ b/test/core/http/corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85 @@ -0,0 +1,3 @@ +HTT/21. 200 HTTP/1.1 HT!TP/1OKH.1HTTP 200 OKH +tHT//80) OKH +1 \ No newline at end of file diff --git a/test/core/http/corpus/c4acff8aa2ff886f35439f72625d05002990c940 b/test/core/http/corpus/c4acff8aa2ff886f35439f72625d05002990c940 new file mode 100644 index 00000000000..4539d9f0128 --- /dev/null +++ b/test/core/http/corpus/c4acff8aa2ff886f35439f72625d05002990c940 @@ -0,0 +1,4 @@ +JHTT/21. 200 HTTP/2OKH.1 200 OKH +tHTTP/01.021 Oes,H +t +t \ No newline at end of file diff --git a/test/core/http/corpus/cce734f1b263de6994f7950e0df7bf0c81449f70 b/test/core/http/corpus/cce734f1b263de6994f7950e0df7bf0c81449f70 new file mode 100644 index 00000000000..f6ea09c41bc --- /dev/null +++ b/test/core/http/corpus/cce734f1b263de6994f7950e0df7bf0c81449f70 @@ -0,0 +1,3 @@ +JHTT/21. 200 HTTPHTTP/1.1 80 OH/1OKH.0 200 OKH +tHTTP/0 +te \ No newline at end of file diff --git a/test/core/http/corpus/d51f7fcc089f269c7afecaaca51966bab5fde629 b/test/core/http/corpus/d51f7fcc089f269c7afecaaca51966bab5fde629 new file mode 100644 index 00000000000..e81a59f30b3 --- /dev/null +++ b/test/core/http/corpus/d51f7fcc089f269c7afecaaca51966bab5fde629 @@ -0,0 +1,2 @@ +HTTP/1.200:OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b b/test/core/http/corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b new file mode 100644 index 00000000000..b6fc095920f --- /dev/null +++ b/test/core/http/corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b @@ -0,0 +1,3 @@ +JHTT/21. 200 HTTRHTTP/1.1 0 OL/1OKH.0 200 OKH +tHTTP/0 +te \ No newline at end of file diff --git a/test/core/http/corpus/e5c364b205855a2991ce07482aebb2a3a6147089 b/test/core/http/corpus/e5c364b205855a2991ce07482aebb2a3a6147089 new file mode 100644 index 00000000000..98b5f62b2a0 --- /dev/null +++ b/test/core/http/corpus/e5c364b205855a2991ce07482aebb2a3a6147089 @@ -0,0 +1,2 @@ +TTHP/1.200 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb b/test/core/http/corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb new file mode 100644 index 00000000000..78b36c913ba --- /dev/null +++ b/test/core/http/corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb @@ -0,0 +1,2 @@ +ITHTTTPHT/12 2S HTKP/1.1 767) OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b b/test/core/http/corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b new file mode 100644 index 00000000000..eb63d31fa51 --- /dev/null +++ b/test/core/http/corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b @@ -0,0 +1,2 @@ +ITTP/11 20O HTTP/1.1 200 OKH +HT DP/01021 : OesHK ,H diff --git a/test/core/http/corpus/request2.txt b/test/core/http/corpus/request2.txt new file mode 100644 index 00000000000..897a28406ca --- /dev/null +++ b/test/core/http/corpus/request2.txt @@ -0,0 +1,3 @@ +GET / HTTP/1.0 +Content-Length: 128 + diff --git a/test/core/http/corpus/request3.txt b/test/core/http/corpus/request3.txt new file mode 100644 index 00000000000..aaa75bbb52a --- /dev/null +++ b/test/core/http/corpus/request3.txt @@ -0,0 +1,3 @@ +GET / HTTP/1.1 +Content-Length: 128 + diff --git a/test/core/http/corpus/request4.txt b/test/core/http/corpus/request4.txt new file mode 100644 index 00000000000..593f6fa7b67 --- /dev/null +++ b/test/core/http/corpus/request4.txt @@ -0,0 +1,3 @@ +GET /foo.bar HTTP/1.1 +Content-Length: 128 + diff --git a/test/core/http/corpus/request5.txt b/test/core/http/corpus/request5.txt new file mode 100644 index 00000000000..19fb2443552 --- /dev/null +++ b/test/core/http/corpus/request5.txt @@ -0,0 +1,3 @@ +POST / HTTP/1.0 + +asdlfkjadsfl;akdjsfasdf diff --git a/test/core/http/corpus/response2.txt b/test/core/http/corpus/response2.txt new file mode 100644 index 00000000000..1b86449bb6f --- /dev/null +++ b/test/core/http/corpus/response2.txt @@ -0,0 +1,4 @@ +HTTP/0.9 200 OK +test: hello + +abcd diff --git a/test/core/http/corpus/response3.txt b/test/core/http/corpus/response3.txt new file mode 100644 index 00000000000..9e5b046c594 --- /dev/null +++ b/test/core/http/corpus/response3.txt @@ -0,0 +1,5 @@ +HTTP/0.9 200 OK +test: hello +content-length: 102384398 + +abcd diff --git a/tools/jenkins/run_fuzzer.sh b/tools/jenkins/run_fuzzer.sh index 513a594ae0e..3d6da99762e 100755 --- a/tools/jenkins/run_fuzzer.sh +++ b/tools/jenkins/run_fuzzer.sh @@ -39,4 +39,5 @@ export OUTPUT_DIR=fuzzer_output tools/jenkins/build_and_run_docker.sh \ -e RUN_COMMAND="$RUN_COMMAND" \ + -e OUTPUT_DIR="$OUTPUT_DIR" \ -e config="$config" From b33d5cdeb838351ce59e5bfa19077e5007e55a74 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 17:04:23 -0700 Subject: [PATCH 30/74] Expand corpus --- test/core/http/corpus/response4.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 test/core/http/corpus/response4.txt diff --git a/test/core/http/corpus/response4.txt b/test/core/http/corpus/response4.txt new file mode 100644 index 00000000000..b237b01fe0e --- /dev/null +++ b/test/core/http/corpus/response4.txt @@ -0,0 +1,2 @@ +HTTP/1.1 404 Not Found + From 9366684d9fc6c9dbc21a97702959ea0952bbca3d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 17:17:54 -0700 Subject: [PATCH 31/74] Expand corpus, add test --- test/core/http/parser_test.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/core/http/parser_test.c b/test/core/http/parser_test.c index 338a3015348..e46b8ebb692 100644 --- a/test/core/http/parser_test.c +++ b/test/core/http/parser_test.c @@ -178,6 +178,32 @@ static void test_fails(grpc_slice_split_mode split_mode, char *response) { gpr_free(slices); } +static const uint8_t failed_test1[] = { +0x9e,0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x4a,0x48,0x54,0x54,0x30,0x32,0x16,0xa,0x2f,0x48,0x20,0x31,0x2e,0x31,0x20,0x32,0x30,0x31,0x54,0x54,0xb9,0x32,0x31,0x2e,0x20,0x32,0x30,0x20, +}; + +typedef struct { + const char *name; + const uint8_t * data; + size_t length; +} failed_test; + +#define FAILED_TEST(name) {#name, name, sizeof(name)} + +failed_test failed_tests[] = { + FAILED_TEST(failed_test1), +}; + +static void test_doesnt_crash(failed_test t) { + gpr_log(GPR_DEBUG, "Run previously failed test: %s", t.name); + grpc_http_parser p; + grpc_http_parser_init(&p); + gpr_slice slice = gpr_slice_from_copied_buffer((const char*)t.data,t.length); + grpc_http_parser_parse(&p, slice); + gpr_slice_unref(slice); + grpc_http_parser_destroy(&p); +} + int main(int argc, char **argv) { size_t i; const grpc_slice_split_mode split_modes[] = {GRPC_SLICE_SPLIT_IDENTITY, @@ -186,6 +212,10 @@ int main(int argc, char **argv) { grpc_test_init(argc, argv); +for (i=0; i Date: Wed, 23 Mar 2016 17:21:58 -0700 Subject: [PATCH 32/74] Expand corpus --- test/core/http/corpus/response5.txt | 5 +++++ test/core/http/corpus/response6.txt | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 test/core/http/corpus/response5.txt create mode 100644 test/core/http/corpus/response6.txt diff --git a/test/core/http/corpus/response5.txt b/test/core/http/corpus/response5.txt new file mode 100644 index 00000000000..26305957130 --- /dev/null +++ b/test/core/http/corpus/response5.txt @@ -0,0 +1,5 @@ +HTTP/0.9 200 OK +test: hello +content-length: 4 + +abcd diff --git a/test/core/http/corpus/response6.txt b/test/core/http/corpus/response6.txt new file mode 100644 index 00000000000..797b6ee7735 --- /dev/null +++ b/test/core/http/corpus/response6.txt @@ -0,0 +1,5 @@ +HTTP/0.9 200 OK +test: hello +content-length: 6 + +abcd From 9715822e6f3b276efacc6a5ac085941e694bd23b Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 20:38:47 -0700 Subject: [PATCH 33/74] Expand corpus --- test/core/http/corpus/toolong.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 test/core/http/corpus/toolong.txt diff --git a/test/core/http/corpus/toolong.txt b/test/core/http/corpus/toolong.txt new file mode 100644 index 00000000000..9a9d5e2fc3f --- /dev/null +++ b/test/core/http/corpus/toolong.txt @@ -0,0 +1,2 @@ +GET / HTTP/1.1 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb From 0b8bf0863fd220ba165b211cf1ac6051fb81b8d9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 20:42:38 -0700 Subject: [PATCH 34/74] Longer --- templates/tools/fuzzer/runners.template | 2 +- tools/fuzzer/runners/hpack_parser_fuzzer_test.sh | 2 +- tools/fuzzer/runners/http_fuzzer_test.sh | 2 +- tools/fuzzer/runners/json_fuzzer_test.sh | 2 +- tools/fuzzer/runners/uri_fuzzer_test.sh | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/tools/fuzzer/runners.template b/templates/tools/fuzzer/runners.template index 20707163954..99cd7376761 100644 --- a/templates/tools/fuzzer/runners.template +++ b/templates/tools/fuzzer/runners.template @@ -35,4 +35,4 @@ template: | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # - bins/$config/${selected.name} -max_total_time=60 fuzzer_output ${' '.join(selected.corpus_dirs)} + bins/$config/${selected.name} -max_total_time=3600 fuzzer_output ${' '.join(selected.corpus_dirs)} diff --git a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh index 932b69e8ce7..d6315ec6264 100644 --- a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh +++ b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh @@ -29,4 +29,4 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/hpack_parser_fuzzer_test -max_total_time=60 fuzzer_output test/core/transport/chttp2/hpack_parser_corpus +bins/$config/hpack_parser_fuzzer_test -max_total_time=3600 fuzzer_output test/core/transport/chttp2/hpack_parser_corpus diff --git a/tools/fuzzer/runners/http_fuzzer_test.sh b/tools/fuzzer/runners/http_fuzzer_test.sh index afbc4f4c955..74dfe6ea23c 100644 --- a/tools/fuzzer/runners/http_fuzzer_test.sh +++ b/tools/fuzzer/runners/http_fuzzer_test.sh @@ -29,4 +29,4 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/http_fuzzer_test -max_total_time=60 fuzzer_output test/core/http/corpus +bins/$config/http_fuzzer_test -max_total_time=3600 fuzzer_output test/core/http/corpus diff --git a/tools/fuzzer/runners/json_fuzzer_test.sh b/tools/fuzzer/runners/json_fuzzer_test.sh index 47e457232d9..2b0770a5053 100644 --- a/tools/fuzzer/runners/json_fuzzer_test.sh +++ b/tools/fuzzer/runners/json_fuzzer_test.sh @@ -29,4 +29,4 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/json_fuzzer_test -max_total_time=60 fuzzer_output test/core/json/corpus +bins/$config/json_fuzzer_test -max_total_time=3600 fuzzer_output test/core/json/corpus diff --git a/tools/fuzzer/runners/uri_fuzzer_test.sh b/tools/fuzzer/runners/uri_fuzzer_test.sh index 2da8d29d892..5225d18db22 100644 --- a/tools/fuzzer/runners/uri_fuzzer_test.sh +++ b/tools/fuzzer/runners/uri_fuzzer_test.sh @@ -29,4 +29,4 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/uri_fuzzer_test -max_total_time=60 fuzzer_output test/core/client_config/uri_corpus +bins/$config/uri_fuzzer_test -max_total_time=3600 fuzzer_output test/core/client_config/uri_corpus From ae94594a64daacd32d0ec85746b2e7f3d02164f3 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 21:43:58 -0700 Subject: [PATCH 35/74] Support tracing fuzzers --- Makefile | 10 ++++++++++ build.yaml | 13 +++++++++++++ templates/tools/fuzzer/runners.template | 8 +++++++- tools/fuzzer/runners/hpack_parser_fuzzer_test.sh | 8 +++++++- tools/fuzzer/runners/http_fuzzer_test.sh | 8 +++++++- tools/fuzzer/runners/json_fuzzer_test.sh | 8 +++++++- tools/fuzzer/runners/uri_fuzzer_test.sh | 8 +++++++- tools/run_tests/configs.json | 8 ++++++++ 8 files changed, 66 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index b974126a974..b23d5f8b7e7 100644 --- a/Makefile +++ b/Makefile @@ -95,6 +95,16 @@ LDXX_opt = $(DEFAULT_CXX) CPPFLAGS_opt = -O2 DEFINES_opt = NDEBUG +VALID_CONFIG_asan-trace-cmp = 1 +REQUIRE_CUSTOM_LIBRARIES_asan-trace-cmp = 1 +CC_asan-trace-cmp = clang +CXX_asan-trace-cmp = clang++ +LD_asan-trace-cmp = clang +LDXX_asan-trace-cmp = clang++ +CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS +LDFLAGS_asan-trace-cmp = -fsanitize=address +DEFINES_asan-trace-cmp += GRPC_TEST_SLOWDOWN_BUILD_FACTOR=3 + VALID_CONFIG_dbg = 1 CC_dbg = $(DEFAULT_CC) CXX_dbg = $(DEFAULT_CXX) diff --git a/build.yaml b/build.yaml index 76a126c9470..ef2f269272d 100644 --- a/build.yaml +++ b/build.yaml @@ -2846,6 +2846,19 @@ configs: test_environ: ASAN_OPTIONS: detect_leaks=0:color=always timeout_multiplier: 3 + asan-trace-cmp: + CC: clang + CPPFLAGS: -O0 -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer + -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS + CXX: clang++ + LD: clang + LDFLAGS: -fsanitize=address + LDXX: clang++ + compile_the_world: true + test_environ: + ASAN_OPTIONS: detect_leaks=1:color=always + LSAN_OPTIONS: suppressions=tools/lsan_suppressions.txt:report_objects=1 + timeout_multiplier: 3 basicprof: CPPFLAGS: -O2 -DGRPC_BASIC_PROFILER -DGRPC_TIMERS_RDTSC DEFINES: NDEBUG diff --git a/templates/tools/fuzzer/runners.template b/templates/tools/fuzzer/runners.template index 99cd7376761..26ac7c80dfa 100644 --- a/templates/tools/fuzzer/runners.template +++ b/templates/tools/fuzzer/runners.template @@ -35,4 +35,10 @@ template: | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # - bins/$config/${selected.name} -max_total_time=3600 fuzzer_output ${' '.join(selected.corpus_dirs)} + flags="-max_total_time=3600" + if [ "$config" == "asan-trace-cmp" ] + then + flags="-use_traces=1 $flags" + fi + + bins/$config/${selected.name} $flags fuzzer_output ${' '.join(selected.corpus_dirs)} diff --git a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh index d6315ec6264..366fe76ab3f 100644 --- a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh +++ b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh @@ -29,4 +29,10 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/hpack_parser_fuzzer_test -max_total_time=3600 fuzzer_output test/core/transport/chttp2/hpack_parser_corpus +flags="-max_total_time=3600" +if [ "$config" == "asan-trace-cmp" ] +then + flags="-use_traces=1 $flags" +fi + +bins/$config/hpack_parser_fuzzer_test $flags fuzzer_output test/core/transport/chttp2/hpack_parser_corpus diff --git a/tools/fuzzer/runners/http_fuzzer_test.sh b/tools/fuzzer/runners/http_fuzzer_test.sh index 74dfe6ea23c..00a420809c1 100644 --- a/tools/fuzzer/runners/http_fuzzer_test.sh +++ b/tools/fuzzer/runners/http_fuzzer_test.sh @@ -29,4 +29,10 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/http_fuzzer_test -max_total_time=3600 fuzzer_output test/core/http/corpus +flags="-max_total_time=3600" +if [ "$config" == "asan-trace-cmp" ] +then + flags="-use_traces=1 $flags" +fi + +bins/$config/http_fuzzer_test $flags fuzzer_output test/core/http/corpus diff --git a/tools/fuzzer/runners/json_fuzzer_test.sh b/tools/fuzzer/runners/json_fuzzer_test.sh index 2b0770a5053..1cd3d55d1bd 100644 --- a/tools/fuzzer/runners/json_fuzzer_test.sh +++ b/tools/fuzzer/runners/json_fuzzer_test.sh @@ -29,4 +29,10 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/json_fuzzer_test -max_total_time=3600 fuzzer_output test/core/json/corpus +flags="-max_total_time=3600" +if [ "$config" == "asan-trace-cmp" ] +then + flags="-use_traces=1 $flags" +fi + +bins/$config/json_fuzzer_test $flags fuzzer_output test/core/json/corpus diff --git a/tools/fuzzer/runners/uri_fuzzer_test.sh b/tools/fuzzer/runners/uri_fuzzer_test.sh index 5225d18db22..bac4fb844dc 100644 --- a/tools/fuzzer/runners/uri_fuzzer_test.sh +++ b/tools/fuzzer/runners/uri_fuzzer_test.sh @@ -29,4 +29,10 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -bins/$config/uri_fuzzer_test -max_total_time=3600 fuzzer_output test/core/client_config/uri_corpus +flags="-max_total_time=3600" +if [ "$config" == "asan-trace-cmp" ] +then + flags="-use_traces=1 $flags" +fi + +bins/$config/uri_fuzzer_test $flags fuzzer_output test/core/client_config/uri_corpus diff --git a/tools/run_tests/configs.json b/tools/run_tests/configs.json index a858170d87a..325e9aa9295 100644 --- a/tools/run_tests/configs.json +++ b/tools/run_tests/configs.json @@ -2,6 +2,14 @@ { "config": "opt" }, + { + "config": "asan-trace-cmp", + "environ": { + "ASAN_OPTIONS": "detect_leaks=1:color=always", + "LSAN_OPTIONS": "suppressions=tools/lsan_suppressions.txt:report_objects=1" + }, + "timeout_multiplier": 3 + }, { "config": "dbg" }, From ff82239acd26bcb06dc2916eec0804d785dcbcc6 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 21:46:52 -0700 Subject: [PATCH 36/74] Fix flags --- Makefile | 2 +- build.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index b23d5f8b7e7..6f13bd684a1 100644 --- a/Makefile +++ b/Makefile @@ -101,7 +101,7 @@ CC_asan-trace-cmp = clang CXX_asan-trace-cmp = clang++ LD_asan-trace-cmp = clang LDXX_asan-trace-cmp = clang++ -CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS +CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=edge -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS LDFLAGS_asan-trace-cmp = -fsanitize=address DEFINES_asan-trace-cmp += GRPC_TEST_SLOWDOWN_BUILD_FACTOR=3 diff --git a/build.yaml b/build.yaml index ef2f269272d..beb5219ce0e 100644 --- a/build.yaml +++ b/build.yaml @@ -2848,8 +2848,8 @@ configs: timeout_multiplier: 3 asan-trace-cmp: CC: clang - CPPFLAGS: -O0 -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer - -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS + CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize-coverage=trace-cmp -fsanitize=address + -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS CXX: clang++ LD: clang LDFLAGS: -fsanitize=address From 88a4043dea5fd916f0f4e8f23488cc4773f98bf9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 21:49:26 -0700 Subject: [PATCH 37/74] Expand corpus --- .../hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112 | 1 + .../hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9 | 1 + .../hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992 | 1 + .../hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad | 1 + .../hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854 | 1 + .../hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c | 1 + .../hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2 | 1 + .../hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a | 1 + .../hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9 | 1 + .../hpack_parser_corpus/b7d4d49ac2c530eb8444a449feb689ee50fd210d | 1 + 10 files changed, 10 insertions(+) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/b7d4d49ac2c530eb8444a449feb689ee50fd210d diff --git a/test/core/transport/chttp2/hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112 b/test/core/transport/chttp2/hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112 new file mode 100644 index 00000000000..bbd1dae7e01 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112 @@ -0,0 +1 @@ +?*@:[c (;!!\ !~ G!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9 b/test/core/transport/chttp2/hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9 new file mode 100644 index 00000000000..06af54ddf36 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9 @@ -0,0 +1 @@ +;?'c[(! [N!\ b3G!*(!! BGA)(!)!*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992 b/test/core/transport/chttp2/hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992 new file mode 100644 index 00000000000..1203eb17489 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992 @@ -0,0 +1 @@ +!cc'_ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad b/test/core/transport/chttp2/hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad new file mode 100644 index 00000000000..65f4c69307f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad @@ -0,0 +1 @@ +;?0c!(K [N!\!G![(!! !GA)(!)!*GA)(+) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854 b/test/core/transport/chttp2/hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854 new file mode 100644 index 00000000000..941f5530cf8 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854 @@ -0,0 +1 @@ +(*@:[(?;:(' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c b/test/core/transport/chttp2/hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c new file mode 100644 index 00000000000..c60f729c7cf --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c @@ -0,0 +1 @@ +(*@:[(?;[('! (c (;!!\ !crG: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2 b/test/core/transport/chttp2/hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2 new file mode 100644 index 00000000000..45cce54c0e7 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2 @@ -0,0 +1 @@ +!!ۤ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a b/test/core/transport/chttp2/hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a new file mode 100644 index 00000000000..a61dd289a7a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a @@ -0,0 +1 @@ +?*@:[(c (;!!\ !c G!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9 b/test/core/transport/chttp2/hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9 new file mode 100644 index 00000000000..76910011197 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9 @@ -0,0 +1 @@ +p!c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/b7d4d49ac2c530eb8444a449feb689ee50fd210d b/test/core/transport/chttp2/hpack_parser_corpus/b7d4d49ac2c530eb8444a449feb689ee50fd210d new file mode 100644 index 00000000000..d2cbcccb785 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/b7d4d49ac2c530eb8444a449feb689ee50fd210d @@ -0,0 +1 @@ +;?'c[(! [N!\ #G!*(!! !GA)(!)!*)GI)(;) \ No newline at end of file From fe56d3ae72b97e5ac154ec3b998e19084ec9371c Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 22:54:00 -0700 Subject: [PATCH 38/74] Expand corpus --- .../006d552e952c42b5340baaeb85c2cb80c81e78dd | 1 + .../007eb985c44b6089a34995a7d9ebf349f1c2bf18 | 1 + .../05454ab015cf74e9c3e8574d995517e05dd56751 | 1 + .../0716d9708d321ffb6a00818614779e779925365c | 1 + .../0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc | 1 + .../0ea9a160c57f2c705dce037196e360bf9be739c5 | 1 + .../0f20d9c46991c0e97419e2cca07c7389f1d6bdf8 | 1 + .../0f2e2e6346f70c419300b661251754d50f7ca8ea | 1 + .../108e5bcd69b19ad0df743641085163b84f376fe8 | 2 ++ .../11aa091189b78d1cc35c7ff4907ac16a73aba547 | 1 + .../1227907b2ee5a9492a890beed55332e4560834c8 | 1 + .../137f554ee0f6b903acb81ab4e1f98c11fe92b008 | 1 + .../1401ea03ec78b8f20dc7be952555004d7147f0f5 | 1 + .../15c9c1284c27c8893559e15c9b2a50cbd5bbb56f | 1 + .../15d1a6cda48ef569b368a0c4627435bc2c80a988 | 1 + .../17b815f1f72cb64481bc40263e91ce063040f739 | 1 + .../190fbe2da448f6bdec0706c5301ad13363ae3ad9 | 1 + .../1b045a24b8f1f1fd6e8234d5019952ee7713a8b7 | 1 + .../1b6453892473a467d07372d45eb05abc2031647a | 1 + .../1dea95b5050b766274ef80847505c0e4f47f3ebb | 1 + .../1dfe267b623b20cd97c6e8969d8b9148af9f4a2c | 1 + .../1e5c2f367f02e47a8c160cda1cd9d91decbac441 | 1 + .../20efdba13ca7a3657d071b3d56997aa3b083068a | 1 + .../215a956168f77421253e947c2436371d56aa7ea1 | 1 + .../2174b9ab6bf4f7c21fe1ed56957f1776ef611959 | 1 + .../26aca41ee8f199e7c0c7cf31d979952571c53fc9 | 1 + .../27da426a5883662d19ea78f306d7a992be52f827 | 2 ++ .../296dcda6f7e6979e68ddef7cbc1206a355084ad3 | 1 + .../29b08c03ca5a6851fa4604a984cb7ff44433a5a5 | 1 + .../2b3b1ad952e3acb566e32a84e2d503acde13eb53 | 1 + .../2d3d5b9275553430b4cfa68114099120ad7809ee | 1 + .../2db610e1a230409a205cf22fbad3348a54cbe703 | 1 + .../2e32faacd3ea4461ec7aace297b4be6904d9a389 | 1 + .../2e756d91759d7e74f5b776c0d2a1935292f576d1 | 1 + .../3027d901361162b38fcaf17f97ba7d9646e32495 | 1 + .../356a192b7913b04c54574d18c28d46e6395428ab | 1 + .../373769c15c145472c8ec3bdde8fc84e85ec79211 | 2 ++ .../3795d911970a1fd8416b93649051b418948e3edf | 1 + .../38cd33bb390445e35b6514024b1317902cb7ba1b | 1 + .../3a90c688f44447a78efc111872b061a001f04d2b | 1 + .../3c0a8d6c31edaca124714624eb64cb8ec0cbab13 | 1 + .../3cc0c9adcf3882f01409c70391c3cd30588ef34c | 1 + .../3d0d9878b812ce4634962ba3dd755c0953550200 | 1 + .../3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59 | 1 + .../421b7e8ea86e3c07474af16ab3ccef55d1857205 | 2 ++ .../428d051e437dd260f2a2f7ed920d9734ca34dc90 | 1 + .../43620ecd2e2fd58fe5650da2e9783f980f29ec07 | 1 + .../43b1ffcda49477adb1632822202631990ed3a269 | 1 + .../45279f85bf2f533a629073caf89403006279fab2 | 2 ++ .../469e5ed2547e9e55a96e96eb832c615631e3b576 | 1 + .../4a0a19218e082a343a1b17e5333409af9d98f0f5 | 1 + .../4a6644a1a3d5218f4bbd60220cab79c0b7bef45e | 1 + .../4cd66dfabbd964f8c6c4414b07cdb45dae692e19 | 1 + .../4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8 | 1 + .../4ff99a030518a132748c44bc1d836018e5b82cd0 | 1 + .../534d66e7b0709d1e7692faae9e7f7299c92bba4b | 1 + .../548775f9d7d13339dba3001f8238b84e9a457533 | 1 + .../54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79 | 1 + .../552cfe1d8958e6d003ec8e883c4983dd67ef255e | 1 + .../56e5f35e3d08b4e17e3558cacddf9e5ed13a0159 | 1 + .../598a287a3e56caae23ed63abc95d5f3457165eef | 1 + .../5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184 | 2 ++ .../5ca6c45a8d2e11c782806df43e7668beb4aba8f5 | 1 + .../5da7b543313339f84fd52e96bacf3a73368a1d2c | 1 + .../5e629dfb8b7533c7c2d173d4c3d587c88112cc29 | 1 + .../5f3394f5058822cc044b92654837625897176480 | 1 + .../60ba4b2daa4ed4d070fec06687e249e0e6f9ee45 | 1 + .../625ed64c30c8ab2f0b3bc75690f9faa4270f0041 | 1 + .../6314c2b304d04dc0108a95d29a93515e85e2b0b0 | 1 + .../6462d8079d2ea921617e7d073b85cfab706800d3 | 1 + .../66328e03a2ccd5e54dab23b816182786e6f518b6 | 1 + .../683e9045bc95e0cb5fc16ec64b118433475ba559 | Bin 0 -> 4 bytes .../689f13680f4682303c8aa6828b67955959dc9669 | 1 + .../68c6ba7f0602a5410d1fa3c5de24fe264436b993 | 1 + .../699cafde80b1e1777306f781186d1253f018ab23 | 1 + .../69afa12510b2e653b0af7c7030832647b2d63c37 | 1 + .../6b75857f86be5c51b21a97f4a61e69e8bb6cd698 | 1 + .../6ce5170dc4f2eee3b31a875b6a41f2444959f3dd | 1 + .../6d2859436fbbee637f0a5981ca82e8f88a1d0d28 | 1 + .../6e05a0a240fe2974e14527bbe390d294564156e2 | 1 + .../6e6c9d301adb0f0ddffd79cdf3426a2de99bad48 | 2 ++ .../70142f66475ae2fb33722d8d4750f386ecfefe7b | 1 + .../719edbe667ce2729ac78a22dac29263c91144029 | 1 + .../77de68daecd823babbb58edb1c8e14d7106e83bb | 1 + .../7957dc9aac31e6a6783fb3a6ee073688fed6cf9d | 1 + .../7b20ac50954063e3ad00813acab4a98b2bfdb858 | 1 + .../7cf84b5a78281e6c6b5a9884110f3dbc6a40e310 | 2 ++ .../82059e250904b478f65daa0e647c1647ba6d6a3d | 1 + .../8207fdf4bd302d6b6b1894990b353944a8716aa7 | 1 + .../84582c1dbe026475319df14c19967d1dd0bf751f | 1 + .../88f658400b1870ddf081fb03020c3098b0b1e083 | 1 + .../88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a | 2 ++ .../89304953495f060c7abd3584d83cb1c8e6d6653b | 1 + .../8a5f6dc6873e3fd51fd866854d85258f8aa83a02 | 2 ++ .../8a87261277c15667e2957dd52c5db6757ebc8e88 | 1 + .../8aa61d8bd260942521bb1ba82cd4cce2324fdbee | 1 + .../8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c | 1 + .../8e7fda77644ff91578d25243fad51a3cd6d60860 | 1 + .../8ea6295ff82bb119acd44a91b463b19fedafb226 | 1 + .../8ef4dd9f2d0f9d770c937d9a43413d24df83f09b | 1 + .../8efd86fb78a56a5145ed7739dcb00c78581c5375 | 1 + .../8f0ba762c2fed0fc993feb91948902ac397b0919 | 1 + .../902ba3cda1883801594b6e1b452790cc53948fda | 1 + .../92049bf3d8a0ec93c2d1633631c0082e66ca69e7 | 2 ++ .../920a3c318f3127b9c30ab02a077555c7dfbb6edb | 1 + .../9367ba65affd5bf7aabf79c28e783cc5d93518e8 | 1 + .../95b54a84db75abab401d282fdb04440a879a9708 | 1 + .../98e02e7fc96479e8d10ff2cc7610be772e2d6fba | 1 + .../99667fcfa6d583a742fb5450527fc86dfb78ebbf | 1 + .../9d0441f23ae7d5a3a5b1140497868ee6eeab656b | 2 ++ .../9d890bd3139a8f9a44d435ff8edfbeb5b072ded0 | 2 ++ .../9e6a55b6b4563e652a23be9d623ca5055c356940 | 1 + .../9ec88420ef0408642f6930996e35f5b9f18ec88c | 1 + .../9fbda4f714043d975389b536b4497c6d713452e5 | 1 + .../a1abe8a785030d475a7350438fd23a05c382c110 | 2 ++ .../a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6 | 1 + .../a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc | 1 + .../a39653cb3d97c58c44013197f4d7557577700177 | 1 + .../a6b34b06b00e9226f2bd961483f9da81d8de99a8 | 1 + .../a806f43dd48e35e75c27814c13a2a96c12449bd1 | 1 + .../a90a858013f90d2a94e0d62a7156ffd6848bf238 | 1 + .../aa6e08a488d1ed00aa51f20c2477fc89e7b0a852 | 2 ++ .../aaa038513c192fec501e4e7302156872ce2fde37 | 2 ++ .../ac2686c095a5a1c92a1d4209a6c287778720c86d | 1 + .../ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4 | 1 + .../ac9231da4082430afe8f4d40127814c613648d8e | 1 + .../adc83b19e793491b1c6ea0fd8b46cd9f32e592fc | 1 + .../b021dd7cd98b63092685ea092df0dc01c8f63334 | 1 + .../b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f | 1 + .../b6589fc6ab0dc82cf12099d1c2d40ab994e8410c | 1 + .../b6f19238d2b04c5b86a17369093dafda34f332e7 | 2 ++ .../b858cb282617fb0956d960215c8e84d1ccf909c6 | 1 + .../b9c38fad09c80db7781fefbe51039752de575ecc | 1 + .../bd113c2c8a2328e3674c680c7cff829a6c8ab924 | 1 + .../bef524502f8dbbc45af717ece01ec88edd7f903b | 1 + .../c18d315f0d35849b2aae4a47cab4608204b85d76 | 2 ++ .../c257fd6bc9e5254a733378ab4ddd39629c4a3069 | 1 + .../c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a | 1 + .../c3badd71ef8a51b97ce93cbfe99f6778048f2128 | 1 + .../c541bb86e55b98e083b141114066f9c17d853374 | 1 + .../c7a34d6d49e1da1ccd490350c2df3a168ed09ae8 | 3 +++ .../c88c4bec8d440c56d3ea7abce39276f0927dbe0a | 1 + .../c92f147bfc034003ac42ed9e62a16c84102ab417 | 1 + .../ce3899b62ba3efe00eb31ddad2861ffe16a30d06 | 1 + .../cec87b67871fc7a59652bc3546fbbb68e4d31e28 | 2 ++ .../cf32406111908544e504c84731147f072cdf2fbd | 1 + .../cff891e5858ae68d08ecc8470ca6a68c9438bfa3 | 1 + .../d85ca051da784c0441898c5affbf11a2ae8f56bc | 1 + .../da4b9237bacccdf19c0760cab7aec4a8359010b0 | 1 + .../dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef | Bin 0 -> 13 bytes .../df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef | 1 + .../e0c124e90d068e2a70a3e148052869033453ec58 | 1 + .../e0d87b1f3e54e5adc5c2205f9e14772822a25766 | 1 + .../e1199df649697c570db5d6b2ea09d755eddd32b7 | 1 + .../e235f6f2a8b6a22117f1baa932fb6c69799e1136 | 1 + .../e3d134b35cc25a4861d90023c95988ec6103ddd5 | 1 + .../e3ff65de4b1622315c3b34b7a5e39bffb275489d | 1 + .../e4e3c69da200af932c8a79fa055d7aeea28eb1d1 | 1 + .../e6c3dd630428fd54834172b8fd2735fed9416da4 | 1 + .../e95ff1142118a2ca5b84935612a8a64d55360e64 | 1 + .../e9c5e2c67930513941753c2d54591c7098c82f6c | 1 + .../eb26070d17ffa908204912e75cb4313835042038 | 1 + .../ebc6aee49e5ae57722df86e7fa33c420f045a449 | 1 + .../f473451610783521d51bc08cdd920ddd97f8a71f | 1 + .../f63aa599600f6e7d648c4287905e16e8e6e479fd | 1 + .../f667dcf1c06e87db2dc49d86ea1c285e796f8f8c | 1 + .../f8d0f85975e49b959799cc52847110cc940b9db1 | 1 + .../f92c47e35da42d79a48beff54b93cd28f55f05fb | 1 + .../f9a33bb8bd78d869fbafa402d9be58940ce2c318 | 1 + .../fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f | 1 + .../ff8fb34603c7f772768d61504954553e6bed173c | 1 + 171 files changed, 190 insertions(+) create mode 100644 test/core/json/corpus/006d552e952c42b5340baaeb85c2cb80c81e78dd create mode 100644 test/core/json/corpus/007eb985c44b6089a34995a7d9ebf349f1c2bf18 create mode 100644 test/core/json/corpus/05454ab015cf74e9c3e8574d995517e05dd56751 create mode 100644 test/core/json/corpus/0716d9708d321ffb6a00818614779e779925365c create mode 100644 test/core/json/corpus/0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc create mode 100644 test/core/json/corpus/0ea9a160c57f2c705dce037196e360bf9be739c5 create mode 100644 test/core/json/corpus/0f20d9c46991c0e97419e2cca07c7389f1d6bdf8 create mode 100644 test/core/json/corpus/0f2e2e6346f70c419300b661251754d50f7ca8ea create mode 100644 test/core/json/corpus/108e5bcd69b19ad0df743641085163b84f376fe8 create mode 100644 test/core/json/corpus/11aa091189b78d1cc35c7ff4907ac16a73aba547 create mode 100644 test/core/json/corpus/1227907b2ee5a9492a890beed55332e4560834c8 create mode 100644 test/core/json/corpus/137f554ee0f6b903acb81ab4e1f98c11fe92b008 create mode 100644 test/core/json/corpus/1401ea03ec78b8f20dc7be952555004d7147f0f5 create mode 100644 test/core/json/corpus/15c9c1284c27c8893559e15c9b2a50cbd5bbb56f create mode 100644 test/core/json/corpus/15d1a6cda48ef569b368a0c4627435bc2c80a988 create mode 100644 test/core/json/corpus/17b815f1f72cb64481bc40263e91ce063040f739 create mode 100644 test/core/json/corpus/190fbe2da448f6bdec0706c5301ad13363ae3ad9 create mode 100644 test/core/json/corpus/1b045a24b8f1f1fd6e8234d5019952ee7713a8b7 create mode 100644 test/core/json/corpus/1b6453892473a467d07372d45eb05abc2031647a create mode 100644 test/core/json/corpus/1dea95b5050b766274ef80847505c0e4f47f3ebb create mode 100644 test/core/json/corpus/1dfe267b623b20cd97c6e8969d8b9148af9f4a2c create mode 100644 test/core/json/corpus/1e5c2f367f02e47a8c160cda1cd9d91decbac441 create mode 100644 test/core/json/corpus/20efdba13ca7a3657d071b3d56997aa3b083068a create mode 100644 test/core/json/corpus/215a956168f77421253e947c2436371d56aa7ea1 create mode 100644 test/core/json/corpus/2174b9ab6bf4f7c21fe1ed56957f1776ef611959 create mode 100644 test/core/json/corpus/26aca41ee8f199e7c0c7cf31d979952571c53fc9 create mode 100644 test/core/json/corpus/27da426a5883662d19ea78f306d7a992be52f827 create mode 100644 test/core/json/corpus/296dcda6f7e6979e68ddef7cbc1206a355084ad3 create mode 100644 test/core/json/corpus/29b08c03ca5a6851fa4604a984cb7ff44433a5a5 create mode 100644 test/core/json/corpus/2b3b1ad952e3acb566e32a84e2d503acde13eb53 create mode 100644 test/core/json/corpus/2d3d5b9275553430b4cfa68114099120ad7809ee create mode 100644 test/core/json/corpus/2db610e1a230409a205cf22fbad3348a54cbe703 create mode 100644 test/core/json/corpus/2e32faacd3ea4461ec7aace297b4be6904d9a389 create mode 100644 test/core/json/corpus/2e756d91759d7e74f5b776c0d2a1935292f576d1 create mode 100644 test/core/json/corpus/3027d901361162b38fcaf17f97ba7d9646e32495 create mode 100644 test/core/json/corpus/356a192b7913b04c54574d18c28d46e6395428ab create mode 100644 test/core/json/corpus/373769c15c145472c8ec3bdde8fc84e85ec79211 create mode 100644 test/core/json/corpus/3795d911970a1fd8416b93649051b418948e3edf create mode 100644 test/core/json/corpus/38cd33bb390445e35b6514024b1317902cb7ba1b create mode 100644 test/core/json/corpus/3a90c688f44447a78efc111872b061a001f04d2b create mode 100644 test/core/json/corpus/3c0a8d6c31edaca124714624eb64cb8ec0cbab13 create mode 100644 test/core/json/corpus/3cc0c9adcf3882f01409c70391c3cd30588ef34c create mode 100644 test/core/json/corpus/3d0d9878b812ce4634962ba3dd755c0953550200 create mode 100644 test/core/json/corpus/3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59 create mode 100644 test/core/json/corpus/421b7e8ea86e3c07474af16ab3ccef55d1857205 create mode 100644 test/core/json/corpus/428d051e437dd260f2a2f7ed920d9734ca34dc90 create mode 100644 test/core/json/corpus/43620ecd2e2fd58fe5650da2e9783f980f29ec07 create mode 100644 test/core/json/corpus/43b1ffcda49477adb1632822202631990ed3a269 create mode 100644 test/core/json/corpus/45279f85bf2f533a629073caf89403006279fab2 create mode 100644 test/core/json/corpus/469e5ed2547e9e55a96e96eb832c615631e3b576 create mode 100644 test/core/json/corpus/4a0a19218e082a343a1b17e5333409af9d98f0f5 create mode 100644 test/core/json/corpus/4a6644a1a3d5218f4bbd60220cab79c0b7bef45e create mode 100644 test/core/json/corpus/4cd66dfabbd964f8c6c4414b07cdb45dae692e19 create mode 100644 test/core/json/corpus/4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8 create mode 100644 test/core/json/corpus/4ff99a030518a132748c44bc1d836018e5b82cd0 create mode 100644 test/core/json/corpus/534d66e7b0709d1e7692faae9e7f7299c92bba4b create mode 100644 test/core/json/corpus/548775f9d7d13339dba3001f8238b84e9a457533 create mode 100644 test/core/json/corpus/54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79 create mode 100644 test/core/json/corpus/552cfe1d8958e6d003ec8e883c4983dd67ef255e create mode 100644 test/core/json/corpus/56e5f35e3d08b4e17e3558cacddf9e5ed13a0159 create mode 100644 test/core/json/corpus/598a287a3e56caae23ed63abc95d5f3457165eef create mode 100644 test/core/json/corpus/5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184 create mode 100644 test/core/json/corpus/5ca6c45a8d2e11c782806df43e7668beb4aba8f5 create mode 100644 test/core/json/corpus/5da7b543313339f84fd52e96bacf3a73368a1d2c create mode 100644 test/core/json/corpus/5e629dfb8b7533c7c2d173d4c3d587c88112cc29 create mode 100644 test/core/json/corpus/5f3394f5058822cc044b92654837625897176480 create mode 100644 test/core/json/corpus/60ba4b2daa4ed4d070fec06687e249e0e6f9ee45 create mode 100644 test/core/json/corpus/625ed64c30c8ab2f0b3bc75690f9faa4270f0041 create mode 100644 test/core/json/corpus/6314c2b304d04dc0108a95d29a93515e85e2b0b0 create mode 100644 test/core/json/corpus/6462d8079d2ea921617e7d073b85cfab706800d3 create mode 100644 test/core/json/corpus/66328e03a2ccd5e54dab23b816182786e6f518b6 create mode 100644 test/core/json/corpus/683e9045bc95e0cb5fc16ec64b118433475ba559 create mode 100644 test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669 create mode 100644 test/core/json/corpus/68c6ba7f0602a5410d1fa3c5de24fe264436b993 create mode 100644 test/core/json/corpus/699cafde80b1e1777306f781186d1253f018ab23 create mode 100644 test/core/json/corpus/69afa12510b2e653b0af7c7030832647b2d63c37 create mode 100644 test/core/json/corpus/6b75857f86be5c51b21a97f4a61e69e8bb6cd698 create mode 100644 test/core/json/corpus/6ce5170dc4f2eee3b31a875b6a41f2444959f3dd create mode 100644 test/core/json/corpus/6d2859436fbbee637f0a5981ca82e8f88a1d0d28 create mode 100644 test/core/json/corpus/6e05a0a240fe2974e14527bbe390d294564156e2 create mode 100644 test/core/json/corpus/6e6c9d301adb0f0ddffd79cdf3426a2de99bad48 create mode 100644 test/core/json/corpus/70142f66475ae2fb33722d8d4750f386ecfefe7b create mode 100644 test/core/json/corpus/719edbe667ce2729ac78a22dac29263c91144029 create mode 100644 test/core/json/corpus/77de68daecd823babbb58edb1c8e14d7106e83bb create mode 100644 test/core/json/corpus/7957dc9aac31e6a6783fb3a6ee073688fed6cf9d create mode 100644 test/core/json/corpus/7b20ac50954063e3ad00813acab4a98b2bfdb858 create mode 100644 test/core/json/corpus/7cf84b5a78281e6c6b5a9884110f3dbc6a40e310 create mode 100644 test/core/json/corpus/82059e250904b478f65daa0e647c1647ba6d6a3d create mode 100644 test/core/json/corpus/8207fdf4bd302d6b6b1894990b353944a8716aa7 create mode 100644 test/core/json/corpus/84582c1dbe026475319df14c19967d1dd0bf751f create mode 100644 test/core/json/corpus/88f658400b1870ddf081fb03020c3098b0b1e083 create mode 100644 test/core/json/corpus/88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a create mode 100644 test/core/json/corpus/89304953495f060c7abd3584d83cb1c8e6d6653b create mode 100644 test/core/json/corpus/8a5f6dc6873e3fd51fd866854d85258f8aa83a02 create mode 100644 test/core/json/corpus/8a87261277c15667e2957dd52c5db6757ebc8e88 create mode 100644 test/core/json/corpus/8aa61d8bd260942521bb1ba82cd4cce2324fdbee create mode 100644 test/core/json/corpus/8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c create mode 100644 test/core/json/corpus/8e7fda77644ff91578d25243fad51a3cd6d60860 create mode 100644 test/core/json/corpus/8ea6295ff82bb119acd44a91b463b19fedafb226 create mode 100644 test/core/json/corpus/8ef4dd9f2d0f9d770c937d9a43413d24df83f09b create mode 100644 test/core/json/corpus/8efd86fb78a56a5145ed7739dcb00c78581c5375 create mode 100644 test/core/json/corpus/8f0ba762c2fed0fc993feb91948902ac397b0919 create mode 100644 test/core/json/corpus/902ba3cda1883801594b6e1b452790cc53948fda create mode 100644 test/core/json/corpus/92049bf3d8a0ec93c2d1633631c0082e66ca69e7 create mode 100644 test/core/json/corpus/920a3c318f3127b9c30ab02a077555c7dfbb6edb create mode 100644 test/core/json/corpus/9367ba65affd5bf7aabf79c28e783cc5d93518e8 create mode 100644 test/core/json/corpus/95b54a84db75abab401d282fdb04440a879a9708 create mode 100644 test/core/json/corpus/98e02e7fc96479e8d10ff2cc7610be772e2d6fba create mode 100644 test/core/json/corpus/99667fcfa6d583a742fb5450527fc86dfb78ebbf create mode 100644 test/core/json/corpus/9d0441f23ae7d5a3a5b1140497868ee6eeab656b create mode 100644 test/core/json/corpus/9d890bd3139a8f9a44d435ff8edfbeb5b072ded0 create mode 100644 test/core/json/corpus/9e6a55b6b4563e652a23be9d623ca5055c356940 create mode 100644 test/core/json/corpus/9ec88420ef0408642f6930996e35f5b9f18ec88c create mode 100644 test/core/json/corpus/9fbda4f714043d975389b536b4497c6d713452e5 create mode 100644 test/core/json/corpus/a1abe8a785030d475a7350438fd23a05c382c110 create mode 100644 test/core/json/corpus/a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6 create mode 100644 test/core/json/corpus/a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc create mode 100644 test/core/json/corpus/a39653cb3d97c58c44013197f4d7557577700177 create mode 100644 test/core/json/corpus/a6b34b06b00e9226f2bd961483f9da81d8de99a8 create mode 100644 test/core/json/corpus/a806f43dd48e35e75c27814c13a2a96c12449bd1 create mode 100644 test/core/json/corpus/a90a858013f90d2a94e0d62a7156ffd6848bf238 create mode 100644 test/core/json/corpus/aa6e08a488d1ed00aa51f20c2477fc89e7b0a852 create mode 100644 test/core/json/corpus/aaa038513c192fec501e4e7302156872ce2fde37 create mode 100644 test/core/json/corpus/ac2686c095a5a1c92a1d4209a6c287778720c86d create mode 100644 test/core/json/corpus/ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4 create mode 100644 test/core/json/corpus/ac9231da4082430afe8f4d40127814c613648d8e create mode 100644 test/core/json/corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc create mode 100644 test/core/json/corpus/b021dd7cd98b63092685ea092df0dc01c8f63334 create mode 100644 test/core/json/corpus/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f create mode 100644 test/core/json/corpus/b6589fc6ab0dc82cf12099d1c2d40ab994e8410c create mode 100644 test/core/json/corpus/b6f19238d2b04c5b86a17369093dafda34f332e7 create mode 100644 test/core/json/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6 create mode 100644 test/core/json/corpus/b9c38fad09c80db7781fefbe51039752de575ecc create mode 100644 test/core/json/corpus/bd113c2c8a2328e3674c680c7cff829a6c8ab924 create mode 100644 test/core/json/corpus/bef524502f8dbbc45af717ece01ec88edd7f903b create mode 100644 test/core/json/corpus/c18d315f0d35849b2aae4a47cab4608204b85d76 create mode 100644 test/core/json/corpus/c257fd6bc9e5254a733378ab4ddd39629c4a3069 create mode 100644 test/core/json/corpus/c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a create mode 100644 test/core/json/corpus/c3badd71ef8a51b97ce93cbfe99f6778048f2128 create mode 100644 test/core/json/corpus/c541bb86e55b98e083b141114066f9c17d853374 create mode 100644 test/core/json/corpus/c7a34d6d49e1da1ccd490350c2df3a168ed09ae8 create mode 100644 test/core/json/corpus/c88c4bec8d440c56d3ea7abce39276f0927dbe0a create mode 100644 test/core/json/corpus/c92f147bfc034003ac42ed9e62a16c84102ab417 create mode 100644 test/core/json/corpus/ce3899b62ba3efe00eb31ddad2861ffe16a30d06 create mode 100644 test/core/json/corpus/cec87b67871fc7a59652bc3546fbbb68e4d31e28 create mode 100644 test/core/json/corpus/cf32406111908544e504c84731147f072cdf2fbd create mode 100644 test/core/json/corpus/cff891e5858ae68d08ecc8470ca6a68c9438bfa3 create mode 100644 test/core/json/corpus/d85ca051da784c0441898c5affbf11a2ae8f56bc create mode 100644 test/core/json/corpus/da4b9237bacccdf19c0760cab7aec4a8359010b0 create mode 100644 test/core/json/corpus/dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef create mode 100644 test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef create mode 100644 test/core/json/corpus/e0c124e90d068e2a70a3e148052869033453ec58 create mode 100644 test/core/json/corpus/e0d87b1f3e54e5adc5c2205f9e14772822a25766 create mode 100644 test/core/json/corpus/e1199df649697c570db5d6b2ea09d755eddd32b7 create mode 100644 test/core/json/corpus/e235f6f2a8b6a22117f1baa932fb6c69799e1136 create mode 100644 test/core/json/corpus/e3d134b35cc25a4861d90023c95988ec6103ddd5 create mode 100644 test/core/json/corpus/e3ff65de4b1622315c3b34b7a5e39bffb275489d create mode 100644 test/core/json/corpus/e4e3c69da200af932c8a79fa055d7aeea28eb1d1 create mode 100644 test/core/json/corpus/e6c3dd630428fd54834172b8fd2735fed9416da4 create mode 100644 test/core/json/corpus/e95ff1142118a2ca5b84935612a8a64d55360e64 create mode 100644 test/core/json/corpus/e9c5e2c67930513941753c2d54591c7098c82f6c create mode 100644 test/core/json/corpus/eb26070d17ffa908204912e75cb4313835042038 create mode 100644 test/core/json/corpus/ebc6aee49e5ae57722df86e7fa33c420f045a449 create mode 100644 test/core/json/corpus/f473451610783521d51bc08cdd920ddd97f8a71f create mode 100644 test/core/json/corpus/f63aa599600f6e7d648c4287905e16e8e6e479fd create mode 100644 test/core/json/corpus/f667dcf1c06e87db2dc49d86ea1c285e796f8f8c create mode 100644 test/core/json/corpus/f8d0f85975e49b959799cc52847110cc940b9db1 create mode 100644 test/core/json/corpus/f92c47e35da42d79a48beff54b93cd28f55f05fb create mode 100644 test/core/json/corpus/f9a33bb8bd78d869fbafa402d9be58940ce2c318 create mode 100644 test/core/json/corpus/fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f create mode 100644 test/core/json/corpus/ff8fb34603c7f772768d61504954553e6bed173c diff --git a/test/core/json/corpus/006d552e952c42b5340baaeb85c2cb80c81e78dd b/test/core/json/corpus/006d552e952c42b5340baaeb85c2cb80c81e78dd new file mode 100644 index 00000000000..762064c7a4f --- /dev/null +++ b/test/core/json/corpus/006d552e952c42b5340baaeb85c2cb80c81e78dd @@ -0,0 +1 @@ +1e9 \ No newline at end of file diff --git a/test/core/json/corpus/007eb985c44b6089a34995a7d9ebf349f1c2bf18 b/test/core/json/corpus/007eb985c44b6089a34995a7d9ebf349f1c2bf18 new file mode 100644 index 00000000000..8affa52ec55 --- /dev/null +++ b/test/core/json/corpus/007eb985c44b6089a34995a7d9ebf349f1c2bf18 @@ -0,0 +1 @@ +{}3[ \ No newline at end of file diff --git a/test/core/json/corpus/05454ab015cf74e9c3e8574d995517e05dd56751 b/test/core/json/corpus/05454ab015cf74e9c3e8574d995517e05dd56751 new file mode 100644 index 00000000000..8377c554f7d --- /dev/null +++ b/test/core/json/corpus/05454ab015cf74e9c3e8574d995517e05dd56751 @@ -0,0 +1 @@ +21.595 \ No newline at end of file diff --git a/test/core/json/corpus/0716d9708d321ffb6a00818614779e779925365c b/test/core/json/corpus/0716d9708d321ffb6a00818614779e779925365c new file mode 100644 index 00000000000..8e2afd34277 --- /dev/null +++ b/test/core/json/corpus/0716d9708d321ffb6a00818614779e779925365c @@ -0,0 +1 @@ +17 \ No newline at end of file diff --git a/test/core/json/corpus/0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc b/test/core/json/corpus/0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc new file mode 100644 index 00000000000..d249eb2e136 --- /dev/null +++ b/test/core/json/corpus/0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc @@ -0,0 +1 @@ +[2.1e "Á796;]3* \ No newline at end of file diff --git a/test/core/json/corpus/0ea9a160c57f2c705dce037196e360bf9be739c5 b/test/core/json/corpus/0ea9a160c57f2c705dce037196e360bf9be739c5 new file mode 100644 index 00000000000..f92893d1da4 --- /dev/null +++ b/test/core/json/corpus/0ea9a160c57f2c705dce037196e360bf9be739c5 @@ -0,0 +1 @@ +f' \ No newline at end of file diff --git a/test/core/json/corpus/0f20d9c46991c0e97419e2cca07c7389f1d6bdf8 b/test/core/json/corpus/0f20d9c46991c0e97419e2cca07c7389f1d6bdf8 new file mode 100644 index 00000000000..05a6fb24447 --- /dev/null +++ b/test/core/json/corpus/0f20d9c46991c0e97419e2cca07c7389f1d6bdf8 @@ -0,0 +1 @@ +1e "Á9 \ No newline at end of file diff --git a/test/core/json/corpus/0f2e2e6346f70c419300b661251754d50f7ca8ea b/test/core/json/corpus/0f2e2e6346f70c419300b661251754d50f7ca8ea new file mode 100644 index 00000000000..e429f5078e7 --- /dev/null +++ b/test/core/json/corpus/0f2e2e6346f70c419300b661251754d50f7ca8ea @@ -0,0 +1 @@ +[2.1982 \ No newline at end of file diff --git a/test/core/json/corpus/108e5bcd69b19ad0df743641085163b84f376fe8 b/test/core/json/corpus/108e5bcd69b19ad0df743641085163b84f376fe8 new file mode 100644 index 00000000000..0973cbb2548 --- /dev/null +++ b/test/core/json/corpus/108e5bcd69b19ad0df743641085163b84f376fe8 @@ -0,0 +1,2 @@ +[{ +"" "" \ No newline at end of file diff --git a/test/core/json/corpus/11aa091189b78d1cc35c7ff4907ac16a73aba547 b/test/core/json/corpus/11aa091189b78d1cc35c7ff4907ac16a73aba547 new file mode 100644 index 00000000000..cb888202073 --- /dev/null +++ b/test/core/json/corpus/11aa091189b78d1cc35c7ff4907ac16a73aba547 @@ -0,0 +1 @@ +[9281.2; \ No newline at end of file diff --git a/test/core/json/corpus/1227907b2ee5a9492a890beed55332e4560834c8 b/test/core/json/corpus/1227907b2ee5a9492a890beed55332e4560834c8 new file mode 100644 index 00000000000..fd35270ae23 --- /dev/null +++ b/test/core/json/corpus/1227907b2ee5a9492a890beed55332e4560834c8 @@ -0,0 +1 @@ +2}5 \ No newline at end of file diff --git a/test/core/json/corpus/137f554ee0f6b903acb81ab4e1f98c11fe92b008 b/test/core/json/corpus/137f554ee0f6b903acb81ab4e1f98c11fe92b008 new file mode 100644 index 00000000000..98232c64fce --- /dev/null +++ b/test/core/json/corpus/137f554ee0f6b903acb81ab4e1f98c11fe92b008 @@ -0,0 +1 @@ +{ diff --git a/test/core/json/corpus/1401ea03ec78b8f20dc7be952555004d7147f0f5 b/test/core/json/corpus/1401ea03ec78b8f20dc7be952555004d7147f0f5 new file mode 100644 index 00000000000..595fe02dbc5 --- /dev/null +++ b/test/core/json/corpus/1401ea03ec78b8f20dc7be952555004d7147f0f5 @@ -0,0 +1 @@ +"{)! \ No newline at end of file diff --git a/test/core/json/corpus/15c9c1284c27c8893559e15c9b2a50cbd5bbb56f b/test/core/json/corpus/15c9c1284c27c8893559e15c9b2a50cbd5bbb56f new file mode 100644 index 00000000000..21a9555f3bc --- /dev/null +++ b/test/core/json/corpus/15c9c1284c27c8893559e15c9b2a50cbd5bbb56f @@ -0,0 +1 @@ +[2,"!{)!:", \ No newline at end of file diff --git a/test/core/json/corpus/15d1a6cda48ef569b368a0c4627435bc2c80a988 b/test/core/json/corpus/15d1a6cda48ef569b368a0c4627435bc2c80a988 new file mode 100644 index 00000000000..8017a981b46 --- /dev/null +++ b/test/core/json/corpus/15d1a6cda48ef569b368a0c4627435bc2c80a988 @@ -0,0 +1 @@ + " " \ No newline at end of file diff --git a/test/core/json/corpus/17b815f1f72cb64481bc40263e91ce063040f739 b/test/core/json/corpus/17b815f1f72cb64481bc40263e91ce063040f739 new file mode 100644 index 00000000000..81b218eb64f --- /dev/null +++ b/test/core/json/corpus/17b815f1f72cb64481bc40263e91ce063040f739 @@ -0,0 +1 @@ +[tr \ No newline at end of file diff --git a/test/core/json/corpus/190fbe2da448f6bdec0706c5301ad13363ae3ad9 b/test/core/json/corpus/190fbe2da448f6bdec0706c5301ad13363ae3ad9 new file mode 100644 index 00000000000..37144c716ff --- /dev/null +++ b/test/core/json/corpus/190fbe2da448f6bdec0706c5301ad13363ae3ad9 @@ -0,0 +1 @@ +1e+2187560 \ No newline at end of file diff --git a/test/core/json/corpus/1b045a24b8f1f1fd6e8234d5019952ee7713a8b7 b/test/core/json/corpus/1b045a24b8f1f1fd6e8234d5019952ee7713a8b7 new file mode 100644 index 00000000000..04ac543c3c8 --- /dev/null +++ b/test/core/json/corpus/1b045a24b8f1f1fd6e8234d5019952ee7713a8b7 @@ -0,0 +1 @@ +\5 \ No newline at end of file diff --git a/test/core/json/corpus/1b6453892473a467d07372d45eb05abc2031647a b/test/core/json/corpus/1b6453892473a467d07372d45eb05abc2031647a new file mode 100644 index 00000000000..bf0d87ab1b2 --- /dev/null +++ b/test/core/json/corpus/1b6453892473a467d07372d45eb05abc2031647a @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/test/core/json/corpus/1dea95b5050b766274ef80847505c0e4f47f3ebb b/test/core/json/corpus/1dea95b5050b766274ef80847505c0e4f47f3ebb new file mode 100644 index 00000000000..1237d778555 --- /dev/null +++ b/test/core/json/corpus/1dea95b5050b766274ef80847505c0e4f47f3ebb @@ -0,0 +1 @@ +13e190560 \ No newline at end of file diff --git a/test/core/json/corpus/1dfe267b623b20cd97c6e8969d8b9148af9f4a2c b/test/core/json/corpus/1dfe267b623b20cd97c6e8969d8b9148af9f4a2c new file mode 100644 index 00000000000..7f010a27def --- /dev/null +++ b/test/core/json/corpus/1dfe267b623b20cd97c6e8969d8b9148af9f4a2c @@ -0,0 +1 @@ +6(0 \ No newline at end of file diff --git a/test/core/json/corpus/1e5c2f367f02e47a8c160cda1cd9d91decbac441 b/test/core/json/corpus/1e5c2f367f02e47a8c160cda1cd9d91decbac441 new file mode 100644 index 00000000000..8e2f0bef135 --- /dev/null +++ b/test/core/json/corpus/1e5c2f367f02e47a8c160cda1cd9d91decbac441 @@ -0,0 +1 @@ +[ \ No newline at end of file diff --git a/test/core/json/corpus/20efdba13ca7a3657d071b3d56997aa3b083068a b/test/core/json/corpus/20efdba13ca7a3657d071b3d56997aa3b083068a new file mode 100644 index 00000000000..5194be3963e --- /dev/null +++ b/test/core/json/corpus/20efdba13ca7a3657d071b3d56997aa3b083068a @@ -0,0 +1 @@ +"{)!:*])!:{"*?;?Xʳ'!! \ No newline at end of file diff --git a/test/core/json/corpus/215a956168f77421253e947c2436371d56aa7ea1 b/test/core/json/corpus/215a956168f77421253e947c2436371d56aa7ea1 new file mode 100644 index 00000000000..a0aeede19a5 --- /dev/null +++ b/test/core/json/corpus/215a956168f77421253e947c2436371d56aa7ea1 @@ -0,0 +1 @@ +fa \ No newline at end of file diff --git a/test/core/json/corpus/2174b9ab6bf4f7c21fe1ed56957f1776ef611959 b/test/core/json/corpus/2174b9ab6bf4f7c21fe1ed56957f1776ef611959 new file mode 100644 index 00000000000..ef32707a4e7 --- /dev/null +++ b/test/core/json/corpus/2174b9ab6bf4f7c21fe1ed56957f1776ef611959 @@ -0,0 +1 @@ +13e5!01860 \ No newline at end of file diff --git a/test/core/json/corpus/26aca41ee8f199e7c0c7cf31d979952571c53fc9 b/test/core/json/corpus/26aca41ee8f199e7c0c7cf31d979952571c53fc9 new file mode 100644 index 00000000000..016fe5628bb --- /dev/null +++ b/test/core/json/corpus/26aca41ee8f199e7c0c7cf31d979952571c53fc9 @@ -0,0 +1 @@ +falsT{2*67}]3* \ No newline at end of file diff --git a/test/core/json/corpus/27da426a5883662d19ea78f306d7a992be52f827 b/test/core/json/corpus/27da426a5883662d19ea78f306d7a992be52f827 new file mode 100644 index 00000000000..2e7373e1581 --- /dev/null +++ b/test/core/json/corpus/27da426a5883662d19ea78f306d7a992be52f827 @@ -0,0 +1,2 @@ +2 +P2 \ No newline at end of file diff --git a/test/core/json/corpus/296dcda6f7e6979e68ddef7cbc1206a355084ad3 b/test/core/json/corpus/296dcda6f7e6979e68ddef7cbc1206a355084ad3 new file mode 100644 index 00000000000..e510185137d --- /dev/null +++ b/test/core/json/corpus/296dcda6f7e6979e68ddef7cbc1206a355084ad3 @@ -0,0 +1 @@ +,"" \ No newline at end of file diff --git a/test/core/json/corpus/29b08c03ca5a6851fa4604a984cb7ff44433a5a5 b/test/core/json/corpus/29b08c03ca5a6851fa4604a984cb7ff44433a5a5 new file mode 100644 index 00000000000..60ec6c51e9c --- /dev/null +++ b/test/core/json/corpus/29b08c03ca5a6851fa4604a984cb7ff44433a5a5 @@ -0,0 +1 @@ +3]5 \ No newline at end of file diff --git a/test/core/json/corpus/2b3b1ad952e3acb566e32a84e2d503acde13eb53 b/test/core/json/corpus/2b3b1ad952e3acb566e32a84e2d503acde13eb53 new file mode 100644 index 00000000000..0f5e2da9011 --- /dev/null +++ b/test/core/json/corpus/2b3b1ad952e3acb566e32a84e2d503acde13eb53 @@ -0,0 +1 @@ +31e8560 \ No newline at end of file diff --git a/test/core/json/corpus/2d3d5b9275553430b4cfa68114099120ad7809ee b/test/core/json/corpus/2d3d5b9275553430b4cfa68114099120ad7809ee new file mode 100644 index 00000000000..7e7e3f7a03e --- /dev/null +++ b/test/core/json/corpus/2d3d5b9275553430b4cfa68114099120ad7809ee @@ -0,0 +1 @@ +[4* \ No newline at end of file diff --git a/test/core/json/corpus/2db610e1a230409a205cf22fbad3348a54cbe703 b/test/core/json/corpus/2db610e1a230409a205cf22fbad3348a54cbe703 new file mode 100644 index 00000000000..3541d8d15d3 --- /dev/null +++ b/test/core/json/corpus/2db610e1a230409a205cf22fbad3348a54cbe703 @@ -0,0 +1 @@ +fa \ No newline at end of file diff --git a/test/core/json/corpus/2e32faacd3ea4461ec7aace297b4be6904d9a389 b/test/core/json/corpus/2e32faacd3ea4461ec7aace297b4be6904d9a389 new file mode 100644 index 00000000000..83323c25037 --- /dev/null +++ b/test/core/json/corpus/2e32faacd3ea4461ec7aace297b4be6904d9a389 @@ -0,0 +1 @@ +[["{)!:*;?'ʳ!!*!):!*:::\u1.y2db)8!:{!`!.7;? \ No newline at end of file diff --git a/test/core/json/corpus/2e756d91759d7e74f5b776c0d2a1935292f576d1 b/test/core/json/corpus/2e756d91759d7e74f5b776c0d2a1935292f576d1 new file mode 100644 index 00000000000..037d9ceb5dc --- /dev/null +++ b/test/core/json/corpus/2e756d91759d7e74f5b776c0d2a1935292f576d1 @@ -0,0 +1 @@ +"{)!:*;?'ʳ!!*!):!*::d\r:8))![1.97:{ \ No newline at end of file diff --git a/test/core/json/corpus/3027d901361162b38fcaf17f97ba7d9646e32495 b/test/core/json/corpus/3027d901361162b38fcaf17f97ba7d9646e32495 new file mode 100644 index 00000000000..8372b410d69 --- /dev/null +++ b/test/core/json/corpus/3027d901361162b38fcaf17f97ba7d9646e32495 @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/core/json/corpus/356a192b7913b04c54574d18c28d46e6395428ab b/test/core/json/corpus/356a192b7913b04c54574d18c28d46e6395428ab new file mode 100644 index 00000000000..56a6051ca2b --- /dev/null +++ b/test/core/json/corpus/356a192b7913b04c54574d18c28d46e6395428ab @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/test/core/json/corpus/373769c15c145472c8ec3bdde8fc84e85ec79211 b/test/core/json/corpus/373769c15c145472c8ec3bdde8fc84e85ec79211 new file mode 100644 index 00000000000..7f340609ed4 --- /dev/null +++ b/test/core/json/corpus/373769c15c145472c8ec3bdde8fc84e85ec79211 @@ -0,0 +1,2 @@ +{} 2 +,[[2p} \ No newline at end of file diff --git a/test/core/json/corpus/3795d911970a1fd8416b93649051b418948e3edf b/test/core/json/corpus/3795d911970a1fd8416b93649051b418948e3edf new file mode 100644 index 00000000000..1df36a5b974 --- /dev/null +++ b/test/core/json/corpus/3795d911970a1fd8416b93649051b418948e3edf @@ -0,0 +1 @@ +[[2.76;]3* \ No newline at end of file diff --git a/test/core/json/corpus/38cd33bb390445e35b6514024b1317902cb7ba1b b/test/core/json/corpus/38cd33bb390445e35b6514024b1317902cb7ba1b new file mode 100644 index 00000000000..83312e5c070 --- /dev/null +++ b/test/core/json/corpus/38cd33bb390445e35b6514024b1317902cb7ba1b @@ -0,0 +1 @@ +"!{)!:", \ No newline at end of file diff --git a/test/core/json/corpus/3a90c688f44447a78efc111872b061a001f04d2b b/test/core/json/corpus/3a90c688f44447a78efc111872b061a001f04d2b new file mode 100644 index 00000000000..2b729e722bf --- /dev/null +++ b/test/core/json/corpus/3a90c688f44447a78efc111872b061a001f04d2b @@ -0,0 +1 @@ +181e32560 \ No newline at end of file diff --git a/test/core/json/corpus/3c0a8d6c31edaca124714624eb64cb8ec0cbab13 b/test/core/json/corpus/3c0a8d6c31edaca124714624eb64cb8ec0cbab13 new file mode 100644 index 00000000000..82db9e7887a --- /dev/null +++ b/test/core/json/corpus/3c0a8d6c31edaca124714624eb64cb8ec0cbab13 @@ -0,0 +1 @@ +{"*]:!{)?'ʳ!!*!):!*:::\udbD8)!{:{!`!?`"( \ No newline at end of file diff --git a/test/core/json/corpus/3cc0c9adcf3882f01409c70391c3cd30588ef34c b/test/core/json/corpus/3cc0c9adcf3882f01409c70391c3cd30588ef34c new file mode 100644 index 00000000000..7a63c8c57c8 --- /dev/null +++ b/test/core/json/corpus/3cc0c9adcf3882f01409c70391c3cd30588ef34c @@ -0,0 +1 @@ +[{ \ No newline at end of file diff --git a/test/core/json/corpus/3d0d9878b812ce4634962ba3dd755c0953550200 b/test/core/json/corpus/3d0d9878b812ce4634962ba3dd755c0953550200 new file mode 100644 index 00000000000..8793f1e0adb --- /dev/null +++ b/test/core/json/corpus/3d0d9878b812ce4634962ba3dd755c0953550200 @@ -0,0 +1 @@ +[tru[(0.193;]4* \ No newline at end of file diff --git a/test/core/json/corpus/3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59 b/test/core/json/corpus/3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59 new file mode 100644 index 00000000000..90a082d8d9f --- /dev/null +++ b/test/core/json/corpus/3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59 @@ -0,0 +1 @@ +13e290560 \ No newline at end of file diff --git a/test/core/json/corpus/421b7e8ea86e3c07474af16ab3ccef55d1857205 b/test/core/json/corpus/421b7e8ea86e3c07474af16ab3ccef55d1857205 new file mode 100644 index 00000000000..127471478b8 --- /dev/null +++ b/test/core/json/corpus/421b7e8ea86e3c07474af16ab3ccef55d1857205 @@ -0,0 +1,2 @@ +[2.1 +'{""È"" \ No newline at end of file diff --git a/test/core/json/corpus/428d051e437dd260f2a2f7ed920d9734ca34dc90 b/test/core/json/corpus/428d051e437dd260f2a2f7ed920d9734ca34dc90 new file mode 100644 index 00000000000..ad50d48199c --- /dev/null +++ b/test/core/json/corpus/428d051e437dd260f2a2f7ed920d9734ca34dc90 @@ -0,0 +1 @@ +[2. \ No newline at end of file diff --git a/test/core/json/corpus/43620ecd2e2fd58fe5650da2e9783f980f29ec07 b/test/core/json/corpus/43620ecd2e2fd58fe5650da2e9783f980f29ec07 new file mode 100644 index 00000000000..f198034ea77 --- /dev/null +++ b/test/core/json/corpus/43620ecd2e2fd58fe5650da2e9783f980f29ec07 @@ -0,0 +1 @@ +13e109560 \ No newline at end of file diff --git a/test/core/json/corpus/43b1ffcda49477adb1632822202631990ed3a269 b/test/core/json/corpus/43b1ffcda49477adb1632822202631990ed3a269 new file mode 100644 index 00000000000..19db1d405ff --- /dev/null +++ b/test/core/json/corpus/43b1ffcda49477adb1632822202631990ed3a269 @@ -0,0 +1 @@ +1e+2,1"x \ No newline at end of file diff --git a/test/core/json/corpus/45279f85bf2f533a629073caf89403006279fab2 b/test/core/json/corpus/45279f85bf2f533a629073caf89403006279fab2 new file mode 100644 index 00000000000..e6d3d7c28be --- /dev/null +++ b/test/core/json/corpus/45279f85bf2f533a629073caf89403006279fab2 @@ -0,0 +1,2 @@ +{ +620 \ No newline at end of file diff --git a/test/core/json/corpus/469e5ed2547e9e55a96e96eb832c615631e3b576 b/test/core/json/corpus/469e5ed2547e9e55a96e96eb832c615631e3b576 new file mode 100644 index 00000000000..97e7cafffb0 --- /dev/null +++ b/test/core/json/corpus/469e5ed2547e9e55a96e96eb832c615631e3b576 @@ -0,0 +1 @@ +[])!:{"*?'ʳ!!*!):!*:::\udbD8){!:{!`!?`"( \ No newline at end of file diff --git a/test/core/json/corpus/4a0a19218e082a343a1b17e5333409af9d98f0f5 b/test/core/json/corpus/4a0a19218e082a343a1b17e5333409af9d98f0f5 new file mode 100644 index 00000000000..4d1ae35ba2c --- /dev/null +++ b/test/core/json/corpus/4a0a19218e082a343a1b17e5333409af9d98f0f5 @@ -0,0 +1 @@ +f \ No newline at end of file diff --git a/test/core/json/corpus/4a6644a1a3d5218f4bbd60220cab79c0b7bef45e b/test/core/json/corpus/4a6644a1a3d5218f4bbd60220cab79c0b7bef45e new file mode 100644 index 00000000000..90b4ca3a2cb --- /dev/null +++ b/test/core/json/corpus/4a6644a1a3d5218f4bbd60220cab79c0b7bef45e @@ -0,0 +1 @@ +[21.82 \ No newline at end of file diff --git a/test/core/json/corpus/4cd66dfabbd964f8c6c4414b07cdb45dae692e19 b/test/core/json/corpus/4cd66dfabbd964f8c6c4414b07cdb45dae692e19 new file mode 100644 index 00000000000..a46c9d2265d --- /dev/null +++ b/test/core/json/corpus/4cd66dfabbd964f8c6c4414b07cdb45dae692e19 @@ -0,0 +1 @@ +91 \ No newline at end of file diff --git a/test/core/json/corpus/4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8 b/test/core/json/corpus/4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8 new file mode 100644 index 00000000000..17ef43e800b --- /dev/null +++ b/test/core/json/corpus/4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8 @@ -0,0 +1 @@ +813e128560 \ No newline at end of file diff --git a/test/core/json/corpus/4ff99a030518a132748c44bc1d836018e5b82cd0 b/test/core/json/corpus/4ff99a030518a132748c44bc1d836018e5b82cd0 new file mode 100644 index 00000000000..bc59462e430 --- /dev/null +++ b/test/core/json/corpus/4ff99a030518a132748c44bc1d836018e5b82cd0 @@ -0,0 +1 @@ +{"*]:!{)?') :*!):!*:::\udb81\uDeA12])!{:{!`!? \ No newline at end of file diff --git a/test/core/json/corpus/534d66e7b0709d1e7692faae9e7f7299c92bba4b b/test/core/json/corpus/534d66e7b0709d1e7692faae9e7f7299c92bba4b new file mode 100644 index 00000000000..44b3fa0c842 --- /dev/null +++ b/test/core/json/corpus/534d66e7b0709d1e7692faae9e7f7299c92bba4b @@ -0,0 +1 @@ +[[2.193]4* \ No newline at end of file diff --git a/test/core/json/corpus/548775f9d7d13339dba3001f8238b84e9a457533 b/test/core/json/corpus/548775f9d7d13339dba3001f8238b84e9a457533 new file mode 100644 index 00000000000..9fed6d1d0ae --- /dev/null +++ b/test/core/json/corpus/548775f9d7d13339dba3001f8238b84e9a457533 @@ -0,0 +1 @@ +[1.97; \ No newline at end of file diff --git a/test/core/json/corpus/54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79 b/test/core/json/corpus/54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79 new file mode 100644 index 00000000000..25984e70eaa --- /dev/null +++ b/test/core/json/corpus/54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79 @@ -0,0 +1 @@ +"{)!:*;?Xʳ!!*!):!*:::\udb)8!:{!`!*`!?'!*m,');'` \ No newline at end of file diff --git a/test/core/json/corpus/552cfe1d8958e6d003ec8e883c4983dd67ef255e b/test/core/json/corpus/552cfe1d8958e6d003ec8e883c4983dd67ef255e new file mode 100644 index 00000000000..1b183700721 --- /dev/null +++ b/test/core/json/corpus/552cfe1d8958e6d003ec8e883c4983dd67ef255e @@ -0,0 +1 @@ +nu# \ No newline at end of file diff --git a/test/core/json/corpus/56e5f35e3d08b4e17e3558cacddf9e5ed13a0159 b/test/core/json/corpus/56e5f35e3d08b4e17e3558cacddf9e5ed13a0159 new file mode 100644 index 00000000000..1960fad59a6 --- /dev/null +++ b/test/core/json/corpus/56e5f35e3d08b4e17e3558cacddf9e5ed13a0159 @@ -0,0 +1 @@ +[[[{"{)!:*;?'ʳ!!*!):!*:::\u12198.y2db)8!3;!ȇ:!`!.7;? \ No newline at end of file diff --git a/test/core/json/corpus/598a287a3e56caae23ed63abc95d5f3457165eef b/test/core/json/corpus/598a287a3e56caae23ed63abc95d5f3457165eef new file mode 100644 index 00000000000..7d3db889452 --- /dev/null +++ b/test/core/json/corpus/598a287a3e56caae23ed63abc95d5f3457165eef @@ -0,0 +1 @@ +81e6125380 \ No newline at end of file diff --git a/test/core/json/corpus/5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184 b/test/core/json/corpus/5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184 new file mode 100644 index 00000000000..a1c1118041a --- /dev/null +++ b/test/core/json/corpus/5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184 @@ -0,0 +1,2 @@ +{ +""È"" \ No newline at end of file diff --git a/test/core/json/corpus/5ca6c45a8d2e11c782806df43e7668beb4aba8f5 b/test/core/json/corpus/5ca6c45a8d2e11c782806df43e7668beb4aba8f5 new file mode 100644 index 00000000000..ef736fdd7ee --- /dev/null +++ b/test/core/json/corpus/5ca6c45a8d2e11c782806df43e7668beb4aba8f5 @@ -0,0 +1 @@ +nul \ No newline at end of file diff --git a/test/core/json/corpus/5da7b543313339f84fd52e96bacf3a73368a1d2c b/test/core/json/corpus/5da7b543313339f84fd52e96bacf3a73368a1d2c new file mode 100644 index 00000000000..0e44b3ec9b7 --- /dev/null +++ b/test/core/json/corpus/5da7b543313339f84fd52e96bacf3a73368a1d2c @@ -0,0 +1 @@ +])!:{"*?'ʳ!!*!):!*:::\udbD8)!:{!`!?`!?'!*m,');'` \ No newline at end of file diff --git a/test/core/json/corpus/5e629dfb8b7533c7c2d173d4c3d587c88112cc29 b/test/core/json/corpus/5e629dfb8b7533c7c2d173d4c3d587c88112cc29 new file mode 100644 index 00000000000..08b9840484e --- /dev/null +++ b/test/core/json/corpus/5e629dfb8b7533c7c2d173d4c3d587c88112cc29 @@ -0,0 +1 @@ +1e2188560 \ No newline at end of file diff --git a/test/core/json/corpus/5f3394f5058822cc044b92654837625897176480 b/test/core/json/corpus/5f3394f5058822cc044b92654837625897176480 new file mode 100644 index 00000000000..fb460ce022e --- /dev/null +++ b/test/core/json/corpus/5f3394f5058822cc044b92654837625897176480 @@ -0,0 +1 @@ +813e1622427913e1099560 \ No newline at end of file diff --git a/test/core/json/corpus/60ba4b2daa4ed4d070fec06687e249e0e6f9ee45 b/test/core/json/corpus/60ba4b2daa4ed4d070fec06687e249e0e6f9ee45 new file mode 100644 index 00000000000..81750b96f9d --- /dev/null +++ b/test/core/json/corpus/60ba4b2daa4ed4d070fec06687e249e0e6f9ee45 @@ -0,0 +1 @@ +{ \ No newline at end of file diff --git a/test/core/json/corpus/625ed64c30c8ab2f0b3bc75690f9faa4270f0041 b/test/core/json/corpus/625ed64c30c8ab2f0b3bc75690f9faa4270f0041 new file mode 100644 index 00000000000..a9322d461ac --- /dev/null +++ b/test/core/json/corpus/625ed64c30c8ab2f0b3bc75690f9faa4270f0041 @@ -0,0 +1 @@ +"{)!:*;?'ʳ!!*!):!*::d\b:8))![1.97:{ \ No newline at end of file diff --git a/test/core/json/corpus/6314c2b304d04dc0108a95d29a93515e85e2b0b0 b/test/core/json/corpus/6314c2b304d04dc0108a95d29a93515e85e2b0b0 new file mode 100644 index 00000000000..5981d9b6775 --- /dev/null +++ b/test/core/json/corpus/6314c2b304d04dc0108a95d29a93515e85e2b0b0 @@ -0,0 +1 @@ +{"*]:!{)?'ʳ :*!):!*:::\udbD8\u)!{:{!`!?`")( \ No newline at end of file diff --git a/test/core/json/corpus/6462d8079d2ea921617e7d073b85cfab706800d3 b/test/core/json/corpus/6462d8079d2ea921617e7d073b85cfab706800d3 new file mode 100644 index 00000000000..8ecd203c10b --- /dev/null +++ b/test/core/json/corpus/6462d8079d2ea921617e7d073b85cfab706800d3 @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/test/core/json/corpus/66328e03a2ccd5e54dab23b816182786e6f518b6 b/test/core/json/corpus/66328e03a2ccd5e54dab23b816182786e6f518b6 new file mode 100644 index 00000000000..0d7016ba9e1 --- /dev/null +++ b/test/core/json/corpus/66328e03a2ccd5e54dab23b816182786e6f518b6 @@ -0,0 +1 @@ +[{"\t5{)!:* \ No newline at end of file diff --git a/test/core/json/corpus/683e9045bc95e0cb5fc16ec64b118433475ba559 b/test/core/json/corpus/683e9045bc95e0cb5fc16ec64b118433475ba559 new file mode 100644 index 0000000000000000000000000000000000000000..ab9ecdf660eb18642441414cb8b66c729bb773aa GIT binary patch literal 4 LcmZQbiq--E0tx`= literal 0 HcmV?d00001 diff --git a/test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669 b/test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669 new file mode 100644 index 00000000000..e49c89033a9 --- /dev/null +++ b/test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669 @@ -0,0 +1 @@ +["*]:!{)?'ʳ!!*!):!*:::\udcD8){!:{!`!?`"( \ No newline at end of file diff --git a/test/core/json/corpus/68c6ba7f0602a5410d1fa3c5de24fe264436b993 b/test/core/json/corpus/68c6ba7f0602a5410d1fa3c5de24fe264436b993 new file mode 100644 index 00000000000..05c556cb256 --- /dev/null +++ b/test/core/json/corpus/68c6ba7f0602a5410d1fa3c5de24fe264436b993 @@ -0,0 +1 @@ +{},[ \ No newline at end of file diff --git a/test/core/json/corpus/699cafde80b1e1777306f781186d1253f018ab23 b/test/core/json/corpus/699cafde80b1e1777306f781186d1253f018ab23 new file mode 100644 index 00000000000..54a4e1edc49 --- /dev/null +++ b/test/core/json/corpus/699cafde80b1e1777306f781186d1253f018ab23 @@ -0,0 +1 @@ +[2}5{ \ No newline at end of file diff --git a/test/core/json/corpus/69afa12510b2e653b0af7c7030832647b2d63c37 b/test/core/json/corpus/69afa12510b2e653b0af7c7030832647b2d63c37 new file mode 100644 index 00000000000..5cd51036732 --- /dev/null +++ b/test/core/json/corpus/69afa12510b2e653b0af7c7030832647b2d63c37 @@ -0,0 +1 @@ +"," \ No newline at end of file diff --git a/test/core/json/corpus/6b75857f86be5c51b21a97f4a61e69e8bb6cd698 b/test/core/json/corpus/6b75857f86be5c51b21a97f4a61e69e8bb6cd698 new file mode 100644 index 00000000000..890abf258d1 --- /dev/null +++ b/test/core/json/corpus/6b75857f86be5c51b21a97f4a61e69e8bb6cd698 @@ -0,0 +1 @@ +310560 \ No newline at end of file diff --git a/test/core/json/corpus/6ce5170dc4f2eee3b31a875b6a41f2444959f3dd b/test/core/json/corpus/6ce5170dc4f2eee3b31a875b6a41f2444959f3dd new file mode 100644 index 00000000000..c91aab3f3a6 --- /dev/null +++ b/test/core/json/corpus/6ce5170dc4f2eee3b31a875b6a41f2444959f3dd @@ -0,0 +1 @@ +0}54 \ No newline at end of file diff --git a/test/core/json/corpus/6d2859436fbbee637f0a5981ca82e8f88a1d0d28 b/test/core/json/corpus/6d2859436fbbee637f0a5981ca82e8f88a1d0d28 new file mode 100644 index 00000000000..12d7c034b9d --- /dev/null +++ b/test/core/json/corpus/6d2859436fbbee637f0a5981ca82e8f88a1d0d28 @@ -0,0 +1 @@ +[tr[[0.193;]4* \ No newline at end of file diff --git a/test/core/json/corpus/6e05a0a240fe2974e14527bbe390d294564156e2 b/test/core/json/corpus/6e05a0a240fe2974e14527bbe390d294564156e2 new file mode 100644 index 00000000000..82236fc0e8d --- /dev/null +++ b/test/core/json/corpus/6e05a0a240fe2974e14527bbe390d294564156e2 @@ -0,0 +1 @@ +[2.1981 \ No newline at end of file diff --git a/test/core/json/corpus/6e6c9d301adb0f0ddffd79cdf3426a2de99bad48 b/test/core/json/corpus/6e6c9d301adb0f0ddffd79cdf3426a2de99bad48 new file mode 100644 index 00000000000..363c669178a --- /dev/null +++ b/test/core/json/corpus/6e6c9d301adb0f0ddffd79cdf3426a2de99bad48 @@ -0,0 +1,2 @@ +{ +"" \ No newline at end of file diff --git a/test/core/json/corpus/70142f66475ae2fb33722d8d4750f386ecfefe7b b/test/core/json/corpus/70142f66475ae2fb33722d8d4750f386ecfefe7b new file mode 100644 index 00000000000..415b19fc362 --- /dev/null +++ b/test/core/json/corpus/70142f66475ae2fb33722d8d4750f386ecfefe7b @@ -0,0 +1 @@ +2.0 \ No newline at end of file diff --git a/test/core/json/corpus/719edbe667ce2729ac78a22dac29263c91144029 b/test/core/json/corpus/719edbe667ce2729ac78a22dac29263c91144029 new file mode 100644 index 00000000000..fccbca338e3 --- /dev/null +++ b/test/core/json/corpus/719edbe667ce2729ac78a22dac29263c91144029 @@ -0,0 +1 @@ + 1e-2188560 \ No newline at end of file diff --git a/test/core/json/corpus/77de68daecd823babbb58edb1c8e14d7106e83bb b/test/core/json/corpus/77de68daecd823babbb58edb1c8e14d7106e83bb new file mode 100644 index 00000000000..e440e5c8425 --- /dev/null +++ b/test/core/json/corpus/77de68daecd823babbb58edb1c8e14d7106e83bb @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/test/core/json/corpus/7957dc9aac31e6a6783fb3a6ee073688fed6cf9d b/test/core/json/corpus/7957dc9aac31e6a6783fb3a6ee073688fed6cf9d new file mode 100644 index 00000000000..27410a65239 --- /dev/null +++ b/test/core/json/corpus/7957dc9aac31e6a6783fb3a6ee073688fed6cf9d @@ -0,0 +1 @@ +fal[2.1982 \ No newline at end of file diff --git a/test/core/json/corpus/7b20ac50954063e3ad00813acab4a98b2bfdb858 b/test/core/json/corpus/7b20ac50954063e3ad00813acab4a98b2bfdb858 new file mode 100644 index 00000000000..0bfbc04aab5 --- /dev/null +++ b/test/core/json/corpus/7b20ac50954063e3ad00813acab4a98b2bfdb858 @@ -0,0 +1 @@ +[2.198 \ No newline at end of file diff --git a/test/core/json/corpus/7cf84b5a78281e6c6b5a9884110f3dbc6a40e310 b/test/core/json/corpus/7cf84b5a78281e6c6b5a9884110f3dbc6a40e310 new file mode 100644 index 00000000000..6409a85fb14 --- /dev/null +++ b/test/core/json/corpus/7cf84b5a78281e6c6b5a9884110f3dbc6a40e310 @@ -0,0 +1,2 @@ +{ +"[2":}5["}5""{ \ No newline at end of file diff --git a/test/core/json/corpus/82059e250904b478f65daa0e647c1647ba6d6a3d b/test/core/json/corpus/82059e250904b478f65daa0e647c1647ba6d6a3d new file mode 100644 index 00000000000..7912fa5b712 --- /dev/null +++ b/test/core/json/corpus/82059e250904b478f65daa0e647c1647ba6d6a3d @@ -0,0 +1 @@ +21.596 \ No newline at end of file diff --git a/test/core/json/corpus/8207fdf4bd302d6b6b1894990b353944a8716aa7 b/test/core/json/corpus/8207fdf4bd302d6b6b1894990b353944a8716aa7 new file mode 100644 index 00000000000..bbc3e31ed77 --- /dev/null +++ b/test/core/json/corpus/8207fdf4bd302d6b6b1894990b353944a8716aa7 @@ -0,0 +1 @@ +{"*]:!{)?') :*!):!*:::\udb81\uD83e12])!{:{!`!? \ No newline at end of file diff --git a/test/core/json/corpus/84582c1dbe026475319df14c19967d1dd0bf751f b/test/core/json/corpus/84582c1dbe026475319df14c19967d1dd0bf751f new file mode 100644 index 00000000000..7f509bf3890 --- /dev/null +++ b/test/core/json/corpus/84582c1dbe026475319df14c19967d1dd0bf751f @@ -0,0 +1 @@ +560 \ No newline at end of file diff --git a/test/core/json/corpus/88f658400b1870ddf081fb03020c3098b0b1e083 b/test/core/json/corpus/88f658400b1870ddf081fb03020c3098b0b1e083 new file mode 100644 index 00000000000..6c4c53724ab --- /dev/null +++ b/test/core/json/corpus/88f658400b1870ddf081fb03020c3098b0b1e083 @@ -0,0 +1 @@ +[[])!:{"*?'ʳ!!*!):!*:::\udbD{8){!:{!`!?`"( \ No newline at end of file diff --git a/test/core/json/corpus/88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a b/test/core/json/corpus/88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a new file mode 100644 index 00000000000..e37941d2de1 --- /dev/null +++ b/test/core/json/corpus/88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a @@ -0,0 +1,2 @@ +2 + \ No newline at end of file diff --git a/test/core/json/corpus/89304953495f060c7abd3584d83cb1c8e6d6653b b/test/core/json/corpus/89304953495f060c7abd3584d83cb1c8e6d6653b new file mode 100644 index 00000000000..fa86cb3a725 --- /dev/null +++ b/test/core/json/corpus/89304953495f060c7abd3584d83cb1c8e6d6653b @@ -0,0 +1 @@ +[[["{)!:*;?'ʳ!!*!)])!:{:!*:::\"u12*1 \ No newline at end of file diff --git a/test/core/json/corpus/8a5f6dc6873e3fd51fd866854d85258f8aa83a02 b/test/core/json/corpus/8a5f6dc6873e3fd51fd866854d85258f8aa83a02 new file mode 100644 index 00000000000..057adde5d05 --- /dev/null +++ b/test/core/json/corpus/8a5f6dc6873e3fd51fd866854d85258f8aa83a02 @@ -0,0 +1,2 @@ +{ +"":"" \ No newline at end of file diff --git a/test/core/json/corpus/8a87261277c15667e2957dd52c5db6757ebc8e88 b/test/core/json/corpus/8a87261277c15667e2957dd52c5db6757ebc8e88 new file mode 100644 index 00000000000..9d7ee39401c --- /dev/null +++ b/test/core/json/corpus/8a87261277c15667e2957dd52c5db6757ebc8e88 @@ -0,0 +1 @@ +t"{)!:*;?Xʳ!!*!):!*:::\ \ No newline at end of file diff --git a/test/core/json/corpus/8aa61d8bd260942521bb1ba82cd4cce2324fdbee b/test/core/json/corpus/8aa61d8bd260942521bb1ba82cd4cce2324fdbee new file mode 100644 index 00000000000..9c93de0d9e6 --- /dev/null +++ b/test/core/json/corpus/8aa61d8bd260942521bb1ba82cd4cce2324fdbee @@ -0,0 +1 @@ +fal \ No newline at end of file diff --git a/test/core/json/corpus/8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c b/test/core/json/corpus/8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c new file mode 100644 index 00000000000..2146b214c30 --- /dev/null +++ b/test/core/json/corpus/8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c @@ -0,0 +1 @@ +[{"[])!:{&*\f5{)!?'ʳ!!*!):!:::\ubD8:)k!:{!`!?`"(* \ No newline at end of file diff --git a/test/core/json/corpus/8e7fda77644ff91578d25243fad51a3cd6d60860 b/test/core/json/corpus/8e7fda77644ff91578d25243fad51a3cd6d60860 new file mode 100644 index 00000000000..538c0cc1ea4 --- /dev/null +++ b/test/core/json/corpus/8e7fda77644ff91578d25243fad51a3cd6d60860 @@ -0,0 +1 @@ +[2.1982; \ No newline at end of file diff --git a/test/core/json/corpus/8ea6295ff82bb119acd44a91b463b19fedafb226 b/test/core/json/corpus/8ea6295ff82bb119acd44a91b463b19fedafb226 new file mode 100644 index 00000000000..1acdc8e43f2 --- /dev/null +++ b/test/core/json/corpus/8ea6295ff82bb119acd44a91b463b19fedafb226 @@ -0,0 +1 @@ +[[2.67]3* \ No newline at end of file diff --git a/test/core/json/corpus/8ef4dd9f2d0f9d770c937d9a43413d24df83f09b b/test/core/json/corpus/8ef4dd9f2d0f9d770c937d9a43413d24df83f09b new file mode 100644 index 00000000000..64adcb32772 --- /dev/null +++ b/test/core/json/corpus/8ef4dd9f2d0f9d770c937d9a43413d24df83f09b @@ -0,0 +1 @@ +[{"\f5{)!:*]){ \ No newline at end of file diff --git a/test/core/json/corpus/8efd86fb78a56a5145ed7739dcb00c78581c5375 b/test/core/json/corpus/8efd86fb78a56a5145ed7739dcb00c78581c5375 new file mode 100644 index 00000000000..32f64f4d836 --- /dev/null +++ b/test/core/json/corpus/8efd86fb78a56a5145ed7739dcb00c78581c5375 @@ -0,0 +1 @@ +t \ No newline at end of file diff --git a/test/core/json/corpus/8f0ba762c2fed0fc993feb91948902ac397b0919 b/test/core/json/corpus/8f0ba762c2fed0fc993feb91948902ac397b0919 new file mode 100644 index 00000000000..cda6df22583 --- /dev/null +++ b/test/core/json/corpus/8f0ba762c2fed0fc993feb91948902ac397b0919 @@ -0,0 +1 @@ +["*:!{)?'ʳ!**!):!*:::\udbD8, \ No newline at end of file diff --git a/test/core/json/corpus/902ba3cda1883801594b6e1b452790cc53948fda b/test/core/json/corpus/902ba3cda1883801594b6e1b452790cc53948fda new file mode 100644 index 00000000000..c7930257dfe --- /dev/null +++ b/test/core/json/corpus/902ba3cda1883801594b6e1b452790cc53948fda @@ -0,0 +1 @@ +7 \ No newline at end of file diff --git a/test/core/json/corpus/92049bf3d8a0ec93c2d1633631c0082e66ca69e7 b/test/core/json/corpus/92049bf3d8a0ec93c2d1633631c0082e66ca69e7 new file mode 100644 index 00000000000..a4e01a762a8 --- /dev/null +++ b/test/core/json/corpus/92049bf3d8a0ec93c2d1633631c0082e66ca69e7 @@ -0,0 +1,2 @@ +0 + \ No newline at end of file diff --git a/test/core/json/corpus/920a3c318f3127b9c30ab02a077555c7dfbb6edb b/test/core/json/corpus/920a3c318f3127b9c30ab02a077555c7dfbb6edb new file mode 100644 index 00000000000..2e7a62e9162 --- /dev/null +++ b/test/core/json/corpus/920a3c318f3127b9c30ab02a077555c7dfbb6edb @@ -0,0 +1 @@ +[[["{)!:*;?'ʳ!!*!):!*:::\u12198.y2db)8!3;!:{!`!.7;? \ No newline at end of file diff --git a/test/core/json/corpus/9367ba65affd5bf7aabf79c28e783cc5d93518e8 b/test/core/json/corpus/9367ba65affd5bf7aabf79c28e783cc5d93518e8 new file mode 100644 index 00000000000..8e9c1aa2422 --- /dev/null +++ b/test/core/json/corpus/9367ba65affd5bf7aabf79c28e783cc5d93518e8 @@ -0,0 +1 @@ +[2.11E02 "960 \ No newline at end of file diff --git a/test/core/json/corpus/95b54a84db75abab401d282fdb04440a879a9708 b/test/core/json/corpus/95b54a84db75abab401d282fdb04440a879a9708 new file mode 100644 index 00000000000..5b41744456b --- /dev/null +++ b/test/core/json/corpus/95b54a84db75abab401d282fdb04440a879a9708 @@ -0,0 +1 @@ +{]3[ \ No newline at end of file diff --git a/test/core/json/corpus/98e02e7fc96479e8d10ff2cc7610be772e2d6fba b/test/core/json/corpus/98e02e7fc96479e8d10ff2cc7610be772e2d6fba new file mode 100644 index 00000000000..6bc0fb8fbf6 --- /dev/null +++ b/test/core/json/corpus/98e02e7fc96479e8d10ff2cc7610be772e2d6fba @@ -0,0 +1 @@ +[[{"\/5n[{+!:* \ No newline at end of file diff --git a/test/core/json/corpus/99667fcfa6d583a742fb5450527fc86dfb78ebbf b/test/core/json/corpus/99667fcfa6d583a742fb5450527fc86dfb78ebbf new file mode 100644 index 00000000000..861ae0275d1 --- /dev/null +++ b/test/core/json/corpus/99667fcfa6d583a742fb5450527fc86dfb78ebbf @@ -0,0 +1 @@ +[{"{)!:*])!:{"*?;?Xʳ'!! \ No newline at end of file diff --git a/test/core/json/corpus/9d0441f23ae7d5a3a5b1140497868ee6eeab656b b/test/core/json/corpus/9d0441f23ae7d5a3a5b1140497868ee6eeab656b new file mode 100644 index 00000000000..ed8622835d0 --- /dev/null +++ b/test/core/json/corpus/9d0441f23ae7d5a3a5b1140497868ee6eeab656b @@ -0,0 +1,2 @@ +{ +" \ No newline at end of file diff --git a/test/core/json/corpus/9d890bd3139a8f9a44d435ff8edfbeb5b072ded0 b/test/core/json/corpus/9d890bd3139a8f9a44d435ff8edfbeb5b072ded0 new file mode 100644 index 00000000000..468bde04425 --- /dev/null +++ b/test/core/json/corpus/9d890bd3139a8f9a44d435ff8edfbeb5b072ded0 @@ -0,0 +1,2 @@ + 2 +p \ No newline at end of file diff --git a/test/core/json/corpus/9e6a55b6b4563e652a23be9d623ca5055c356940 b/test/core/json/corpus/9e6a55b6b4563e652a23be9d623ca5055c356940 new file mode 100644 index 00000000000..25bf17fc5aa --- /dev/null +++ b/test/core/json/corpus/9e6a55b6b4563e652a23be9d623ca5055c356940 @@ -0,0 +1 @@ +18 \ No newline at end of file diff --git a/test/core/json/corpus/9ec88420ef0408642f6930996e35f5b9f18ec88c b/test/core/json/corpus/9ec88420ef0408642f6930996e35f5b9f18ec88c new file mode 100644 index 00000000000..852eeab2f0a --- /dev/null +++ b/test/core/json/corpus/9ec88420ef0408642f6930996e35f5b9f18ec88c @@ -0,0 +1 @@ +"" \ No newline at end of file diff --git a/test/core/json/corpus/9fbda4f714043d975389b536b4497c6d713452e5 b/test/core/json/corpus/9fbda4f714043d975389b536b4497c6d713452e5 new file mode 100644 index 00000000000..c02cbb56d20 --- /dev/null +++ b/test/core/json/corpus/9fbda4f714043d975389b536b4497c6d713452e5 @@ -0,0 +1 @@ +[2.4 \ No newline at end of file diff --git a/test/core/json/corpus/a1abe8a785030d475a7350438fd23a05c382c110 b/test/core/json/corpus/a1abe8a785030d475a7350438fd23a05c382c110 new file mode 100644 index 00000000000..bb4e42ed294 --- /dev/null +++ b/test/core/json/corpus/a1abe8a785030d475a7350438fd23a05c382c110 @@ -0,0 +1,2 @@ +[{ +"" :"!{)!:",}";" \ No newline at end of file diff --git a/test/core/json/corpus/a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6 b/test/core/json/corpus/a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6 new file mode 100644 index 00000000000..9ab1dd2a64e --- /dev/null +++ b/test/core/json/corpus/a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6 @@ -0,0 +1 @@ +1e+2,[2}15{" \ No newline at end of file diff --git a/test/core/json/corpus/a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc b/test/core/json/corpus/a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc new file mode 100644 index 00000000000..cfd23392af7 --- /dev/null +++ b/test/core/json/corpus/a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc @@ -0,0 +1 @@ +[{"\\t5{)!:* \ No newline at end of file diff --git a/test/core/json/corpus/a39653cb3d97c58c44013197f4d7557577700177 b/test/core/json/corpus/a39653cb3d97c58c44013197f4d7557577700177 new file mode 100644 index 00000000000..9e667ccabb5 --- /dev/null +++ b/test/core/json/corpus/a39653cb3d97c58c44013197f4d7557577700177 @@ -0,0 +1 @@ +[true[(0.193;]4* \ No newline at end of file diff --git a/test/core/json/corpus/a6b34b06b00e9226f2bd961483f9da81d8de99a8 b/test/core/json/corpus/a6b34b06b00e9226f2bd961483f9da81d8de99a8 new file mode 100644 index 00000000000..56fbef64467 --- /dev/null +++ b/test/core/json/corpus/a6b34b06b00e9226f2bd961483f9da81d8de99a8 @@ -0,0 +1 @@ +{"*]:!{)?'ʳ :!)!*:*:::\udbD8\\){!u:{!`!?`")( \ No newline at end of file diff --git a/test/core/json/corpus/a806f43dd48e35e75c27814c13a2a96c12449bd1 b/test/core/json/corpus/a806f43dd48e35e75c27814c13a2a96c12449bd1 new file mode 100644 index 00000000000..91725dbb7c2 --- /dev/null +++ b/test/core/json/corpus/a806f43dd48e35e75c27814c13a2a96c12449bd1 @@ -0,0 +1 @@ +[2.1491 \ No newline at end of file diff --git a/test/core/json/corpus/a90a858013f90d2a94e0d62a7156ffd6848bf238 b/test/core/json/corpus/a90a858013f90d2a94e0d62a7156ffd6848bf238 new file mode 100644 index 00000000000..cf6637a355c --- /dev/null +++ b/test/core/json/corpus/a90a858013f90d2a94e0d62a7156ffd6848bf238 @@ -0,0 +1 @@ +[{"\n5{)!:*]){ \ No newline at end of file diff --git a/test/core/json/corpus/aa6e08a488d1ed00aa51f20c2477fc89e7b0a852 b/test/core/json/corpus/aa6e08a488d1ed00aa51f20c2477fc89e7b0a852 new file mode 100644 index 00000000000..9794ac17227 --- /dev/null +++ b/test/core/json/corpus/aa6e08a488d1ed00aa51f20c2477fc89e7b0a852 @@ -0,0 +1,2 @@ +[{ +"" :"" \ No newline at end of file diff --git a/test/core/json/corpus/aaa038513c192fec501e4e7302156872ce2fde37 b/test/core/json/corpus/aaa038513c192fec501e4e7302156872ce2fde37 new file mode 100644 index 00000000000..3959c2e7939 --- /dev/null +++ b/test/core/json/corpus/aaa038513c192fec501e4e7302156872ce2fde37 @@ -0,0 +1,2 @@ +-2: +p}5 \ No newline at end of file diff --git a/test/core/json/corpus/ac2686c095a5a1c92a1d4209a6c287778720c86d b/test/core/json/corpus/ac2686c095a5a1c92a1d4209a6c287778720c86d new file mode 100644 index 00000000000..f02f0b834f3 --- /dev/null +++ b/test/core/json/corpus/ac2686c095a5a1c92a1d4209a6c287778720c86d @@ -0,0 +1 @@ +[2.3 \ No newline at end of file diff --git a/test/core/json/corpus/ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4 b/test/core/json/corpus/ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4 new file mode 100644 index 00000000000..7813681f5b4 --- /dev/null +++ b/test/core/json/corpus/ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4 @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/test/core/json/corpus/ac9231da4082430afe8f4d40127814c613648d8e b/test/core/json/corpus/ac9231da4082430afe8f4d40127814c613648d8e new file mode 100644 index 00000000000..501a6bbaf1e --- /dev/null +++ b/test/core/json/corpus/ac9231da4082430afe8f4d40127814c613648d8e @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/json/corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc b/test/core/json/corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/test/core/json/corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc @@ -0,0 +1 @@ + diff --git a/test/core/json/corpus/b021dd7cd98b63092685ea092df0dc01c8f63334 b/test/core/json/corpus/b021dd7cd98b63092685ea092df0dc01c8f63334 new file mode 100644 index 00000000000..43789b2ec35 --- /dev/null +++ b/test/core/json/corpus/b021dd7cd98b63092685ea092df0dc01c8f63334 @@ -0,0 +1 @@ +{"*]:!{)?'ʳ :*!):!*:::\udbD8\u813e12)!{:{!`!? \ No newline at end of file diff --git a/test/core/json/corpus/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f b/test/core/json/corpus/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f new file mode 100644 index 00000000000..dec2bf5d619 --- /dev/null +++ b/test/core/json/corpus/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f @@ -0,0 +1 @@ +19 \ No newline at end of file diff --git a/test/core/json/corpus/b6589fc6ab0dc82cf12099d1c2d40ab994e8410c b/test/core/json/corpus/b6589fc6ab0dc82cf12099d1c2d40ab994e8410c new file mode 100644 index 00000000000..c227083464f --- /dev/null +++ b/test/core/json/corpus/b6589fc6ab0dc82cf12099d1c2d40ab994e8410c @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/test/core/json/corpus/b6f19238d2b04c5b86a17369093dafda34f332e7 b/test/core/json/corpus/b6f19238d2b04c5b86a17369093dafda34f332e7 new file mode 100644 index 00000000000..fb1edb4323f --- /dev/null +++ b/test/core/json/corpus/b6f19238d2b04c5b86a17369093dafda34f332e7 @@ -0,0 +1,2 @@ +") +"{)!:*;!'ʳ!!*!):!*"{)!:*]) \ No newline at end of file diff --git a/test/core/json/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6 b/test/core/json/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6 new file mode 100644 index 00000000000..0519ecba6ea --- /dev/null +++ b/test/core/json/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/json/corpus/b9c38fad09c80db7781fefbe51039752de575ecc b/test/core/json/corpus/b9c38fad09c80db7781fefbe51039752de575ecc new file mode 100644 index 00000000000..c16d3bcd706 --- /dev/null +++ b/test/core/json/corpus/b9c38fad09c80db7781fefbe51039752de575ecc @@ -0,0 +1 @@ +3e45!01860 \ No newline at end of file diff --git a/test/core/json/corpus/bd113c2c8a2328e3674c680c7cff829a6c8ab924 b/test/core/json/corpus/bd113c2c8a2328e3674c680c7cff829a6c8ab924 new file mode 100644 index 00000000000..08894eebc36 --- /dev/null +++ b/test/core/json/corpus/bd113c2c8a2328e3674c680c7cff829a6c8ab924 @@ -0,0 +1 @@ +[2.10;2; \ No newline at end of file diff --git a/test/core/json/corpus/bef524502f8dbbc45af717ece01ec88edd7f903b b/test/core/json/corpus/bef524502f8dbbc45af717ece01ec88edd7f903b new file mode 100644 index 00000000000..2a42b126fbf --- /dev/null +++ b/test/core/json/corpus/bef524502f8dbbc45af717ece01ec88edd7f903b @@ -0,0 +1 @@ +13e108560 \ No newline at end of file diff --git a/test/core/json/corpus/c18d315f0d35849b2aae4a47cab4608204b85d76 b/test/core/json/corpus/c18d315f0d35849b2aae4a47cab4608204b85d76 new file mode 100644 index 00000000000..d082c57dc73 --- /dev/null +++ b/test/core/json/corpus/c18d315f0d35849b2aae4a47cab4608204b85d76 @@ -0,0 +1,2 @@ +[{") +"{)!:*;!'ʳ!!*!):!*"{)!:*]) \ No newline at end of file diff --git a/test/core/json/corpus/c257fd6bc9e5254a733378ab4ddd39629c4a3069 b/test/core/json/corpus/c257fd6bc9e5254a733378ab4ddd39629c4a3069 new file mode 100644 index 00000000000..b040a5eb50b --- /dev/null +++ b/test/core/json/corpus/c257fd6bc9e5254a733378ab4ddd39629c4a3069 @@ -0,0 +1 @@ +13e128560 \ No newline at end of file diff --git a/test/core/json/corpus/c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a b/test/core/json/corpus/c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a new file mode 100644 index 00000000000..7f9e4a682d0 --- /dev/null +++ b/test/core/json/corpus/c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a @@ -0,0 +1 @@ +1e+2188560 \ No newline at end of file diff --git a/test/core/json/corpus/c3badd71ef8a51b97ce93cbfe99f6778048f2128 b/test/core/json/corpus/c3badd71ef8a51b97ce93cbfe99f6778048f2128 new file mode 100644 index 00000000000..4d10e087fe1 --- /dev/null +++ b/test/core/json/corpus/c3badd71ef8a51b97ce93cbfe99f6778048f2128 @@ -0,0 +1 @@ +3( \ No newline at end of file diff --git a/test/core/json/corpus/c541bb86e55b98e083b141114066f9c17d853374 b/test/core/json/corpus/c541bb86e55b98e083b141114066f9c17d853374 new file mode 100644 index 00000000000..8162989fcf7 --- /dev/null +++ b/test/core/json/corpus/c541bb86e55b98e083b141114066f9c17d853374 @@ -0,0 +1 @@ +[[["{)!:*;?'ʳ!!*!):!*:::\u06099.y2db)8!3;!:{!`!.7;? \ No newline at end of file diff --git a/test/core/json/corpus/c7a34d6d49e1da1ccd490350c2df3a168ed09ae8 b/test/core/json/corpus/c7a34d6d49e1da1ccd490350c2df3a168ed09ae8 new file mode 100644 index 00000000000..1d06e430e38 --- /dev/null +++ b/test/core/json/corpus/c7a34d6d49e1da1ccd490350c2df3a168ed09ae8 @@ -0,0 +1,3 @@ +{ +"[2":{} +5[" \ No newline at end of file diff --git a/test/core/json/corpus/c88c4bec8d440c56d3ea7abce39276f0927dbe0a b/test/core/json/corpus/c88c4bec8d440c56d3ea7abce39276f0927dbe0a new file mode 100644 index 00000000000..9442128c108 --- /dev/null +++ b/test/core/json/corpus/c88c4bec8d440c56d3ea7abce39276f0927dbe0a @@ -0,0 +1 @@ +33( \ No newline at end of file diff --git a/test/core/json/corpus/c92f147bfc034003ac42ed9e62a16c84102ab417 b/test/core/json/corpus/c92f147bfc034003ac42ed9e62a16c84102ab417 new file mode 100644 index 00000000000..3fae4b1b016 --- /dev/null +++ b/test/core/json/corpus/c92f147bfc034003ac42ed9e62a16c84102ab417 @@ -0,0 +1 @@ +[[2.193,]4"*(" \ No newline at end of file diff --git a/test/core/json/corpus/ce3899b62ba3efe00eb31ddad2861ffe16a30d06 b/test/core/json/corpus/ce3899b62ba3efe00eb31ddad2861ffe16a30d06 new file mode 100644 index 00000000000..91bd82ae665 --- /dev/null +++ b/test/core/json/corpus/ce3899b62ba3efe00eb31ddad2861ffe16a30d06 @@ -0,0 +1 @@ +[[["{)!:*;?'ʳ!!*!):!*:::\\06099.y2db)8!3;!:{!`!.7;? \ No newline at end of file diff --git a/test/core/json/corpus/cec87b67871fc7a59652bc3546fbbb68e4d31e28 b/test/core/json/corpus/cec87b67871fc7a59652bc3546fbbb68e4d31e28 new file mode 100644 index 00000000000..56e1cf48d4c --- /dev/null +++ b/test/core/json/corpus/cec87b67871fc7a59652bc3546fbbb68e4d31e28 @@ -0,0 +1,2 @@ +[{ +"" :"!{)!:","" \ No newline at end of file diff --git a/test/core/json/corpus/cf32406111908544e504c84731147f072cdf2fbd b/test/core/json/corpus/cf32406111908544e504c84731147f072cdf2fbd new file mode 100644 index 00000000000..a0d1ef1a02c --- /dev/null +++ b/test/core/json/corpus/cf32406111908544e504c84731147f072cdf2fbd @@ -0,0 +1 @@ +620 \ No newline at end of file diff --git a/test/core/json/corpus/cff891e5858ae68d08ecc8470ca6a68c9438bfa3 b/test/core/json/corpus/cff891e5858ae68d08ecc8470ca6a68c9438bfa3 new file mode 100644 index 00000000000..9ef39eb9370 --- /dev/null +++ b/test/core/json/corpus/cff891e5858ae68d08ecc8470ca6a68c9438bfa3 @@ -0,0 +1 @@ +{"*]:!{)?'ʳ !*!):!*:::\udbD8 !)!{:{!`!?`"( \ No newline at end of file diff --git a/test/core/json/corpus/d85ca051da784c0441898c5affbf11a2ae8f56bc b/test/core/json/corpus/d85ca051da784c0441898c5affbf11a2ae8f56bc new file mode 100644 index 00000000000..921f250aefd --- /dev/null +++ b/test/core/json/corpus/d85ca051da784c0441898c5affbf11a2ae8f56bc @@ -0,0 +1 @@ +[[["{)!:*;?'ʳ!!*!):!*:::\u0049.y2db)8!3;!7`!{:!.;? \ No newline at end of file diff --git a/test/core/json/corpus/da4b9237bacccdf19c0760cab7aec4a8359010b0 b/test/core/json/corpus/da4b9237bacccdf19c0760cab7aec4a8359010b0 new file mode 100644 index 00000000000..d8263ee9860 --- /dev/null +++ b/test/core/json/corpus/da4b9237bacccdf19c0760cab7aec4a8359010b0 @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/test/core/json/corpus/dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef b/test/core/json/corpus/dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef new file mode 100644 index 0000000000000000000000000000000000000000..9e15a74025a3caf98d8c9f0bc40d089675a4157b GIT binary patch literal 13 UcmYdG%qdPaHZ%;WHe%2M03O=|%m4rY literal 0 HcmV?d00001 diff --git a/test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef b/test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef new file mode 100644 index 00000000000..3c61ef6b9be --- /dev/null +++ b/test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef @@ -0,0 +1 @@ +"{)!:*;?'ʳ!!*!):!*:::\)db)8!:{!`!?`!'?'!*m,');'` \ No newline at end of file diff --git a/test/core/json/corpus/e0c124e90d068e2a70a3e148052869033453ec58 b/test/core/json/corpus/e0c124e90d068e2a70a3e148052869033453ec58 new file mode 100644 index 00000000000..e05343fabe0 --- /dev/null +++ b/test/core/json/corpus/e0c124e90d068e2a70a3e148052869033453ec58 @@ -0,0 +1 @@ +27e72:60 \ No newline at end of file diff --git a/test/core/json/corpus/e0d87b1f3e54e5adc5c2205f9e14772822a25766 b/test/core/json/corpus/e0d87b1f3e54e5adc5c2205f9e14772822a25766 new file mode 100644 index 00000000000..83c6ab5f81e --- /dev/null +++ b/test/core/json/corpus/e0d87b1f3e54e5adc5c2205f9e14772822a25766 @@ -0,0 +1 @@ +[{"\5{)!:*]){ \ No newline at end of file diff --git a/test/core/json/corpus/e1199df649697c570db5d6b2ea09d755eddd32b7 b/test/core/json/corpus/e1199df649697c570db5d6b2ea09d755eddd32b7 new file mode 100644 index 00000000000..adac51f51f1 --- /dev/null +++ b/test/core/json/corpus/e1199df649697c570db5d6b2ea09d755eddd32b7 @@ -0,0 +1 @@ +[[0.193;]4* \ No newline at end of file diff --git a/test/core/json/corpus/e235f6f2a8b6a22117f1baa932fb6c69799e1136 b/test/core/json/corpus/e235f6f2a8b6a22117f1baa932fb6c69799e1136 new file mode 100644 index 00000000000..f3f2d8c51a2 --- /dev/null +++ b/test/core/json/corpus/e235f6f2a8b6a22117f1baa932fb6c69799e1136 @@ -0,0 +1 @@ +[1.197; \ No newline at end of file diff --git a/test/core/json/corpus/e3d134b35cc25a4861d90023c95988ec6103ddd5 b/test/core/json/corpus/e3d134b35cc25a4861d90023c95988ec6103ddd5 new file mode 100644 index 00000000000..a9f28d4a551 --- /dev/null +++ b/test/core/json/corpus/e3d134b35cc25a4861d90023c95988ec6103ddd5 @@ -0,0 +1 @@ +"{)!:*;!'ʳ!!*!):!*::\udb)8!:{`!?`!?'!*m,');'` \ No newline at end of file diff --git a/test/core/json/corpus/e3ff65de4b1622315c3b34b7a5e39bffb275489d b/test/core/json/corpus/e3ff65de4b1622315c3b34b7a5e39bffb275489d new file mode 100644 index 00000000000..d188dbf3525 --- /dev/null +++ b/test/core/json/corpus/e3ff65de4b1622315c3b34b7a5e39bffb275489d @@ -0,0 +1 @@ +[2.19 \ No newline at end of file diff --git a/test/core/json/corpus/e4e3c69da200af932c8a79fa055d7aeea28eb1d1 b/test/core/json/corpus/e4e3c69da200af932c8a79fa055d7aeea28eb1d1 new file mode 100644 index 00000000000..fa71dbecbc0 --- /dev/null +++ b/test/core/json/corpus/e4e3c69da200af932c8a79fa055d7aeea28eb1d1 @@ -0,0 +1 @@ +[2."!{)!:", \ No newline at end of file diff --git a/test/core/json/corpus/e6c3dd630428fd54834172b8fd2735fed9416da4 b/test/core/json/corpus/e6c3dd630428fd54834172b8fd2735fed9416da4 new file mode 100644 index 00000000000..2b82dfea308 --- /dev/null +++ b/test/core/json/corpus/e6c3dd630428fd54834172b8fd2735fed9416da4 @@ -0,0 +1 @@ +60 \ No newline at end of file diff --git a/test/core/json/corpus/e95ff1142118a2ca5b84935612a8a64d55360e64 b/test/core/json/corpus/e95ff1142118a2ca5b84935612a8a64d55360e64 new file mode 100644 index 00000000000..ca8bbcc42a4 --- /dev/null +++ b/test/core/json/corpus/e95ff1142118a2ca5b84935612a8a64d55360e64 @@ -0,0 +1 @@ +"{)!:*;?'ʳ!!*!):!*:::\udb)8!:{!`!?`!?'!*m,');'` \ No newline at end of file diff --git a/test/core/json/corpus/e9c5e2c67930513941753c2d54591c7098c82f6c b/test/core/json/corpus/e9c5e2c67930513941753c2d54591c7098c82f6c new file mode 100644 index 00000000000..f9991b43f6b --- /dev/null +++ b/test/core/json/corpus/e9c5e2c67930513941753c2d54591c7098c82f6c @@ -0,0 +1 @@ +[3]4* \ No newline at end of file diff --git a/test/core/json/corpus/eb26070d17ffa908204912e75cb4313835042038 b/test/core/json/corpus/eb26070d17ffa908204912e75cb4313835042038 new file mode 100644 index 00000000000..812293756d7 --- /dev/null +++ b/test/core/json/corpus/eb26070d17ffa908204912e75cb4313835042038 @@ -0,0 +1 @@ +["*]:!{)?'ʳ!!*!):!*:::\udbD8){!:{!`!?`"( \ No newline at end of file diff --git a/test/core/json/corpus/ebc6aee49e5ae57722df86e7fa33c420f045a449 b/test/core/json/corpus/ebc6aee49e5ae57722df86e7fa33c420f045a449 new file mode 100644 index 00000000000..ee58b9086a3 --- /dev/null +++ b/test/core/json/corpus/ebc6aee49e5ae57722df86e7fa33c420f045a449 @@ -0,0 +1 @@ +03( \ No newline at end of file diff --git a/test/core/json/corpus/f473451610783521d51bc08cdd920ddd97f8a71f b/test/core/json/corpus/f473451610783521d51bc08cdd920ddd97f8a71f new file mode 100644 index 00000000000..b73c5ecd08d --- /dev/null +++ b/test/core/json/corpus/f473451610783521d51bc08cdd920ddd97f8a71f @@ -0,0 +1 @@ +{"*]:!{)?'ʳ !*!):!*:::\udbD8\!)!{:{!`!?`"( \ No newline at end of file diff --git a/test/core/json/corpus/f63aa599600f6e7d648c4287905e16e8e6e479fd b/test/core/json/corpus/f63aa599600f6e7d648c4287905e16e8e6e479fd new file mode 100644 index 00000000000..4b681256fe6 --- /dev/null +++ b/test/core/json/corpus/f63aa599600f6e7d648c4287905e16e8e6e479fd @@ -0,0 +1 @@ +"{)!:"])!:{"*?'ʳ!!*!):!*:::\;?'ʳud \ No newline at end of file diff --git a/test/core/json/corpus/f667dcf1c06e87db2dc49d86ea1c285e796f8f8c b/test/core/json/corpus/f667dcf1c06e87db2dc49d86ea1c285e796f8f8c new file mode 100644 index 00000000000..b6dfbd53367 --- /dev/null +++ b/test/core/json/corpus/f667dcf1c06e87db2dc49d86ea1c285e796f8f8c @@ -0,0 +1 @@ +813e124280 \ No newline at end of file diff --git a/test/core/json/corpus/f8d0f85975e49b959799cc52847110cc940b9db1 b/test/core/json/corpus/f8d0f85975e49b959799cc52847110cc940b9db1 new file mode 100644 index 00000000000..0c7f5923761 --- /dev/null +++ b/test/core/json/corpus/f8d0f85975e49b959799cc52847110cc940b9db1 @@ -0,0 +1 @@ +604 \ No newline at end of file diff --git a/test/core/json/corpus/f92c47e35da42d79a48beff54b93cd28f55f05fb b/test/core/json/corpus/f92c47e35da42d79a48beff54b93cd28f55f05fb new file mode 100644 index 00000000000..1444ba2be28 --- /dev/null +++ b/test/core/json/corpus/f92c47e35da42d79a48beff54b93cd28f55f05fb @@ -0,0 +1 @@ +1e9 \ No newline at end of file diff --git a/test/core/json/corpus/f9a33bb8bd78d869fbafa402d9be58940ce2c318 b/test/core/json/corpus/f9a33bb8bd78d869fbafa402d9be58940ce2c318 new file mode 100644 index 00000000000..fbcb9dab0eb --- /dev/null +++ b/test/core/json/corpus/f9a33bb8bd78d869fbafa402d9be58940ce2c318 @@ -0,0 +1 @@ +1E "960 \ No newline at end of file diff --git a/test/core/json/corpus/fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f b/test/core/json/corpus/fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f new file mode 100644 index 00000000000..301160a9306 --- /dev/null +++ b/test/core/json/corpus/fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f @@ -0,0 +1 @@ +8 \ No newline at end of file diff --git a/test/core/json/corpus/ff8fb34603c7f772768d61504954553e6bed173c b/test/core/json/corpus/ff8fb34603c7f772768d61504954553e6bed173c new file mode 100644 index 00000000000..9586ab9bcce --- /dev/null +++ b/test/core/json/corpus/ff8fb34603c7f772768d61504954553e6bed173c @@ -0,0 +1 @@ +n' \ No newline at end of file From d0f1301d1299491916feb547634dfb7e22811beb Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 22:57:15 -0700 Subject: [PATCH 39/74] Expand corpus --- .../corpus/03b74a08f23734691512cb12d0b38d189a8df905 | 1 + .../corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6 | 1 + .../corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897 | 1 + .../corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318 | 1 + .../corpus/0bc13548356d08009703d35e9c8d74397367bdfb | 1 + .../corpus/108b310facc1a193833fc2971fd83081f775ea0c | 1 + .../corpus/10e3ecd5624465020fdf0662a67e0f0885536cae | 1 + .../corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc | 1 + .../corpus/11479d936dd006410a5946b6081a94d573bf8efd | 1 + .../corpus/134d65130947ec69cf8df8483424b45e99cf04e3 | 1 + .../corpus/13584505caa892d94982a968bbc4391ebcfe0d06 | 1 + .../corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95 | 1 + .../corpus/17a29f2ac6df774585d7713091b299729738030c | 1 + .../corpus/182d57403d2c973a394055017d35b7621aa0aa05 | 1 + .../corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af | 1 + .../corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b | 1 + .../corpus/232f4bced4075545bb1469d5c2360f083ec7ec65 | 1 + .../corpus/27d84210636e9e83786be9e9b96b69f70b743b86 | 1 + .../corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444 | 1 + .../corpus/2b04974149815b143afb17af4388d751217e54ec | 1 + .../corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e | 1 + .../corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7 | 1 + .../corpus/2d7c769bed62004270034b976b1d940a5686106b | 1 + .../corpus/2db120231eea12d9cdc6a00f30839b3cef2046be | 1 + .../corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225 | 1 + .../corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895 | 1 + .../corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9 | 1 + .../corpus/311048bbf4c4bbabcde73607d7e76915cee9312e | 1 + .../corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab | 1 + .../corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3 | 1 + .../corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1 | 1 + .../corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7 | 1 + .../corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a | 1 + .../corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580 | 1 + .../corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7 | 1 + .../corpus/455d9bb597f08bf698454157ecd86647b5dec4e0 | 1 + .../corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9 | 1 + .../corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f | 1 + .../corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5 | 1 + .../corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8 | 1 + .../corpus/486da8aff04083c5e0fe112e733f2ae510e312a1 | 1 + .../corpus/488a5ed641e340ae51992e04ce6590bdec587218 | 1 + .../corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882 | 1 + .../corpus/4bb0294e14946fb1f64213384097a676d3ef94f0 | 1 + .../corpus/4d134bc072212ace2df385dae143139da74ec0ef | 1 + .../corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc | 1 + .../corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e | 1 + .../corpus/4ff800de0863adb5851fa26935159aa53b11cba7 | 1 + .../corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46 | 1 + .../corpus/55f0c61d096a08506076489ded3b868db4086770 | 1 + .../corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a | 1 + .../corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4 | 1 + .../corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d | 1 + .../corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82 | 1 + .../corpus/5a37a26dd2482226f534f79d321d28e7a615ab72 | 1 + .../corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b | 1 + .../corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce | 1 + .../corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e | 1 + .../corpus/5e12ae9117668bcc22832640cc626315940aeba8 | 1 + .../corpus/5e397439a2680ed827c46704969c6711dabbda84 | 1 + .../corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c | 1 + .../corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7 | 1 + .../corpus/6008213a61d06b4382b223768530c3452968b7b3 | 1 + .../corpus/6474383282788e556aa86f57fc8650137ad264d0 | 1 + .../corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad | 1 + .../corpus/69ab053b59e235fd6af246c5180f15bd95295113 | 1 + .../corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830 | 1 + .../corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035 | 1 + .../corpus/6e989edf725ec64849377681ce02641c3d1870e8 | 1 + .../corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0 | 1 + .../corpus/7714a1a32872442a2eaff472685f3ea69451a732 | 1 + .../corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf | 1 + .../corpus/7ae893cbbf9b11ff411640b80985ce618907559c | 1 + .../corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf | 1 + .../corpus/7ef13b83e6bde582d9000be043e729cd3221c150 | 1 + .../corpus/831a49ad81b59025c241ac9e58bd88463fd798eb | 1 + .../corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6 | 2 ++ .../corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b | 1 + .../corpus/87a2b80f9272583517c0207af176fc40ea55022c | 1 + .../corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f | 1 + .../corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb | 1 + .../corpus/8d8874439569824e371a0284460440175cdb8a27 | 1 + .../corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7 | 1 + .../corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513 | 1 + .../corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2 | 1 + .../corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6 | 1 + .../corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285 | 1 + .../corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e | 1 + .../corpus/94d3598751569d2a5be258e59665cbbf0692dfbe | 1 + .../corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4 | 1 + .../corpus/96189202e587ec951d5795da3e03062f2fb5d708 | 1 + .../corpus/9711703428704ce2827a719eddb9d54be23a0cb7 | 1 + .../corpus/9734597e96eebe99b2243121a51d178a338ec46f | 1 + .../corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d | 1 + .../corpus/97d170e1550eee4afc0af065b78cda302a97674c | 1 + .../corpus/996156b191b619eff79b2fcbb7598518a09b06bc | 1 + .../corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867 | 1 + .../corpus/9b7669e201574bfb979d56110539a90da5aca2c0 | 1 + .../corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76 | 1 + .../corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd | 1 + .../corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea | Bin 0 -> 3 bytes .../corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9 | 1 + .../corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3 | 1 + .../corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8 | 1 + .../corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44 | 1 + .../corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07 | 1 + .../corpus/a749d24bac55bc19465acc92b12244c56ca0f20d | 1 + .../corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea | 1 + .../corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c | 1 + .../corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b | 1 + .../corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5 | 1 + .../corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9 | 1 + .../corpus/affced8168ec801de89deac663f708f0c96cf1a4 | 1 + .../corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8 | 1 + .../corpus/b17485b8bdec8809b3819a83753ca893871df403 | 1 + .../corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7 | 1 + .../corpus/b45a1635ec526bcc890f9d735976704e516c5f19 | 1 + .../corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370 | 1 + .../corpus/b5126721812b925426b30d283d2bb8b6969f230a | 1 + .../corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4 | 1 + .../corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd | 1 + .../corpus/bb407c8992800444201dccfe744dac49c0295fde | 1 + .../corpus/bc335734f73502b92d2bd3587259ce915985f0ee | 1 + .../corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2 | 1 + .../corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34 | 1 + .../corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f | 1 + .../corpus/c0b6a90832b78ed5f6d129d3640c612540527c85 | 1 + .../corpus/c308517acf6f7088634d491a1608240f83a3ac95 | 1 + .../corpus/c482a632702ae7f532d126e70149dda4fadc3cd7 | 1 + .../corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c | 1 + .../corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7 | 1 + .../corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06 | 1 + .../corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a | 1 + .../corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515 | 1 + .../corpus/cc8a3dd2678d4b400ad630f402012b894e841b05 | 1 + .../corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7 | 1 + .../corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32 | 1 + .../corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3 | 1 + .../corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767 | 1 + .../corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab | 1 + .../corpus/cfff4e9d08cba81b663dd1999710008342851e19 | 1 + .../corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194 | 1 + .../corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd | 1 + .../corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957 | 1 + .../corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678 | 1 + .../corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a | 1 + .../corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd | 1 + .../corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d | 1 + .../corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023 | 1 + .../corpus/e4a4085cc31476f5de9047422851d8ccf86339df | 1 + .../corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea | 1 + .../corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536 | 1 + .../corpus/ed1dc11d713e7487de18ce8317b62916959206d0 | 1 + .../corpus/ede3f66106acd7796da8b3942d029fe213058286 | 1 + .../corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a | 1 + .../corpus/f090932162756b798b1a050b05e3d36a3437c4fc | 1 + .../corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1 | 1 + .../corpus/f4635fbbf765ead81a261ca152df02622e182d2c | 1 + .../corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e | 1 + .../corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a | 1 + .../corpus/fe2ef495a1152561572949784c16bf23abb28057 | 1 + 161 files changed, 161 insertions(+) create mode 100644 test/core/json/corpus/03b74a08f23734691512cb12d0b38d189a8df905 create mode 100644 test/core/json/corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6 create mode 100644 test/core/json/corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897 create mode 100644 test/core/json/corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318 create mode 100644 test/core/json/corpus/0bc13548356d08009703d35e9c8d74397367bdfb create mode 100644 test/core/json/corpus/108b310facc1a193833fc2971fd83081f775ea0c create mode 100644 test/core/json/corpus/10e3ecd5624465020fdf0662a67e0f0885536cae create mode 100644 test/core/json/corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc create mode 100644 test/core/json/corpus/11479d936dd006410a5946b6081a94d573bf8efd create mode 100644 test/core/json/corpus/134d65130947ec69cf8df8483424b45e99cf04e3 create mode 100644 test/core/json/corpus/13584505caa892d94982a968bbc4391ebcfe0d06 create mode 100644 test/core/json/corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95 create mode 100644 test/core/json/corpus/17a29f2ac6df774585d7713091b299729738030c create mode 100644 test/core/json/corpus/182d57403d2c973a394055017d35b7621aa0aa05 create mode 100644 test/core/json/corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af create mode 100644 test/core/json/corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b create mode 100644 test/core/json/corpus/232f4bced4075545bb1469d5c2360f083ec7ec65 create mode 100644 test/core/json/corpus/27d84210636e9e83786be9e9b96b69f70b743b86 create mode 100644 test/core/json/corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444 create mode 100644 test/core/json/corpus/2b04974149815b143afb17af4388d751217e54ec create mode 100644 test/core/json/corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e create mode 100644 test/core/json/corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7 create mode 100644 test/core/json/corpus/2d7c769bed62004270034b976b1d940a5686106b create mode 100644 test/core/json/corpus/2db120231eea12d9cdc6a00f30839b3cef2046be create mode 100644 test/core/json/corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225 create mode 100644 test/core/json/corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895 create mode 100644 test/core/json/corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9 create mode 100644 test/core/json/corpus/311048bbf4c4bbabcde73607d7e76915cee9312e create mode 100644 test/core/json/corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab create mode 100644 test/core/json/corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3 create mode 100644 test/core/json/corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1 create mode 100644 test/core/json/corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7 create mode 100644 test/core/json/corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a create mode 100644 test/core/json/corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580 create mode 100644 test/core/json/corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7 create mode 100644 test/core/json/corpus/455d9bb597f08bf698454157ecd86647b5dec4e0 create mode 100644 test/core/json/corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9 create mode 100644 test/core/json/corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f create mode 100644 test/core/json/corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5 create mode 100644 test/core/json/corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8 create mode 100644 test/core/json/corpus/486da8aff04083c5e0fe112e733f2ae510e312a1 create mode 100644 test/core/json/corpus/488a5ed641e340ae51992e04ce6590bdec587218 create mode 100644 test/core/json/corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882 create mode 100644 test/core/json/corpus/4bb0294e14946fb1f64213384097a676d3ef94f0 create mode 100644 test/core/json/corpus/4d134bc072212ace2df385dae143139da74ec0ef create mode 100644 test/core/json/corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc create mode 100644 test/core/json/corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e create mode 100644 test/core/json/corpus/4ff800de0863adb5851fa26935159aa53b11cba7 create mode 100644 test/core/json/corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46 create mode 100644 test/core/json/corpus/55f0c61d096a08506076489ded3b868db4086770 create mode 100644 test/core/json/corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a create mode 100644 test/core/json/corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4 create mode 100644 test/core/json/corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d create mode 100644 test/core/json/corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82 create mode 100644 test/core/json/corpus/5a37a26dd2482226f534f79d321d28e7a615ab72 create mode 100644 test/core/json/corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b create mode 100644 test/core/json/corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce create mode 100644 test/core/json/corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e create mode 100644 test/core/json/corpus/5e12ae9117668bcc22832640cc626315940aeba8 create mode 100644 test/core/json/corpus/5e397439a2680ed827c46704969c6711dabbda84 create mode 100644 test/core/json/corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c create mode 100644 test/core/json/corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7 create mode 100644 test/core/json/corpus/6008213a61d06b4382b223768530c3452968b7b3 create mode 100644 test/core/json/corpus/6474383282788e556aa86f57fc8650137ad264d0 create mode 100644 test/core/json/corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad create mode 100644 test/core/json/corpus/69ab053b59e235fd6af246c5180f15bd95295113 create mode 100644 test/core/json/corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830 create mode 100644 test/core/json/corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035 create mode 100644 test/core/json/corpus/6e989edf725ec64849377681ce02641c3d1870e8 create mode 100644 test/core/json/corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0 create mode 100644 test/core/json/corpus/7714a1a32872442a2eaff472685f3ea69451a732 create mode 100644 test/core/json/corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf create mode 100644 test/core/json/corpus/7ae893cbbf9b11ff411640b80985ce618907559c create mode 100644 test/core/json/corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf create mode 100644 test/core/json/corpus/7ef13b83e6bde582d9000be043e729cd3221c150 create mode 100644 test/core/json/corpus/831a49ad81b59025c241ac9e58bd88463fd798eb create mode 100644 test/core/json/corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6 create mode 100644 test/core/json/corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b create mode 100644 test/core/json/corpus/87a2b80f9272583517c0207af176fc40ea55022c create mode 100644 test/core/json/corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f create mode 100644 test/core/json/corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb create mode 100644 test/core/json/corpus/8d8874439569824e371a0284460440175cdb8a27 create mode 100644 test/core/json/corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7 create mode 100644 test/core/json/corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513 create mode 100644 test/core/json/corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2 create mode 100644 test/core/json/corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6 create mode 100644 test/core/json/corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285 create mode 100644 test/core/json/corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e create mode 100644 test/core/json/corpus/94d3598751569d2a5be258e59665cbbf0692dfbe create mode 100644 test/core/json/corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4 create mode 100644 test/core/json/corpus/96189202e587ec951d5795da3e03062f2fb5d708 create mode 100644 test/core/json/corpus/9711703428704ce2827a719eddb9d54be23a0cb7 create mode 100644 test/core/json/corpus/9734597e96eebe99b2243121a51d178a338ec46f create mode 100644 test/core/json/corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d create mode 100644 test/core/json/corpus/97d170e1550eee4afc0af065b78cda302a97674c create mode 100644 test/core/json/corpus/996156b191b619eff79b2fcbb7598518a09b06bc create mode 100644 test/core/json/corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867 create mode 100644 test/core/json/corpus/9b7669e201574bfb979d56110539a90da5aca2c0 create mode 100644 test/core/json/corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76 create mode 100644 test/core/json/corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd create mode 100644 test/core/json/corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea create mode 100644 test/core/json/corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9 create mode 100644 test/core/json/corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3 create mode 100644 test/core/json/corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8 create mode 100644 test/core/json/corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44 create mode 100644 test/core/json/corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07 create mode 100644 test/core/json/corpus/a749d24bac55bc19465acc92b12244c56ca0f20d create mode 100644 test/core/json/corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea create mode 100644 test/core/json/corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c create mode 100644 test/core/json/corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b create mode 100644 test/core/json/corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5 create mode 100644 test/core/json/corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9 create mode 100644 test/core/json/corpus/affced8168ec801de89deac663f708f0c96cf1a4 create mode 100644 test/core/json/corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8 create mode 100644 test/core/json/corpus/b17485b8bdec8809b3819a83753ca893871df403 create mode 100644 test/core/json/corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7 create mode 100644 test/core/json/corpus/b45a1635ec526bcc890f9d735976704e516c5f19 create mode 100644 test/core/json/corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370 create mode 100644 test/core/json/corpus/b5126721812b925426b30d283d2bb8b6969f230a create mode 100644 test/core/json/corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4 create mode 100644 test/core/json/corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd create mode 100644 test/core/json/corpus/bb407c8992800444201dccfe744dac49c0295fde create mode 100644 test/core/json/corpus/bc335734f73502b92d2bd3587259ce915985f0ee create mode 100644 test/core/json/corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2 create mode 100644 test/core/json/corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34 create mode 100644 test/core/json/corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f create mode 100644 test/core/json/corpus/c0b6a90832b78ed5f6d129d3640c612540527c85 create mode 100644 test/core/json/corpus/c308517acf6f7088634d491a1608240f83a3ac95 create mode 100644 test/core/json/corpus/c482a632702ae7f532d126e70149dda4fadc3cd7 create mode 100644 test/core/json/corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c create mode 100644 test/core/json/corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7 create mode 100644 test/core/json/corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06 create mode 100644 test/core/json/corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a create mode 100644 test/core/json/corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515 create mode 100644 test/core/json/corpus/cc8a3dd2678d4b400ad630f402012b894e841b05 create mode 100644 test/core/json/corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7 create mode 100644 test/core/json/corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32 create mode 100644 test/core/json/corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3 create mode 100644 test/core/json/corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767 create mode 100644 test/core/json/corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab create mode 100644 test/core/json/corpus/cfff4e9d08cba81b663dd1999710008342851e19 create mode 100644 test/core/json/corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194 create mode 100644 test/core/json/corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd create mode 100644 test/core/json/corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957 create mode 100644 test/core/json/corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678 create mode 100644 test/core/json/corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a create mode 100644 test/core/json/corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd create mode 100644 test/core/json/corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d create mode 100644 test/core/json/corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023 create mode 100644 test/core/json/corpus/e4a4085cc31476f5de9047422851d8ccf86339df create mode 100644 test/core/json/corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea create mode 100644 test/core/json/corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536 create mode 100644 test/core/json/corpus/ed1dc11d713e7487de18ce8317b62916959206d0 create mode 100644 test/core/json/corpus/ede3f66106acd7796da8b3942d029fe213058286 create mode 100644 test/core/json/corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a create mode 100644 test/core/json/corpus/f090932162756b798b1a050b05e3d36a3437c4fc create mode 100644 test/core/json/corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1 create mode 100644 test/core/json/corpus/f4635fbbf765ead81a261ca152df02622e182d2c create mode 100644 test/core/json/corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e create mode 100644 test/core/json/corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a create mode 100644 test/core/json/corpus/fe2ef495a1152561572949784c16bf23abb28057 diff --git a/test/core/json/corpus/03b74a08f23734691512cb12d0b38d189a8df905 b/test/core/json/corpus/03b74a08f23734691512cb12d0b38d189a8df905 new file mode 100644 index 00000000000..7ffe3f3e086 --- /dev/null +++ b/test/core/json/corpus/03b74a08f23734691512cb12d0b38d189a8df905 @@ -0,0 +1 @@ +0.6991 \ No newline at end of file diff --git a/test/core/json/corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6 b/test/core/json/corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6 new file mode 100644 index 00000000000..f7752eeee7b --- /dev/null +++ b/test/core/json/corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6 @@ -0,0 +1 @@ +0.83282 \ No newline at end of file diff --git a/test/core/json/corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897 b/test/core/json/corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897 new file mode 100644 index 00000000000..f11c82a4cb6 --- /dev/null +++ b/test/core/json/corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897 @@ -0,0 +1 @@ +9 \ No newline at end of file diff --git a/test/core/json/corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318 b/test/core/json/corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318 new file mode 100644 index 00000000000..b66d61bb149 --- /dev/null +++ b/test/core/json/corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318 @@ -0,0 +1 @@ +{"'5E885,!\u065E{ \ No newline at end of file diff --git a/test/core/json/corpus/0bc13548356d08009703d35e9c8d74397367bdfb b/test/core/json/corpus/0bc13548356d08009703d35e9c8d74397367bdfb new file mode 100644 index 00000000000..2c23914282d --- /dev/null +++ b/test/core/json/corpus/0bc13548356d08009703d35e9c8d74397367bdfb @@ -0,0 +1 @@ +nu,*: \ No newline at end of file diff --git a/test/core/json/corpus/108b310facc1a193833fc2971fd83081f775ea0c b/test/core/json/corpus/108b310facc1a193833fc2971fd83081f775ea0c new file mode 100644 index 00000000000..45be455fdc4 --- /dev/null +++ b/test/core/json/corpus/108b310facc1a193833fc2971fd83081f775ea0c @@ -0,0 +1 @@ +false) \ No newline at end of file diff --git a/test/core/json/corpus/10e3ecd5624465020fdf0662a67e0f0885536cae b/test/core/json/corpus/10e3ecd5624465020fdf0662a67e0f0885536cae new file mode 100644 index 00000000000..5230607b9c6 --- /dev/null +++ b/test/core/json/corpus/10e3ecd5624465020fdf0662a67e0f0885536cae @@ -0,0 +1 @@ +{"":0,(!'(\'!) \ No newline at end of file diff --git a/test/core/json/corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc b/test/core/json/corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc new file mode 100644 index 00000000000..8f040349101 --- /dev/null +++ b/test/core/json/corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/test/core/json/corpus/11479d936dd006410a5946b6081a94d573bf8efd b/test/core/json/corpus/11479d936dd006410a5946b6081a94d573bf8efd new file mode 100644 index 00000000000..58cf749566d --- /dev/null +++ b/test/core/json/corpus/11479d936dd006410a5946b6081a94d573bf8efd @@ -0,0 +1 @@ +tr82 'A\E57;) \ No newline at end of file diff --git a/test/core/json/corpus/134d65130947ec69cf8df8483424b45e99cf04e3 b/test/core/json/corpus/134d65130947ec69cf8df8483424b45e99cf04e3 new file mode 100644 index 00000000000..522a9be402a --- /dev/null +++ b/test/core/json/corpus/134d65130947ec69cf8df8483424b45e99cf04e3 @@ -0,0 +1 @@ +0.2995 \ No newline at end of file diff --git a/test/core/json/corpus/13584505caa892d94982a968bbc4391ebcfe0d06 b/test/core/json/corpus/13584505caa892d94982a968bbc4391ebcfe0d06 new file mode 100644 index 00000000000..9fb628a378c --- /dev/null +++ b/test/core/json/corpus/13584505caa892d94982a968bbc4391ebcfe0d06 @@ -0,0 +1 @@ +{"',!\uA> \ No newline at end of file diff --git a/test/core/json/corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95 b/test/core/json/corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95 new file mode 100644 index 00000000000..e2e68e8af94 --- /dev/null +++ b/test/core/json/corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95 @@ -0,0 +1 @@ +"'',!\u658E{128031:;):)!5*?'ʳ!!*!):!*::)!9:\udbD86' \ No newline at end of file diff --git a/test/core/json/corpus/17a29f2ac6df774585d7713091b299729738030c b/test/core/json/corpus/17a29f2ac6df774585d7713091b299729738030c new file mode 100644 index 00000000000..9402a603938 --- /dev/null +++ b/test/core/json/corpus/17a29f2ac6df774585d7713091b299729738030c @@ -0,0 +1 @@ +[) \ No newline at end of file diff --git a/test/core/json/corpus/182d57403d2c973a394055017d35b7621aa0aa05 b/test/core/json/corpus/182d57403d2c973a394055017d35b7621aa0aa05 new file mode 100644 index 00000000000..f48f55e59d2 --- /dev/null +++ b/test/core/json/corpus/182d57403d2c973a394055017d35b7621aa0aa05 @@ -0,0 +1 @@ +null*: \ No newline at end of file diff --git a/test/core/json/corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af b/test/core/json/corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af new file mode 100644 index 00000000000..7fa1b2723db --- /dev/null +++ b/test/core/json/corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af @@ -0,0 +1 @@ +0{:)!"*?'ʳ!!*!):!*:::\udbD8)!:{!`!?`!?'!*m,');'` \ No newline at end of file diff --git a/test/core/json/corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b b/test/core/json/corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b new file mode 100644 index 00000000000..dd9df8833ff --- /dev/null +++ b/test/core/json/corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b @@ -0,0 +1 @@ +{"'5E885,!\u000E{ \ No newline at end of file diff --git a/test/core/json/corpus/232f4bced4075545bb1469d5c2360f083ec7ec65 b/test/core/json/corpus/232f4bced4075545bb1469d5c2360f083ec7ec65 new file mode 100644 index 00000000000..d4e4ebe1bb7 --- /dev/null +++ b/test/core/json/corpus/232f4bced4075545bb1469d5c2360f083ec7ec65 @@ -0,0 +1 @@ +{"',!\u65E8850{2312;):)!"*?'ʳ!!*!):!*::8!9:\udbD86' \ No newline at end of file diff --git a/test/core/json/corpus/27d84210636e9e83786be9e9b96b69f70b743b86 b/test/core/json/corpus/27d84210636e9e83786be9e9b96b69f70b743b86 new file mode 100644 index 00000000000..701bd00f307 --- /dev/null +++ b/test/core/json/corpus/27d84210636e9e83786be9e9b96b69f70b743b86 @@ -0,0 +1 @@ +{"',!\u' \ No newline at end of file diff --git a/test/core/json/corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444 b/test/core/json/corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444 new file mode 100644 index 00000000000..e5e723f2e3b --- /dev/null +++ b/test/core/json/corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444 @@ -0,0 +1 @@ +-w9'6 \ No newline at end of file diff --git a/test/core/json/corpus/2b04974149815b143afb17af4388d751217e54ec b/test/core/json/corpus/2b04974149815b143afb17af4388d751217e54ec new file mode 100644 index 00000000000..880fb548fa7 --- /dev/null +++ b/test/core/json/corpus/2b04974149815b143afb17af4388d751217e54ec @@ -0,0 +1 @@ +832E46;) \ No newline at end of file diff --git a/test/core/json/corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e b/test/core/json/corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e new file mode 100644 index 00000000000..f457fd8c48e --- /dev/null +++ b/test/core/json/corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e @@ -0,0 +1 @@ +825E132}) \ No newline at end of file diff --git a/test/core/json/corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7 b/test/core/json/corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7 new file mode 100644 index 00000000000..42bbdf91aa3 --- /dev/null +++ b/test/core/json/corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7 @@ -0,0 +1 @@ +""919 \ No newline at end of file diff --git a/test/core/json/corpus/2d7c769bed62004270034b976b1d940a5686106b b/test/core/json/corpus/2d7c769bed62004270034b976b1d940a5686106b new file mode 100644 index 00000000000..8a2b4335b2a --- /dev/null +++ b/test/core/json/corpus/2d7c769bed62004270034b976b1d940a5686106b @@ -0,0 +1 @@ +{"',!\u65E8850{2312;):)!*?'ѳ!!!):*!::8!9:\udbD6\\' \ No newline at end of file diff --git a/test/core/json/corpus/2db120231eea12d9cdc6a00f30839b3cef2046be b/test/core/json/corpus/2db120231eea12d9cdc6a00f30839b3cef2046be new file mode 100644 index 00000000000..0cfb6e84895 --- /dev/null +++ b/test/core/json/corpus/2db120231eea12d9cdc6a00f30839b3cef2046be @@ -0,0 +1 @@ +0.0 \ No newline at end of file diff --git a/test/core/json/corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225 b/test/core/json/corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225 new file mode 100644 index 00000000000..390f40900f6 --- /dev/null +++ b/test/core/json/corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225 @@ -0,0 +1 @@ +0.9! \ No newline at end of file diff --git a/test/core/json/corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895 b/test/core/json/corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895 new file mode 100644 index 00000000000..f7e8e7b7fe5 --- /dev/null +++ b/test/core/json/corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895 @@ -0,0 +1 @@ + 9 \ No newline at end of file diff --git a/test/core/json/corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9 b/test/core/json/corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9 new file mode 100644 index 00000000000..e396fbae6e7 --- /dev/null +++ b/test/core/json/corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9 @@ -0,0 +1 @@ +4.9! \ No newline at end of file diff --git a/test/core/json/corpus/311048bbf4c4bbabcde73607d7e76915cee9312e b/test/core/json/corpus/311048bbf4c4bbabcde73607d7e76915cee9312e new file mode 100644 index 00000000000..79453e924d8 --- /dev/null +++ b/test/core/json/corpus/311048bbf4c4bbabcde73607d7e76915cee9312e @@ -0,0 +1 @@ + "1. { \ No newline at end of file diff --git a/test/core/json/corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab b/test/core/json/corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab new file mode 100644 index 00000000000..b558a9acd23 --- /dev/null +++ b/test/core/json/corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab @@ -0,0 +1 @@ +"',!\u65E8850{2312;):)!"*?'ʳ!!*!):!*::)!9:\udbD86' \ No newline at end of file diff --git a/test/core/json/corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3 b/test/core/json/corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3 new file mode 100644 index 00000000000..ffb93e3c54a --- /dev/null +++ b/test/core/json/corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3 @@ -0,0 +1 @@ +{"',!\ru65E8850{2312;):)!"*{"',!u65E?'885 \ No newline at end of file diff --git a/test/core/json/corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1 b/test/core/json/corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1 new file mode 100644 index 00000000000..e77a96349c0 --- /dev/null +++ b/test/core/json/corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1 @@ -0,0 +1 @@ +73 \ No newline at end of file diff --git a/test/core/json/corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7 b/test/core/json/corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7 new file mode 100644 index 00000000000..c37e132d2a2 --- /dev/null +++ b/test/core/json/corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7 @@ -0,0 +1 @@ +{"!(!\u' \ No newline at end of file diff --git a/test/core/json/corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a b/test/core/json/corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a new file mode 100644 index 00000000000..3029e046c65 --- /dev/null +++ b/test/core/json/corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a @@ -0,0 +1 @@ +5E882392);) \ No newline at end of file diff --git a/test/core/json/corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580 b/test/core/json/corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580 new file mode 100644 index 00000000000..c5246971bc3 --- /dev/null +++ b/test/core/json/corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580 @@ -0,0 +1 @@ +"'',!\u658E{128031:;):)!5*?'ʳ!!*!):!*::)!9:\udbD8 ' \ No newline at end of file diff --git a/test/core/json/corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7 b/test/core/json/corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7 new file mode 100644 index 00000000000..59b17095411 --- /dev/null +++ b/test/core/json/corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7 @@ -0,0 +1 @@ +363, \ No newline at end of file diff --git a/test/core/json/corpus/455d9bb597f08bf698454157ecd86647b5dec4e0 b/test/core/json/corpus/455d9bb597f08bf698454157ecd86647b5dec4e0 new file mode 100644 index 00000000000..0a601ebe35e --- /dev/null +++ b/test/core/json/corpus/455d9bb597f08bf698454157ecd86647b5dec4e0 @@ -0,0 +1 @@ +0.3282 \ No newline at end of file diff --git a/test/core/json/corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9 b/test/core/json/corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9 new file mode 100644 index 00000000000..1fdd026e412 --- /dev/null +++ b/test/core/json/corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9 @@ -0,0 +1 @@ +fal0%) \ No newline at end of file diff --git a/test/core/json/corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f b/test/core/json/corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f new file mode 100644 index 00000000000..f0848407d5d --- /dev/null +++ b/test/core/json/corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f @@ -0,0 +1 @@ +825E}321) \ No newline at end of file diff --git a/test/core/json/corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5 b/test/core/json/corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5 new file mode 100644 index 00000000000..c9ff1a11aa6 --- /dev/null +++ b/test/core/json/corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5 @@ -0,0 +1 @@ +0.72479834e;0.3993) \ No newline at end of file diff --git a/test/core/json/corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8 b/test/core/json/corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8 new file mode 100644 index 00000000000..b5045cc4046 --- /dev/null +++ b/test/core/json/corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8 @@ -0,0 +1 @@ +21 \ No newline at end of file diff --git a/test/core/json/corpus/486da8aff04083c5e0fe112e733f2ae510e312a1 b/test/core/json/corpus/486da8aff04083c5e0fe112e733f2ae510e312a1 new file mode 100644 index 00000000000..0afcc5fad88 --- /dev/null +++ b/test/core/json/corpus/486da8aff04083c5e0fe112e733f2ae510e312a1 @@ -0,0 +1 @@ +tru82 'A\E60;) \ No newline at end of file diff --git a/test/core/json/corpus/488a5ed641e340ae51992e04ce6590bdec587218 b/test/core/json/corpus/488a5ed641e340ae51992e04ce6590bdec587218 new file mode 100644 index 00000000000..f0b671befa8 --- /dev/null +++ b/test/core/json/corpus/488a5ed641e340ae51992e04ce6590bdec587218 @@ -0,0 +1 @@ +0.1) \ No newline at end of file diff --git a/test/core/json/corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882 b/test/core/json/corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882 new file mode 100644 index 00000000000..a7c1d087f72 --- /dev/null +++ b/test/core/json/corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882 @@ -0,0 +1 @@ +3E8;4) \ No newline at end of file diff --git a/test/core/json/corpus/4bb0294e14946fb1f64213384097a676d3ef94f0 b/test/core/json/corpus/4bb0294e14946fb1f64213384097a676d3ef94f0 new file mode 100644 index 00000000000..56e2dbcc1b2 --- /dev/null +++ b/test/core/json/corpus/4bb0294e14946fb1f64213384097a676d3ef94f0 @@ -0,0 +1 @@ +363 diff --git a/test/core/json/corpus/4d134bc072212ace2df385dae143139da74ec0ef b/test/core/json/corpus/4d134bc072212ace2df385dae143139da74ec0ef new file mode 100644 index 00000000000..cabf43b5ddf --- /dev/null +++ b/test/core/json/corpus/4d134bc072212ace2df385dae143139da74ec0ef @@ -0,0 +1 @@ +24 \ No newline at end of file diff --git a/test/core/json/corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc b/test/core/json/corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc new file mode 100644 index 00000000000..ecf2233fc59 --- /dev/null +++ b/test/core/json/corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc @@ -0,0 +1 @@ +0.) \ No newline at end of file diff --git a/test/core/json/corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e b/test/core/json/corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e new file mode 100644 index 00000000000..e9cb9407c9f --- /dev/null +++ b/test/core/json/corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e @@ -0,0 +1 @@ +2531E117t)*6 \ No newline at end of file diff --git a/test/core/json/corpus/4ff800de0863adb5851fa26935159aa53b11cba7 b/test/core/json/corpus/4ff800de0863adb5851fa26935159aa53b11cba7 new file mode 100644 index 00000000000..edd3d2bf642 --- /dev/null +++ b/test/core/json/corpus/4ff800de0863adb5851fa26935159aa53b11cba7 @@ -0,0 +1 @@ +0.82510 \ No newline at end of file diff --git a/test/core/json/corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46 b/test/core/json/corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46 new file mode 100644 index 00000000000..08f1be31832 --- /dev/null +++ b/test/core/json/corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46 @@ -0,0 +1 @@ +{"',!\u65E8850{2312;):)!*?'ʳ!!!):!*::8!9:\udbD86' \ No newline at end of file diff --git a/test/core/json/corpus/55f0c61d096a08506076489ded3b868db4086770 b/test/core/json/corpus/55f0c61d096a08506076489ded3b868db4086770 new file mode 100644 index 00000000000..d65b5377ce9 --- /dev/null +++ b/test/core/json/corpus/55f0c61d096a08506076489ded3b868db4086770 @@ -0,0 +1 @@ +0.2]G) \ No newline at end of file diff --git a/test/core/json/corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a b/test/core/json/corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a new file mode 100644 index 00000000000..5c23e6237b2 --- /dev/null +++ b/test/core/json/corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a @@ -0,0 +1 @@ +2]G)y3 \ No newline at end of file diff --git a/test/core/json/corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4 b/test/core/json/corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4 new file mode 100644 index 00000000000..d72c7c7a76a --- /dev/null +++ b/test/core/json/corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4 @@ -0,0 +1 @@ +{"'!\u3@: \ No newline at end of file diff --git a/test/core/json/corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d b/test/core/json/corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d new file mode 100644 index 00000000000..3ed722a2e2e --- /dev/null +++ b/test/core/json/corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d @@ -0,0 +1 @@ +n { \ No newline at end of file diff --git a/test/core/json/corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82 b/test/core/json/corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82 new file mode 100644 index 00000000000..d1cbcfa5404 --- /dev/null +++ b/test/core/json/corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82 @@ -0,0 +1 @@ +66 \ No newline at end of file diff --git a/test/core/json/corpus/5a37a26dd2482226f534f79d321d28e7a615ab72 b/test/core/json/corpus/5a37a26dd2482226f534f79d321d28e7a615ab72 new file mode 100644 index 00000000000..c9b11ff249b --- /dev/null +++ b/test/core/json/corpus/5a37a26dd2482226f534f79d321d28e7a615ab72 @@ -0,0 +1 @@ +[0.959] \ No newline at end of file diff --git a/test/core/json/corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b b/test/core/json/corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b new file mode 100644 index 00000000000..a1cd2e728b1 --- /dev/null +++ b/test/core/json/corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b @@ -0,0 +1 @@ +[[{}G3 \ No newline at end of file diff --git a/test/core/json/corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce b/test/core/json/corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce new file mode 100644 index 00000000000..bd45ebfd39d --- /dev/null +++ b/test/core/json/corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce @@ -0,0 +1 @@ +true82 'ANE2(0;) \ No newline at end of file diff --git a/test/core/json/corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e b/test/core/json/corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e new file mode 100644 index 00000000000..a1357422356 --- /dev/null +++ b/test/core/json/corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e @@ -0,0 +1 @@ +{"'!'\u3B: \ No newline at end of file diff --git a/test/core/json/corpus/5e12ae9117668bcc22832640cc626315940aeba8 b/test/core/json/corpus/5e12ae9117668bcc22832640cc626315940aeba8 new file mode 100644 index 00000000000..c1820184ab9 --- /dev/null +++ b/test/core/json/corpus/5e12ae9117668bcc22832640cc626315940aeba8 @@ -0,0 +1 @@ +[":(%'(\n {'! \ No newline at end of file diff --git a/test/core/json/corpus/5e397439a2680ed827c46704969c6711dabbda84 b/test/core/json/corpus/5e397439a2680ed827c46704969c6711dabbda84 new file mode 100644 index 00000000000..3be1f8657ea --- /dev/null +++ b/test/core/json/corpus/5e397439a2680ed827c46704969c6711dabbda84 @@ -0,0 +1 @@ +"!!\\'' \ No newline at end of file diff --git a/test/core/json/corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c b/test/core/json/corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c new file mode 100644 index 00000000000..134ad52f0d8 --- /dev/null +++ b/test/core/json/corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c @@ -0,0 +1 @@ +{"":0,}f'+G{)13(!(''\! \ No newline at end of file diff --git a/test/core/json/corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7 b/test/core/json/corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7 new file mode 100644 index 00000000000..a83c8134850 --- /dev/null +++ b/test/core/json/corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7 @@ -0,0 +1 @@ +,0) \ No newline at end of file diff --git a/test/core/json/corpus/6008213a61d06b4382b223768530c3452968b7b3 b/test/core/json/corpus/6008213a61d06b4382b223768530c3452968b7b3 new file mode 100644 index 00000000000..46f81353b48 --- /dev/null +++ b/test/core/json/corpus/6008213a61d06b4382b223768530c3452968b7b3 @@ -0,0 +1 @@ +{"',!u65E8850{2312;):)!*?'ʳ!!):!*::4!9:\udD86' \ No newline at end of file diff --git a/test/core/json/corpus/6474383282788e556aa86f57fc8650137ad264d0 b/test/core/json/corpus/6474383282788e556aa86f57fc8650137ad264d0 new file mode 100644 index 00000000000..9210f640680 --- /dev/null +++ b/test/core/json/corpus/6474383282788e556aa86f57fc8650137ad264d0 @@ -0,0 +1 @@ +{"!!\/!!\''' \ No newline at end of file diff --git a/test/core/json/corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad b/test/core/json/corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad new file mode 100644 index 00000000000..dc9a929793e --- /dev/null +++ b/test/core/json/corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad @@ -0,0 +1 @@ +21.498" \ No newline at end of file diff --git a/test/core/json/corpus/69ab053b59e235fd6af246c5180f15bd95295113 b/test/core/json/corpus/69ab053b59e235fd6af246c5180f15bd95295113 new file mode 100644 index 00000000000..dc0f5a0aaf0 --- /dev/null +++ b/test/core/json/corpus/69ab053b59e235fd6af246c5180f15bd95295113 @@ -0,0 +1 @@ +{,0)  \ No newline at end of file diff --git a/test/core/json/corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830 b/test/core/json/corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830 new file mode 100644 index 00000000000..84d8fa56007 --- /dev/null +++ b/test/core/json/corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830 @@ -0,0 +1 @@ +9 3'6 \ No newline at end of file diff --git a/test/core/json/corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035 b/test/core/json/corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035 new file mode 100644 index 00000000000..6b513824b5b --- /dev/null +++ b/test/core/json/corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035 @@ -0,0 +1 @@ +{"":}+G{12(!(''\! \ No newline at end of file diff --git a/test/core/json/corpus/6e989edf725ec64849377681ce02641c3d1870e8 b/test/core/json/corpus/6e989edf725ec64849377681ce02641c3d1870e8 new file mode 100644 index 00000000000..45cb64d8076 --- /dev/null +++ b/test/core/json/corpus/6e989edf725ec64849377681ce02641c3d1870e8 @@ -0,0 +1 @@ +2}G)y3 \ No newline at end of file diff --git a/test/core/json/corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0 b/test/core/json/corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0 new file mode 100644 index 00000000000..bad49bbd1c9 --- /dev/null +++ b/test/core/json/corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0 @@ -0,0 +1 @@ +834E;) \ No newline at end of file diff --git a/test/core/json/corpus/7714a1a32872442a2eaff472685f3ea69451a732 b/test/core/json/corpus/7714a1a32872442a2eaff472685f3ea69451a732 new file mode 100644 index 00000000000..03a8147cf4a --- /dev/null +++ b/test/core/json/corpus/7714a1a32872442a2eaff472685f3ea69451a732 @@ -0,0 +1 @@ +8324E685;) \ No newline at end of file diff --git a/test/core/json/corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf b/test/core/json/corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf new file mode 100644 index 00000000000..d99e90eb967 --- /dev/null +++ b/test/core/json/corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf @@ -0,0 +1 @@ +29 \ No newline at end of file diff --git a/test/core/json/corpus/7ae893cbbf9b11ff411640b80985ce618907559c b/test/core/json/corpus/7ae893cbbf9b11ff411640b80985ce618907559c new file mode 100644 index 00000000000..2306064d1c8 --- /dev/null +++ b/test/core/json/corpus/7ae893cbbf9b11ff411640b80985ce618907559c @@ -0,0 +1 @@ +[0.29]95 \ No newline at end of file diff --git a/test/core/json/corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf b/test/core/json/corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf new file mode 100644 index 00000000000..7e75a5796ef --- /dev/null +++ b/test/core/json/corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf @@ -0,0 +1 @@ +n( { \ No newline at end of file diff --git a/test/core/json/corpus/7ef13b83e6bde582d9000be043e729cd3221c150 b/test/core/json/corpus/7ef13b83e6bde582d9000be043e729cd3221c150 new file mode 100644 index 00000000000..bb690533a85 --- /dev/null +++ b/test/core/json/corpus/7ef13b83e6bde582d9000be043e729cd3221c150 @@ -0,0 +1 @@ +{"" \!'(\'! \ No newline at end of file diff --git a/test/core/json/corpus/831a49ad81b59025c241ac9e58bd88463fd798eb b/test/core/json/corpus/831a49ad81b59025c241ac9e58bd88463fd798eb new file mode 100644 index 00000000000..8d42875801f --- /dev/null +++ b/test/core/json/corpus/831a49ad81b59025c241ac9e58bd88463fd798eb @@ -0,0 +1 @@ +5E8850{2312;):)!"*?'ʳ!!*!):!*::8!9:\udbD8)!:{!` \ No newline at end of file diff --git a/test/core/json/corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6 b/test/core/json/corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6 new file mode 100644 index 00000000000..6e1ec8552a0 --- /dev/null +++ b/test/core/json/corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6 @@ -0,0 +1,2 @@ +3 +) \ No newline at end of file diff --git a/test/core/json/corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b b/test/core/json/corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b new file mode 100644 index 00000000000..f78c7b5e9df --- /dev/null +++ b/test/core/json/corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b @@ -0,0 +1 @@ +"9![\b \ No newline at end of file diff --git a/test/core/json/corpus/87a2b80f9272583517c0207af176fc40ea55022c b/test/core/json/corpus/87a2b80f9272583517c0207af176fc40ea55022c new file mode 100644 index 00000000000..1ba5237e8ac --- /dev/null +++ b/test/core/json/corpus/87a2b80f9272583517c0207af176fc40ea55022c @@ -0,0 +1 @@ +0. \ No newline at end of file diff --git a/test/core/json/corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f b/test/core/json/corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f new file mode 100644 index 00000000000..978b4e8e518 --- /dev/null +++ b/test/core/json/corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f @@ -0,0 +1 @@ +26 \ No newline at end of file diff --git a/test/core/json/corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb b/test/core/json/corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb new file mode 100644 index 00000000000..7fffca893e2 --- /dev/null +++ b/test/core/json/corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb @@ -0,0 +1 @@ +{"":{}+G'(!'(\'! \ No newline at end of file diff --git a/test/core/json/corpus/8d8874439569824e371a0284460440175cdb8a27 b/test/core/json/corpus/8d8874439569824e371a0284460440175cdb8a27 new file mode 100644 index 00000000000..ba964c2f6a9 --- /dev/null +++ b/test/core/json/corpus/8d8874439569824e371a0284460440175cdb8a27 @@ -0,0 +1 @@ +5E882312;) \ No newline at end of file diff --git a/test/core/json/corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7 b/test/core/json/corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7 new file mode 100644 index 00000000000..69226f7293a --- /dev/null +++ b/test/core/json/corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7 @@ -0,0 +1 @@ +92 \ No newline at end of file diff --git a/test/core/json/corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513 b/test/core/json/corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513 new file mode 100644 index 00000000000..6b3c0439ccd --- /dev/null +++ b/test/core/json/corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513 @@ -0,0 +1 @@ +0.2497 \ No newline at end of file diff --git a/test/core/json/corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2 b/test/core/json/corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2 new file mode 100644 index 00000000000..1c5bc51f403 --- /dev/null +++ b/test/core/json/corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2 @@ -0,0 +1 @@ +8162E2517;)6 \ No newline at end of file diff --git a/test/core/json/corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6 b/test/core/json/corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6 new file mode 100644 index 00000000000..22425f2d2c3 --- /dev/null +++ b/test/core/json/corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6 @@ -0,0 +1 @@ +{}+G' \ No newline at end of file diff --git a/test/core/json/corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285 b/test/core/json/corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285 new file mode 100644 index 00000000000..20dd34e4382 --- /dev/null +++ b/test/core/json/corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285 @@ -0,0 +1 @@ +"!\' \ No newline at end of file diff --git a/test/core/json/corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e b/test/core/json/corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e new file mode 100644 index 00000000000..f996624001a --- /dev/null +++ b/test/core/json/corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e @@ -0,0 +1 @@ +"9![\" \ No newline at end of file diff --git a/test/core/json/corpus/94d3598751569d2a5be258e59665cbbf0692dfbe b/test/core/json/corpus/94d3598751569d2a5be258e59665cbbf0692dfbe new file mode 100644 index 00000000000..e179cdef5f3 --- /dev/null +++ b/test/core/json/corpus/94d3598751569d2a5be258e59665cbbf0692dfbe @@ -0,0 +1 @@ +"',!\u65E8850{2312;):)!*?'ʳ0.!!!):*!:;8!9:\udbD8\uDe250' \ No newline at end of file diff --git a/test/core/json/corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4 b/test/core/json/corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4 new file mode 100644 index 00000000000..1de2ca84cc9 --- /dev/null +++ b/test/core/json/corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4 @@ -0,0 +1 @@ +58!9 \ No newline at end of file diff --git a/test/core/json/corpus/96189202e587ec951d5795da3e03062f2fb5d708 b/test/core/json/corpus/96189202e587ec951d5795da3e03062f2fb5d708 new file mode 100644 index 00000000000..912fa7c4e11 --- /dev/null +++ b/test/core/json/corpus/96189202e587ec951d5795da3e03062f2fb5d708 @@ -0,0 +1 @@ +{"( \\!('! \ No newline at end of file diff --git a/test/core/json/corpus/9711703428704ce2827a719eddb9d54be23a0cb7 b/test/core/json/corpus/9711703428704ce2827a719eddb9d54be23a0cb7 new file mode 100644 index 00000000000..fdb93ea3190 --- /dev/null +++ b/test/core/json/corpus/9711703428704ce2827a719eddb9d54be23a0cb7 @@ -0,0 +1 @@ +{"',!\u65E8850{2312;):)!*?'ʳ!!!):!*::8!9:\udbD8,6' \ No newline at end of file diff --git a/test/core/json/corpus/9734597e96eebe99b2243121a51d178a338ec46f b/test/core/json/corpus/9734597e96eebe99b2243121a51d178a338ec46f new file mode 100644 index 00000000000..690337689dd --- /dev/null +++ b/test/core/json/corpus/9734597e96eebe99b2243121a51d178a338ec46f @@ -0,0 +1 @@ +8162E-13;0.32) \ No newline at end of file diff --git a/test/core/json/corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d b/test/core/json/corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d new file mode 100644 index 00000000000..614c91b5efe --- /dev/null +++ b/test/core/json/corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d @@ -0,0 +1 @@ +[0.3629,95 \ No newline at end of file diff --git a/test/core/json/corpus/97d170e1550eee4afc0af065b78cda302a97674c b/test/core/json/corpus/97d170e1550eee4afc0af065b78cda302a97674c new file mode 100644 index 00000000000..0637a088a01 --- /dev/null +++ b/test/core/json/corpus/97d170e1550eee4afc0af065b78cda302a97674c @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/test/core/json/corpus/996156b191b619eff79b2fcbb7598518a09b06bc b/test/core/json/corpus/996156b191b619eff79b2fcbb7598518a09b06bc new file mode 100644 index 00000000000..c3f582eff64 --- /dev/null +++ b/test/core/json/corpus/996156b191b619eff79b2fcbb7598518a09b06bc @@ -0,0 +1 @@ +2.1498 \ No newline at end of file diff --git a/test/core/json/corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867 b/test/core/json/corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867 new file mode 100644 index 00000000000..d4f89519087 --- /dev/null +++ b/test/core/json/corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867 @@ -0,0 +1 @@ +t \' \ No newline at end of file diff --git a/test/core/json/corpus/9b7669e201574bfb979d56110539a90da5aca2c0 b/test/core/json/corpus/9b7669e201574bfb979d56110539a90da5aca2c0 new file mode 100644 index 00000000000..0cb3d493166 --- /dev/null +++ b/test/core/json/corpus/9b7669e201574bfb979d56110539a90da5aca2c0 @@ -0,0 +1 @@ +{""!!\'!!\''' \ No newline at end of file diff --git a/test/core/json/corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76 b/test/core/json/corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76 new file mode 100644 index 00000000000..cbf048ba3c8 --- /dev/null +++ b/test/core/json/corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76 @@ -0,0 +1 @@ +nu*: \ No newline at end of file diff --git a/test/core/json/corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd b/test/core/json/corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd new file mode 100644 index 00000000000..86d0a11613c --- /dev/null +++ b/test/core/json/corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd @@ -0,0 +1 @@ +[0.3629,]95 \ No newline at end of file diff --git a/test/core/json/corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea b/test/core/json/corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea new file mode 100644 index 0000000000000000000000000000000000000000..c85b1ce1f379448ce9fe3d96fa586764dcebaf50 GIT binary patch literal 3 KcmXqJ&;$Sg#Q Date: Wed, 23 Mar 2016 23:01:30 -0700 Subject: [PATCH 40/74] Expand corpus --- test/core/json/corpus/test1.json | 1 + test/core/json/corpus/test2.json | 1 + test/core/json/corpus/test3.json | 1 + test/core/json/corpus/test4.json | 1 + test/core/json/corpus/test5.json | 1 + test/core/json/corpus/test6.json | 1 + test/core/json/corpus/test7.json | 1 + test/core/json/corpus/test8.json | 1 + test/core/json/corpus/test9.json | 1 + 9 files changed, 9 insertions(+) create mode 100644 test/core/json/corpus/test1.json create mode 100644 test/core/json/corpus/test2.json create mode 100644 test/core/json/corpus/test3.json create mode 100644 test/core/json/corpus/test4.json create mode 100644 test/core/json/corpus/test5.json create mode 100644 test/core/json/corpus/test6.json create mode 100644 test/core/json/corpus/test7.json create mode 100644 test/core/json/corpus/test8.json create mode 100644 test/core/json/corpus/test9.json diff --git a/test/core/json/corpus/test1.json b/test/core/json/corpus/test1.json new file mode 100644 index 00000000000..2393cd01d4b --- /dev/null +++ b/test/core/json/corpus/test1.json @@ -0,0 +1 @@ +{"foo":"bar"} diff --git a/test/core/json/corpus/test2.json b/test/core/json/corpus/test2.json new file mode 100644 index 00000000000..810c96eeeb7 --- /dev/null +++ b/test/core/json/corpus/test2.json @@ -0,0 +1 @@ +"foo" diff --git a/test/core/json/corpus/test3.json b/test/core/json/corpus/test3.json new file mode 100644 index 00000000000..8adb9bb6048 --- /dev/null +++ b/test/core/json/corpus/test3.json @@ -0,0 +1 @@ +[1,2,3,4] diff --git a/test/core/json/corpus/test4.json b/test/core/json/corpus/test4.json new file mode 100644 index 00000000000..4c3fcf9ac73 --- /dev/null +++ b/test/core/json/corpus/test4.json @@ -0,0 +1 @@ +1e943923 diff --git a/test/core/json/corpus/test5.json b/test/core/json/corpus/test5.json new file mode 100644 index 00000000000..03f1d792ec9 --- /dev/null +++ b/test/core/json/corpus/test5.json @@ -0,0 +1 @@ +100000000000000000000000000000000000000000000000000000000000001 diff --git a/test/core/json/corpus/test6.json b/test/core/json/corpus/test6.json new file mode 100644 index 00000000000..27ba77ddaf6 --- /dev/null +++ b/test/core/json/corpus/test6.json @@ -0,0 +1 @@ +true diff --git a/test/core/json/corpus/test7.json b/test/core/json/corpus/test7.json new file mode 100644 index 00000000000..c508d5366f7 --- /dev/null +++ b/test/core/json/corpus/test7.json @@ -0,0 +1 @@ +false diff --git a/test/core/json/corpus/test8.json b/test/core/json/corpus/test8.json new file mode 100644 index 00000000000..19765bd501b --- /dev/null +++ b/test/core/json/corpus/test8.json @@ -0,0 +1 @@ +null diff --git a/test/core/json/corpus/test9.json b/test/core/json/corpus/test9.json new file mode 100644 index 00000000000..affaba369ab --- /dev/null +++ b/test/core/json/corpus/test9.json @@ -0,0 +1 @@ +{"alpha":null,"beta":false,"gamma":2.3,"xyz":"abc","negative":-133} From f137b72c1d050d8a79204da7e8fff86a1e73a010 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:05:05 -0700 Subject: [PATCH 41/74] Expand corpus --- .../11442d93a554b9e7f9ab02782bbf9443bf6e1ddc | Bin 0 -> 36 bytes .../179e8ac763b4051a953a38b6b3b1f1e1f6cc6c9e | Bin 0 -> 14 bytes .../71c2b0bebf7f0e916e4ab7eb36d47ccca2b9101c | Bin 0 -> 48 bytes .../7a51275b11ecb1efec9251390531681c8d6f2481 | Bin 0 -> 11 bytes .../8eb9b86b4f0aa79b8ef84b44e1fb03094e7bb426 | Bin 0 -> 24 bytes .../eb6ca7624384239c7f7e0d83edb7cc334b7926d7 | Bin 0 -> 38 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/11442d93a554b9e7f9ab02782bbf9443bf6e1ddc create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/179e8ac763b4051a953a38b6b3b1f1e1f6cc6c9e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/71c2b0bebf7f0e916e4ab7eb36d47ccca2b9101c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/7a51275b11ecb1efec9251390531681c8d6f2481 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8eb9b86b4f0aa79b8ef84b44e1fb03094e7bb426 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/eb6ca7624384239c7f7e0d83edb7cc334b7926d7 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/11442d93a554b9e7f9ab02782bbf9443bf6e1ddc b/test/core/transport/chttp2/hpack_parser_corpus/11442d93a554b9e7f9ab02782bbf9443bf6e1ddc new file mode 100644 index 0000000000000000000000000000000000000000..fdeb10ae31acd2b67692a835d18ea3a7a2ba1178 GIT binary patch literal 36 scmdN|BEbG(3BPVqW?pl$JcD}lhfIy6JY7ZmCGxjFC~7FieBew50P2Aa1ONa4 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/179e8ac763b4051a953a38b6b3b1f1e1f6cc6c9e b/test/core/transport/chttp2/hpack_parser_corpus/179e8ac763b4051a953a38b6b3b1f1e1f6cc6c9e new file mode 100644 index 0000000000000000000000000000000000000000..b576e9fb7a57ead80e41fa92fee9a7fdce0de967 GIT binary patch literal 14 VcmZQzU|`T+BEMvb{Ou*TwE!5$1l|Au literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/71c2b0bebf7f0e916e4ab7eb36d47ccca2b9101c b/test/core/transport/chttp2/hpack_parser_corpus/71c2b0bebf7f0e916e4ab7eb36d47ccca2b9101c new file mode 100644 index 0000000000000000000000000000000000000000..3a78289fdd0c726dbb96c52a32f650098f70cc0d GIT binary patch literal 48 kcmdPWTCijt5OFZD3nVLYMt{-xprIJUshI5k*9w~$0F2)czW@LL literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/7a51275b11ecb1efec9251390531681c8d6f2481 b/test/core/transport/chttp2/hpack_parser_corpus/7a51275b11ecb1efec9251390531681c8d6f2481 new file mode 100644 index 0000000000000000000000000000000000000000..5529b966f63508e7df262d522a9268364ff70eb4 GIT binary patch literal 11 ScmY%4Uvk^}Lo-8ivN`}7s{~E} literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8eb9b86b4f0aa79b8ef84b44e1fb03094e7bb426 b/test/core/transport/chttp2/hpack_parser_corpus/8eb9b86b4f0aa79b8ef84b44e1fb03094e7bb426 new file mode 100644 index 0000000000000000000000000000000000000000..5c8757590d0971a77f41398826c0d1ad38106d0a GIT binary patch literal 24 fcmdN|uw)$v1G_-7B4_j$jSm`%F`SCY?tiTSUmOSE literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/eb6ca7624384239c7f7e0d83edb7cc334b7926d7 b/test/core/transport/chttp2/hpack_parser_corpus/eb6ca7624384239c7f7e0d83edb7cc334b7926d7 new file mode 100644 index 0000000000000000000000000000000000000000..cb68dfd5e53988a296d1fad0c074923c85b6d45a GIT binary patch literal 38 ucmdN|uw)$v1G_*n1A`(bL-ZGo4;qRwoQlcr4Ejstmn@P0Yju0cZ7l%Otqi>Y literal 0 HcmV?d00001 From 45991b3881c3c00e1718ed7dd74448e4887c4cae Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:19:48 -0700 Subject: [PATCH 42/74] Expand corpus --- .../24ec2f3e17d3850564788f3fed17a5c586c44658 | Bin 0 -> 39 bytes .../3b14837f22905dcb04f93aed2aa69bf95924fb9d | 1 + .../85eb0f4502a51e646dab4ae08eabd90613cdf8e1 | Bin 0 -> 40 bytes .../bf0c98689ab81fc32787023300caf9a4175583dc | Bin 0 -> 58 bytes 4 files changed, 1 insertion(+) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/24ec2f3e17d3850564788f3fed17a5c586c44658 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3b14837f22905dcb04f93aed2aa69bf95924fb9d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/85eb0f4502a51e646dab4ae08eabd90613cdf8e1 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/bf0c98689ab81fc32787023300caf9a4175583dc diff --git a/test/core/transport/chttp2/hpack_parser_corpus/24ec2f3e17d3850564788f3fed17a5c586c44658 b/test/core/transport/chttp2/hpack_parser_corpus/24ec2f3e17d3850564788f3fed17a5c586c44658 new file mode 100644 index 0000000000000000000000000000000000000000..6b6a742ff97dbe7f9625404137990bfaaa593347 GIT binary patch literal 39 vcmdN|uw)$v1G_*n1A`(bL$spC2MtBV7|!BkcLx0>@=KP;|Fyck*af~QYD9A;fB2xG7{jTkmAqidIt~DKdl1S1 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/bf0c98689ab81fc32787023300caf9a4175583dc b/test/core/transport/chttp2/hpack_parser_corpus/bf0c98689ab81fc32787023300caf9a4175583dc new file mode 100644 index 0000000000000000000000000000000000000000..4f0cbfb0e72d79abf5b702ea28fb10d299edab4b GIT binary patch literal 58 zcmZ1?!2TgxLwAY%ZLI}MJ}4$-=6$dSvN+c{a0syL0=ZTnqS@AQFt7_GGyF(aWKiT} Mh*pgG!pW%t0D-I%G5`Po literal 0 HcmV?d00001 From f1eac3c28a2110a8f5cc8ae24d817d66ad5834c4 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:36:30 -0700 Subject: [PATCH 43/74] Expand corpus --- .../15ae43369798e48c396dfe7d53a21878b96e66c8 | Bin 0 -> 44 bytes .../1b5150514364e2c17f5a4edac1b7af99b936f55a | Bin 0 -> 48 bytes .../2151945f43991c27e123c45dc72b93752a47e65f | 1 + .../3de7b860c3fba2bc55707fd6875dce276f2f249b | 1 + .../8090444f98218e65ff9594789ff22bbea3c0497c | 1 + .../894211571f9153c3c2ea4102541dac69be8aaa9c | Bin 0 -> 15 bytes .../907d0021d42d0fdc867fd02d3609cdce13c8a055 | 1 + .../9267c81c3283da8193c198de05e05fa30631a453 | 1 + .../9c703141efd69eb8f32a58133c8035fb585e0f4c | Bin 0 -> 50 bytes .../a22c0f03f8c005a4612a9dcbcd6a643334c35d2f | 1 + .../beb208fd8675ba7de2ecb12998d2d628d579ca7c | 1 + .../c90951c19b24bac84296e3ec32cdeafe99e99cfb | 1 + .../d3ccd7039dd34baef465c4b78baa7a30312a8f07 | 1 + .../dcd1bd94ad97b4e67fd7e12ff1bf7c039eb17f66 | 1 + .../e145caa75d73e3d819a9cb4b6217f1f53112f3f8 | 1 + .../f52f4d51aaaed0f9c3a20936cf5efd25d0692f67 | 1 + 16 files changed, 12 insertions(+) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/15ae43369798e48c396dfe7d53a21878b96e66c8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/1b5150514364e2c17f5a4edac1b7af99b936f55a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/2151945f43991c27e123c45dc72b93752a47e65f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3de7b860c3fba2bc55707fd6875dce276f2f249b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8090444f98218e65ff9594789ff22bbea3c0497c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/894211571f9153c3c2ea4102541dac69be8aaa9c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/907d0021d42d0fdc867fd02d3609cdce13c8a055 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9267c81c3283da8193c198de05e05fa30631a453 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9c703141efd69eb8f32a58133c8035fb585e0f4c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a22c0f03f8c005a4612a9dcbcd6a643334c35d2f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/beb208fd8675ba7de2ecb12998d2d628d579ca7c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c90951c19b24bac84296e3ec32cdeafe99e99cfb create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d3ccd7039dd34baef465c4b78baa7a30312a8f07 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/dcd1bd94ad97b4e67fd7e12ff1bf7c039eb17f66 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e145caa75d73e3d819a9cb4b6217f1f53112f3f8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f52f4d51aaaed0f9c3a20936cf5efd25d0692f67 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/15ae43369798e48c396dfe7d53a21878b96e66c8 b/test/core/transport/chttp2/hpack_parser_corpus/15ae43369798e48c396dfe7d53a21878b96e66c8 new file mode 100644 index 0000000000000000000000000000000000000000..e4c217c6e51c89557e7b51abe1223dbc9f0cfe37 GIT binary patch literal 44 tcmdPWTCijt5OFZD3nVLYMt{-xprIJUshI5k*9t0TkR1I*UE{-tXaGuf6 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a22c0f03f8c005a4612a9dcbcd6a643334c35d2f b/test/core/transport/chttp2/hpack_parser_corpus/a22c0f03f8c005a4612a9dcbcd6a643334c35d2f new file mode 100644 index 00000000000..6a28aa19db5 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/a22c0f03f8c005a4612a9dcbcd6a643334c35d2f @@ -0,0 +1 @@ +;?0c!(K [N\ !G![(!! !GA)(!)!*GA)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/beb208fd8675ba7de2ecb12998d2d628d579ca7c b/test/core/transport/chttp2/hpack_parser_corpus/beb208fd8675ba7de2ecb12998d2d628d579ca7c new file mode 100644 index 00000000000..704e7978819 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/beb208fd8675ba7de2ecb12998d2d628d579ca7c @@ -0,0 +1 @@ +?*@:[c 8;!!\ !~ DG!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c90951c19b24bac84296e3ec32cdeafe99e99cfb b/test/core/transport/chttp2/hpack_parser_corpus/c90951c19b24bac84296e3ec32cdeafe99e99cfb new file mode 100644 index 00000000000..d43c0945f37 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c90951c19b24bac84296e3ec32cdeafe99e99cfb @@ -0,0 +1 @@ +?*@:[c (!!\;!~ G!am:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d3ccd7039dd34baef465c4b78baa7a30312a8f07 b/test/core/transport/chttp2/hpack_parser_corpus/d3ccd7039dd34baef465c4b78baa7a30312a8f07 new file mode 100644 index 00000000000..e9cb7889f3f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/d3ccd7039dd34baef465c4b78baa7a30312a8f07 @@ -0,0 +1 @@ +?*@:[(c (3!!\ !c (G!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/dcd1bd94ad97b4e67fd7e12ff1bf7c039eb17f66 b/test/core/transport/chttp2/hpack_parser_corpus/dcd1bd94ad97b4e67fd7e12ff1bf7c039eb17f66 new file mode 100644 index 00000000000..cb9bf614e79 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/dcd1bd94ad97b4e67fd7e12ff1bf7c039eb17f66 @@ -0,0 +1 @@ +)cc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e145caa75d73e3d819a9cb4b6217f1f53112f3f8 b/test/core/transport/chttp2/hpack_parser_corpus/e145caa75d73e3d819a9cb4b6217f1f53112f3f8 new file mode 100644 index 00000000000..df574771fd5 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e145caa75d73e3d819a9cb4b6217f1f53112f3f8 @@ -0,0 +1 @@ +!!ۤ-binc[-'b:n !?!(!\ c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f52f4d51aaaed0f9c3a20936cf5efd25d0692f67 b/test/core/transport/chttp2/hpack_parser_corpus/f52f4d51aaaed0f9c3a20936cf5efd25d0692f67 new file mode 100644 index 00000000000..1ab7be333a2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f52f4d51aaaed0f9c3a20936cf5efd25d0692f67 @@ -0,0 +1 @@ +p!T* \ No newline at end of file From 66f039b160bf810c9353f1294873adc4857ad293 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:38:24 -0700 Subject: [PATCH 44/74] Parallel experiment --- templates/tools/fuzzer/runners.template | 2 +- tools/fuzzer/runners/hpack_parser_fuzzer_test.sh | 2 +- tools/fuzzer/runners/http_fuzzer_test.sh | 2 +- tools/fuzzer/runners/json_fuzzer_test.sh | 2 +- tools/fuzzer/runners/uri_fuzzer_test.sh | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/tools/fuzzer/runners.template b/templates/tools/fuzzer/runners.template index 26ac7c80dfa..287bb2acbf7 100644 --- a/templates/tools/fuzzer/runners.template +++ b/templates/tools/fuzzer/runners.template @@ -35,7 +35,7 @@ template: | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # - flags="-max_total_time=3600" + flags="-max_total_time=3600 -jobs=20 -workers=20" if [ "$config" == "asan-trace-cmp" ] then flags="-use_traces=1 $flags" diff --git a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh index 366fe76ab3f..6f89e5250cd 100644 --- a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh +++ b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh @@ -29,7 +29,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -flags="-max_total_time=3600" +flags="-max_total_time=3600 -jobs=20 -workers=20" if [ "$config" == "asan-trace-cmp" ] then flags="-use_traces=1 $flags" diff --git a/tools/fuzzer/runners/http_fuzzer_test.sh b/tools/fuzzer/runners/http_fuzzer_test.sh index 00a420809c1..fb7120ddce0 100644 --- a/tools/fuzzer/runners/http_fuzzer_test.sh +++ b/tools/fuzzer/runners/http_fuzzer_test.sh @@ -29,7 +29,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -flags="-max_total_time=3600" +flags="-max_total_time=3600 -jobs=20 -workers=20" if [ "$config" == "asan-trace-cmp" ] then flags="-use_traces=1 $flags" diff --git a/tools/fuzzer/runners/json_fuzzer_test.sh b/tools/fuzzer/runners/json_fuzzer_test.sh index 1cd3d55d1bd..fc10c771937 100644 --- a/tools/fuzzer/runners/json_fuzzer_test.sh +++ b/tools/fuzzer/runners/json_fuzzer_test.sh @@ -29,7 +29,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -flags="-max_total_time=3600" +flags="-max_total_time=3600 -jobs=20 -workers=20" if [ "$config" == "asan-trace-cmp" ] then flags="-use_traces=1 $flags" diff --git a/tools/fuzzer/runners/uri_fuzzer_test.sh b/tools/fuzzer/runners/uri_fuzzer_test.sh index bac4fb844dc..fb2fa69e344 100644 --- a/tools/fuzzer/runners/uri_fuzzer_test.sh +++ b/tools/fuzzer/runners/uri_fuzzer_test.sh @@ -29,7 +29,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -flags="-max_total_time=3600" +flags="-max_total_time=3600 -jobs=20 -workers=20" if [ "$config" == "asan-trace-cmp" ] then flags="-use_traces=1 $flags" From 59e49a28e7895cff3abd234931849680d39068b9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:42:54 -0700 Subject: [PATCH 45/74] Expand corpus --- .../0320a995a8c76c64c8a0e0297f632b76d9bc92d6 | 1 + .../042091aeac4cc255506b96fa11c7354e699fde76 | 1 + .../0696e7bf7837d98de01c915d3c9d80e5d21b30d2 | 1 + .../080e1f19e6061c5bcac31add2095f87f6ce46129 | 1 + .../08ffc4a4160e9fe6f322c28870a89a41fd9c37d7 | Bin 0 -> 37 bytes .../090a7a758898a6e7c9108b7e8a1cb9cda383e707 | 1 + .../0940663729501b750a18542e1041cc26385c6148 | 1 + .../0a4d3fda02cdcb7adad1daa80d65780c9c8d1464 | Bin 0 -> 50 bytes .../0ad812832efa33e086874fbf3496664d3f1b4dbe | Bin 0 -> 39 bytes .../0dc9e41eedf35ccedf4e2b0d230ead7c4d72fdb2 | Bin 0 -> 60 bytes .../0dd470c8939ed535de6b36f7b7bfb68aeace493e | 1 + .../0e61e471fa6d3405daef4276ee00cf5fc189f378 | Bin 0 -> 36 bytes .../11833b795d04eda5a3af56ef7b3c3a26a8ee3444 | 1 + .../141272316382b0f3e9ec841c735b84e7aa517c3e | 1 + .../166bf1843c229d34a2880d234dd166c27bdc11fd | 1 + .../1ab3e52adace335d02e2b5130eb4f7c918add7fd | 1 + .../1e9b962969c359bc2ff766704c8ca8e25f5eccfc | Bin 0 -> 31 bytes .../213a734ccdb813b18ad9f2dd99b7f9967ee1460b | 1 + .../21545d998c27a5a1572a89a552937752432b1c14 | 1 + .../23c7443fa1ab713e7c34ec50222b1b8cceaedc65 | 1 + .../2445bb2c6779712dc9e14c01fecb7103f8732858 | Bin 0 -> 37 bytes .../244b0a20500e31d3c538418800db816b07f4d210 | 1 + .../2537b8d6b902b8dfc6e17f194cf7d05ddecf74cf | 1 + .../256d0bbdbed22f5867a6f503bf082011e61ee12b | Bin 0 -> 52 bytes .../2fdfd2abf30c636ec8c841f1ac26594e25664f0f | Bin 0 -> 47 bytes .../320fe6224a5b691c0425e34b6b14e8c6fe9f9620 | 1 + .../3255f1c7441a7150dc3c33022bfbe8c956c7b7b1 | 1 + .../33bc9db104eb72891fb096f34cbac191b3f9918d | Bin 0 -> 36 bytes .../344c011df992ccfc0ec682c14a1cb2d7959998c7 | 1 + .../35775efb9d0d68fa07987b9a84934389b528e436 | 1 + .../3650168db6fe115fb1e73eed4b76cd224d977d01 | 1 + .../38717bee901151b22a10beb12c6623ccc844d3c2 | 1 + .../3ab48621d9b8f075369099a8ec7517bd23fd6e70 | 1 + .../3be63c163805927e04fd7f84d96122c48240e601 | 1 + .../3bf2e349747c0f539181e0d4084a5fe506811a9e | 1 + .../3d2b25346a9671d83bd082d170a45eed739bae6b | 1 + .../3e2004ff9f40e398e0f41138a25a8b66e3d843d9 | Bin 0 -> 38 bytes .../4105669086d83a20f8d991088553ba08202478cd | 1 + .../4180619316eef7912d1cf52ffe85897242e1ae88 | 1 + .../420291d7139d9246de747739fd98102434a742dd | Bin 0 -> 50 bytes .../42bef44ae751a45c671d9da5b1231d2ac747a48d | Bin 0 -> 38 bytes .../438c3c9045c3cf7910aceec34f77b47a70ca4abd | 1 + .../43af96b4f65ed0ace7236427f2f8833c4835989e | 1 + .../44c6119bb91a452d6128ce0ea0d62938800779ea | 1 + .../46d595331689ae01d77aff387747a98ff3480096 | Bin 0 -> 36 bytes .../499376c5e291da2f9c25999abf4960fab5a92ec8 | Bin 0 -> 39 bytes .../4a3fdb96bc8c80f1992f0f72f963f84856cbade8 | Bin 0 -> 37 bytes .../4aae80e05793d7adb42a7e6e8a5283b677318777 | 1 + .../4ce8a43fb17a075627160812ad26c25210d8a82d | 1 + .../5032a75a98cd14d4dab75c1c5e2cd981abb19dcf | Bin 0 -> 36 bytes .../51064b88a98658d48a0da7f1545c2d1293ad9538 | 1 + .../51f65f681cf3a1218d83ad58642c06deaea86210 | 1 + .../521809903d36db80b1ccd707f354361f2bf05075 | Bin 0 -> 25 bytes .../52fe8f0e1fa270ea16f66c93f2ffab265ce059e8 | 1 + .../53de87ae94acdc8e58a369459c12a3240f1294fe | 1 + .../54a2b3993c3483745f6314c870a038a8e58f97a7 | Bin 0 -> 38 bytes .../55d60c2e5040a38be8ca41de63e137e3fef892a4 | 1 + .../588d225784891ac88e30ac6eb5651d63fac34083 | 1 + .../58d51c21a20b6549567a0ab8fee29d162dd3fc5a | 1 + .../58f1036d8ff855841ec25b3c33e85a8fec0d94b7 | 1 + .../5b42793550699b2c015bed677cfcddc052f73513 | 1 + .../5baa13dc95da05e7ba02bbe9583ea24517a29a1a | 1 + .../5c9fd9cc7100feaeead1e0e45201945a6e76fd85 | Bin 0 -> 38 bytes .../5ff49c9edc7361797a951585f3e180222c8dd95d | 1 + .../61fa69b6b51b0ed91914fe48779173f8d26a1d54 | 1 + .../644deba51c79b6ebd470bd4367452941045d112a | Bin 0 -> 35 bytes .../64beae98e2276749b133e6368c9e0f19a79eba96 | 1 + .../66c537bf59cb3667c037b3517be3d31245c9da8a | 1 + .../66f576baeb0c9435a56eb7375dadc5b5d630ed87 | 1 + .../67b4cec5183659aeae0f5bc71b3adf0542a11828 | Bin 0 -> 35 bytes .../6d580f28d785c0bf87ac351a31a89289449feadb | 1 + .../70ff6621a09e4f641538cb1b27e8b382b2f56a94 | 1 + .../74610e278a5b90aa12ce1beaf222c4306b02ed43 | 1 + .../748ee9817eba56ec9938601a0e380c74bad4563f | 1 + .../7727e3eeb2a48c46bf5a678c300ff8a38b8ffe3a | 1 + .../789abb571563a6795220046f76b7cf0ade90743c | 1 + .../78f5ff40e5554aa9c31b45f79a7ae9699f93e7fd | Bin 0 -> 47 bytes .../7a42083be21dce7f96edef1f3b3b2fea0bcaeb3f | 1 + .../7b9682cd7a3984698f6eac034c59c0f91b4fb83d | Bin 0 -> 29 bytes .../7d3b3d5f23d0ede9f7e5dbd1115db58c8a54a213 | 1 + .../8035c81c95dedfc27c3649064f98f49e3e72c21f | Bin 0 -> 37 bytes .../80514b85933ea9bdd3462595f949c5af24409b87 | 1 + .../806a3bd4e078d91adeacedfd3e47ef8ae229244a | 1 + .../80e516692955d5f224706f268e247858858e16d8 | Bin 0 -> 56 bytes .../810a1372fa97380265f5529c5043ae96f007f5bb | Bin 0 -> 46 bytes .../8127597d3c146b2a89579e44daef9d03a0f941ec | 1 + .../82ed571f8922caa572d13b4cc9b5c5fabafaade9 | 1 + .../84441efd7d8bdb0ce2fac28f218d3d5d4d77f1d4 | Bin 0 -> 40 bytes .../870f9cc4bd89c6c04c6a51ceae1efa8634627cd6 | 1 + .../8b0e12978b8e2eecf62346e438e47d0993845693 | 1 + .../8b3fa0bd4f289eff6a04a5205e04baaeafbdf637 | 1 + .../8d1deedd1e463f8c95129a6f839c380a7c83ab04 | 1 + .../8d1e029bd72381e382c87e61b4c5a9741d80d644 | Bin 0 -> 36 bytes .../8dfc2183691385432f92957cff0b2538e5a0ebfa | Bin 0 -> 50 bytes .../8ec540c36da3814e93da765bf2ff0825b59c1bd0 | 1 + .../8f3e48c49d0794909f6e8e61e5a4312edf484c33 | Bin 0 -> 39 bytes .../92e80997a4237d76f10b70dae2870b7255c97435 | 1 + .../935322db76f5d4c74c2dc68fc4631915b8e24323 | 1 + .../939f2627ef6263d0176566de267ff3eb910e6a60 | 1 + .../96a89c005e8d9992e34cc149b0be096ad0051446 | Bin 0 -> 51 bytes .../98f2cb84ad89550cf56ee54e11f1448ae7287247 | Bin 0 -> 29 bytes .../993497422a59b7f9f0f6db8c867339b5c9e4c978 | 1 + .../99e888b7372b29256dbefd476855ff73584cc00f | Bin 0 -> 47 bytes .../9b18087deb3cfafa1b964aa65d8ee980bc61404e | Bin 0 -> 23 bytes .../9b3c745ea3e313909a228a07b49aae110b02ae4a | 1 + .../9be1ce0ba77758928ff5e9c45139b1624cbe9c2d | 1 + .../9c7f77981677499f0426a0ffb5cb79d5fe55dcb2 | 1 + .../9ca59e6cadaa5be9af30dfe5620d1bcd70f442e5 | 1 + .../a09db5715f0bc3879a0e18e4db5a6b5640b254a3 | 1 + .../a0c59a090818bca29d76ccf9843f7e2faf330ddf | 1 + .../a3154b8ed26b3461f2b091c732da00b63ce8bed3 | 1 + .../a84a1ed1a24e753a27adfd3ba806f06fc44f899f | Bin 0 -> 39 bytes .../a8dc736ea964586b7dcbf2bc065ec4675d1daba3 | 1 + .../ab97c1f6033dc7d96f69b9e1461fd594c16f4ebf | Bin 0 -> 25 bytes .../ac8a8c23acd8c290a11dc7828f7f397957fa6400 | 1 + .../affd292cd2ce3306b4651cc7ec0ec0524cbbae3d | 1 + .../b166aa66b5b3ad178bc38aee5768226c8adc082f | 1 + .../b1ade0571262c6e5f1d72f6d25ebb513d2055bc9 | 1 + .../bcaa71abf23b2e5130e0cc464755fe769bf4aaa7 | 1 + .../bf479e97b39b697e715663de6a1e78dd58d64122 | 1 + .../bf826c96be94d1b42eea0666f7239cc5f699a375 | 1 + .../c1e5307d88feda2c3b15fc221cba92bcf41622bf | 1 + .../c249f408c552a0408eab3fe1d1cbeca95cd537c1 | 1 + .../c26b460aebc9082c519539069f7e060042989696 | 1 + .../c4836760377a7091fb20f4afa9c712875792b9a7 | Bin 0 -> 46 bytes .../c48caad597176404f776d532d4baf9faf7655ee2 | Bin 0 -> 58 bytes .../c4eff0f59986fc5ab09d5bd95f394292f2882659 | 1 + .../c600877ce547166eb1b9d83afbe128d98767f8a3 | 1 + .../c8d22f7fb4f37f2d8cc7953fa2d599d38d899aec | Bin 0 -> 36 bytes .../c95ff2a172626efb50e94aa6781feba609820076 | 1 + .../ca6c557afb9c571de62e9b65ca6469a6133760da | 1 + .../cb2d0fb23f66c968af2e80d59f71d4c1aed96fbd | 1 + .../cc60a642cc2037ad3c459a57381b8f65d8d7aa35 | 1 + .../ccdfd1354997eb117bd76b75440a7e4ff20bf564 | 1 + .../cd7a7b8f08c189e95ae3e2ea44b9015000e823f3 | 1 + .../ce6b642b81373f05baa2a6fe6e9d5d1387046285 | Bin 0 -> 38 bytes .../cf84d06e4dddb997a79a41f9b6122bf620bbdb4b | 1 + .../d131f83ee73450ff45565d0c638be7d8beeb30d9 | 1 + .../d2817b89d7aaa7fa880c077b1a67168ec2f4f0f7 | Bin 0 -> 35 bytes .../d4cfaf3b59b22b654d7af80ee6715ce5015bfdc0 | Bin 0 -> 48 bytes .../d5670827c8e8d4c95ac0f738c0790c19916c0336 | 1 + .../d59d7e94863f1ed89cacfbaabf7bc59946036c8f | 1 + .../d8b15e9e555ad9900ba4be8cc9f87bef75725b24 | 1 + .../da9fc821f0c1e00728b139b36269bc3d21c0a8cc | 1 + .../dd3ba9b139e13324fc76cd62af84b00ca8b87205 | 1 + .../de0a9dce0ea4e4bfdcb13f788ae728bf979fed25 | 1 + .../deb6f9a930d9b31586ede19fd8fd3caae0e5b1f2 | 1 + .../dee95e0280b70681eddfb68e3b418126c5661e18 | Bin 0 -> 40 bytes .../e1d86c0094657386197d191855b5645ac1dd5936 | Bin 0 -> 48 bytes .../e3a970ac8636d29da3ded328b876ed3550cb3209 | 1 + .../e3cfdc862187b4ec28bd4fb2ced5094bb5b09909 | Bin 0 -> 26 bytes .../e52173f0bc3325629046e85e2dc41acc6ba7d1c3 | 1 + .../e9733e973c33b38c2087b7f1deb36688b3b14259 | 1 + .../ea8134769855d574f6673bf0301eb2e24632c6eb | 1 + .../eb489536e4e5589a93a17cd36669475b8f2a5e1b | 1 + .../edff5256a2d60d0e51caef25dc1d6f1643dad6d5 | Bin 0 -> 38 bytes .../ef718258ca1870198e91a2fbc1eaa90b620673fb | 1 + .../efb46deb37a78f41dd760f6b7203b20956eb114e | 1 + .../f1e30464c24dc1d7cec7ec1dd2adec8512232b43 | Bin 0 -> 35 bytes .../f3f0d99ac2962f8fddb25c65fb4c8c6eb63518a9 | 1 + .../f4753e8881e4b3c71f2728149be7d04cc648f6a6 | 1 + .../f4d6ff635ae4fda497221da4bfa3e593df59a44e | 1 + .../f8760761bd5ab7b47376bfbc5a44e16b2d5ca800 | 1 + .../fd34ec90fe8f9218fd25c3eac151aec998cff6d8 | Bin 0 -> 36 bytes .../fdf548cde981fab4fb17bd63a124b75eddc5c836 | 1 + .../ff2097734bd7bb8451aece13c9336c4624735170 | Bin 0 -> 52 bytes .../ff7d6ff060e63355701b2e655c802902338497de | 1 + 167 files changed, 117 insertions(+) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0320a995a8c76c64c8a0e0297f632b76d9bc92d6 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/042091aeac4cc255506b96fa11c7354e699fde76 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0696e7bf7837d98de01c915d3c9d80e5d21b30d2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/080e1f19e6061c5bcac31add2095f87f6ce46129 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/08ffc4a4160e9fe6f322c28870a89a41fd9c37d7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/090a7a758898a6e7c9108b7e8a1cb9cda383e707 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0940663729501b750a18542e1041cc26385c6148 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0a4d3fda02cdcb7adad1daa80d65780c9c8d1464 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0ad812832efa33e086874fbf3496664d3f1b4dbe create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0dc9e41eedf35ccedf4e2b0d230ead7c4d72fdb2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0dd470c8939ed535de6b36f7b7bfb68aeace493e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0e61e471fa6d3405daef4276ee00cf5fc189f378 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/11833b795d04eda5a3af56ef7b3c3a26a8ee3444 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/141272316382b0f3e9ec841c735b84e7aa517c3e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/166bf1843c229d34a2880d234dd166c27bdc11fd create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/1ab3e52adace335d02e2b5130eb4f7c918add7fd create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/1e9b962969c359bc2ff766704c8ca8e25f5eccfc create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/213a734ccdb813b18ad9f2dd99b7f9967ee1460b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/21545d998c27a5a1572a89a552937752432b1c14 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/23c7443fa1ab713e7c34ec50222b1b8cceaedc65 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/2445bb2c6779712dc9e14c01fecb7103f8732858 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/244b0a20500e31d3c538418800db816b07f4d210 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/2537b8d6b902b8dfc6e17f194cf7d05ddecf74cf create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/256d0bbdbed22f5867a6f503bf082011e61ee12b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/2fdfd2abf30c636ec8c841f1ac26594e25664f0f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/320fe6224a5b691c0425e34b6b14e8c6fe9f9620 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3255f1c7441a7150dc3c33022bfbe8c956c7b7b1 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/33bc9db104eb72891fb096f34cbac191b3f9918d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/344c011df992ccfc0ec682c14a1cb2d7959998c7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/35775efb9d0d68fa07987b9a84934389b528e436 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3650168db6fe115fb1e73eed4b76cd224d977d01 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/38717bee901151b22a10beb12c6623ccc844d3c2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3ab48621d9b8f075369099a8ec7517bd23fd6e70 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3be63c163805927e04fd7f84d96122c48240e601 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3bf2e349747c0f539181e0d4084a5fe506811a9e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3d2b25346a9671d83bd082d170a45eed739bae6b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/3e2004ff9f40e398e0f41138a25a8b66e3d843d9 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/4105669086d83a20f8d991088553ba08202478cd create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/4180619316eef7912d1cf52ffe85897242e1ae88 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/420291d7139d9246de747739fd98102434a742dd create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/42bef44ae751a45c671d9da5b1231d2ac747a48d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/438c3c9045c3cf7910aceec34f77b47a70ca4abd create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/43af96b4f65ed0ace7236427f2f8833c4835989e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/44c6119bb91a452d6128ce0ea0d62938800779ea create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/46d595331689ae01d77aff387747a98ff3480096 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/499376c5e291da2f9c25999abf4960fab5a92ec8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/4a3fdb96bc8c80f1992f0f72f963f84856cbade8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/4aae80e05793d7adb42a7e6e8a5283b677318777 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/4ce8a43fb17a075627160812ad26c25210d8a82d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5032a75a98cd14d4dab75c1c5e2cd981abb19dcf create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/51064b88a98658d48a0da7f1545c2d1293ad9538 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/51f65f681cf3a1218d83ad58642c06deaea86210 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/521809903d36db80b1ccd707f354361f2bf05075 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/52fe8f0e1fa270ea16f66c93f2ffab265ce059e8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/53de87ae94acdc8e58a369459c12a3240f1294fe create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/54a2b3993c3483745f6314c870a038a8e58f97a7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/55d60c2e5040a38be8ca41de63e137e3fef892a4 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/588d225784891ac88e30ac6eb5651d63fac34083 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/58d51c21a20b6549567a0ab8fee29d162dd3fc5a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/58f1036d8ff855841ec25b3c33e85a8fec0d94b7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5b42793550699b2c015bed677cfcddc052f73513 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5baa13dc95da05e7ba02bbe9583ea24517a29a1a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5c9fd9cc7100feaeead1e0e45201945a6e76fd85 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5ff49c9edc7361797a951585f3e180222c8dd95d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/61fa69b6b51b0ed91914fe48779173f8d26a1d54 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/644deba51c79b6ebd470bd4367452941045d112a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/64beae98e2276749b133e6368c9e0f19a79eba96 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/66c537bf59cb3667c037b3517be3d31245c9da8a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/66f576baeb0c9435a56eb7375dadc5b5d630ed87 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/67b4cec5183659aeae0f5bc71b3adf0542a11828 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/6d580f28d785c0bf87ac351a31a89289449feadb create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/70ff6621a09e4f641538cb1b27e8b382b2f56a94 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/74610e278a5b90aa12ce1beaf222c4306b02ed43 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/748ee9817eba56ec9938601a0e380c74bad4563f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/7727e3eeb2a48c46bf5a678c300ff8a38b8ffe3a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/789abb571563a6795220046f76b7cf0ade90743c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/78f5ff40e5554aa9c31b45f79a7ae9699f93e7fd create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/7a42083be21dce7f96edef1f3b3b2fea0bcaeb3f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/7b9682cd7a3984698f6eac034c59c0f91b4fb83d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/7d3b3d5f23d0ede9f7e5dbd1115db58c8a54a213 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8035c81c95dedfc27c3649064f98f49e3e72c21f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/80514b85933ea9bdd3462595f949c5af24409b87 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/806a3bd4e078d91adeacedfd3e47ef8ae229244a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/80e516692955d5f224706f268e247858858e16d8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/810a1372fa97380265f5529c5043ae96f007f5bb create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8127597d3c146b2a89579e44daef9d03a0f941ec create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/82ed571f8922caa572d13b4cc9b5c5fabafaade9 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/84441efd7d8bdb0ce2fac28f218d3d5d4d77f1d4 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/870f9cc4bd89c6c04c6a51ceae1efa8634627cd6 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8b0e12978b8e2eecf62346e438e47d0993845693 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8b3fa0bd4f289eff6a04a5205e04baaeafbdf637 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8d1deedd1e463f8c95129a6f839c380a7c83ab04 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8d1e029bd72381e382c87e61b4c5a9741d80d644 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8dfc2183691385432f92957cff0b2538e5a0ebfa create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8ec540c36da3814e93da765bf2ff0825b59c1bd0 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8f3e48c49d0794909f6e8e61e5a4312edf484c33 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/92e80997a4237d76f10b70dae2870b7255c97435 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/935322db76f5d4c74c2dc68fc4631915b8e24323 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/939f2627ef6263d0176566de267ff3eb910e6a60 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/96a89c005e8d9992e34cc149b0be096ad0051446 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/98f2cb84ad89550cf56ee54e11f1448ae7287247 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/993497422a59b7f9f0f6db8c867339b5c9e4c978 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/99e888b7372b29256dbefd476855ff73584cc00f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9b18087deb3cfafa1b964aa65d8ee980bc61404e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9b3c745ea3e313909a228a07b49aae110b02ae4a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9be1ce0ba77758928ff5e9c45139b1624cbe9c2d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9c7f77981677499f0426a0ffb5cb79d5fe55dcb2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9ca59e6cadaa5be9af30dfe5620d1bcd70f442e5 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a09db5715f0bc3879a0e18e4db5a6b5640b254a3 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a0c59a090818bca29d76ccf9843f7e2faf330ddf create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a3154b8ed26b3461f2b091c732da00b63ce8bed3 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a84a1ed1a24e753a27adfd3ba806f06fc44f899f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/a8dc736ea964586b7dcbf2bc065ec4675d1daba3 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ab97c1f6033dc7d96f69b9e1461fd594c16f4ebf create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ac8a8c23acd8c290a11dc7828f7f397957fa6400 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/affd292cd2ce3306b4651cc7ec0ec0524cbbae3d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/b166aa66b5b3ad178bc38aee5768226c8adc082f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/b1ade0571262c6e5f1d72f6d25ebb513d2055bc9 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/bcaa71abf23b2e5130e0cc464755fe769bf4aaa7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/bf479e97b39b697e715663de6a1e78dd58d64122 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/bf826c96be94d1b42eea0666f7239cc5f699a375 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c1e5307d88feda2c3b15fc221cba92bcf41622bf create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c249f408c552a0408eab3fe1d1cbeca95cd537c1 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c26b460aebc9082c519539069f7e060042989696 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c4836760377a7091fb20f4afa9c712875792b9a7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c48caad597176404f776d532d4baf9faf7655ee2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c4eff0f59986fc5ab09d5bd95f394292f2882659 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c600877ce547166eb1b9d83afbe128d98767f8a3 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c8d22f7fb4f37f2d8cc7953fa2d599d38d899aec create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c95ff2a172626efb50e94aa6781feba609820076 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ca6c557afb9c571de62e9b65ca6469a6133760da create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/cb2d0fb23f66c968af2e80d59f71d4c1aed96fbd create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/cc60a642cc2037ad3c459a57381b8f65d8d7aa35 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ccdfd1354997eb117bd76b75440a7e4ff20bf564 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/cd7a7b8f08c189e95ae3e2ea44b9015000e823f3 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ce6b642b81373f05baa2a6fe6e9d5d1387046285 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/cf84d06e4dddb997a79a41f9b6122bf620bbdb4b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d131f83ee73450ff45565d0c638be7d8beeb30d9 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d2817b89d7aaa7fa880c077b1a67168ec2f4f0f7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d4cfaf3b59b22b654d7af80ee6715ce5015bfdc0 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d5670827c8e8d4c95ac0f738c0790c19916c0336 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d59d7e94863f1ed89cacfbaabf7bc59946036c8f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d8b15e9e555ad9900ba4be8cc9f87bef75725b24 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/da9fc821f0c1e00728b139b36269bc3d21c0a8cc create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/dd3ba9b139e13324fc76cd62af84b00ca8b87205 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/de0a9dce0ea4e4bfdcb13f788ae728bf979fed25 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/deb6f9a930d9b31586ede19fd8fd3caae0e5b1f2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/dee95e0280b70681eddfb68e3b418126c5661e18 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e1d86c0094657386197d191855b5645ac1dd5936 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e3a970ac8636d29da3ded328b876ed3550cb3209 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e3cfdc862187b4ec28bd4fb2ced5094bb5b09909 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e52173f0bc3325629046e85e2dc41acc6ba7d1c3 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e9733e973c33b38c2087b7f1deb36688b3b14259 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ea8134769855d574f6673bf0301eb2e24632c6eb create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/eb489536e4e5589a93a17cd36669475b8f2a5e1b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/edff5256a2d60d0e51caef25dc1d6f1643dad6d5 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ef718258ca1870198e91a2fbc1eaa90b620673fb create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/efb46deb37a78f41dd760f6b7203b20956eb114e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f1e30464c24dc1d7cec7ec1dd2adec8512232b43 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f3f0d99ac2962f8fddb25c65fb4c8c6eb63518a9 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f4753e8881e4b3c71f2728149be7d04cc648f6a6 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f4d6ff635ae4fda497221da4bfa3e593df59a44e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f8760761bd5ab7b47376bfbc5a44e16b2d5ca800 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/fd34ec90fe8f9218fd25c3eac151aec998cff6d8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/fdf548cde981fab4fb17bd63a124b75eddc5c836 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ff2097734bd7bb8451aece13c9336c4624735170 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ff7d6ff060e63355701b2e655c802902338497de diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0320a995a8c76c64c8a0e0297f632b76d9bc92d6 b/test/core/transport/chttp2/hpack_parser_corpus/0320a995a8c76c64c8a0e0297f632b76d9bc92d6 new file mode 100644 index 00000000000..0ea34c40993 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0320a995a8c76c64c8a0e0297f632b76d9bc92d6 @@ -0,0 +1 @@ +!!*c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/042091aeac4cc255506b96fa11c7354e699fde76 b/test/core/transport/chttp2/hpack_parser_corpus/042091aeac4cc255506b96fa11c7354e699fde76 new file mode 100644 index 00000000000..ce65ec6fd1f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/042091aeac4cc255506b96fa11c7354e699fde76 @@ -0,0 +1 @@ +-bin;?0c!(K [N!c[:-\!G!):[(!! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0696e7bf7837d98de01c915d3c9d80e5d21b30d2 b/test/core/transport/chttp2/hpack_parser_corpus/0696e7bf7837d98de01c915d3c9d80e5d21b30d2 new file mode 100644 index 00000000000..a7936f2faf3 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0696e7bf7837d98de01c915d3c9d80e5d21b30d2 @@ -0,0 +1 @@ +[(-bin! (!\ ?*@:[ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/080e1f19e6061c5bcac31add2095f87f6ce46129 b/test/core/transport/chttp2/hpack_parser_corpus/080e1f19e6061c5bcac31add2095f87f6ce46129 new file mode 100644 index 00000000000..e880d551baa --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/080e1f19e6061c5bcac31add2095f87f6ce46129 @@ -0,0 +1 @@ +;?'c[(! [N!\ !G!*(! !GA)(!)!*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/08ffc4a4160e9fe6f322c28870a89a41fd9c37d7 b/test/core/transport/chttp2/hpack_parser_corpus/08ffc4a4160e9fe6f322c28870a89a41fd9c37d7 new file mode 100644 index 0000000000000000000000000000000000000000..e0c8806edca68ffe5a072844ca369e7e45a3360d GIT binary patch literal 37 tcmdN|BEbG(3BPVqW?u8xWH|=)=nt71NqM@8_Dke%e^As=jQPNs3;+h$4fp^6 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/090a7a758898a6e7c9108b7e8a1cb9cda383e707 b/test/core/transport/chttp2/hpack_parser_corpus/090a7a758898a6e7c9108b7e8a1cb9cda383e707 new file mode 100644 index 00000000000..93f599d0591 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/090a7a758898a6e7c9108b7e8a1cb9cda383e707 @@ -0,0 +1 @@ +-binc[)(-'bin !!?!{(-bin !\ !;?G[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0940663729501b750a18542e1041cc26385c6148 b/test/core/transport/chttp2/hpack_parser_corpus/0940663729501b750a18542e1041cc26385c6148 new file mode 100644 index 00000000000..1e92896b141 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0940663729501b750a18542e1041cc26385c6148 @@ -0,0 +1 @@ +-binc[)('-bi. *)!?!{(-bi\n! ! ;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0a4d3fda02cdcb7adad1daa80d65780c9c8d1464 b/test/core/transport/chttp2/hpack_parser_corpus/0a4d3fda02cdcb7adad1daa80d65780c9c8d1464 new file mode 100644 index 0000000000000000000000000000000000000000..389f58b8ae52ccaa18b4c11dff2edbe95ac5f619 GIT binary patch literal 50 zcmZ3oM1cLn5`NvJ%sh>5&1m%{{7Y_s_|VLdoUE>)n+z1?R8+KIB7ggXB2Znm22dRU D_CFI9 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0ad812832efa33e086874fbf3496664d3f1b4dbe b/test/core/transport/chttp2/hpack_parser_corpus/0ad812832efa33e086874fbf3496664d3f1b4dbe new file mode 100644 index 0000000000000000000000000000000000000000..e4ec7808b99a4ad2920a4ff311fc0badd524ec01 GIT binary patch literal 39 tcmdN|BEbG(3BPVqX5L{2Ek)r4>o`Cn(HhB1&e)(H}B3pn^$?oJ($hNdBOq7{jTU K{PctSUn>BF!4`G^ literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0dd470c8939ed535de6b36f7b7bfb68aeace493e b/test/core/transport/chttp2/hpack_parser_corpus/0dd470c8939ed535de6b36f7b7bfb68aeace493e new file mode 100644 index 00000000000..ca7cbd033a8 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/0dd470c8939ed535de6b36f7b7bfb68aeace493e @@ -0,0 +1 @@ +-binc[)('-bh *!!?!{(-bi\n! ! ;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0e61e471fa6d3405daef4276ee00cf5fc189f378 b/test/core/transport/chttp2/hpack_parser_corpus/0e61e471fa6d3405daef4276ee00cf5fc189f378 new file mode 100644 index 0000000000000000000000000000000000000000..203837bbd78c6ebe97e764fe90ac9d362855bff1 GIT binary patch literal 36 scmdN|BEbG(3BPVqW?pl$27`L^hfIy6JY7ZmCGxjFC~7FieBew50P9c<4FCWD literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/11833b795d04eda5a3af56ef7b3c3a26a8ee3444 b/test/core/transport/chttp2/hpack_parser_corpus/11833b795d04eda5a3af56ef7b3c3a26a8ee3444 new file mode 100644 index 00000000000..480a0566772 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/11833b795d04eda5a3af56ef7b3c3a26a8ee3444 @@ -0,0 +1 @@ +-bin)['(-cbin !!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/141272316382b0f3e9ec841c735b84e7aa517c3e b/test/core/transport/chttp2/hpack_parser_corpus/141272316382b0f3e9ec841c735b84e7aa517c3e new file mode 100644 index 00000000000..f706bd98e7c --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/141272316382b0f3e9ec841c735b84e7aa517c3e @@ -0,0 +1 @@ +;?0c!(K [N!\!G![(!! !GA)(!)!*GA))+ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/166bf1843c229d34a2880d234dd166c27bdc11fd b/test/core/transport/chttp2/hpack_parser_corpus/166bf1843c229d34a2880d234dd166c27bdc11fd new file mode 100644 index 00000000000..64fdd961e99 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/166bf1843c229d34a2880d234dd166c27bdc11fd @@ -0,0 +1 @@ +-bin-[c'!)bi \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/1ab3e52adace335d02e2b5130eb4f7c918add7fd b/test/core/transport/chttp2/hpack_parser_corpus/1ab3e52adace335d02e2b5130eb4f7c918add7fd new file mode 100644 index 00000000000..914e443ce8d --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/1ab3e52adace335d02e2b5130eb4f7c918add7fd @@ -0,0 +1 @@ +-binc[')(-'bin !!?!{(-ban !\ !(;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/1e9b962969c359bc2ff766704c8ca8e25f5eccfc b/test/core/transport/chttp2/hpack_parser_corpus/1e9b962969c359bc2ff766704c8ca8e25f5eccfc new file mode 100644 index 0000000000000000000000000000000000000000..970a9121b357f3782c33943e9b680711a3fa9e38 GIT binary patch literal 31 ncmdN|uw)$v1G|9M5&`xPOZat@GLxI@~>Q02baF0RZ025upG8 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/2fdfd2abf30c636ec8c841f1ac26594e25664f0f b/test/core/transport/chttp2/hpack_parser_corpus/2fdfd2abf30c636ec8c841f1ac26594e25664f0f new file mode 100644 index 0000000000000000000000000000000000000000..57727acb9e150bdfc755347fc7438bfe1b2e063c GIT binary patch literal 47 lcmdPWTCijt5OFZD3nVLYMt{-xprIJUshI5k*UAG^3;==P55)ig literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/320fe6224a5b691c0425e34b6b14e8c6fe9f9620 b/test/core/transport/chttp2/hpack_parser_corpus/320fe6224a5b691c0425e34b6b14e8c6fe9f9620 new file mode 100644 index 00000000000..b706187aa10 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/320fe6224a5b691c0425e34b6b14e8c6fe9f9620 @@ -0,0 +1 @@ +*@[:c 8;'!!\ !~ DG!km' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3255f1c7441a7150dc3c33022bfbe8c956c7b7b1 b/test/core/transport/chttp2/hpack_parser_corpus/3255f1c7441a7150dc3c33022bfbe8c956c7b7b1 new file mode 100644 index 00000000000..b1c0905a7bb --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3255f1c7441a7150dc3c33022bfbe8c956c7b7b1 @@ -0,0 +1 @@ +;?'c[(! [N!\ !E!*(!! !GA)(!)!*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/33bc9db104eb72891fb096f34cbac191b3f9918d b/test/core/transport/chttp2/hpack_parser_corpus/33bc9db104eb72891fb096f34cbac191b3f9918d new file mode 100644 index 0000000000000000000000000000000000000000..21f59d4d833b6b33d468be0f12f40c00868f8ba4 GIT binary patch literal 36 scmdN|BEbG(3BPVqW?r*~JcD}lhfIy6JY7ZmCGxjFC~7FieBew50Oa`$$p8QV literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/344c011df992ccfc0ec682c14a1cb2d7959998c7 b/test/core/transport/chttp2/hpack_parser_corpus/344c011df992ccfc0ec682c14a1cb2d7959998c7 new file mode 100644 index 00000000000..982af7bac33 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/344c011df992ccfc0ec682c14a1cb2d7959998c7 @@ -0,0 +1 @@ +;-binc*[)( \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/35775efb9d0d68fa07987b9a84934389b528e436 b/test/core/transport/chttp2/hpack_parser_corpus/35775efb9d0d68fa07987b9a84934389b528e436 new file mode 100644 index 00000000000..cd204010cac --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/35775efb9d0d68fa07987b9a84934389b528e436 @@ -0,0 +1 @@ +?! c' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3650168db6fe115fb1e73eed4b76cd224d977d01 b/test/core/transport/chttp2/hpack_parser_corpus/3650168db6fe115fb1e73eed4b76cd224d977d01 new file mode 100644 index 00000000000..99507d2e1e9 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3650168db6fe115fb1e73eed4b76cd224d977d01 @@ -0,0 +1 @@ +-binc)(-'bin !!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/38717bee901151b22a10beb12c6623ccc844d3c2 b/test/core/transport/chttp2/hpack_parser_corpus/38717bee901151b22a10beb12c6623ccc844d3c2 new file mode 100644 index 00000000000..164b22a5c29 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/38717bee901151b22a10beb12c6623ccc844d3c2 @@ -0,0 +1 @@ +;?.[(-bin! (!\ !G:[(!'[(!'c! c[ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3ab48621d9b8f075369099a8ec7517bd23fd6e70 b/test/core/transport/chttp2/hpack_parser_corpus/3ab48621d9b8f075369099a8ec7517bd23fd6e70 new file mode 100644 index 00000000000..b243e625408 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3ab48621d9b8f075369099a8ec7517bd23fd6e70 @@ -0,0 +1 @@ +-binc[)(-'bin A!!?!b{i-(n !\ !;?G!!:[((\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3be63c163805927e04fd7f84d96122c48240e601 b/test/core/transport/chttp2/hpack_parser_corpus/3be63c163805927e04fd7f84d96122c48240e601 new file mode 100644 index 00000000000..1e49a898fd5 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3be63c163805927e04fd7f84d96122c48240e601 @@ -0,0 +1 @@ +-bin! c)[''( \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3bf2e349747c0f539181e0d4084a5fe506811a9e b/test/core/transport/chttp2/hpack_parser_corpus/3bf2e349747c0f539181e0d4084a5fe506811a9e new file mode 100644 index 00000000000..f1e7a8e1dff --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3bf2e349747c0f539181e0d4084a5fe506811a9e @@ -0,0 +1 @@ +-bin?c[)(-'bin !!? \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3d2b25346a9671d83bd082d170a45eed739bae6b b/test/core/transport/chttp2/hpack_parser_corpus/3d2b25346a9671d83bd082d170a45eed739bae6b new file mode 100644 index 00000000000..98ff11fb49f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3d2b25346a9671d83bd082d170a45eed739bae6b @@ -0,0 +1 @@ +-binc[)(*;[('!(- bni'!!/ !( \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3e2004ff9f40e398e0f41138a25a8b66e3d843d9 b/test/core/transport/chttp2/hpack_parser_corpus/3e2004ff9f40e398e0f41138a25a8b66e3d843d9 new file mode 100644 index 0000000000000000000000000000000000000000..ddf6c7cb63f01839687021619d57c3755bb8cb11 GIT binary patch literal 38 qcmdN|BEbG(3BPVqW?r+FFvEg%93X*cjpQZr@>&e)(Lko6A}0X&0t?~* literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/4105669086d83a20f8d991088553ba08202478cd b/test/core/transport/chttp2/hpack_parser_corpus/4105669086d83a20f8d991088553ba08202478cd new file mode 100644 index 00000000000..c72af1a7ad7 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/4105669086d83a20f8d991088553ba08202478cd @@ -0,0 +1 @@ +-bin!c[)('-bl *!!?!{(-bin\ c!' ! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/4180619316eef7912d1cf52ffe85897242e1ae88 b/test/core/transport/chttp2/hpack_parser_corpus/4180619316eef7912d1cf52ffe85897242e1ae88 new file mode 100644 index 00000000000..2bfbdf50fdd --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/4180619316eef7912d1cf52ffe85897242e1ae88 @@ -0,0 +1 @@ +-binc[)(-'bin #!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/420291d7139d9246de747739fd98102434a742dd b/test/core/transport/chttp2/hpack_parser_corpus/420291d7139d9246de747739fd98102434a742dd new file mode 100644 index 0000000000000000000000000000000000000000..24f6a24c86f9e604740075b8b08301f348629b08 GIT binary patch literal 50 qcmdPWTCijt5HYX|Br9@8f6@4$p{N+cshI5kSCa!-5F%!^d_xEHInjl744VE-~OPep{V$QGZ_FM%npzM literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/438c3c9045c3cf7910aceec34f77b47a70ca4abd b/test/core/transport/chttp2/hpack_parser_corpus/438c3c9045c3cf7910aceec34f77b47a70ca4abd new file mode 100644 index 00000000000..c000da7d7d2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/438c3c9045c3cf7910aceec34f77b47a70ca4abd @@ -0,0 +1 @@ +[(-bin! (! !G:[(!'[(! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/43af96b4f65ed0ace7236427f2f8833c4835989e b/test/core/transport/chttp2/hpack_parser_corpus/43af96b4f65ed0ace7236427f2f8833c4835989e new file mode 100644 index 00000000000..9fd52afbf3f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/43af96b4f65ed0ace7236427f2f8833c4835989e @@ -0,0 +1 @@ +!*-bincc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/44c6119bb91a452d6128ce0ea0d62938800779ea b/test/core/transport/chttp2/hpack_parser_corpus/44c6119bb91a452d6128ce0ea0d62938800779ea new file mode 100644 index 00000000000..3894ad5659f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/44c6119bb91a452d6128ce0ea0d62938800779ea @@ -0,0 +1 @@ +;?0c!(K [N!\!G![(!! !GA)(!)!*GA)(; \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/46d595331689ae01d77aff387747a98ff3480096 b/test/core/transport/chttp2/hpack_parser_corpus/46d595331689ae01d77aff387747a98ff3480096 new file mode 100644 index 0000000000000000000000000000000000000000..acb762956ced86792ebd9bee1473d0e24f505942 GIT binary patch literal 36 scmdN|BEbG(3BPVqW?pl$JcD`khfIy6JY9RmCGxjFC~7FieBew50PF7!6aWAK literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/499376c5e291da2f9c25999abf4960fab5a92ec8 b/test/core/transport/chttp2/hpack_parser_corpus/499376c5e291da2f9c25999abf4960fab5a92ec8 new file mode 100644 index 0000000000000000000000000000000000000000..22cebb56f57ad2def822bcf8e1d9069219f2cbda GIT binary patch literal 39 scmdN|BEbG(3BPVqW?nOcmZI>2bsQj(XpQ70^72~h(a|3?7!(yb0RagN0{{R3 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/4a3fdb96bc8c80f1992f0f72f963f84856cbade8 b/test/core/transport/chttp2/hpack_parser_corpus/4a3fdb96bc8c80f1992f0f72f963f84856cbade8 new file mode 100644 index 0000000000000000000000000000000000000000..3bf6b6e6c19b2c9cc327623778b89ebdb08a61f5 GIT binary patch literal 37 tcmdN|BEbG(3BPVqW?pl$tUQBy^oLB1q&!_k`z7+XKPYM_#(dyR1_1I74Iuyk literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/4aae80e05793d7adb42a7e6e8a5283b677318777 b/test/core/transport/chttp2/hpack_parser_corpus/4aae80e05793d7adb42a7e6e8a5283b677318777 new file mode 100644 index 00000000000..fc8bdd19131 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/4aae80e05793d7adb42a7e6e8a5283b677318777 @@ -0,0 +1 @@ +(B:?c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/4ce8a43fb17a075627160812ad26c25210d8a82d b/test/core/transport/chttp2/hpack_parser_corpus/4ce8a43fb17a075627160812ad26c25210d8a82d new file mode 100644 index 00000000000..3a3c61a888f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/4ce8a43fb17a075627160812ad26c25210d8a82d @@ -0,0 +1 @@ +-binc)(-'*in !!?!!{(-bin !\H!;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5032a75a98cd14d4dab75c1c5e2cd981abb19dcf b/test/core/transport/chttp2/hpack_parser_corpus/5032a75a98cd14d4dab75c1c5e2cd981abb19dcf new file mode 100644 index 0000000000000000000000000000000000000000..e5a06a1121aa7aaf94893ea1dae99b885b6a697c GIT binary patch literal 36 scmdN|BEbG(3BPVqW?r*Kw7N!e<_CtPJY7ZmCGxjFC~7FiXmBP20O;imMF0Q* literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/51064b88a98658d48a0da7f1545c2d1293ad9538 b/test/core/transport/chttp2/hpack_parser_corpus/51064b88a98658d48a0da7f1545c2d1293ad9538 new file mode 100644 index 00000000000..1b08af84b6a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/51064b88a98658d48a0da7f1545c2d1293ad9538 @@ -0,0 +1 @@ +*-bin'(?;[('! ( \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/51f65f681cf3a1218d83ad58642c06deaea86210 b/test/core/transport/chttp2/hpack_parser_corpus/51f65f681cf3a1218d83ad58642c06deaea86210 new file mode 100644 index 00000000000..103692aec18 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/51f65f681cf3a1218d83ad58642c06deaea86210 @@ -0,0 +1 @@ +[(-bin-binc[)(-'bin?! #!{( bin! ( !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/521809903d36db80b1ccd707f354361f2bf05075 b/test/core/transport/chttp2/hpack_parser_corpus/521809903d36db80b1ccd707f354361f2bf05075 new file mode 100644 index 0000000000000000000000000000000000000000..06858ed86d5bb200695497f55c299535679b4599 GIT binary patch literal 25 fcmWe;00R9b@=KyM6cv}q-(JG082v%<>1{0lPRs}~ literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/52fe8f0e1fa270ea16f66c93f2ffab265ce059e8 b/test/core/transport/chttp2/hpack_parser_corpus/52fe8f0e1fa270ea16f66c93f2ffab265ce059e8 new file mode 100644 index 00000000000..fcec5d6fa52 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/52fe8f0e1fa270ea16f66c93f2ffab265ce059e8 @@ -0,0 +1 @@ +;?'c[(! [N!\ b3G!*(!! BGA)(!)!d*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/53de87ae94acdc8e58a369459c12a3240f1294fe b/test/core/transport/chttp2/hpack_parser_corpus/53de87ae94acdc8e58a369459c12a3240f1294fe new file mode 100644 index 00000000000..aaada4fb293 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/53de87ae94acdc8e58a369459c12a3240f1294fe @@ -0,0 +1 @@ +?*@:[c (;!!\ !~ G!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/54a2b3993c3483745f6314c870a038a8e58f97a7 b/test/core/transport/chttp2/hpack_parser_corpus/54a2b3993c3483745f6314c870a038a8e58f97a7 new file mode 100644 index 0000000000000000000000000000000000000000..ac9c813f0fbbf7a0baefd8bfefa8af39d1cc0ad7 GIT binary patch literal 38 ucmdN|BEbG(3BPVqW?pl$x;%q=wC0CQjifwXMf)Z4w?8Oye$Y^iNd^G?i49Z$ literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/55d60c2e5040a38be8ca41de63e137e3fef892a4 b/test/core/transport/chttp2/hpack_parser_corpus/55d60c2e5040a38be8ca41de63e137e3fef892a4 new file mode 100644 index 00000000000..c9472247d4c --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/55d60c2e5040a38be8ca41de63e137e3fef892a4 @@ -0,0 +1 @@ +-binc[(*)?@: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/588d225784891ac88e30ac6eb5651d63fac34083 b/test/core/transport/chttp2/hpack_parser_corpus/588d225784891ac88e30ac6eb5651d63fac34083 new file mode 100644 index 00000000000..48c1dfefe47 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/588d225784891ac88e30ac6eb5651d63fac34083 @@ -0,0 +1 @@ +-bin!c[)(-'bin !!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/58d51c21a20b6549567a0ab8fee29d162dd3fc5a b/test/core/transport/chttp2/hpack_parser_corpus/58d51c21a20b6549567a0ab8fee29d162dd3fc5a new file mode 100644 index 00000000000..e7e115f84b0 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/58d51c21a20b6549567a0ab8fee29d162dd3fc5a @@ -0,0 +1 @@ +-binc[)(;-''bin !!?!{(-bin !\ !;:?[((!;!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/58f1036d8ff855841ec25b3c33e85a8fec0d94b7 b/test/core/transport/chttp2/hpack_parser_corpus/58f1036d8ff855841ec25b3c33e85a8fec0d94b7 new file mode 100644 index 00000000000..c1c41667f45 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/58f1036d8ff855841ec25b3c33e85a8fec0d94b7 @@ -0,0 +1 @@ +-binc[)-'bin 1!?!;'*{(-bin !\ !;?G:[((!!L \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5b42793550699b2c015bed677cfcddc052f73513 b/test/core/transport/chttp2/hpack_parser_corpus/5b42793550699b2c015bed677cfcddc052f73513 new file mode 100644 index 00000000000..144e68b7e9e --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/5b42793550699b2c015bed677cfcddc052f73513 @@ -0,0 +1 @@ +p!)c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5baa13dc95da05e7ba02bbe9583ea24517a29a1a b/test/core/transport/chttp2/hpack_parser_corpus/5baa13dc95da05e7ba02bbe9583ea24517a29a1a new file mode 100644 index 00000000000..4f5a88776e8 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/5baa13dc95da05e7ba02bbe9583ea24517a29a1a @@ -0,0 +1 @@ +-bin[c'!)bi \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5c9fd9cc7100feaeead1e0e45201945a6e76fd85 b/test/core/transport/chttp2/hpack_parser_corpus/5c9fd9cc7100feaeead1e0e45201945a6e76fd85 new file mode 100644 index 0000000000000000000000000000000000000000..d38481ced82eda6390c353d54888b9122d76e305 GIT binary patch literal 38 ucmdN|uw)$v1G_*n1A`(1r)IRq2Mxs-PQ_$*2K^=SOP0w0wYt6JwiW=uH4E|p literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5ff49c9edc7361797a951585f3e180222c8dd95d b/test/core/transport/chttp2/hpack_parser_corpus/5ff49c9edc7361797a951585f3e180222c8dd95d new file mode 100644 index 00000000000..f0ce5a2af4b --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/5ff49c9edc7361797a951585f3e180222c8dd95d @@ -0,0 +1 @@ +?*@:[(c (;!!\ !c G!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/61fa69b6b51b0ed91914fe48779173f8d26a1d54 b/test/core/transport/chttp2/hpack_parser_corpus/61fa69b6b51b0ed91914fe48779173f8d26a1d54 new file mode 100644 index 00000000000..0759d5b7914 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/61fa69b6b51b0ed91914fe48779173f8d26a1d54 @@ -0,0 +1 @@ +-binc[)(-'bin ;!!?!{(-bin !\ !;?G[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/644deba51c79b6ebd470bd4367452941045d112a b/test/core/transport/chttp2/hpack_parser_corpus/644deba51c79b6ebd470bd4367452941045d112a new file mode 100644 index 0000000000000000000000000000000000000000..3357333bb704b04c154d548235cc275b5a7548df GIT binary patch literal 35 rcmdNAVE?d$UpFZ;uRU3wK|T6IW_wbeuA==C`P&~9H56k$a3li&+M5i* literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/64beae98e2276749b133e6368c9e0f19a79eba96 b/test/core/transport/chttp2/hpack_parser_corpus/64beae98e2276749b133e6368c9e0f19a79eba96 new file mode 100644 index 00000000000..9aa7b9d4047 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/64beae98e2276749b133e6368c9e0f19a79eba96 @@ -0,0 +1 @@ +-binc[)(- bni'!!/! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/66c537bf59cb3667c037b3517be3d31245c9da8a b/test/core/transport/chttp2/hpack_parser_corpus/66c537bf59cb3667c037b3517be3d31245c9da8a new file mode 100644 index 00000000000..07cf3ef26b0 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/66c537bf59cb3667c037b3517be3d31245c9da8a @@ -0,0 +1 @@ +-binc[)(-'bin)#!?!{(-bin !\!;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/66f576baeb0c9435a56eb7375dadc5b5d630ed87 b/test/core/transport/chttp2/hpack_parser_corpus/66f576baeb0c9435a56eb7375dadc5b5d630ed87 new file mode 100644 index 00000000000..c5a8cc695ef --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/66f576baeb0c9435a56eb7375dadc5b5d630ed87 @@ -0,0 +1 @@ +?*P:[c 8;!!\ !~( DG!mc:c' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/67b4cec5183659aeae0f5bc71b3adf0542a11828 b/test/core/transport/chttp2/hpack_parser_corpus/67b4cec5183659aeae0f5bc71b3adf0542a11828 new file mode 100644 index 0000000000000000000000000000000000000000..3ad7a92e82427d7e40a04201c6240341b7e2234c GIT binary patch literal 35 rcmdN|BEbG(3BPVqW?pl$e9{Moyl4$|T}AsP^0z-IYAD8h;7kSp;4BQA literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/6d580f28d785c0bf87ac351a31a89289449feadb b/test/core/transport/chttp2/hpack_parser_corpus/6d580f28d785c0bf87ac351a31a89289449feadb new file mode 100644 index 00000000000..56c98a43f4f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/6d580f28d785c0bf87ac351a31a89289449feadb @@ -0,0 +1 @@ +-binc[)-.'bi* !!(?!!: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/70ff6621a09e4f641538cb1b27e8b382b2f56a94 b/test/core/transport/chttp2/hpack_parser_corpus/70ff6621a09e4f641538cb1b27e8b382b2f56a94 new file mode 100644 index 00000000000..cc3c4dd2b3c --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/70ff6621a09e4f641538cb1b27e8b382b2f56a94 @@ -0,0 +1 @@ +!*-bincc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/74610e278a5b90aa12ce1beaf222c4306b02ed43 b/test/core/transport/chttp2/hpack_parser_corpus/74610e278a5b90aa12ce1beaf222c4306b02ed43 new file mode 100644 index 00000000000..e87f23e2be7 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/74610e278a5b90aa12ce1beaf222c4306b02ed43 @@ -0,0 +1 @@ +-binc[i(-'bin !!?! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/748ee9817eba56ec9938601a0e380c74bad4563f b/test/core/transport/chttp2/hpack_parser_corpus/748ee9817eba56ec9938601a0e380c74bad4563f new file mode 100644 index 00000000000..d0a7c6403b7 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/748ee9817eba56ec9938601a0e380c74bad4563f @@ -0,0 +1 @@ +-binc[)('-bin !!?!{(-bi\n! ! ;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/7727e3eeb2a48c46bf5a678c300ff8a38b8ffe3a b/test/core/transport/chttp2/hpack_parser_corpus/7727e3eeb2a48c46bf5a678c300ff8a38b8ffe3a new file mode 100644 index 00000000000..5b7c52d2ba4 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/7727e3eeb2a48c46bf5a678c300ff8a38b8ffe3a @@ -0,0 +1 @@ +?*P:[c 8;!!\ !~( DG!cmc:c' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/789abb571563a6795220046f76b7cf0ade90743c b/test/core/transport/chttp2/hpack_parser_corpus/789abb571563a6795220046f76b7cf0ade90743c new file mode 100644 index 00000000000..c901c4cc58a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/789abb571563a6795220046f76b7cf0ade90743c @@ -0,0 +1 @@ +-binc[)(-.'bin !!?!: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/78f5ff40e5554aa9c31b45f79a7ae9699f93e7fd b/test/core/transport/chttp2/hpack_parser_corpus/78f5ff40e5554aa9c31b45f79a7ae9699f93e7fd new file mode 100644 index 0000000000000000000000000000000000000000..74d43925d4259d8bd4756b9a66fe93d8d2329c0b GIT binary patch literal 47 zcmdN|BEbG(3BPVqW?pmh68R;!KPZ0SOqOR*kN%LUk(8&aXum}M_J?Febq&QBpacNE CXc9dD literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/7a42083be21dce7f96edef1f3b3b2fea0bcaeb3f b/test/core/transport/chttp2/hpack_parser_corpus/7a42083be21dce7f96edef1f3b3b2fea0bcaeb3f new file mode 100644 index 00000000000..53ba7aa1a77 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/7a42083be21dce7f96edef1f3b3b2fea0bcaeb3f @@ -0,0 +1 @@ +-binc[)(-'bin !?!;*{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/7b9682cd7a3984698f6eac034c59c0f91b4fb83d b/test/core/transport/chttp2/hpack_parser_corpus/7b9682cd7a3984698f6eac034c59c0f91b4fb83d new file mode 100644 index 0000000000000000000000000000000000000000..bf413beb627385e0af2be0941e8d929e672587ad GIT binary patch literal 29 lcmdN|BEbG(3BPVqW?pmh5_x$B_2>_o8c9oTfB3+e3;>}J3+Dg; literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/7d3b3d5f23d0ede9f7e5dbd1115db58c8a54a213 b/test/core/transport/chttp2/hpack_parser_corpus/7d3b3d5f23d0ede9f7e5dbd1115db58c8a54a213 new file mode 100644 index 00000000000..291a16d4542 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/7d3b3d5f23d0ede9f7e5dbd1115db58c8a54a213 @@ -0,0 +1 @@ +-binc[)-'bin '!!?!{;?0c!(-b(in \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8035c81c95dedfc27c3649064f98f49e3e72c21f b/test/core/transport/chttp2/hpack_parser_corpus/8035c81c95dedfc27c3649064f98f49e3e72c21f new file mode 100644 index 0000000000000000000000000000000000000000..bf77deb49f398de1c5d135b635ab57e21094cb57 GIT binary patch literal 37 tcmdN|BEbG(3BPVqW?pl$x;%q=^oLB1q&!_k`z8FhKPYM_#(dyR1_1J24I2Oe literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/80514b85933ea9bdd3462595f949c5af24409b87 b/test/core/transport/chttp2/hpack_parser_corpus/80514b85933ea9bdd3462595f949c5af24409b87 new file mode 100644 index 00000000000..003033bf1cc --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/80514b85933ea9bdd3462595f949c5af24409b87 @@ -0,0 +1 @@ +-binc[)'('(cin !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/806a3bd4e078d91adeacedfd3e47ef8ae229244a b/test/core/transport/chttp2/hpack_parser_corpus/806a3bd4e078d91adeacedfd3e47ef8ae229244a new file mode 100644 index 00000000000..2760e036632 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/806a3bd4e078d91adeacedfd3e47ef8ae229244a @@ -0,0 +1 @@ +-binc[):(-'bcin !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/80e516692955d5f224706f268e247858858e16d8 b/test/core/transport/chttp2/hpack_parser_corpus/80e516692955d5f224706f268e247858858e16d8 new file mode 100644 index 0000000000000000000000000000000000000000..6a2345295ebd19769853fffa17ba54ece625c96d GIT binary patch literal 56 zcmdN|BEbG(3BPVqW?r+_f+g!57=ZlfWb0(vCGv{Rw?BMXA`hY&)T4hWYHkVJ JOn&OF1ps0J6(axu literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/810a1372fa97380265f5529c5043ae96f007f5bb b/test/core/transport/chttp2/hpack_parser_corpus/810a1372fa97380265f5529c5043ae96f007f5bb new file mode 100644 index 0000000000000000000000000000000000000000..d5a3aeeb339bc27f6336e46a580f0ae6dfbbc9ba GIT binary patch literal 46 zcmdNAVE?d$UpFZ;uRU2_gF!v|LuPwYp045vd;29C^0$|KP}ES2`M{AZKl_6srxgHw Cxe&_$ literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8127597d3c146b2a89579e44daef9d03a0f941ec b/test/core/transport/chttp2/hpack_parser_corpus/8127597d3c146b2a89579e44daef9d03a0f941ec new file mode 100644 index 00000000000..0f7035b4a49 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8127597d3c146b2a89579e44daef9d03a0f941ec @@ -0,0 +1 @@ +*@:[(c (;!!\ !cG: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/82ed571f8922caa572d13b4cc9b5c5fabafaade9 b/test/core/transport/chttp2/hpack_parser_corpus/82ed571f8922caa572d13b4cc9b5c5fabafaade9 new file mode 100644 index 00000000000..42b9598aee3 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/82ed571f8922caa572d13b4cc9b5c5fabafaade9 @@ -0,0 +1 @@ +-binc[)(-'bin !!?!{(bn ! \!;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/84441efd7d8bdb0ce2fac28f218d3d5d4d77f1d4 b/test/core/transport/chttp2/hpack_parser_corpus/84441efd7d8bdb0ce2fac28f218d3d5d4d77f1d4 new file mode 100644 index 0000000000000000000000000000000000000000..20ab8498ed4ca939c9c5e56cee70819299aad329 GIT binary patch literal 40 ucmZ1?uh@M1!-pjxN=s|qf+ZXb>>2{`iWUIMNGy@4gjtV5CH%H literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8ec540c36da3814e93da765bf2ff0825b59c1bd0 b/test/core/transport/chttp2/hpack_parser_corpus/8ec540c36da3814e93da765bf2ff0825b59c1bd0 new file mode 100644 index 00000000000..828e12f028d --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8ec540c36da3814e93da765bf2ff0825b59c1bd0 @@ -0,0 +1 @@ +-binc[)(-'bin !!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8f3e48c49d0794909f6e8e61e5a4312edf484c33 b/test/core/transport/chttp2/hpack_parser_corpus/8f3e48c49d0794909f6e8e61e5a4312edf484c33 new file mode 100644 index 0000000000000000000000000000000000000000..3378b5504cbc71e951ca87a1c30d759f9641ed22 GIT binary patch literal 39 vcmdN|uw)$v1G_*n1A`(1r)IRq2Mt9HPQ_$*2K^=SOP0w0wYsgi(^b literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/98f2cb84ad89550cf56ee54e11f1448ae7287247 b/test/core/transport/chttp2/hpack_parser_corpus/98f2cb84ad89550cf56ee54e11f1448ae7287247 new file mode 100644 index 0000000000000000000000000000000000000000..252816d57ad483d2eae5082a1746778e3d66082e GIT binary patch literal 29 lcmdN|BEbG(3BPVqW?p0R5_x$B_2>_o8c9oTfB3+e3;>|)3*`U+ literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/993497422a59b7f9f0f6db8c867339b5c9e4c978 b/test/core/transport/chttp2/hpack_parser_corpus/993497422a59b7f9f0f6db8c867339b5c9e4c978 new file mode 100644 index 00000000000..d1028f392f5 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/993497422a59b7f9f0f6db8c867339b5c9e4c978 @@ -0,0 +1 @@ +-binc[)@?*: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/99e888b7372b29256dbefd476855ff73584cc00f b/test/core/transport/chttp2/hpack_parser_corpus/99e888b7372b29256dbefd476855ff73584cc00f new file mode 100644 index 0000000000000000000000000000000000000000..5173bb4ec197bec8d4d603ab99c1902a13e96b00 GIT binary patch literal 47 ocmdPWTCijt5OFZD3nVLYMt{-xprIJUshI4ZX9X2Q2>rDJ0CC+8)c^nh literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9b18087deb3cfafa1b964aa65d8ee980bc61404e b/test/core/transport/chttp2/hpack_parser_corpus/9b18087deb3cfafa1b964aa65d8ee980bc61404e new file mode 100644 index 0000000000000000000000000000000000000000..838d0d2f754c67d4838c7d8744f85e6c4c6c6243 GIT binary patch literal 23 ecmdN|BEbG(3BPVqX5Nzj%~}hVtm9w+iU0s^EeSvX literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9b3c745ea3e313909a228a07b49aae110b02ae4a b/test/core/transport/chttp2/hpack_parser_corpus/9b3c745ea3e313909a228a07b49aae110b02ae4a new file mode 100644 index 00000000000..b7855d78e52 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9b3c745ea3e313909a228a07b49aae110b02ae4a @@ -0,0 +1 @@ +p![c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9be1ce0ba77758928ff5e9c45139b1624cbe9c2d b/test/core/transport/chttp2/hpack_parser_corpus/9be1ce0ba77758928ff5e9c45139b1624cbe9c2d new file mode 100644 index 00000000000..f10b76b53c0 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9be1ce0ba77758928ff5e9c45139b1624cbe9c2d @@ -0,0 +1 @@ +-bin-[c'!)bi \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9c7f77981677499f0426a0ffb5cb79d5fe55dcb2 b/test/core/transport/chttp2/hpack_parser_corpus/9c7f77981677499f0426a0ffb5cb79d5fe55dcb2 new file mode 100644 index 00000000000..dec67b6181d --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9c7f77981677499f0426a0ffb5cb79d5fe55dcb2 @@ -0,0 +1 @@ +-binc[)(-'b)n #!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9ca59e6cadaa5be9af30dfe5620d1bcd70f442e5 b/test/core/transport/chttp2/hpack_parser_corpus/9ca59e6cadaa5be9af30dfe5620d1bcd70f442e5 new file mode 100644 index 00000000000..0855a4d8830 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9ca59e6cadaa5be9af30dfe5620d1bcd70f442e5 @@ -0,0 +1 @@ +-binc*[)[((-'b!cin !! !![! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a09db5715f0bc3879a0e18e4db5a6b5640b254a3 b/test/core/transport/chttp2/hpack_parser_corpus/a09db5715f0bc3879a0e18e4db5a6b5640b254a3 new file mode 100644 index 00000000000..7fff586ac97 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/a09db5715f0bc3879a0e18e4db5a6b5640b254a3 @@ -0,0 +1 @@ +;?0c!(K [N\ !G![(!! !GA)(!)!*GA)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a0c59a090818bca29d76ccf9843f7e2faf330ddf b/test/core/transport/chttp2/hpack_parser_corpus/a0c59a090818bca29d76ccf9843f7e2faf330ddf new file mode 100644 index 00000000000..d6a316be60f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/a0c59a090818bca29d76ccf9843f7e2faf330ddf @@ -0,0 +1 @@ +*-bin \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a3154b8ed26b3461f2b091c732da00b63ce8bed3 b/test/core/transport/chttp2/hpack_parser_corpus/a3154b8ed26b3461f2b091c732da00b63ce8bed3 new file mode 100644 index 00000000000..cba4e44f4d2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/a3154b8ed26b3461f2b091c732da00b63ce8bed3 @@ -0,0 +1 @@ +-bin-[c')bi \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a84a1ed1a24e753a27adfd3ba806f06fc44f899f b/test/core/transport/chttp2/hpack_parser_corpus/a84a1ed1a24e753a27adfd3ba806f06fc44f899f new file mode 100644 index 0000000000000000000000000000000000000000..ba1a5dbd345a999fea24a369d6885bab36f74450 GIT binary patch literal 39 tcmdN|BEbG(3BPVqW?pl$>=Jp!=Gz}WERhG%4C>KZAJ#2c@*z`$0{}Z|5R3o- literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/a8dc736ea964586b7dcbf2bc065ec4675d1daba3 b/test/core/transport/chttp2/hpack_parser_corpus/a8dc736ea964586b7dcbf2bc065ec4675d1daba3 new file mode 100644 index 00000000000..039af404376 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/a8dc736ea964586b7dcbf2bc065ec4675d1daba3 @@ -0,0 +1 @@ +-binc[)(-'bin !!?! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ab97c1f6033dc7d96f69b9e1461fd594c16f4ebf b/test/core/transport/chttp2/hpack_parser_corpus/ab97c1f6033dc7d96f69b9e1461fd594c16f4ebf new file mode 100644 index 0000000000000000000000000000000000000000..e359cb7c928f345c7279191d85e02080ed2c13a2 GIT binary patch literal 25 gcmZ3&00jC=k5hfIy6JY7ZmCGxjFC~7FieBg8j0O~>vNmKAKQZ=9i;H^q#qw4gWCWnTPpCbprpF+X($L!x)DYI literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e1d86c0094657386197d191855b5645ac1dd5936 b/test/core/transport/chttp2/hpack_parser_corpus/e1d86c0094657386197d191855b5645ac1dd5936 new file mode 100644 index 0000000000000000000000000000000000000000..eb157d300a56165cfa52dd9f1c3952e4cde558da GIT binary patch literal 48 ocmdPWTCijt5OFZD3nVLYwnl4w&`^xwR7`gNYXudH{(>Y10DmbDPyhe` literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e3a970ac8636d29da3ded328b876ed3550cb3209 b/test/core/transport/chttp2/hpack_parser_corpus/e3a970ac8636d29da3ded328b876ed3550cb3209 new file mode 100644 index 00000000000..c9898303c28 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e3a970ac8636d29da3ded328b876ed3550cb3209 @@ -0,0 +1 @@ +-bin-[c*()bin !!?!;{(-bin !\ !*;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e3cfdc862187b4ec28bd4fb2ced5094bb5b09909 b/test/core/transport/chttp2/hpack_parser_corpus/e3cfdc862187b4ec28bd4fb2ced5094bb5b09909 new file mode 100644 index 0000000000000000000000000000000000000000..9296f0ee3a154450ea76386e523a1460b5f795d3 GIT binary patch literal 26 icmdN|uw)$v1G~V+FVPx`oXP4RG!$bv6_efnMgahJk_gxU literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e52173f0bc3325629046e85e2dc41acc6ba7d1c3 b/test/core/transport/chttp2/hpack_parser_corpus/e52173f0bc3325629046e85e2dc41acc6ba7d1c3 new file mode 100644 index 00000000000..84f475391d0 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e52173f0bc3325629046e85e2dc41acc6ba7d1c3 @@ -0,0 +1 @@ +-binc([)(- \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e9733e973c33b38c2087b7f1deb36688b3b14259 b/test/core/transport/chttp2/hpack_parser_corpus/e9733e973c33b38c2087b7f1deb36688b3b14259 new file mode 100644 index 00000000000..b87a36fcfce --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e9733e973c33b38c2087b7f1deb36688b3b14259 @@ -0,0 +1 @@ +-binc*[)(*@:[(?;[('(-! 'b \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ea8134769855d574f6673bf0301eb2e24632c6eb b/test/core/transport/chttp2/hpack_parser_corpus/ea8134769855d574f6673bf0301eb2e24632c6eb new file mode 100644 index 00000000000..0a16a74e6d1 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ea8134769855d574f6673bf0301eb2e24632c6eb @@ -0,0 +1 @@ +[(-bin-binc[)(-'bin !!?!{(-bin! ( !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/eb489536e4e5589a93a17cd36669475b8f2a5e1b b/test/core/transport/chttp2/hpack_parser_corpus/eb489536e4e5589a93a17cd36669475b8f2a5e1b new file mode 100644 index 00000000000..ffa9431bc35 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/eb489536e4e5589a93a17cd36669475b8f2a5e1b @@ -0,0 +1 @@ +-bin#Z)(- b-bin?c[)(-ni''bin!! !/!?! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/edff5256a2d60d0e51caef25dc1d6f1643dad6d5 b/test/core/transport/chttp2/hpack_parser_corpus/edff5256a2d60d0e51caef25dc1d6f1643dad6d5 new file mode 100644 index 0000000000000000000000000000000000000000..5ef662da50b3576840248a2a9745b6369484606b GIT binary patch literal 38 scmdN|BEbG(3BPVqX5L|jEX4)uI6wl?8p%uK<+aqKqd#acC@OLS00)E&Z~y=R literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ef718258ca1870198e91a2fbc1eaa90b620673fb b/test/core/transport/chttp2/hpack_parser_corpus/ef718258ca1870198e91a2fbc1eaa90b620673fb new file mode 100644 index 00000000000..be01d46af5d --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ef718258ca1870198e91a2fbc1eaa90b620673fb @@ -0,0 +1 @@ +-binc[)(-'bin \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/efb46deb37a78f41dd760f6b7203b20956eb114e b/test/core/transport/chttp2/hpack_parser_corpus/efb46deb37a78f41dd760f6b7203b20956eb114e new file mode 100644 index 00000000000..58cc22fbab9 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/efb46deb37a78f41dd760f6b7203b20956eb114e @@ -0,0 +1 @@ +;?0c!(K N\ !G![(!! !GA)(:)!*GA)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f1e30464c24dc1d7cec7ec1dd2adec8512232b43 b/test/core/transport/chttp2/hpack_parser_corpus/f1e30464c24dc1d7cec7ec1dd2adec8512232b43 new file mode 100644 index 0000000000000000000000000000000000000000..a217e4f2d8421e9a380f12bd316b8640b2ad41f9 GIT binary patch literal 35 rcmZ3oM1cLn5`NvJ%)IU;y3xt%ikeGQ_?O(a{?N=Ikd(=uoU9H2^Y#qK literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f3f0d99ac2962f8fddb25c65fb4c8c6eb63518a9 b/test/core/transport/chttp2/hpack_parser_corpus/f3f0d99ac2962f8fddb25c65fb4c8c6eb63518a9 new file mode 100644 index 00000000000..9b0d16f3bf2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f3f0d99ac2962f8fddb25c65fb4c8c6eb63518a9 @@ -0,0 +1 @@ +-binc[)(?*@: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f4753e8881e4b3c71f2728149be7d04cc648f6a6 b/test/core/transport/chttp2/hpack_parser_corpus/f4753e8881e4b3c71f2728149be7d04cc648f6a6 new file mode 100644 index 00000000000..0c8d29083e4 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f4753e8881e4b3c71f2728149be7d04cc648f6a6 @@ -0,0 +1 @@ +?*@Zn:(c (;!(c! ;\ G!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f4d6ff635ae4fda497221da4bfa3e593df59a44e b/test/core/transport/chttp2/hpack_parser_corpus/f4d6ff635ae4fda497221da4bfa3e593df59a44e new file mode 100644 index 00000000000..a7c841c10de --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f4d6ff635ae4fda497221da4bfa3e593df59a44e @@ -0,0 +1 @@ +-b)nc[)(:*@1: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f8760761bd5ab7b47376bfbc5a44e16b2d5ca800 b/test/core/transport/chttp2/hpack_parser_corpus/f8760761bd5ab7b47376bfbc5a44e16b2d5ca800 new file mode 100644 index 00000000000..667c24677c7 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f8760761bd5ab7b47376bfbc5a44e16b2d5ca800 @@ -0,0 +1 @@ +-binc[''(-'bin !!?c! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/fd34ec90fe8f9218fd25c3eac151aec998cff6d8 b/test/core/transport/chttp2/hpack_parser_corpus/fd34ec90fe8f9218fd25c3eac151aec998cff6d8 new file mode 100644 index 0000000000000000000000000000000000000000..c5005c770027b6edb63ee48ec6945f754cc71933 GIT binary patch literal 36 scmdN|BEbG(3BPVqW?pl$JcD}lhfIw}dAf@BOXP2VP}ES2`M{YB0P=wiga7~l literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/fdf548cde981fab4fb17bd63a124b75eddc5c836 b/test/core/transport/chttp2/hpack_parser_corpus/fdf548cde981fab4fb17bd63a124b75eddc5c836 new file mode 100644 index 00000000000..fcae5ce55e1 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/fdf548cde981fab4fb17bd63a124b75eddc5c836 @@ -0,0 +1 @@ +-bin! c(?)['! c'( \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ff2097734bd7bb8451aece13c9336c4624735170 b/test/core/transport/chttp2/hpack_parser_corpus/ff2097734bd7bb8451aece13c9336c4624735170 new file mode 100644 index 0000000000000000000000000000000000000000..e8e30c889edc3865df739b0abfdaeaa6d4334cc4 GIT binary patch literal 52 zcmZ3oM1cLn5`NvJ%)IVojRi~AaWJq8e2LajHc>KzlIgR7Es!O HL%<3E?mrQF literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ff7d6ff060e63355701b2e655c802902338497de b/test/core/transport/chttp2/hpack_parser_corpus/ff7d6ff060e63355701b2e655c802902338497de new file mode 100644 index 00000000000..58337fbf9b8 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ff7d6ff060e63355701b2e655c802902338497de @@ -0,0 +1 @@ +-binc*[)(-'!bcin ;!! \ No newline at end of file From ec0d95ae380b1e630533e35d4ffbd380fd264af9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:18:43 -0700 Subject: [PATCH 46/74] clang-format --- test/core/http/parser_test.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/test/core/http/parser_test.c b/test/core/http/parser_test.c index e46b8ebb692..e673f8ebfc2 100644 --- a/test/core/http/parser_test.c +++ b/test/core/http/parser_test.c @@ -179,26 +179,31 @@ static void test_fails(grpc_slice_split_mode split_mode, char *response) { } static const uint8_t failed_test1[] = { -0x9e,0x48,0x54,0x54,0x50,0x2f,0x31,0x2e,0x30,0x4a,0x48,0x54,0x54,0x30,0x32,0x16,0xa,0x2f,0x48,0x20,0x31,0x2e,0x31,0x20,0x32,0x30,0x31,0x54,0x54,0xb9,0x32,0x31,0x2e,0x20,0x32,0x30,0x20, + 0x9e, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x4a, + 0x48, 0x54, 0x54, 0x30, 0x32, 0x16, 0xa, 0x2f, 0x48, 0x20, + 0x31, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x31, 0x54, 0x54, 0xb9, + 0x32, 0x31, 0x2e, 0x20, 0x32, 0x30, 0x20, }; typedef struct { const char *name; - const uint8_t * data; + const uint8_t *data; size_t length; } failed_test; -#define FAILED_TEST(name) {#name, name, sizeof(name)} +#define FAILED_TEST(name) \ + { #name, name, sizeof(name) } failed_test failed_tests[] = { - FAILED_TEST(failed_test1), + FAILED_TEST(failed_test1), }; static void test_doesnt_crash(failed_test t) { gpr_log(GPR_DEBUG, "Run previously failed test: %s", t.name); grpc_http_parser p; grpc_http_parser_init(&p); - gpr_slice slice = gpr_slice_from_copied_buffer((const char*)t.data,t.length); + gpr_slice slice = + gpr_slice_from_copied_buffer((const char *)t.data, t.length); grpc_http_parser_parse(&p, slice); gpr_slice_unref(slice); grpc_http_parser_destroy(&p); @@ -212,9 +217,9 @@ int main(int argc, char **argv) { grpc_test_init(argc, argv); -for (i=0; i Date: Thu, 24 Mar 2016 00:20:44 -0700 Subject: [PATCH 47/74] copyrights --- src/core/json/json_reader.c | 2 +- src/core/transport/chttp2/hpack_table.c | 2 +- src/proto/grpc/testing/metrics.proto | 2 +- test/core/json/json_test.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/json/json_reader.c b/src/core/json/json_reader.c index 9a97826287e..f7095a53e27 100644 --- a/src/core/json/json_reader.c +++ b/src/core/json/json_reader.c @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/core/transport/chttp2/hpack_table.c b/src/core/transport/chttp2/hpack_table.c index 54ac59e0568..a487d23ba0b 100644 --- a/src/core/transport/chttp2/hpack_table.c +++ b/src/core/transport/chttp2/hpack_table.c @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/src/proto/grpc/testing/metrics.proto b/src/proto/grpc/testing/metrics.proto index 0cc4b602396..df719afd99e 100644 --- a/src/proto/grpc/testing/metrics.proto +++ b/src/proto/grpc/testing/metrics.proto @@ -1,4 +1,4 @@ -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/test/core/json/json_test.c b/test/core/json/json_test.c index 035265a6be5..cbd96a75fe2 100644 --- a/test/core/json/json_test.c +++ b/test/core/json/json_test.c @@ -1,6 +1,6 @@ /* * - * Copyright 2015, Google Inc. + * Copyright 2015-2016, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without From 633cbf708f2d0f500e0a3569c7d1e9fa2629bc3b Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:24:57 -0700 Subject: [PATCH 48/74] Expand corpus --- .../17faf0ba8a491a835d35977a9007b90ab7d30d2a | Bin 0 -> 49 bytes .../1f80af104acf41b912bf4a48fb938267e3718719 | 1 + .../253ad01acea4b7038edc3f2a8c4a0c0f5c4dcd05 | 1 + .../26f0e88adbd8f8cdf778131a35b33ecf8711fa49 | 1 + .../2e5dd8fb9d2a31fad9d681eda697d085b647b57c | 1 + .../42b25a5413c536478a3e63da5adef4250babf2f4 | Bin 0 -> 27 bytes .../49027bbd3f3f3cafa315843c8fe8280f86985273 | Bin 0 -> 38 bytes .../4a3b7ce0cdf217963a0b692769e5d6f4befe73b8 | Bin 0 -> 39 bytes .../51752f12d59fadaaa0dc72e6370612b84ee1555b | 1 + .../5838b5a683229ebb6e6277e2810863e642b8afc2 | Bin 0 -> 16 bytes .../5b8ca72ba00231c38b19f582127e6a146eba4282 | 1 + .../5c6f6b6f7f3e7b435f060abb73c20d2b773a7f56 | 1 + .../6129954942e26c2a9ec071b6659675745613cf3c | Bin 0 -> 40 bytes .../68c94721eda2f62481bff9f1d183df70498d0c5b | 1 + .../68ee8169a65d58edb9fc1c752ea81dfec383203c | 1 + .../6b203d49bbba6ee74def0d35c2266e06ad3c45d9 | Bin 0 -> 59 bytes .../6f231dec759eb2105e09263d53e171de19a92c74 | Bin 0 -> 43 bytes .../71981b55f27a1eb6274eda247048fa2c597f5004 | 1 + .../804e1052842ce4d44b9c775ade2b18fcb8ce7bcf | 1 + .../8328e86178800f87a3bf6f80749984f45b0cd0e8 | 1 + .../862e3ccf601ee0f7fbd8b23e6811fd50485a118f | 1 + .../894e9b7832c52acb04bfa994ef53c7105d8db206 | 1 + .../8f1bec32f4b8e64062f5405a096543e61d771076 | Bin 0 -> 48 bytes .../919511c217a3427c22cad4a71aae31a6cd47b193 | Bin 0 -> 63 bytes .../94adea6a0d9a44bee6f5e88adcee57be9e9e3597 | Bin 0 -> 23 bytes .../94dcbe0d3352bd9b230096b8dce9c6d8d63f9d51 | 1 + .../95dad738f60e3e5eb0f1cdafd91ad461f4418e8f | Bin 0 -> 38 bytes .../960c0a21c9e5c1a61b93b34da3189b0de1c264df | Bin 0 -> 37 bytes .../9d139835d91474e8d8361d65698a31b8b38c4f7b | 1 + .../9f318b2c2ff9cf4615bd06ba13bdd086b4ad08c6 | 1 + .../9f8d90b1480989fc46ea2f1c66cf687638994587 | Bin 0 -> 47 bytes .../b523091ee4f17d20f51f9b5cf82293465cf61780 | 1 + .../c5fc2086d167c8c3a7d9ec778db69c5fa14a59fe | 1 + .../c6a98fdaf6de78e59e1a149a43f3e42222d650b7 | 1 + .../df0adbe2523508e9afb42a58d98c2657710d6033 | Bin 0 -> 48 bytes .../e05fcba1b22f658c8bd6f3c330b2b3c9faebf977 | 1 + .../e6589006e3bda4c57247ad66fcd73ac00ee2cbe2 | 1 + .../e6fab7572fb2a1c6e107b6f83cffd103a233d021 | Bin 0 -> 35 bytes .../e8809017a4cf6c1e80a93f661166ead961f26bb4 | Bin 0 -> 47 bytes .../ec9457ad41ed745ea9377ffdb16ad09f981daa7f | Bin 0 -> 48 bytes .../ee4d9c5d22512da42726f47213ff56404d1d81d1 | Bin 0 -> 22 bytes .../f27a617b936814476770a3b31a5afb80d0f3b423 | Bin 0 -> 27 bytes .../fe47fb18b064e26479c3c3140082bd01065e897a | 1 + 43 files changed, 23 insertions(+) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/17faf0ba8a491a835d35977a9007b90ab7d30d2a create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/1f80af104acf41b912bf4a48fb938267e3718719 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/253ad01acea4b7038edc3f2a8c4a0c0f5c4dcd05 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/26f0e88adbd8f8cdf778131a35b33ecf8711fa49 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/2e5dd8fb9d2a31fad9d681eda697d085b647b57c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/42b25a5413c536478a3e63da5adef4250babf2f4 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/49027bbd3f3f3cafa315843c8fe8280f86985273 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/4a3b7ce0cdf217963a0b692769e5d6f4befe73b8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/51752f12d59fadaaa0dc72e6370612b84ee1555b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5838b5a683229ebb6e6277e2810863e642b8afc2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5b8ca72ba00231c38b19f582127e6a146eba4282 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/5c6f6b6f7f3e7b435f060abb73c20d2b773a7f56 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/6129954942e26c2a9ec071b6659675745613cf3c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/68c94721eda2f62481bff9f1d183df70498d0c5b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/68ee8169a65d58edb9fc1c752ea81dfec383203c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/6b203d49bbba6ee74def0d35c2266e06ad3c45d9 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/6f231dec759eb2105e09263d53e171de19a92c74 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/71981b55f27a1eb6274eda247048fa2c597f5004 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/804e1052842ce4d44b9c775ade2b18fcb8ce7bcf create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8328e86178800f87a3bf6f80749984f45b0cd0e8 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/862e3ccf601ee0f7fbd8b23e6811fd50485a118f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/894e9b7832c52acb04bfa994ef53c7105d8db206 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8f1bec32f4b8e64062f5405a096543e61d771076 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/919511c217a3427c22cad4a71aae31a6cd47b193 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/94adea6a0d9a44bee6f5e88adcee57be9e9e3597 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/94dcbe0d3352bd9b230096b8dce9c6d8d63f9d51 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/95dad738f60e3e5eb0f1cdafd91ad461f4418e8f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/960c0a21c9e5c1a61b93b34da3189b0de1c264df create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9d139835d91474e8d8361d65698a31b8b38c4f7b create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9f318b2c2ff9cf4615bd06ba13bdd086b4ad08c6 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/9f8d90b1480989fc46ea2f1c66cf687638994587 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/b523091ee4f17d20f51f9b5cf82293465cf61780 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c5fc2086d167c8c3a7d9ec778db69c5fa14a59fe create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c6a98fdaf6de78e59e1a149a43f3e42222d650b7 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/df0adbe2523508e9afb42a58d98c2657710d6033 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e05fcba1b22f658c8bd6f3c330b2b3c9faebf977 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e6589006e3bda4c57247ad66fcd73ac00ee2cbe2 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e6fab7572fb2a1c6e107b6f83cffd103a233d021 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e8809017a4cf6c1e80a93f661166ead961f26bb4 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ec9457ad41ed745ea9377ffdb16ad09f981daa7f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/ee4d9c5d22512da42726f47213ff56404d1d81d1 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/f27a617b936814476770a3b31a5afb80d0f3b423 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/fe47fb18b064e26479c3c3140082bd01065e897a diff --git a/test/core/transport/chttp2/hpack_parser_corpus/17faf0ba8a491a835d35977a9007b90ab7d30d2a b/test/core/transport/chttp2/hpack_parser_corpus/17faf0ba8a491a835d35977a9007b90ab7d30d2a new file mode 100644 index 0000000000000000000000000000000000000000..483097294c9962179e298f5d1988821c7102dacf GIT binary patch literal 49 mcmdPWTCijt5OFZD3nVLYMt{-xprIJUshI5k*9u(>EC>LbVh`W| literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/1f80af104acf41b912bf4a48fb938267e3718719 b/test/core/transport/chttp2/hpack_parser_corpus/1f80af104acf41b912bf4a48fb938267e3718719 new file mode 100644 index 00000000000..ae0ab513745 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/1f80af104acf41b912bf4a48fb938267e3718719 @@ -0,0 +1 @@ +?*@:[c (!!\;!~ G!am \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/253ad01acea4b7038edc3f2a8c4a0c0f5c4dcd05 b/test/core/transport/chttp2/hpack_parser_corpus/253ad01acea4b7038edc3f2a8c4a0c0f5c4dcd05 new file mode 100644 index 00000000000..cf1dac30948 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/253ad01acea4b7038edc3f2a8c4a0c0f5c4dcd05 @@ -0,0 +1 @@ +-binc[)(-'bin !!?!{(-bin !\ !7;?G([(!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/26f0e88adbd8f8cdf778131a35b33ecf8711fa49 b/test/core/transport/chttp2/hpack_parser_corpus/26f0e88adbd8f8cdf778131a35b33ecf8711fa49 new file mode 100644 index 00000000000..598576b7e38 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/26f0e88adbd8f8cdf778131a35b33ecf8711fa49 @@ -0,0 +1 @@ +p!')c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/2e5dd8fb9d2a31fad9d681eda697d085b647b57c b/test/core/transport/chttp2/hpack_parser_corpus/2e5dd8fb9d2a31fad9d681eda697d085b647b57c new file mode 100644 index 00000000000..689d7f2c8f1 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/2e5dd8fb9d2a31fad9d681eda697d085b647b57c @@ -0,0 +1 @@ +!!c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/42b25a5413c536478a3e63da5adef4250babf2f4 b/test/core/transport/chttp2/hpack_parser_corpus/42b25a5413c536478a3e63da5adef4250babf2f4 new file mode 100644 index 0000000000000000000000000000000000000000..4616caf56b4f8d8b2abdf0693eea2d27e66b982b GIT binary patch literal 27 ecmWd@U;u$7`b+BMmqcqUQB;)w4+Q*67#ILz2MH4Z literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/49027bbd3f3f3cafa315843c8fe8280f86985273 b/test/core/transport/chttp2/hpack_parser_corpus/49027bbd3f3f3cafa315843c8fe8280f86985273 new file mode 100644 index 0000000000000000000000000000000000000000..5b390fd26aaab648a7a1310b48d5d2059df8e15b GIT binary patch literal 38 ucmZ3oM1cLn5`Nt!1xd}fwKDU%m*_?(t1C8r_^@QjIt~UohGa#~=q~_4U=P6n literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/4a3b7ce0cdf217963a0b692769e5d6f4befe73b8 b/test/core/transport/chttp2/hpack_parser_corpus/4a3b7ce0cdf217963a0b692769e5d6f4befe73b8 new file mode 100644 index 0000000000000000000000000000000000000000..6b93c8280ebf94ce3ccf35ac2fad99c88ebf2b35 GIT binary patch literal 39 ucmZ1?uh@M1!-pk6O6$YA1xq*>*af~QYD9A;fB2xG7{jTkmAqidIt~C>A`kBX literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/51752f12d59fadaaa0dc72e6370612b84ee1555b b/test/core/transport/chttp2/hpack_parser_corpus/51752f12d59fadaaa0dc72e6370612b84ee1555b new file mode 100644 index 00000000000..ebcc00934be --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/51752f12d59fadaaa0dc72e6370612b84ee1555b @@ -0,0 +1 @@ +*@:[(c (;!!\'!cG: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5838b5a683229ebb6e6277e2810863e642b8afc2 b/test/core/transport/chttp2/hpack_parser_corpus/5838b5a683229ebb6e6277e2810863e642b8afc2 new file mode 100644 index 0000000000000000000000000000000000000000..1bfc596dbe505e90a33ab375baac85b766a6b572 GIT binary patch literal 16 YcmZ2d(0u#Dhb8ig&2kKSOvZ)YD9A;fB2xG7{jTkmAqidIt~DKQ4q)g literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/68c94721eda2f62481bff9f1d183df70498d0c5b b/test/core/transport/chttp2/hpack_parser_corpus/68c94721eda2f62481bff9f1d183df70498d0c5b new file mode 100644 index 00000000000..cfe8f60dff2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/68c94721eda2f62481bff9f1d183df70498d0c5b @@ -0,0 +1 @@ +-b!n-[c'!)bi \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/68ee8169a65d58edb9fc1c752ea81dfec383203c b/test/core/transport/chttp2/hpack_parser_corpus/68ee8169a65d58edb9fc1c752ea81dfec383203c new file mode 100644 index 00000000000..2fb6e2887ca --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/68ee8169a65d58edb9fc1c752ea81dfec383203c @@ -0,0 +1 @@ +-bin()[c-'bin !ۤ! ?{(-bin !\ !;?G:[((#!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/6b203d49bbba6ee74def0d35c2266e06ad3c45d9 b/test/core/transport/chttp2/hpack_parser_corpus/6b203d49bbba6ee74def0d35c2266e06ad3c45d9 new file mode 100644 index 0000000000000000000000000000000000000000..bb540ad81133a4667c68c5c6a1b1c3e1bc9c0668 GIT binary patch literal 59 zcmdN|uw)$v1G_*n1A`(bL-ZGGdxK;}4fYS-oFAh76k{Y6pSmkXYbYvm0vUfDH8m79 O-zsW7b#K`BR|5e1SrZWe literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/6f231dec759eb2105e09263d53e171de19a92c74 b/test/core/transport/chttp2/hpack_parser_corpus/6f231dec759eb2105e09263d53e171de19a92c74 new file mode 100644 index 0000000000000000000000000000000000000000..9f2955b0cb5452a25a5020358c5084859fa6cfe9 GIT binary patch literal 43 ycmb1FY`*>B!xDKQrS)Omf+g|{91QFNUlcW>Ig>wp&`_-5RMc9qPHssu0|x+;w-AE> literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/71981b55f27a1eb6274eda247048fa2c597f5004 b/test/core/transport/chttp2/hpack_parser_corpus/71981b55f27a1eb6274eda247048fa2c597f5004 new file mode 100644 index 00000000000..b57b2aabd22 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/71981b55f27a1eb6274eda247048fa2c597f5004 @@ -0,0 +1 @@ +;?'c[(! [N!\ !G!*(! !GA)(!!!(*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/804e1052842ce4d44b9c775ade2b18fcb8ce7bcf b/test/core/transport/chttp2/hpack_parser_corpus/804e1052842ce4d44b9c775ade2b18fcb8ce7bcf new file mode 100644 index 00000000000..cda608f32f1 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/804e1052842ce4d44b9c775ade2b18fcb8ce7bcf @@ -0,0 +1 @@ +-bin-[c'!)bi \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8328e86178800f87a3bf6f80749984f45b0cd0e8 b/test/core/transport/chttp2/hpack_parser_corpus/8328e86178800f87a3bf6f80749984f45b0cd0e8 new file mode 100644 index 00000000000..8fe52778d20 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8328e86178800f87a3bf6f80749984f45b0cd0e8 @@ -0,0 +1 @@ +(?*!heme'('!c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/862e3ccf601ee0f7fbd8b23e6811fd50485a118f b/test/core/transport/chttp2/hpack_parser_corpus/862e3ccf601ee0f7fbd8b23e6811fd50485a118f new file mode 100644 index 00000000000..bae722a39ae --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/862e3ccf601ee0f7fbd8b23e6811fd50485a118f @@ -0,0 +1 @@ +-binc[)(-'bin !!?O!{(-b \ni! !;?G[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/894e9b7832c52acb04bfa994ef53c7105d8db206 b/test/core/transport/chttp2/hpack_parser_corpus/894e9b7832c52acb04bfa994ef53c7105d8db206 new file mode 100644 index 00000000000..218bfa32796 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/894e9b7832c52acb04bfa994ef53c7105d8db206 @@ -0,0 +1 @@ +?*@:[c (!!\;!~ G!am' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8f1bec32f4b8e64062f5405a096543e61d771076 b/test/core/transport/chttp2/hpack_parser_corpus/8f1bec32f4b8e64062f5405a096543e61d771076 new file mode 100644 index 0000000000000000000000000000000000000000..24e9fc4ab7b3c396a571fbb5ba127c84cec20ce5 GIT binary patch literal 48 wcmdPWT4J?s!IE_x4D15QiW)H=IHR?`C~_($yZ^O;lP(8ZjR@qqV*$aw;af|FwdMaYld9_@JQ}0}%rNZ)Xo7 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/b523091ee4f17d20f51f9b5cf82293465cf61780 b/test/core/transport/chttp2/hpack_parser_corpus/b523091ee4f17d20f51f9b5cf82293465cf61780 new file mode 100644 index 00000000000..6d66d372aa2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/b523091ee4f17d20f51f9b5cf82293465cf61780 @@ -0,0 +1 @@ +?*@:[c (;!!\ #~ r!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c5fc2086d167c8c3a7d9ec778db69c5fa14a59fe b/test/core/transport/chttp2/hpack_parser_corpus/c5fc2086d167c8c3a7d9ec778db69c5fa14a59fe new file mode 100644 index 00000000000..3e28333e9fa --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c5fc2086d167c8c3a7d9ec778db69c5fa14a59fe @@ -0,0 +1 @@ +?*@:_c (!!\;!~ !G!;m:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c6a98fdaf6de78e59e1a149a43f3e42222d650b7 b/test/core/transport/chttp2/hpack_parser_corpus/c6a98fdaf6de78e59e1a149a43f3e42222d650b7 new file mode 100644 index 00000000000..efcad331b1b --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c6a98fdaf6de78e59e1a149a43f3e42222d650b7 @@ -0,0 +1 @@ +?*@:[c (;!\! !~ -binG!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/df0adbe2523508e9afb42a58d98c2657710d6033 b/test/core/transport/chttp2/hpack_parser_corpus/df0adbe2523508e9afb42a58d98c2657710d6033 new file mode 100644 index 0000000000000000000000000000000000000000..10b7a9f21d4b5cc8c6925b21855115ecb194d863 GIT binary patch literal 48 tcmdPWTCijt5OFZD3nXhOe)z(v5v>@*shI5k*9t7A$Qk`bSL55E8a literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e05fcba1b22f658c8bd6f3c330b2b3c9faebf977 b/test/core/transport/chttp2/hpack_parser_corpus/e05fcba1b22f658c8bd6f3c330b2b3c9faebf977 new file mode 100644 index 00000000000..6e3118913fe --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e05fcba1b22f658c8bd6f3c330b2b3c9faebf977 @@ -0,0 +1 @@ +[(-`in-inc[)(:'bin !!)?!{(:-bin! ( !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e6589006e3bda4c57247ad66fcd73ac00ee2cbe2 b/test/core/transport/chttp2/hpack_parser_corpus/e6589006e3bda4c57247ad66fcd73ac00ee2cbe2 new file mode 100644 index 00000000000..274e09dd1cf --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e6589006e3bda4c57247ad66fcd73ac00ee2cbe2 @@ -0,0 +1 @@ +;'c[(! [N!\!G!*(! !GA)(!)!*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e6fab7572fb2a1c6e107b6f83cffd103a233d021 b/test/core/transport/chttp2/hpack_parser_corpus/e6fab7572fb2a1c6e107b6f83cffd103a233d021 new file mode 100644 index 0000000000000000000000000000000000000000..720a576a90d00ad8c600f7651752c071082a611b GIT binary patch literal 35 rcmdN|BEbG(3BPVqW?pkLgS>k5hs>lrT}AsP^0z-IYAD8h;B*E6;L8lW literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e8809017a4cf6c1e80a93f661166ead961f26bb4 b/test/core/transport/chttp2/hpack_parser_corpus/e8809017a4cf6c1e80a93f661166ead961f26bb4 new file mode 100644 index 0000000000000000000000000000000000000000..fce39c619808af8e05d434d9f25c2c2d3056cc9c GIT binary patch literal 47 pcmdPWTCijt5OFZD3nVK>f6@4$p%}xdnC$-7N{)dUD8z{(1^|db56A!j literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ec9457ad41ed745ea9377ffdb16ad09f981daa7f b/test/core/transport/chttp2/hpack_parser_corpus/ec9457ad41ed745ea9377ffdb16ad09f981daa7f new file mode 100644 index 0000000000000000000000000000000000000000..9b15875d694f6281d27d80c6abc22b043593b6c9 GIT binary patch literal 48 ncmdPWTCijt5OFZD3nVLYMt{-xprIPWshI5k*9uuo5h?}%jZY85 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ee4d9c5d22512da42726f47213ff56404d1d81d1 b/test/core/transport/chttp2/hpack_parser_corpus/ee4d9c5d22512da42726f47213ff56404d1d81d1 new file mode 100644 index 0000000000000000000000000000000000000000..cd45daf8aaec6eb662d28e9f6e973796d73cb26f GIT binary patch literal 22 dcmdN|vW|m6jv-l*Gy2O%4aFEv#bo!tRsc)#2Ot0d literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f27a617b936814476770a3b31a5afb80d0f3b423 b/test/core/transport/chttp2/hpack_parser_corpus/f27a617b936814476770a3b31a5afb80d0f3b423 new file mode 100644 index 0000000000000000000000000000000000000000..ee6ac4e30fe8812c32fae6518c15937cd7181d34 GIT binary patch literal 27 dcmWe;0D~p^OX}p8L~ATjRFwY@1pG@F7yw{r2?GEC literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/fe47fb18b064e26479c3c3140082bd01065e897a b/test/core/transport/chttp2/hpack_parser_corpus/fe47fb18b064e26479c3c3140082bd01065e897a new file mode 100644 index 00000000000..4ed844aca18 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/fe47fb18b064e26479c3c3140082bd01065e897a @@ -0,0 +1 @@ +(??;[(('? \ No newline at end of file From f04920bb5724c0588b8383081850dd9cdbf7faf0 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:27:32 -0700 Subject: [PATCH 49/74] Update symbolizer version --- tools/jenkins/docker_run_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/jenkins/docker_run_tests.sh b/tools/jenkins/docker_run_tests.sh index 8d6c42cd9bf..49f185aba35 100755 --- a/tools/jenkins/docker_run_tests.sh +++ b/tools/jenkins/docker_run_tests.sh @@ -34,7 +34,7 @@ set -e export CONFIG=$config -export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5 +export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8 # Ensure that programs depending on current-user-ownership of cache directories # are satisfied (it's being mounted from outside the image). From 1c8fc73e3b8af3092fa858fe9d9f7e59d14fe322 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:30:24 -0700 Subject: [PATCH 50/74] Update symbolizer version --- tools/jenkins/docker_run_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/jenkins/docker_run_tests.sh b/tools/jenkins/docker_run_tests.sh index 49f185aba35..90a2bd8e362 100755 --- a/tools/jenkins/docker_run_tests.sh +++ b/tools/jenkins/docker_run_tests.sh @@ -34,7 +34,7 @@ set -e export CONFIG=$config -export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8 +export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer # Ensure that programs depending on current-user-ownership of cache directories # are satisfied (it's being mounted from outside the image). From 1266e34d51b45aab0566f65d795e06a3b826e0b8 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:38:13 -0700 Subject: [PATCH 51/74] Force seed for metadata --- test/core/transport/chttp2/hpack_parser_fuzzer_test.c | 1 + 1 file changed, 1 insertion(+) diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c index 5ebcd320f49..9e6d56fc9a2 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c @@ -42,6 +42,7 @@ static void onhdr(void *ud, grpc_mdelem *md) { GRPC_MDELEM_UNREF(md); } int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + grpc_test_only_set_metadata_hash_seed(0); grpc_init(); grpc_chttp2_hpack_parser parser; grpc_chttp2_hpack_parser_init(&parser); From c63a09eb6ceb547c73b674f48a5833412cd5f08f Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:42:24 -0700 Subject: [PATCH 52/74] Expand corpus --- .../0255050a9ccb25f46d6c1bf6a5a8a4c0c7635599 | Bin 0 -> 27 bytes .../1fcc4afd6f48e83d61ea74970df3ca9dcd8ec291 | Bin 0 -> 48 bytes .../48900b4a5557530922ce45c15ad0d3b0a337520d | Bin 0 -> 24 bytes .../86080f33e4eae21b37863c253ce61eaa13021a97 | Bin 0 -> 49 bytes .../8dd1983889b6632228d4897c365a1e6124d101e1 | Bin 0 -> 37 bytes .../b855c161121bfa29c6fb22d3c0236fae4af6984e | 1 + .../c2eae71daad0d3561ab4d09b8b85372b8d790bc1 | 1 + .../c37fda8d02e99132a1de99f959596c784ab8a53c | Bin 0 -> 48 bytes .../cfbcc3e8cd65aa8b654688145ade34b8789468a6 | 1 + .../d000502f32ca5620d7745f39ff6be3b547e26a6d | Bin 0 -> 27 bytes .../d9748abd540810c2449c3dd39a0ebb62754e520f | Bin 0 -> 50 bytes .../e790f5d312957dbfd20abdefe4b1735779ff9689 | Bin 0 -> 36 bytes .../fc3dd4292d6884a770199596f5e9cbc1e869e5fb | Bin 0 -> 48 bytes 13 files changed, 3 insertions(+) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/0255050a9ccb25f46d6c1bf6a5a8a4c0c7635599 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/1fcc4afd6f48e83d61ea74970df3ca9dcd8ec291 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/48900b4a5557530922ce45c15ad0d3b0a337520d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/86080f33e4eae21b37863c253ce61eaa13021a97 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/8dd1983889b6632228d4897c365a1e6124d101e1 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/b855c161121bfa29c6fb22d3c0236fae4af6984e create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c2eae71daad0d3561ab4d09b8b85372b8d790bc1 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/c37fda8d02e99132a1de99f959596c784ab8a53c create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/cfbcc3e8cd65aa8b654688145ade34b8789468a6 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d000502f32ca5620d7745f39ff6be3b547e26a6d create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/d9748abd540810c2449c3dd39a0ebb62754e520f create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/e790f5d312957dbfd20abdefe4b1735779ff9689 create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/fc3dd4292d6884a770199596f5e9cbc1e869e5fb diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0255050a9ccb25f46d6c1bf6a5a8a4c0c7635599 b/test/core/transport/chttp2/hpack_parser_corpus/0255050a9ccb25f46d6c1bf6a5a8a4c0c7635599 new file mode 100644 index 0000000000000000000000000000000000000000..e28a5867dbef5a76ef646ddc416fd743f2dbea4b GIT binary patch literal 27 bcmWd@V1NPnCDEEo6d8fs|Nr@yFfafBESUu2 literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/1fcc4afd6f48e83d61ea74970df3ca9dcd8ec291 b/test/core/transport/chttp2/hpack_parser_corpus/1fcc4afd6f48e83d61ea74970df3ca9dcd8ec291 new file mode 100644 index 0000000000000000000000000000000000000000..68b2d0efc75ae198d00032d1073ece96ee959229 GIT binary patch literal 48 rcmdPWTCijt5OFZD3nVLYMt{-xprII(#HpD4*9ut-C>NvX{?`fskarK- literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/48900b4a5557530922ce45c15ad0d3b0a337520d b/test/core/transport/chttp2/hpack_parser_corpus/48900b4a5557530922ce45c15ad0d3b0a337520d new file mode 100644 index 0000000000000000000000000000000000000000..5d9d03511519070649884165ed5c39d740b614ef GIT binary patch literal 24 fcmdN|uw)$v1G_-<7Y#+uNs$6axT_;Sa+A literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/cfbcc3e8cd65aa8b654688145ade34b8789468a6 b/test/core/transport/chttp2/hpack_parser_corpus/cfbcc3e8cd65aa8b654688145ade34b8789468a6 new file mode 100644 index 00000000000..4d7ff3e26a6 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/cfbcc3e8cd65aa8b654688145ade34b8789468a6 @@ -0,0 +1 @@ +'?0c!(K [N!\!G![(!! !G)A(!)!*GA)(;; \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d000502f32ca5620d7745f39ff6be3b547e26a6d b/test/core/transport/chttp2/hpack_parser_corpus/d000502f32ca5620d7745f39ff6be3b547e26a6d new file mode 100644 index 0000000000000000000000000000000000000000..a422dc476e57b04b361881aef86247ebeffe96a7 GIT binary patch literal 27 dcmWe<0D~p^OX}p8L~ATjRFwY@1pG@F7yw|?2?qcG literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d9748abd540810c2449c3dd39a0ebb62754e520f b/test/core/transport/chttp2/hpack_parser_corpus/d9748abd540810c2449c3dd39a0ebb62754e520f new file mode 100644 index 0000000000000000000000000000000000000000..e55083f276a45656baed647b05bb58e7f0d8b69c GIT binary patch literal 50 qcmdPWTCijt5OFZD3nVLYMt{-xprIPWshI5kSHlWfP|*q^Y6SqP*$^cF literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e790f5d312957dbfd20abdefe4b1735779ff9689 b/test/core/transport/chttp2/hpack_parser_corpus/e790f5d312957dbfd20abdefe4b1735779ff9689 new file mode 100644 index 0000000000000000000000000000000000000000..b818778f8b18b47071a9ddd6aaf89e2babaf2add GIT binary patch literal 36 kcmWe;G-7}OtGXpi^yQaCYb;Szl>ZL|{7d-imoP8@0F1>7p#T5? literal 0 HcmV?d00001 diff --git a/test/core/transport/chttp2/hpack_parser_corpus/fc3dd4292d6884a770199596f5e9cbc1e869e5fb b/test/core/transport/chttp2/hpack_parser_corpus/fc3dd4292d6884a770199596f5e9cbc1e869e5fb new file mode 100644 index 0000000000000000000000000000000000000000..99d90a032a08f4c5017fb0ded9866dd66903356d GIT binary patch literal 48 scmdPWTCijt5OFZD3nVLYMt|A(K{bX`T`}4HuN7QO literal 0 HcmV?d00001 From 3d6644aefd73f5030ad46154917c4a2732544e82 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 09:46:15 -0700 Subject: [PATCH 53/74] improve C# qps worker --- .../Grpc.IntegrationTesting/ClientRunners.cs | 37 +++++++++++++++++-- .../Grpc.IntegrationTesting/ServerRunners.cs | 21 ++++++++++- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs index c4016012cbb..3223d0d0800 100644 --- a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs +++ b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs @@ -41,6 +41,7 @@ using System.Threading; using System.Threading.Tasks; using Google.Protobuf; using Grpc.Core; +using Grpc.Core.Logging; using Grpc.Core.Utils; using NUnit.Framework; using Grpc.Testing; @@ -50,18 +51,48 @@ namespace Grpc.IntegrationTesting /// /// Helper methods to start client runners for performance testing. /// - public static class ClientRunners + public class ClientRunners { + static readonly ILogger Logger = GrpcEnvironment.Logger.ForType(); + /// /// Creates a started client runner. /// public static IClientRunner CreateStarted(ClientConfig config) { + Logger.Debug("ClientConfig: {0}", config); string target = config.ServerTargets.Single(); - GrpcPreconditions.CheckArgument(config.LoadParams.LoadCase == LoadParams.LoadOneofCase.ClosedLoop); + GrpcPreconditions.CheckArgument(config.LoadParams.LoadCase == LoadParams.LoadOneofCase.ClosedLoop, + "Only closed loop scenario supported for C#"); + GrpcPreconditions.CheckArgument(config.ClientChannels == 1, "ClientConfig.ClientChannels needs to be 1"); + + if (config.OutstandingRpcsPerChannel != 0) + { + Logger.Warning("ClientConfig.OutstandingRpcsPerChannel is not supported for C#. Ignoring the value"); + } + if (config.AsyncClientThreads != 0) + { + Logger.Warning("ClientConfig.AsyncClientThreads is not supported for C#. Ignoring the value"); + } + if (config.CoreLimit != 0) + { + Logger.Warning("ClientConfig.CoreLimit is not supported for C#. Ignoring the value"); + } + if (config.CoreList.Count > 0) + { + Logger.Warning("ClientConfig.CoreList is not supported for C#. Ignoring the value"); + } var credentials = config.SecurityParams != null ? TestCredentials.CreateSslCredentials() : ChannelCredentials.Insecure; - var channel = new Channel(target, credentials); + List channelOptions = null; + if (config.SecurityParams != null && config.SecurityParams.ServerHostOverride != "") + { + channelOptions = new List + { + new ChannelOption(ChannelOptions.SslTargetNameOverride, config.SecurityParams.ServerHostOverride) + }; + } + var channel = new Channel(target, credentials, channelOptions); switch (config.RpcType) { diff --git a/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs b/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs index 4a73645e6ca..9f210081e78 100644 --- a/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs +++ b/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs @@ -41,6 +41,7 @@ using System.Threading; using System.Threading.Tasks; using Google.Protobuf; using Grpc.Core; +using Grpc.Core.Logging; using Grpc.Core.Utils; using NUnit.Framework; using Grpc.Testing; @@ -50,16 +51,32 @@ namespace Grpc.IntegrationTesting /// /// Helper methods to start server runners for performance testing. /// - public static class ServerRunners + public class ServerRunners { + static readonly ILogger Logger = GrpcEnvironment.Logger.ForType(); + /// /// Creates a started server runner. /// public static IServerRunner CreateStarted(ServerConfig config) { - GrpcPreconditions.CheckArgument(config.ServerType == ServerType.ASYNC_SERVER); + Logger.Debug("ServerConfig: {0}", config); + GrpcPreconditions.CheckArgument(config.ServerType == ServerType.ASYNC_SERVER, "Only ASYNC_SERVER supported for C# QpsWorker"); var credentials = config.SecurityParams != null ? TestCredentials.CreateSslServerCredentials() : ServerCredentials.Insecure; + if (config.AsyncServerThreads != 0) + { + Logger.Warning("ServerConfig.AsyncServerThreads is not supported for C#. Ignoring the value"); + } + if (config.CoreLimit != 0) + { + Logger.Warning("ServerConfig.CoreLimit is not supported for C#. Ignoring the value"); + } + if (config.CoreList.Count > 0) + { + Logger.Warning("ServerConfig.CoreList is not supported for C#. Ignoring the value"); + } + // TODO: qps_driver needs to setup payload properly... int responseSize = config.PayloadConfig != null ? config.PayloadConfig.SimpleParams.RespSize : 0; var server = new Server From c848502f552563cd12b065238ae860b120f7c72e Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 12:27:18 -0700 Subject: [PATCH 54/74] honor request.ReponseSize for benchmark service --- .../Grpc.IntegrationTesting/BenchmarkServiceImpl.cs | 9 +++------ src/csharp/Grpc.IntegrationTesting/ClientRunners.cs | 12 +++++++----- src/csharp/Grpc.IntegrationTesting/ServerRunners.cs | 6 +++--- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs b/src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs index 47a15224f16..7e7bc713a03 100644 --- a/src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs +++ b/src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs @@ -46,16 +46,13 @@ namespace Grpc.Testing /// public class BenchmarkServiceImpl : BenchmarkService.IBenchmarkService { - private readonly int responseSize; - - public BenchmarkServiceImpl(int responseSize) + public BenchmarkServiceImpl() { - this.responseSize = responseSize; } public Task UnaryCall(SimpleRequest request, ServerCallContext context) { - var response = new SimpleResponse { Payload = CreateZerosPayload(responseSize) }; + var response = new SimpleResponse { Payload = CreateZerosPayload(request.ResponseSize) }; return Task.FromResult(response); } @@ -63,7 +60,7 @@ namespace Grpc.Testing { await requestStream.ForEachAsync(async request => { - var response = new SimpleResponse { Payload = CreateZerosPayload(responseSize) }; + var response = new SimpleResponse { Payload = CreateZerosPayload(request.ResponseSize) }; await responseStream.WriteAsync(response); }); } diff --git a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs index 3223d0d0800..0b6a8ee6267 100644 --- a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs +++ b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs @@ -64,6 +64,8 @@ namespace Grpc.IntegrationTesting string target = config.ServerTargets.Single(); GrpcPreconditions.CheckArgument(config.LoadParams.LoadCase == LoadParams.LoadOneofCase.ClosedLoop, "Only closed loop scenario supported for C#"); + GrpcPreconditions.CheckArgument(config.ClientType == ClientType.SYNC_CLIENT, + "Only sync client support for C#"); GrpcPreconditions.CheckArgument(config.ClientChannels == 1, "ClientConfig.ClientChannels needs to be 1"); if (config.OutstandingRpcsPerChannel != 0) @@ -98,7 +100,7 @@ namespace Grpc.IntegrationTesting { case RpcType.UNARY: return new SyncUnaryClientRunner(channel, - config.PayloadConfig.SimpleParams.ReqSize, + config.PayloadConfig.SimpleParams, config.HistogramParams); case RpcType.STREAMING: @@ -116,7 +118,7 @@ namespace Grpc.IntegrationTesting const double SecondsToNanos = 1e9; readonly Channel channel; - readonly int payloadSize; + readonly SimpleProtoParams payloadParams; readonly Histogram histogram; readonly BenchmarkService.IBenchmarkServiceClient client; @@ -124,10 +126,9 @@ namespace Grpc.IntegrationTesting readonly CancellationTokenSource stoppedCts; readonly WallClockStopwatch wallClockStopwatch = new WallClockStopwatch(); - public SyncUnaryClientRunner(Channel channel, int payloadSize, HistogramParams histogramParams) + public SyncUnaryClientRunner(Channel channel, SimpleProtoParams payloadParams, HistogramParams histogramParams) { this.channel = GrpcPreconditions.CheckNotNull(channel); - this.payloadSize = payloadSize; this.histogram = new Histogram(histogramParams.Resolution, histogramParams.MaxPossible); this.stoppedCts = new CancellationTokenSource(); @@ -161,7 +162,8 @@ namespace Grpc.IntegrationTesting { var request = new SimpleRequest { - Payload = CreateZerosPayload(payloadSize) + Payload = CreateZerosPayload(payloadParams.ReqSize), + ResponseSize = payloadParams.RespSize }; var stopwatch = new Stopwatch(); diff --git a/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs b/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs index 9f210081e78..516436ac5ac 100644 --- a/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs +++ b/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs @@ -77,11 +77,11 @@ namespace Grpc.IntegrationTesting Logger.Warning("ServerConfig.CoreList is not supported for C#. Ignoring the value"); } - // TODO: qps_driver needs to setup payload properly... - int responseSize = config.PayloadConfig != null ? config.PayloadConfig.SimpleParams.RespSize : 0; + GrpcPreconditions.CheckArgument(config.PayloadConfig == null, + "ServerConfig.PayloadConfig shouldn't be set for BenchmarkService based server."); var server = new Server { - Services = { BenchmarkService.BindService(new BenchmarkServiceImpl(responseSize)) }, + Services = { BenchmarkService.BindService(new BenchmarkServiceImpl()) }, Ports = { new ServerPort("[::]", config.Port, credentials) } }; From e26e2e5ad96f9bce89ff32a6a108190feda20046 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 13:52:50 -0700 Subject: [PATCH 55/74] support streaming and async client --- .../Grpc.IntegrationTesting/ClientRunners.cs | 114 ++++++++++++++---- 1 file changed, 92 insertions(+), 22 deletions(-) diff --git a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs index 0b6a8ee6267..76e877d4aa3 100644 --- a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs +++ b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs @@ -64,8 +64,6 @@ namespace Grpc.IntegrationTesting string target = config.ServerTargets.Single(); GrpcPreconditions.CheckArgument(config.LoadParams.LoadCase == LoadParams.LoadOneofCase.ClosedLoop, "Only closed loop scenario supported for C#"); - GrpcPreconditions.CheckArgument(config.ClientType == ClientType.SYNC_CLIENT, - "Only sync client support for C#"); GrpcPreconditions.CheckArgument(config.ClientChannels == 1, "ClientConfig.ClientChannels needs to be 1"); if (config.OutstandingRpcsPerChannel != 0) @@ -96,28 +94,24 @@ namespace Grpc.IntegrationTesting } var channel = new Channel(target, credentials, channelOptions); - switch (config.RpcType) - { - case RpcType.UNARY: - return new SyncUnaryClientRunner(channel, - config.PayloadConfig.SimpleParams, - config.HistogramParams); - - case RpcType.STREAMING: - default: - throw new ArgumentException("Unsupported RpcType."); - } + return new SimpleClientRunner(channel, + config.ClientType, + config.RpcType, + config.PayloadConfig.SimpleParams, + config.HistogramParams); } } /// /// Client that starts synchronous unary calls in a closed loop. /// - public class SyncUnaryClientRunner : IClientRunner + public class SimpleClientRunner : IClientRunner { const double SecondsToNanos = 1e9; readonly Channel channel; + readonly ClientType clientType; + readonly RpcType rpcType; readonly SimpleProtoParams payloadParams; readonly Histogram histogram; @@ -126,14 +120,19 @@ namespace Grpc.IntegrationTesting readonly CancellationTokenSource stoppedCts; readonly WallClockStopwatch wallClockStopwatch = new WallClockStopwatch(); - public SyncUnaryClientRunner(Channel channel, SimpleProtoParams payloadParams, HistogramParams histogramParams) + public SimpleClientRunner(Channel channel, ClientType clientType, RpcType rpcType, SimpleProtoParams payloadParams, HistogramParams histogramParams) { this.channel = GrpcPreconditions.CheckNotNull(channel); + this.clientType = clientType; + this.rpcType = rpcType; + this.payloadParams = payloadParams; this.histogram = new Histogram(histogramParams.Resolution, histogramParams.MaxPossible); this.stoppedCts = new CancellationTokenSource(); this.client = BenchmarkService.NewClient(channel); - this.runnerTask = Task.Factory.StartNew(Run, TaskCreationOptions.LongRunning); + + var threadBody = GetThreadBody(); + this.runnerTask = Task.Factory.StartNew(threadBody, TaskCreationOptions.LongRunning); } public ClientStats GetStats(bool reset) @@ -158,13 +157,9 @@ namespace Grpc.IntegrationTesting await channel.ShutdownAsync(); } - private void Run() + private void RunClosedLoopUnary() { - var request = new SimpleRequest - { - Payload = CreateZerosPayload(payloadParams.ReqSize), - ResponseSize = payloadParams.RespSize - }; + var request = CreateSimpleRequest(); var stopwatch = new Stopwatch(); while (!stoppedCts.Token.IsCancellationRequested) @@ -178,6 +173,81 @@ namespace Grpc.IntegrationTesting } } + private async Task RunClosedLoopUnaryAsync() + { + var request = CreateSimpleRequest(); + var stopwatch = new Stopwatch(); + + while (!stoppedCts.Token.IsCancellationRequested) + { + stopwatch.Restart(); + await client.UnaryCallAsync(request); + stopwatch.Stop(); + + // spec requires data point in nanoseconds. + histogram.AddObservation(stopwatch.Elapsed.TotalSeconds * SecondsToNanos); + } + } + + private async Task RunClosedLoopStreamingAsync() + { + var request = CreateSimpleRequest(); + var stopwatch = new Stopwatch(); + + using (var call = client.StreamingCall()) + { + while (!stoppedCts.Token.IsCancellationRequested) + { + stopwatch.Restart(); + await call.RequestStream.WriteAsync(request); + await call.ResponseStream.MoveNext(); + stopwatch.Stop(); + + // spec requires data point in nanoseconds. + histogram.AddObservation(stopwatch.Elapsed.TotalSeconds * SecondsToNanos); + } + + // finish the streaming call + await call.RequestStream.CompleteAsync(); + Assert.IsFalse(await call.ResponseStream.MoveNext()); + } + } + + private Action GetThreadBody() + { + if (clientType == ClientType.SYNC_CLIENT) + { + GrpcPreconditions.CheckArgument(rpcType == RpcType.UNARY, "Sync client can only be used for Unary calls in C#"); + return RunClosedLoopUnary; + } + else if (clientType == ClientType.ASYNC_CLIENT) + { + switch (rpcType) + { + case RpcType.UNARY: + return () => + { + RunClosedLoopUnaryAsync().Wait(); + }; + case RpcType.STREAMING: + return () => + { + RunClosedLoopStreamingAsync().Wait(); + }; + } + } + throw new ArgumentException("Unsupported configuration."); + } + + private SimpleRequest CreateSimpleRequest() + { + return new SimpleRequest + { + Payload = CreateZerosPayload(payloadParams.ReqSize), + ResponseSize = payloadParams.RespSize + }; + } + private static Payload CreateZerosPayload(int size) { return new Payload { Body = ByteString.CopyFrom(new byte[size]) }; From e45ca5f59286ef8a3b617e5f9c49f07f9fcfeefd Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 14:59:08 -0700 Subject: [PATCH 56/74] add support for C# generic client --- .../Grpc.IntegrationTesting/ClientRunners.cs | 67 +++++++++++++++++-- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs index 76e877d4aa3..a749f4a8a34 100644 --- a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs +++ b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs @@ -97,22 +97,32 @@ namespace Grpc.IntegrationTesting return new SimpleClientRunner(channel, config.ClientType, config.RpcType, - config.PayloadConfig.SimpleParams, + config.PayloadConfig, config.HistogramParams); } } /// - /// Client that starts synchronous unary calls in a closed loop. + /// Simple protobuf client. /// public class SimpleClientRunner : IClientRunner { const double SecondsToNanos = 1e9; + readonly static Marshaller ByteArrayMarshaller = new Marshaller((b) => b, (b) => b); + + readonly static Method StreamingCallMethod = new Method( + MethodType.DuplexStreaming, + "grpc.testing.BenchmarkService", + "StreamingCall", + ByteArrayMarshaller, + ByteArrayMarshaller + ); + readonly Channel channel; readonly ClientType clientType; readonly RpcType rpcType; - readonly SimpleProtoParams payloadParams; + readonly PayloadConfig payloadConfig; readonly Histogram histogram; readonly BenchmarkService.IBenchmarkServiceClient client; @@ -120,12 +130,12 @@ namespace Grpc.IntegrationTesting readonly CancellationTokenSource stoppedCts; readonly WallClockStopwatch wallClockStopwatch = new WallClockStopwatch(); - public SimpleClientRunner(Channel channel, ClientType clientType, RpcType rpcType, SimpleProtoParams payloadParams, HistogramParams histogramParams) + public SimpleClientRunner(Channel channel, ClientType clientType, RpcType rpcType, PayloadConfig payloadConfig, HistogramParams histogramParams) { this.channel = GrpcPreconditions.CheckNotNull(channel); this.clientType = clientType; this.rpcType = rpcType; - this.payloadParams = payloadParams; + this.payloadConfig = payloadConfig; this.histogram = new Histogram(histogramParams.Resolution, histogramParams.MaxPossible); this.stoppedCts = new CancellationTokenSource(); @@ -213,8 +223,45 @@ namespace Grpc.IntegrationTesting } } + private async Task RunGenericClosedLoopStreamingAsync() + { + var request = CreateByteBufferRequest(); + var stopwatch = new Stopwatch(); + + var callDetails = new CallInvocationDetails(channel, StreamingCallMethod, new CallOptions()); + + using (var call = Calls.AsyncDuplexStreamingCall(callDetails)) + { + while (!stoppedCts.Token.IsCancellationRequested) + { + stopwatch.Restart(); + await call.RequestStream.WriteAsync(request); + await call.ResponseStream.MoveNext(); + stopwatch.Stop(); + + // spec requires data point in nanoseconds. + histogram.AddObservation(stopwatch.Elapsed.TotalSeconds * SecondsToNanos); + } + + // finish the streaming call + await call.RequestStream.CompleteAsync(); + Assert.IsFalse(await call.ResponseStream.MoveNext()); + } + } + private Action GetThreadBody() { + if (payloadConfig.PayloadCase == PayloadConfig.PayloadOneofCase.BytebufParams) + { + GrpcPreconditions.CheckArgument(clientType == ClientType.ASYNC_CLIENT, "Generic client only supports async API"); + GrpcPreconditions.CheckArgument(rpcType == RpcType.STREAMING, "Generic client only supports streaming calls"); + return () => + { + RunGenericClosedLoopStreamingAsync().Wait(); + }; + } + + GrpcPreconditions.CheckNotNull(payloadConfig.SimpleParams); if (clientType == ClientType.SYNC_CLIENT) { GrpcPreconditions.CheckArgument(rpcType == RpcType.UNARY, "Sync client can only be used for Unary calls in C#"); @@ -241,13 +288,19 @@ namespace Grpc.IntegrationTesting private SimpleRequest CreateSimpleRequest() { + GrpcPreconditions.CheckNotNull(payloadConfig.SimpleParams); return new SimpleRequest { - Payload = CreateZerosPayload(payloadParams.ReqSize), - ResponseSize = payloadParams.RespSize + Payload = CreateZerosPayload(payloadConfig.SimpleParams.ReqSize), + ResponseSize = payloadConfig.SimpleParams.RespSize }; } + private byte[] CreateByteBufferRequest() + { + return new byte[payloadConfig.BytebufParams.ReqSize]; + } + private static Payload CreateZerosPayload(int size) { return new Payload { Body = ByteString.CopyFrom(new byte[size]) }; From 253769e92d5ff1883c1623fd0ee130ae4ce4b380 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 16:25:59 -0700 Subject: [PATCH 57/74] add ASYNC_GENERIC_SERVER support for C# --- .../Grpc.IntegrationTesting/ClientRunners.cs | 21 ++---- .../Grpc.IntegrationTesting/GenericService.cs | 71 +++++++++++++++++++ .../Grpc.IntegrationTesting.csproj | 1 + .../Grpc.IntegrationTesting/ServerRunners.cs | 46 ++++++++++-- 4 files changed, 116 insertions(+), 23 deletions(-) create mode 100644 src/csharp/Grpc.IntegrationTesting/GenericService.cs diff --git a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs index a749f4a8a34..e6dc2321c4c 100644 --- a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs +++ b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs @@ -94,7 +94,7 @@ namespace Grpc.IntegrationTesting } var channel = new Channel(target, credentials, channelOptions); - return new SimpleClientRunner(channel, + return new ClientRunnerImpl(channel, config.ClientType, config.RpcType, config.PayloadConfig, @@ -102,23 +102,10 @@ namespace Grpc.IntegrationTesting } } - /// - /// Simple protobuf client. - /// - public class SimpleClientRunner : IClientRunner + public class ClientRunnerImpl : IClientRunner { const double SecondsToNanos = 1e9; - readonly static Marshaller ByteArrayMarshaller = new Marshaller((b) => b, (b) => b); - - readonly static Method StreamingCallMethod = new Method( - MethodType.DuplexStreaming, - "grpc.testing.BenchmarkService", - "StreamingCall", - ByteArrayMarshaller, - ByteArrayMarshaller - ); - readonly Channel channel; readonly ClientType clientType; readonly RpcType rpcType; @@ -130,7 +117,7 @@ namespace Grpc.IntegrationTesting readonly CancellationTokenSource stoppedCts; readonly WallClockStopwatch wallClockStopwatch = new WallClockStopwatch(); - public SimpleClientRunner(Channel channel, ClientType clientType, RpcType rpcType, PayloadConfig payloadConfig, HistogramParams histogramParams) + public ClientRunnerImpl(Channel channel, ClientType clientType, RpcType rpcType, PayloadConfig payloadConfig, HistogramParams histogramParams) { this.channel = GrpcPreconditions.CheckNotNull(channel); this.clientType = clientType; @@ -228,7 +215,7 @@ namespace Grpc.IntegrationTesting var request = CreateByteBufferRequest(); var stopwatch = new Stopwatch(); - var callDetails = new CallInvocationDetails(channel, StreamingCallMethod, new CallOptions()); + var callDetails = new CallInvocationDetails(channel, GenericService.StreamingCallMethod, new CallOptions()); using (var call = Calls.AsyncDuplexStreamingCall(callDetails)) { diff --git a/src/csharp/Grpc.IntegrationTesting/GenericService.cs b/src/csharp/Grpc.IntegrationTesting/GenericService.cs new file mode 100644 index 00000000000..c6128264ac5 --- /dev/null +++ b/src/csharp/Grpc.IntegrationTesting/GenericService.cs @@ -0,0 +1,71 @@ +#region Copyright notice and license + +// Copyright 2016, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#endregion + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Google.Protobuf; +using Grpc.Core; +using Grpc.Core.Utils; +using NUnit.Framework; +using Grpc.Testing; + +namespace Grpc.IntegrationTesting +{ + /// + /// Utility methods for defining and calling a service that doesn't use protobufs + /// for serialization/deserialization. + /// + public static class GenericService + { + readonly static Marshaller ByteArrayMarshaller = new Marshaller((b) => b, (b) => b); + + public readonly static Method StreamingCallMethod = new Method( + MethodType.DuplexStreaming, + "grpc.testing.BenchmarkService", + "StreamingCall", + ByteArrayMarshaller, + ByteArrayMarshaller + ); + + public static ServerServiceDefinition BindHandler(DuplexStreamingServerMethod handler) + { + return ServerServiceDefinition.CreateBuilder(StreamingCallMethod.ServiceName) + .AddMethod(StreamingCallMethod, handler).Build(); + } + } +} diff --git a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj index 372991374ee..4c049944eaf 100644 --- a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj +++ b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj @@ -120,6 +120,7 @@ + diff --git a/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs b/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs index 516436ac5ac..c326378cfac 100644 --- a/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs +++ b/src/csharp/Grpc.IntegrationTesting/ServerRunners.cs @@ -61,7 +61,6 @@ namespace Grpc.IntegrationTesting public static IServerRunner CreateStarted(ServerConfig config) { Logger.Debug("ServerConfig: {0}", config); - GrpcPreconditions.CheckArgument(config.ServerType == ServerType.ASYNC_SERVER, "Only ASYNC_SERVER supported for C# QpsWorker"); var credentials = config.SecurityParams != null ? TestCredentials.CreateSslServerCredentials() : ServerCredentials.Insecure; if (config.AsyncServerThreads != 0) @@ -77,17 +76,53 @@ namespace Grpc.IntegrationTesting Logger.Warning("ServerConfig.CoreList is not supported for C#. Ignoring the value"); } - GrpcPreconditions.CheckArgument(config.PayloadConfig == null, - "ServerConfig.PayloadConfig shouldn't be set for BenchmarkService based server."); + ServerServiceDefinition service = null; + if (config.ServerType == ServerType.ASYNC_SERVER) + { + GrpcPreconditions.CheckArgument(config.PayloadConfig == null, + "ServerConfig.PayloadConfig shouldn't be set for BenchmarkService based server."); + service = BenchmarkService.BindService(new BenchmarkServiceImpl()); + } + else if (config.ServerType == ServerType.ASYNC_GENERIC_SERVER) + { + var genericService = new GenericServiceImpl(config.PayloadConfig.BytebufParams.RespSize); + service = GenericService.BindHandler(genericService.StreamingCall); + } + else + { + throw new ArgumentException("Unsupported ServerType"); + } + var server = new Server { - Services = { BenchmarkService.BindService(new BenchmarkServiceImpl()) }, + Services = { service }, Ports = { new ServerPort("[::]", config.Port, credentials) } }; server.Start(); return new ServerRunnerImpl(server); } + + private class GenericServiceImpl + { + readonly byte[] response; + + public GenericServiceImpl(int responseSize) + { + this.response = new byte[responseSize]; + } + + /// + /// Generic streaming call handler. + /// + public async Task StreamingCall(IAsyncStreamReader requestStream, IServerStreamWriter responseStream, ServerCallContext context) + { + await requestStream.ForEachAsync(async request => + { + await responseStream.WriteAsync(response); + }); + } + } } /// @@ -136,6 +171,5 @@ namespace Grpc.IntegrationTesting { return server.ShutdownAsync(); } - } - + } } From 7be750e367825f8bb5a2f5acaf61da6cf8271bde Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 25 Mar 2016 17:02:38 -0700 Subject: [PATCH 58/74] Add a script that generates a nice gource visualization --- tools/gource/gource.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 tools/gource/gource.sh diff --git a/tools/gource/gource.sh b/tools/gource/gource.sh new file mode 100755 index 00000000000..167a256b848 --- /dev/null +++ b/tools/gource/gource.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# Copyright 2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +gource -c 4 -s 0.1 --max-file-lag 0.05 --max-files 0 -e 0.01 --hide filenames,dirnames --file-filter 'doc/ref|vsprojects/vcxproj' $* From 42140525abdcd0186996d7b64bde89aaf10488c7 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 25 Mar 2016 17:13:24 -0700 Subject: [PATCH 59/74] fix RunnerClientServerTest and copyrights --- .../Grpc.IntegrationTesting/BenchmarkServiceImpl.cs | 2 +- .../RunnerClientServerTest.cs | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs b/src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs index 7e7bc713a03..1edeedae2fa 100644 --- a/src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs +++ b/src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs @@ -1,6 +1,6 @@ #region Copyright notice and license -// Copyright 2015, Google Inc. +// Copyright 2015-2016, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without diff --git a/src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs b/src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs index 06d5ee93d88..a8cf75bd819 100644 --- a/src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs +++ b/src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs @@ -55,14 +55,7 @@ namespace Grpc.IntegrationTesting { var serverConfig = new ServerConfig { - ServerType = ServerType.ASYNC_SERVER, - PayloadConfig = new PayloadConfig - { - SimpleParams = new SimpleProtoParams - { - RespSize = 100 - } - } + ServerType = ServerType.ASYNC_SERVER }; serverRunner = ServerRunners.CreateStarted(serverConfig); } @@ -88,7 +81,8 @@ namespace Grpc.IntegrationTesting { SimpleParams = new SimpleProtoParams { - ReqSize = 100 + ReqSize = 100, + RespSize = 100 } }, HistogramParams = new HistogramParams From 95a137b692f38db6821fea8df499d258b657b6b7 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 21 Mar 2016 11:10:42 -0700 Subject: [PATCH 60/74] Add build type option (asan/tsan/dbg or opt) --- .../dockerfile/gcp_api_libraries.include | 4 ++ .../Dockerfile.template | 40 ++++++++++++++ .../grpc_interop_stress_cxx/Dockerfile | 53 ++++++++++++++++--- .../build_interop_stress.sh | 4 +- tools/jenkins/build_interop_stress_image.sh | 7 ++- .../stress_test/run_stress_tests_on_gke.py | 45 +++++++++++----- 6 files changed, 128 insertions(+), 25 deletions(-) create mode 100644 templates/tools/dockerfile/gcp_api_libraries.include create mode 100644 templates/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile.template diff --git a/templates/tools/dockerfile/gcp_api_libraries.include b/templates/tools/dockerfile/gcp_api_libraries.include new file mode 100644 index 00000000000..669b0f887c8 --- /dev/null +++ b/templates/tools/dockerfile/gcp_api_libraries.include @@ -0,0 +1,4 @@ +# Google Cloud platform API libraries +RUN apt-get update && apt-get install -y python-pip && apt-get clean +RUN pip install --upgrade google-api-python-client + diff --git a/templates/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile.template b/templates/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile.template new file mode 100644 index 00000000000..b1049d0d7f2 --- /dev/null +++ b/templates/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile.template @@ -0,0 +1,40 @@ +%YAML 1.2 +--- | + # Copyright 2015-2016, Google Inc. + # All rights reserved. + # + # Redistribution and use in source and binary forms, with or without + # modification, are permitted provided that the following conditions are + # met: + # + # * Redistributions of source code must retain the above copyright + # notice, this list of conditions and the following disclaimer. + # * Redistributions in binary form must reproduce the above + # copyright notice, this list of conditions and the following disclaimer + # in the documentation and/or other materials provided with the + # distribution. + # * Neither the name of Google Inc. nor the names of its + # contributors may be used to endorse or promote products derived from + # this software without specific prior written permission. + # + # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + FROM debian:jessie + + <%include file="../apt_get_basic.include"/> + <%include file="../ccache_setup.include"/> + <%include file="../cxx_deps.include"/> + <%include file="../gcp_api_libraries.include"/> + <%include file="../clang_update.include"/> + # Define the default command. + CMD ["bash"] diff --git a/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile b/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile index 4123cc1a26a..214747fd4a5 100644 --- a/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile +++ b/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile @@ -27,12 +27,9 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# A work-in-progress Dockerfile that allows running gRPC test suites -# inside a docker container. - FROM debian:jessie -# Install Git. +# Install Git and basic packages. RUN apt-get update && apt-get install -y \ autoconf \ autotools-dev \ @@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \ gcc \ gcc-multilib \ git \ + golang \ gyp \ + lcov \ libc6 \ libc6-dbg \ libc6-dev \ libgtest-dev \ libtool \ make \ + perl \ strace \ python-dev \ python-setuptools \ @@ -59,7 +59,9 @@ RUN apt-get update && apt-get install -y \ wget \ zip && apt-get clean -RUN easy_install -U pip +#================ +# Build profiling +RUN apt-get update && apt-get install -y time && apt-get clean # Prepare ccache RUN ln -s /usr/bin/ccache /usr/local/bin/gcc @@ -69,12 +71,47 @@ RUN ln -s /usr/bin/ccache /usr/local/bin/c++ RUN ln -s /usr/bin/ccache /usr/local/bin/clang RUN ln -s /usr/bin/ccache /usr/local/bin/clang++ -################## +#================= # C++ dependencies -RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang +RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean -# Google Cloud platform API libraries (for BigQuery) +# Google Cloud platform API libraries +RUN apt-get update && apt-get install -y python-pip && apt-get clean RUN pip install --upgrade google-api-python-client + +#================= +# Update clang to a version with improved tsan + +RUN apt-get update && apt-get -y install python cmake && apt-get clean + +RUN git clone -n -b release_38 http://llvm.org/git/llvm.git && \ + cd llvm && git checkout ad57503 && cd .. +RUN git clone -n -b release_38 http://llvm.org/git/clang.git && \ + cd clang && git checkout ad2c56e && cd .. +RUN git clone -n -b release_38 http://llvm.org/git/compiler-rt.git && \ + cd compiler-rt && git checkout 3176922 && cd .. +RUN git clone -n -b release_38 \ + http://llvm.org/git/clang-tools-extra.git && cd clang-tools-extra && \ + git checkout c288525 && cd .. +RUN git clone -n -b release_38 http://llvm.org/git/libcxx.git && \ + cd libcxx && git checkout fda3549 && cd .. +RUN git clone -n -b release_38 http://llvm.org/git/libcxxabi.git && \ + cd libcxxabi && git checkout 8d4e51d && cd .. + +RUN mv clang llvm/tools +RUN mv compiler-rt llvm/projects +RUN mv clang-tools-extra llvm/tools/clang/tools +RUN mv libcxx llvm/projects +RUN mv libcxxabi llvm/projects + +RUN mkdir llvm-build +RUN cd llvm-build && cmake \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DCMAKE_INSTALL_PREFIX:STRING=/usr \ + -DLLVM_TARGETS_TO_BUILD:STRING=X86 \ + ../llvm +RUN make -C llvm-build && make -C llvm-build install && rm -rf llvm-build + # Define the default command. CMD ["bash"] diff --git a/tools/dockerfile/grpc_interop_stress_cxx/build_interop_stress.sh b/tools/dockerfile/grpc_interop_stress_cxx/build_interop_stress.sh index 392bdfccda0..470db4c13fb 100755 --- a/tools/dockerfile/grpc_interop_stress_cxx/build_interop_stress.sh +++ b/tools/dockerfile/grpc_interop_stress_cxx/build_interop_stress.sh @@ -41,5 +41,7 @@ cd /var/local/git/grpc make install-certs +BUILD_TYPE=${BUILD_TYPE:=opt} + # build C++ interop stress client, interop client and server -make stress_test metrics_client interop_client interop_server +make CONFIG=$BUILD_TYPE stress_test metrics_client interop_client interop_server diff --git a/tools/jenkins/build_interop_stress_image.sh b/tools/jenkins/build_interop_stress_image.sh index 501dc5b7ca4..b5dbcc5ce4b 100755 --- a/tools/jenkins/build_interop_stress_image.sh +++ b/tools/jenkins/build_interop_stress_image.sh @@ -34,10 +34,12 @@ set -x # Params: -# INTEROP_IMAGE - name of tag of the final interop image +# INTEROP_IMAGE - Name of tag of the final interop image # INTEROP_IMAGE_TAG - Optional. If set, the created image will be tagged using # the command: 'docker tag $INTEROP_IMAGE $INTEROP_IMAGE_REPOSITORY_TAG' -# BASE_NAME - base name used to locate the base Dockerfile and build script +# BASE_NAME - Base name used to locate the base Dockerfile and build script +# BUILD_TYPE - The 'CONFIG' variable passed to the 'make' command (example: +# asan, tsan. Default value: opt). # TTY_FLAG - optional -t flag to make docker allocate tty # BUILD_INTEROP_DOCKER_EXTRA_ARGS - optional args to be passed to the # docker run command @@ -71,6 +73,7 @@ CONTAINER_NAME="build_${BASE_NAME}_$(uuidgen)" (docker run \ -e CCACHE_DIR=/tmp/ccache \ -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \ + -e BUILD_TYPE=${BUILD_TYPE:=opt} \ -i $TTY_FLAG \ $MOUNT_ARGS \ $BUILD_INTEROP_DOCKER_EXTRA_ARGS \ diff --git a/tools/run_tests/stress_test/run_stress_tests_on_gke.py b/tools/run_tests/stress_test/run_stress_tests_on_gke.py index 634eb1aca53..79075f816cc 100755 --- a/tools/run_tests/stress_test/run_stress_tests_on_gke.py +++ b/tools/run_tests/stress_test/run_stress_tests_on_gke.py @@ -122,9 +122,10 @@ class KubernetesProxy: class TestSettings: - def __init__(self, build_docker_image, test_poll_interval_secs, + def __init__(self, build_docker_image, build_type, test_poll_interval_secs, test_duration_secs, kubernetes_proxy_port): self.build_docker_image = build_docker_image + self.build_type = build_type self.test_poll_interval_secs = test_poll_interval_secs self.test_duration_secs = test_duration_secs self.kubernetes_proxy_port = kubernetes_proxy_port @@ -149,17 +150,20 @@ class BigQuerySettings: class StressServerSettings: - def __init__(self, server_pod_name, server_port): + def __init__(self, build_type, server_pod_name, server_port): + self.build_type = build_type self.server_pod_name = server_pod_name self.server_port = server_port class StressClientSettings: - def __init__(self, num_clients, client_pod_name_prefix, server_pod_name, - server_port, metrics_port, metrics_collection_interval_secs, + def __init__(self, build_type, num_clients, client_pod_name_prefix, + server_pod_name, server_port, metrics_port, + metrics_collection_interval_secs, stress_client_poll_interval_secs, num_channels_per_server, num_stubs_per_channel, test_cases_str): + self.build_type = build_type self.num_clients = num_clients self.client_pod_name_prefix = client_pod_name_prefix self.server_pod_name = server_pod_name @@ -181,7 +185,7 @@ class StressClientSettings: for i in range(1, num_clients + 1)] -def _build_docker_image(image_name, tag_name): +def _build_docker_image(image_name, tag_name, build_type): """ Build the docker image and add tag it to the GKE repository """ print 'Building docker image: %s' % image_name os.environ['INTEROP_IMAGE'] = image_name @@ -190,6 +194,7 @@ def _build_docker_image(image_name, tag_name): # build_interop_stress_image.sh invokes the following script: # tools/dockerfile/$BASE_NAME/build_interop_stress.sh os.environ['BASE_NAME'] = 'grpc_interop_stress_cxx' + os.environ['BUILD_TYPE'] = build_type cmd = ['tools/jenkins/build_interop_stress_image.sh'] retcode = subprocess.call(args=cmd) if retcode != 0: @@ -226,9 +231,10 @@ def _launch_server(gke_settings, stress_server_settings, bq_settings, # The parameters to the script run_server.py are injected into the container # via environment variables + stress_test_image_path = '/var/local/git/grpc/bins/%s/interop_server' % stress_server_settings.build_type server_env = { 'STRESS_TEST_IMAGE_TYPE': 'SERVER', - 'STRESS_TEST_IMAGE': '/var/local/git/grpc/bins/opt/interop_server', + 'STRESS_TEST_IMAGE': stress_test_image_path, 'STRESS_TEST_ARGS_STR': '--port=%s' % stress_server_settings.server_port, 'RUN_ID': bq_settings.run_id, 'POD_NAME': stress_server_settings.server_pod_name, @@ -285,11 +291,13 @@ def _launch_client(gke_settings, stress_server_settings, stress_client_settings, # The parameters to the script run_client.py are injected into the container # via environment variables + stress_test_image_path = '/var/local/git/grpc/bins/%s/stress_test' % stress_client_settings.build_type + metrics_client_image_path = '/var/local/git/grpc/bins/%s/metrics_client' % stress_client_settings.build_type client_env = { 'STRESS_TEST_IMAGE_TYPE': 'CLIENT', - 'STRESS_TEST_IMAGE': '/var/local/git/grpc/bins/opt/stress_test', + 'STRESS_TEST_IMAGE': stress_test_image_path, 'STRESS_TEST_ARGS_STR': ' '.join(stress_client_arg_list), - 'METRICS_CLIENT_IMAGE': '/var/local/git/grpc/bins/opt/metrics_client', + 'METRICS_CLIENT_IMAGE': metrics_client_image_path, 'METRICS_CLIENT_ARGS_STR': ' '.join(metrics_client_arg_list), 'RUN_ID': bq_settings.run_id, 'POLL_INTERVAL_SECS': @@ -384,7 +392,8 @@ def run_test_main(test_settings, gke_settings, stress_server_settings, if test_settings.build_docker_image: is_success = _build_docker_image(gke_settings.docker_image_name, - gke_settings.tag_name) + gke_settings.tag_name, + test_settings.build_type) if not is_success: return False @@ -476,6 +485,11 @@ argp.add_argument('--do_not_build_docker_image', 'Registry') argp.set_defaults(build_docker_image=True) +argp.add_argument('--build_type', + choices=['opt', 'dbg', 'asan', 'tsan'], + default='opt', + help='The type of build i.e opt, dbg, asan or tsan.') + argp.add_argument('--test_poll_interval_secs', default=_DEFAULT_TEST_POLL_INTERVAL_SECS, type=int, @@ -537,16 +551,19 @@ if __name__ == '__main__': args = argp.parse_args() test_settings = TestSettings( - args.build_docker_image, args.test_poll_interval_secs, + args.build_docker_image, args.build_type, args.test_poll_interval_secs, args.test_duration_secs, args.kubernetes_proxy_port) gke_settings = GkeSettings(args.project_id, args.docker_image_name) - stress_server_settings = StressServerSettings(_SERVER_POD_NAME, - args.stress_server_port) + server_pod_name = "%s-%s" % (_SERVER_POD_NAME, args.build_type) + client_pod_name_prefix = "%s-%s" % (_CLIENT_POD_NAME_PREFIX, args.build_type) + stress_server_settings = StressServerSettings( + args.build_type, server_pod_name, args.stress_server_port) stress_client_settings = StressClientSettings( - args.num_clients, _CLIENT_POD_NAME_PREFIX, _SERVER_POD_NAME, - args.stress_server_port, args.stress_client_metrics_port, + args.build_type, args.num_clients, client_pod_name_prefix, + server_pod_name, args.stress_server_port, + args.stress_client_metrics_port, args.stress_client_metrics_collection_interval_secs, args.stress_client_poll_interval_secs, args.stress_client_num_channels_per_server, From 575f0fa2da4509b8e985be83db02c4abd8fe0147 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Fri, 25 Mar 2016 14:27:07 -0700 Subject: [PATCH 61/74] Revamped test launcher --- .../stress_test/configs/opt-tsan.json | 110 ++++ tools/run_tests/stress_test/run_on_gke.py | 573 ++++++++++++++++++ 2 files changed, 683 insertions(+) create mode 100644 tools/run_tests/stress_test/configs/opt-tsan.json create mode 100755 tools/run_tests/stress_test/run_on_gke.py diff --git a/tools/run_tests/stress_test/configs/opt-tsan.json b/tools/run_tests/stress_test/configs/opt-tsan.json new file mode 100644 index 00000000000..41401a3f564 --- /dev/null +++ b/tools/run_tests/stress_test/configs/opt-tsan.json @@ -0,0 +1,110 @@ +{ + "dockerImages": { + "grpc_stress_cxx_opt" : { + "buildScript": "tools/jenkins/build_interop_stress_image.sh", + "dockerFileDir": "grpc_interop_stress_cxx" + }, + "grpc_stress_cxx_tsan": { + "buildScript": "tools/jenkins/build_interop_stress_image.sh", + "dockerFileDir": "grpc_interop_stress_cxx" + } + }, + + "clientTemplates": { + "baseTemplates": { + "default": { + "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py", + "pollIntervalSecs": 60, + "clientArgs": { + "num_channels_per_server":5, + "num_stubs_per_channel":10, + "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1", + "metrics_port": 8081, + "metrics_collection_interval_secs":60 + }, + "metricsPort": 8081, + "metricsArgs": { + "metrics_server_address": "localhost:8081", + "total_only": "true" + } + } + }, + "templates": { + "cxx_client_opt": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/opt/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/opt/metrics_client" + }, + "cxx_client_tsan": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/tsan/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/tsan/metrics_client" + } + } + }, + + "serverTemplates": { + "baseTemplates":{ + "default": { + "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py", + "serverPort": 8080, + "serverArgs": { + "port": 8080 + } + } + }, + "templates": { + "cxx_server_opt": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/opt/interop_server" + }, + "cxx_server_tsan": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/tsan/interop_server" + } + } + }, + + "testMatrix": { + "serverPodSpecs": { + "stress-server-opt": { + "serverTemplate": "cxx_server_opt", + "dockerImage": "grpc_stress_cxx_opt", + "numInstances": 1 + }, + "stress-server-tsan": { + "serverTemplate": "cxx_server_tsan", + "dockerImage": "grpc_stress_cxx_tsan", + "numInstances": 1 + } + }, + + "clientPodSpecs": { + "stress-client-opt": { + "clientTemplate": "cxx_client_opt", + "dockerImage": "grpc_stress_cxx_opt", + "numInstances": 3, + "serverPodSpec": "stress-server-opt" + }, + "stress-client-tsan": { + "clientTemplate": "cxx_client_tsan", + "dockerImage": "grpc_stress_cxx_tsan", + "numInstances": 3, + "serverPodSpec": "stress-server-tsan" + } + } + }, + + "globalSettings": { + "projectId": "sreek-gce", + "buildDockerImages": true, + "pollIntervalSecs": 60, + "testDurationSecs": 120, + "kubernetesProxyPort": 8001, + "datasetIdNamePrefix": "stress_test_opt_tsan", + "summaryTableId": "summary", + "qpsTableId": "qps" + "podWarmupSecs": 60 + } +} + diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py new file mode 100755 index 00000000000..3c95df2da0a --- /dev/null +++ b/tools/run_tests/stress_test/run_on_gke.py @@ -0,0 +1,573 @@ +#!/usr/bin/env python2.7 +# Copyright 2015-2016, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import argparse +import datetime +import json +import os +import subprocess +import sys +import time + +stress_test_utils_dir = os.path.abspath(os.path.join( + os.path.dirname(__file__), '../../gcp/stress_test')) +sys.path.append(stress_test_utils_dir) +from stress_test_utils import BigQueryHelper + +kubernetes_api_dir = os.path.abspath(os.path.join( + os.path.dirname(__file__), '../../gcp/utils')) +sys.path.append(kubernetes_api_dir) + +import kubernetes_api + + +class GlobalSettings: + + def __init__(self, gcp_project_id, build_docker_images, + test_poll_interval_secs, test_duration_secs, + kubernetes_proxy_port, dataset_id_prefix, summary_table_id, + qps_table_id, pod_warmup_secs): + self.gcp_project_id = gcp_project_id + self.build_docker_images = build_docker_images + self.test_poll_interval_secs = test_poll_interval_secs + self.test_duration_secs = test_duration_secs + self.kubernetes_proxy_port = kubernetes_proxy_port + self.dataset_id_prefix = dataset_id_prefix + self.summary_table_id = summary_table_id + self.qps_table_id = qps_table_id + self.pod_warmup_secs = pod_warmup_secs + + +class ClientTemplate: + + def __init__(self, name, client_image_path, metrics_client_image_path, + metrics_port, wrapper_script_path, poll_interval_secs, + client_args_dict, metrics_args_dict): + self.name = name + self.client_image_path = client_image_path + self.metrics_client_image_path = metrics_client_image_path + self.metrics_port = metrics_port + self.wrapper_script_path = wrapper_script_path + self.poll_interval_secs = poll_interval_secs + self.client_args_dict = client_args_dict + self.metrics_args_dict = metrics_args_dict + + +class ServerTemplate: + + def __init__(self, name, server_image_path, wrapper_script_path, server_port, + server_args_dict): + self.name = name + self.server_image_path = server_image_path + self.wrapper_script_path = wrapper_script_path + self.server_port = server_port + self.sever_args_dict = server_args_dict + + +class DockerImage: + + def __init__(self, gcp_project_id, image_name, build_script_path, + dockerfile_dir): + """Args: + + image_name: The docker image name + tag_name: The additional tag name. This is the name used when pushing the + docker image to GKE registry + build_script_path: The path to the build script that builds this docker + image + dockerfile_dir: The name of the directory under + '/tools/dockerfile' that contains the dockerfile + """ + self.image_name = image_name + self.gcp_project_id = gcp_project_id + self.build_script_path = build_script_path + self.dockerfile_dir = dockerfile_dir + self.tag_name = self.make_tag_name(gcp_project_id, image_name) + + def make_tag_name(self, project_id, image_name): + return 'gcr.io/%s/%s' % (project_id, image_name) + + def build_image(self): + print 'Building docker image: %s' % self.image_name + os.environ['INTEROP_IMAGE'] = self.image_name + os.environ['INTEROP_IMAGE_REPOSITORY_TAG'] = self.tag_name + os.environ['BASE_NAME'] = self.dockerfile_dir + if subprocess.call(args=[self.build_script_path]) != 0: + print 'Error in building the Docker image' + return False + return True + + def push_to_gke_registry(self): + cmd = ['gcloud', 'docker', 'push', self.tag_name] + print 'Pushing the image %s to the GKE registry..' % self.tag_name + if subprocess.call(args=cmd) != 0: + print 'Error in pushing the image %s to the GKE registry' % self.tag_name + return False + return True + + +class ServerPodSpec: + + def __init__(self, name, server_template, docker_image, num_instances): + self.name = name + self.template = server_template + self.docker_image = docker_image + self.num_instances = num_instances + + def pod_names(self): + """ Return a list of names of server pods to create """ + return ['%s-%d' % (self.name, i) for i in range(1, self.num_instances + 1)] + + def server_addresses(self): + """ Return string of server addresses in the following format: + ':,:...' + """ + return ','.join(['%s:%d' % (pod_name, self.template.server_port) + for pod_name in self.pod_names()]) + + +class ClientPodSpec: + + def __init__(self, name, client_template, docker_image, num_instances, + server_addresses): + self.name = name + self.template = client_template + self.docker_image = docker_image + self.num_instances = num_instances + self.server_addresses = server_addresses + + def pod_names(self): + """ Return a list of names of client pods to create """ + return ['%s-%d' % (self.name, i) for i in range(1, self.num_instances + 1)] + + def get_client_args_dict(self): + args_dict = self.template.client_args_dict.copy() + args_dict['server_addresses'] = server_addresses + return args_dict + + +class Gke: + + class KubernetesProxy: + """Class to start a proxy on localhost to talk to the Kubernetes API server""" + + def __init__(self, port): + cmd = ['kubectl', 'proxy', '--port=%d' % port] + self.p = subprocess.Popen(args=cmd) + time.sleep(2) + print 'Started kubernetes proxy on port: %d' % port + + def __del__(self): + if self.p is not None: + print 'Shutting down Kubernetes proxy..' + self.p.kill() + + def __init__(self, project_id, run_id, dataset_id, summary_table_id, + qps_table_id, kubernetes_port): + self.project_id = project_id + self.run_id = run_id + self.dataset_id = dataset_id + self.summary_table_id = summary_table_id + self.qps_table_id = qps_table_id + self.gke_env = { + 'RUN_ID': self.run_id, + 'GCP_PROJECT_ID': self.project_id, + 'DATASET_ID': self.dataset_id, + 'SUMMARY_TABLE_ID': self.summary_table_id, + 'QPS_TABLE_ID': self.qps_table_id + } + + self.kubernetes_port = kubernetes_port + # Start kubernetes proxy + self.kubernetes_proxy = KubernetesProxy(kubernetes_port) + + def _args_dict_to_str(self, args_dict): + return ' '.join('--%s=%s' % (k, args_dict[k]) for k in args_dict.keys()) + + def launch_servers(self, server_pod_spec): + is_success = True + + # The command to run inside the container is the wrapper script (which then + # launches the actual server) + container_cmd = server_pod_spec.template.wrapper_script_path + + # The parameters to the wrapper script (defined in + # server_pod_spec.template.wrapper_script_path) are are injected into the + # container via environment variables + server_env = self.gke_env().copy() + serv_env.update({ + 'STRESS_TEST_IMAGE_TYPE': 'SERVER', + 'STRESS_TEST_IMAGE': server_pod_spec.template.server_image_path, + 'STRESS_TEST_ARGS_STR': self._args_dict_to_str( + server_pod_spec.template.server_args_dict) + }) + + for pod_name in server_pod_spec.pod_names(): + server_env['POD_NAME'] = pod_name + is_success = kubernetes_api.create_pod_and_service( + 'localhost', + self.kubernetes_port, + 'default', # Use 'default' namespace + pod_name, + server_pod_spec.docker_image.tag_name, + [server_pod_spec.template.server_port], # Ports to expose on the pod + [container_cmd], + [], # Args list is empty since we are passing all args via env variables + server_env, + True # Headless = True for server to that GKE creates a DNS record for 'pod_name' + ) + if not is_success: + print 'Error in launching server: %s' % pod_name + break + + return is_success + + def launch_clients(self, client_pod_spec): + is_success = True + + # The command to run inside the container is the wrapper script (which then + # launches the actual stress client) + container_cmd = client_pod_spec.template.wrapper_script_path + + # The parameters to the wrapper script (defined in + # client_pod_spec.template.wrapper_script_path) are are injected into the + # container via environment variables + client_env = self.gke_env.copy() + client_env.update({ + 'STRESS_TEST_IMAGE_TYPE': 'CLIENT', + 'STRESS_TEST_IMAGE': client_pod_spec.template.client_image_path, + 'STRESS_TEST_ARGS_STR': self._args_dict_to_str( + client_pod_spec.get_client_args_dict()), + 'METRICS_CLIENT_IMAGE': + client_pod_spec.template.metrics_client_image_path, + 'METRICS_CLIENT_ARGS_STR': self._args_dict_to_str( + client_pod_spec.template.metrics_args_dict), + 'POLL_INTERVAL_SECS': client_pod_spec.template.poll_interval_secs + }) + + for pod_name in client_pod_spec.pod_names(): + client_env['POD_NAME'] = pod_name + is_success = kubernetes_api.create_pod_and_service( + 'localhost', + self.kubernetes_port, + 'default', # default namespace, + pod_name, + client_pod_spec.docker_image.tag_name, + [client_pod_spec.template.metrics_port], # Ports to expose on the pod + [container_cmd], + [], # Empty args list since all args are passed via env variables + client_env, + False # Client is not a headless service. + ) + + if not is_success: + print 'Error in launching client %s' % pod_name + break + + return True + + def delete_pods(pod_name_list): + for pod_name in pod_name_list: + is_success = kubernetes_api.delete_pod_and_service( + 'localhost', + self.kubernetes_port, + 'default', # default namespace + pod_name) + if not is_success: + return False + + +class Config: + + def __init__(self, config_filename): + config_dict = self.load_config(config_filename) + self.global_settings = self.parse_global_settings(config_dict) + self.docker_images_dict = self.parse_docker_images( + config_dict, self.global_settings.gcp_project_id) + self.client_templates_dict = self.parse_client_templates(config_dict) + self.server_templates_dict = self.parse_server_templates(config_dict) + self.server_pod_specs_dict = self.parse_server_pod_specs( + config_dict, self.docker_images_dict, self.server_templates_dict) + self.client_pod_specs_dict = self.parse_client_pod_specs( + config_dict, self.docker_images_dict, self.client_templates_dict, + self.server_pod_specs_dict) + + def parse_global_settings(self, config_dict): + global_settings_dict = config_dict['globalSettings'] + return GlobalSettings(global_settings_dict['projectId'], + global_settings_dict['buildDockerImages'], + global_settings_dict['pollIntervalSecs'], + global_settings_dict['testDurationSecs'], + global_settings_dict['kubernetesProxyPort'], + global_settings_dict['datasetIdNamePrefix'], + global_settings_dict['summaryTableId'], + global_settings_dict['qpsTableId'], + global_settings_dict['podWarmupSecs']) + + def parse_docker_images(self, config_dict, gcp_project_id): + """Parses the 'dockerImages' section of the config file and returns a + Dictionary of 'DockerImage' objects keyed by docker image names""" + docker_images_dict = {} + for image_name in config_dict['dockerImages'].keys(): + build_script_path = config_dict['dockerImages'][image_name]['buildScript'] + dockerfile_dir = config_dict['dockerImages'][image_name]['dockerFileDir'] + docker_images_dict[image_name] = DockerImage(gcp_project_id, image_name, + build_script_path, + dockerfile_dir) + return docker_images_dict + + def parse_client_templates(self, config_dict): + """Parses the 'clientTemplates' section of the config file and returns a + Dictionary of 'ClientTemplate' objects keyed by client template names. + + Note: The 'baseTemplates' sub section of the config file contains templates + with default values and the 'templates' sub section contains the actual + client templates (which refer to the base template name to use for default + values). + """ + client_templates_dict = {} + + templates_dict = config_dict['clientTemplates']['templates'] + base_templates_dict = config_dict['clientTemplates'].get('baseTemplates', + {}) + for template_name in templates_dict.keys(): + # temp_dict is a temporary dictionary that merges base template dictionary + # and client template dictionary (with client template dictionary values + # overriding base template values) + temp_dict = {} + + base_template_name = templates_dict[template_name].get('baseTemplate') + if not base_template_name is None: + temp_dict = base_templates_dict[base_template_name].copy() + + temp_dict.update(templates_dict[template_name]) + + # Create and add ClientTemplate object to the final client_templates_dict + client_templates_dict[template_name] = ClientTemplate( + template_name, temp_dict['clientImagePath'], + temp_dict['metricsClientImagePath'], temp_dict['metricsPort'], + temp_dict['wrapperScriptPath'], temp_dict['pollIntervalSecs'], + temp_dict['clientArgs'].copy(), temp_dict['metricsArgs'].copy()) + + return client_templates_dict + + def parse_server_templates(self, config_dict): + """Parses the 'serverTemplates' section of the config file and returns a + Dictionary of 'serverTemplate' objects keyed by server template names. + + Note: The 'baseTemplates' sub section of the config file contains templates + with default values and the 'templates' sub section contains the actual + server templates (which refer to the base template name to use for default + values). + """ + server_templates_dict = {} + + templates_dict = config_dict['serverTemplates']['templates'] + base_templates_dict = config_dict['serverTemplates'].get('baseTemplates', + {}) + + for template_name in templates_dict.keys(): + # temp_dict is a temporary dictionary that merges base template dictionary + # and server template dictionary (with server template dictionary values + # overriding base template values) + temp_dict = {} + + base_template_name = templates_dict[template_name].get('baseTemplate') + if not base_template_name is None: + temp_dict = base_templates_dict[base_template_name].copy() + + temp_dict.update(templates_dict[template_name]) + + # Create and add ServerTemplate object to the final server_templates_dict + server_templates_dict[template_name] = ServerTemplate( + template_name, temp_dict['serverImagePath'], + temp_dict['wrapperScriptPath'], temp_dict['serverPort'], + temp_dict['serverArgs'].copy()) + + return server_templates_dict + + def parse_server_pod_specs(self, config_dict, docker_images_dict, + server_templates_dict): + """Parses the 'serverPodSpecs' sub-section (under 'testMatrix' section) of + the config file and returns a Dictionary of 'ServerPodSpec' objects keyed + by server pod spec names""" + server_pod_specs_dict = {} + + pod_specs_dict = config_dict['testMatrix'].get('serverPodSpecs', {}) + + for pod_name in pod_specs_dict.keys(): + server_template_name = pod_specs_dict[pod_name]['serverTemplate'] + docker_image_name = pod_specs_dict[pod_name]['dockerImage'] + num_instances = pod_specs_dict[pod_name].get('numInstances', 1) + + # Create and add the ServerPodSpec object to the final + # server_pod_specs_dict + server_pod_specs_dict[pod_name] = ServerPodSpec( + pod_name, server_templates_dict[server_template_name], + docker_images_dict[docker_image_name], num_instances) + + return server_pod_specs_dict + + def parse_client_pod_specs(self, config_dict, docker_images_dict, + client_templates_dict, server_pod_specs_dict): + """Parses the 'clientPodSpecs' sub-section (under 'testMatrix' section) of + the config file and returns a Dictionary of 'ClientPodSpec' objects keyed + by client pod spec names""" + client_pod_specs_dict = {} + + pod_specs_dict = config_dict['testMatrix'].get('clientPodSpecs', {}) + for pod_name in pod_specs_dict.keys(): + client_template_name = pod_specs_dict[pod_name]['clientTemplate'] + docker_image_name = pod_specs_dict[pod_name]['dockerImage'] + num_instances = pod_specs_dict[pod_name]['numInstances'] + + # Get the server addresses from the server pod spec object + server_pod_spec_name = pod_specs_dict[pod_name]['serverPodSpec'] + server_addresses = server_pod_specs_dict[ + server_pod_spec_name].server_addresses() + + client_pod_specs_dict[pod_name] = ClientPodSpec( + pod_name, client_templates_dict[client_template_name], + docker_images_dict[docker_image_name], num_instances, + server_addresses) + + return client_pod_specs_dict + + def load_config(self, config_filename): + """Opens the config file and converts the Json text to Dictionary""" + if not os.path.isabs(config_filename): + config_filename = os.path.join( + os.path.dirname(sys.argv[0]), config_filename) + with open(config_filename) as config_file: + return json.load(config_file) + + +def run_tests(config): + # Build docker images and push to GKE registry + if config.global_settings.build_docker_images: + for name, docker_image in config.docker_images_dict.iteritems(): + if not (docker_image.build_image() and + docker_image.push_to_gke_registry()): + return False + + # Create a unique id for this run (Note: Using timestamp instead of UUID to + # make it easier to deduce the date/time of the run just by looking at the run + # run id. This is useful in debugging when looking at records in Biq query) + run_id = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S') + dataset_id = '%s_%s' % (config.global_settings.dataset_id_prefix, run_id) + + bq_helper = BigQueryHelper(run_id, '', '', args.project_id, dataset_id, + config.global_settings.summary_table_id, + config.global_settings.qps_table_id) + bq_helper.initialize() + + gke = Gke(config.global_settings.gcp_project_id, run_id, dataset_id, + config.global_settings.summary_table_id, + config.global_settings.qps_table_id, + config.global_settings.kubernetes_proxy_port) + + is_success = True + + try: + # Launch all servers first + for name, server_pod_spec in config.server_pod_specs_dict.iteritems(): + if not gke.launch_servers(server_pod_spec): + is_success = False # is_success is checked in the 'finally' block + return False + + print('Launched servers. Waiting for %d seconds for the server pods to be ' + 'fully online') % config.global_settings.pod_warmup_secs + time.sleep(config.global_settings.pod_warmup_secs) + + for name, client_pod_spec in config.client_pod_specs_dict.iteritems(): + if not gke.launch_clients(client_pod_spec): + is_success = False # is_success is checked in the 'finally' block + return False + + print('Launched all clients. Waiting for %d seconds for the client pods to ' + 'be fully online') % config.global_settings.pod_warmup_secs + time.sleep(config.global_settings.pod_warmup_secs) + + start_time = datetime.datetime.now() + end_time = start_time + datetime.timedelta( + seconds=config.global_settings.test_duration_secs) + print 'Running the test until %s' % end_time.isoformat() + + while True: + if datetime.datetime.now() > end_time: + print 'Test was run for %d seconds' % tconfig.global_settings.test_duration_secs + break + + # Check if either stress server or clients have failed (btw, the bq_helper + # monitors all the rows in the summary table and checks if any of them + # have a failure status) + if bq_helper.check_if_any_tests_failed(): + is_success = False + print 'Some tests failed.' + # Note: Doing a break instead of a return False here because we still + # want bq_helper to print qps and summary tables + break + + # Things seem to be running fine. Wait until next poll time to check the + # status + print 'Sleeping for %d seconds..' % config.global_settings.test_poll_interval_secs + time.sleep(config.global_settings.test_poll_interval_secs) + + # Print BiqQuery tables + bq_helper.print_qps_records() + bq_helper.print_summary_records() + + finally: + # If is_success is False at this point, it means that the stress tests + # failed during pods creation or while running the tests. + # In this case we do should not delete the pods (especially if the failure + # happened while running the tests since the pods contain all the failure + # information like logs, crash dumps etc that is needed for debugging) + if is_success: + gke.delete_pods(config.server_pod_specs_dict.keys()) + gke.delete_pods(config.client_templates_dict.keys()) + + return is_success + + +argp = argparse.ArgumentParser( + description='Launch stress tests in GKE', + formatter_class=argparse.ArgumentDefaultsHelpFormatter) +argp.add_argument('--project_id', + required=True, + help='The Google Cloud Platform Project Id') +argp.add_argument('--config_file', + required=True, + type=str, + help='The test config file') + +if __name__ == '__main__': + args = argp.parse_args() + config = Config(args.config_file) + run_tests(config) From 8d41d518004077b522540c9156983fddd9d37dec Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Fri, 25 Mar 2016 14:50:31 -0700 Subject: [PATCH 62/74] Add build_type option --- tools/run_tests/stress_test/configs/opt-tsan.json | 8 +++++--- tools/run_tests/stress_test/run_on_gke.py | 15 ++++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/tools/run_tests/stress_test/configs/opt-tsan.json b/tools/run_tests/stress_test/configs/opt-tsan.json index 41401a3f564..dab78e5f4c8 100644 --- a/tools/run_tests/stress_test/configs/opt-tsan.json +++ b/tools/run_tests/stress_test/configs/opt-tsan.json @@ -2,11 +2,13 @@ "dockerImages": { "grpc_stress_cxx_opt" : { "buildScript": "tools/jenkins/build_interop_stress_image.sh", - "dockerFileDir": "grpc_interop_stress_cxx" + "dockerFileDir": "grpc_interop_stress_cxx", + "buildType": "opt" }, "grpc_stress_cxx_tsan": { "buildScript": "tools/jenkins/build_interop_stress_image.sh", - "dockerFileDir": "grpc_interop_stress_cxx" + "dockerFileDir": "grpc_interop_stress_cxx", + "buildType": "tsan" } }, @@ -103,7 +105,7 @@ "kubernetesProxyPort": 8001, "datasetIdNamePrefix": "stress_test_opt_tsan", "summaryTableId": "summary", - "qpsTableId": "qps" + "qpsTableId": "qps", "podWarmupSecs": 60 } } diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py index 3c95df2da0a..c301cf441a3 100755 --- a/tools/run_tests/stress_test/run_on_gke.py +++ b/tools/run_tests/stress_test/run_on_gke.py @@ -93,7 +93,7 @@ class ServerTemplate: class DockerImage: def __init__(self, gcp_project_id, image_name, build_script_path, - dockerfile_dir): + dockerfile_dir, build_type): """Args: image_name: The docker image name @@ -108,6 +108,7 @@ class DockerImage: self.gcp_project_id = gcp_project_id self.build_script_path = build_script_path self.dockerfile_dir = dockerfile_dir + self.build_type = build_type self.tag_name = self.make_tag_name(gcp_project_id, image_name) def make_tag_name(self, project_id, image_name): @@ -118,6 +119,7 @@ class DockerImage: os.environ['INTEROP_IMAGE'] = self.image_name os.environ['INTEROP_IMAGE_REPOSITORY_TAG'] = self.tag_name os.environ['BASE_NAME'] = self.dockerfile_dir + os.environ['BUILD_TYPE'] = self.build_type if subprocess.call(args=[self.build_script_path]) != 0: print 'Error in building the Docker image' return False @@ -334,12 +336,15 @@ class Config: """Parses the 'dockerImages' section of the config file and returns a Dictionary of 'DockerImage' objects keyed by docker image names""" docker_images_dict = {} - for image_name in config_dict['dockerImages'].keys(): - build_script_path = config_dict['dockerImages'][image_name]['buildScript'] - dockerfile_dir = config_dict['dockerImages'][image_name]['dockerFileDir'] + + docker_config_dict = config_dict['dockerImages'] + for image_name in docker_config_dict.keys(): + build_script_path = docker_config_dict[image_name]['buildScript'] + dockerfile_dir = docker_config_dict[image_name]['dockerFileDir'] + build_type = docker_config_dict[image_name]['buildType'] docker_images_dict[image_name] = DockerImage(gcp_project_id, image_name, build_script_path, - dockerfile_dir) + dockerfile_dir, build_type) return docker_images_dict def parse_client_templates(self, config_dict): From 815c589d7f5cd912f0785da2f4d4f1e88a343242 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Fri, 25 Mar 2016 15:03:50 -0700 Subject: [PATCH 63/74] Pass gcp_project_id via command line. Makes it easier to run on different projects with the same configuration --- tools/run_tests/stress_test/configs/opt-tsan.json | 1 - tools/run_tests/stress_test/run_on_gke.py | 12 ++++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/run_tests/stress_test/configs/opt-tsan.json b/tools/run_tests/stress_test/configs/opt-tsan.json index dab78e5f4c8..e0e487333ab 100644 --- a/tools/run_tests/stress_test/configs/opt-tsan.json +++ b/tools/run_tests/stress_test/configs/opt-tsan.json @@ -98,7 +98,6 @@ }, "globalSettings": { - "projectId": "sreek-gce", "buildDockerImages": true, "pollIntervalSecs": 60, "testDurationSecs": 120, diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py index c301cf441a3..4ef53f1d86c 100755 --- a/tools/run_tests/stress_test/run_on_gke.py +++ b/tools/run_tests/stress_test/run_on_gke.py @@ -307,9 +307,9 @@ class Gke: class Config: - def __init__(self, config_filename): + def __init__(self, config_filename, gcp_project_id): config_dict = self.load_config(config_filename) - self.global_settings = self.parse_global_settings(config_dict) + self.global_settings = self.parse_global_settings(config_dict, gcp_project_id) self.docker_images_dict = self.parse_docker_images( config_dict, self.global_settings.gcp_project_id) self.client_templates_dict = self.parse_client_templates(config_dict) @@ -320,9 +320,9 @@ class Config: config_dict, self.docker_images_dict, self.client_templates_dict, self.server_pod_specs_dict) - def parse_global_settings(self, config_dict): + def parse_global_settings(self, config_dict, gcp_project_id): global_settings_dict = config_dict['globalSettings'] - return GlobalSettings(global_settings_dict['projectId'], + return GlobalSettings(gcp_project_id, global_settings_dict['buildDockerImages'], global_settings_dict['pollIntervalSecs'], global_settings_dict['testDurationSecs'], @@ -564,7 +564,7 @@ def run_tests(config): argp = argparse.ArgumentParser( description='Launch stress tests in GKE', formatter_class=argparse.ArgumentDefaultsHelpFormatter) -argp.add_argument('--project_id', +argp.add_argument('--gcp_project_id', required=True, help='The Google Cloud Platform Project Id') argp.add_argument('--config_file', @@ -574,5 +574,5 @@ argp.add_argument('--config_file', if __name__ == '__main__': args = argp.parse_args() - config = Config(args.config_file) + config = Config(args.config_file, args.gcp_project_id) run_tests(config) From cdf773464d35de81f7068bfb2afca207f6b9eddf Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Fri, 25 Mar 2016 15:37:34 -0700 Subject: [PATCH 64/74] Minor corrections --- .../stress_test/configs/opt-tsan.json | 6 +- tools/run_tests/stress_test/run_on_gke.py | 143 ++++++++++++------ 2 files changed, 98 insertions(+), 51 deletions(-) diff --git a/tools/run_tests/stress_test/configs/opt-tsan.json b/tools/run_tests/stress_test/configs/opt-tsan.json index e0e487333ab..97d67e52fac 100644 --- a/tools/run_tests/stress_test/configs/opt-tsan.json +++ b/tools/run_tests/stress_test/configs/opt-tsan.json @@ -98,9 +98,9 @@ }, "globalSettings": { - "buildDockerImages": true, - "pollIntervalSecs": 60, - "testDurationSecs": 120, + "buildDockerImages": false, + "pollIntervalSecs": 10, + "testDurationSecs": 70, "kubernetesProxyPort": 8001, "datasetIdNamePrefix": "stress_test_opt_tsan", "summaryTableId": "summary", diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py index 4ef53f1d86c..c8131b2d878 100755 --- a/tools/run_tests/stress_test/run_on_gke.py +++ b/tools/run_tests/stress_test/run_on_gke.py @@ -87,7 +87,7 @@ class ServerTemplate: self.server_image_path = server_image_path self.wrapper_script_path = wrapper_script_path self.server_port = server_port - self.sever_args_dict = server_args_dict + self.server_args_dict = server_args_dict class DockerImage: @@ -109,17 +109,19 @@ class DockerImage: self.build_script_path = build_script_path self.dockerfile_dir = dockerfile_dir self.build_type = build_type - self.tag_name = self.make_tag_name(gcp_project_id, image_name) + self.tag_name = self._make_tag_name(gcp_project_id, image_name) - def make_tag_name(self, project_id, image_name): + def _make_tag_name(self, project_id, image_name): return 'gcr.io/%s/%s' % (project_id, image_name) def build_image(self): - print 'Building docker image: %s' % self.image_name + print 'Building docker image: %s (tag: %s)' % (self.image_name, + self.tag_name) os.environ['INTEROP_IMAGE'] = self.image_name os.environ['INTEROP_IMAGE_REPOSITORY_TAG'] = self.tag_name os.environ['BASE_NAME'] = self.dockerfile_dir os.environ['BUILD_TYPE'] = self.build_type + print 'DEBUG: path: ', self.build_script_path if subprocess.call(args=[self.build_script_path]) != 0: print 'Error in building the Docker image' return False @@ -127,7 +129,7 @@ class DockerImage: def push_to_gke_registry(self): cmd = ['gcloud', 'docker', 'push', self.tag_name] - print 'Pushing the image %s to the GKE registry..' % self.tag_name + print 'Pushing %s to the GKE registry..' % self.tag_name if subprocess.call(args=cmd) != 0: print 'Error in pushing the image %s to the GKE registry' % self.tag_name return False @@ -143,7 +145,7 @@ class ServerPodSpec: self.num_instances = num_instances def pod_names(self): - """ Return a list of names of server pods to create """ + """ Return a list of names of server pods to create. """ return ['%s-%d' % (self.name, i) for i in range(1, self.num_instances + 1)] def server_addresses(self): @@ -168,9 +170,11 @@ class ClientPodSpec: """ Return a list of names of client pods to create """ return ['%s-%d' % (self.name, i) for i in range(1, self.num_instances + 1)] + # The client args in the template do not have server addresses. This function + # adds the server addresses and returns the updated client args def get_client_args_dict(self): args_dict = self.template.client_args_dict.copy() - args_dict['server_addresses'] = server_addresses + args_dict['server_addresses'] = self.server_addresses return args_dict @@ -183,7 +187,7 @@ class Gke: cmd = ['kubectl', 'proxy', '--port=%d' % port] self.p = subprocess.Popen(args=cmd) time.sleep(2) - print 'Started kubernetes proxy on port: %d' % port + print '\nStarted kubernetes proxy on port: %d' % port def __del__(self): if self.p is not None: @@ -197,6 +201,9 @@ class Gke: self.dataset_id = dataset_id self.summary_table_id = summary_table_id self.qps_table_id = qps_table_id + + # The environment variables we would like to pass to every pod (both client + # and server) launched in GKE self.gke_env = { 'RUN_ID': self.run_id, 'GCP_PROJECT_ID': self.project_id, @@ -207,7 +214,7 @@ class Gke: self.kubernetes_port = kubernetes_port # Start kubernetes proxy - self.kubernetes_proxy = KubernetesProxy(kubernetes_port) + self.kubernetes_proxy = Gke.KubernetesProxy(kubernetes_port) def _args_dict_to_str(self, args_dict): return ' '.join('--%s=%s' % (k, args_dict[k]) for k in args_dict.keys()) @@ -222,8 +229,8 @@ class Gke: # The parameters to the wrapper script (defined in # server_pod_spec.template.wrapper_script_path) are are injected into the # container via environment variables - server_env = self.gke_env().copy() - serv_env.update({ + server_env = self.gke_env.copy() + server_env.update({ 'STRESS_TEST_IMAGE_TYPE': 'SERVER', 'STRESS_TEST_IMAGE': server_pod_spec.template.server_image_path, 'STRESS_TEST_ARGS_STR': self._args_dict_to_str( @@ -232,6 +239,7 @@ class Gke: for pod_name in server_pod_spec.pod_names(): server_env['POD_NAME'] = pod_name + print 'Creating server: %s' % pod_name is_success = kubernetes_api.create_pod_and_service( 'localhost', self.kubernetes_port, @@ -242,12 +250,15 @@ class Gke: [container_cmd], [], # Args list is empty since we are passing all args via env variables server_env, - True # Headless = True for server to that GKE creates a DNS record for 'pod_name' + True # Headless = True for server to that GKE creates a DNS record for pod_name ) if not is_success: print 'Error in launching server: %s' % pod_name break + if is_success: + print 'Successfully created server(s)' + return is_success def launch_clients(self, client_pod_spec): @@ -270,11 +281,12 @@ class Gke: client_pod_spec.template.metrics_client_image_path, 'METRICS_CLIENT_ARGS_STR': self._args_dict_to_str( client_pod_spec.template.metrics_args_dict), - 'POLL_INTERVAL_SECS': client_pod_spec.template.poll_interval_secs + 'POLL_INTERVAL_SECS': str(client_pod_spec.template.poll_interval_secs) }) for pod_name in client_pod_spec.pod_names(): client_env['POD_NAME'] = pod_name + print 'Creating client: %s' % pod_name is_success = kubernetes_api.create_pod_and_service( 'localhost', self.kubernetes_port, @@ -292,35 +304,57 @@ class Gke: print 'Error in launching client %s' % pod_name break - return True + if is_success: + print 'Successfully created all client(s)' + + return is_success - def delete_pods(pod_name_list): + def _delete_pods(self, pod_name_list): + is_success = True for pod_name in pod_name_list: + print 'Deleting %s' % pod_name is_success = kubernetes_api.delete_pod_and_service( 'localhost', self.kubernetes_port, 'default', # default namespace pod_name) + if not is_success: - return False + print 'Error in deleting pod %s' % pod_name + break + + if is_success: + print 'Successfully deleted all pods' + + return is_success + + def delete_servers(self, server_pod_spec): + return self._delete_pods(server_pod_spec.pod_names()) + + def delete_clients(self, client_pod_spec): + return self._delete_pods(client_pod_spec.pod_names()) class Config: def __init__(self, config_filename, gcp_project_id): - config_dict = self.load_config(config_filename) - self.global_settings = self.parse_global_settings(config_dict, gcp_project_id) - self.docker_images_dict = self.parse_docker_images( + print 'Loading configuration...' + config_dict = self._load_config(config_filename) + + self.global_settings = self._parse_global_settings(config_dict, + gcp_project_id) + self.docker_images_dict = self._parse_docker_images( config_dict, self.global_settings.gcp_project_id) - self.client_templates_dict = self.parse_client_templates(config_dict) - self.server_templates_dict = self.parse_server_templates(config_dict) - self.server_pod_specs_dict = self.parse_server_pod_specs( + self.client_templates_dict = self._parse_client_templates(config_dict) + self.server_templates_dict = self._parse_server_templates(config_dict) + self.server_pod_specs_dict = self._parse_server_pod_specs( config_dict, self.docker_images_dict, self.server_templates_dict) - self.client_pod_specs_dict = self.parse_client_pod_specs( + self.client_pod_specs_dict = self._parse_client_pod_specs( config_dict, self.docker_images_dict, self.client_templates_dict, self.server_pod_specs_dict) + print 'Loaded Configuaration.' - def parse_global_settings(self, config_dict, gcp_project_id): + def _parse_global_settings(self, config_dict, gcp_project_id): global_settings_dict = config_dict['globalSettings'] return GlobalSettings(gcp_project_id, global_settings_dict['buildDockerImages'], @@ -332,7 +366,7 @@ class Config: global_settings_dict['qpsTableId'], global_settings_dict['podWarmupSecs']) - def parse_docker_images(self, config_dict, gcp_project_id): + def _parse_docker_images(self, config_dict, gcp_project_id): """Parses the 'dockerImages' section of the config file and returns a Dictionary of 'DockerImage' objects keyed by docker image names""" docker_images_dict = {} @@ -347,7 +381,7 @@ class Config: dockerfile_dir, build_type) return docker_images_dict - def parse_client_templates(self, config_dict): + def _parse_client_templates(self, config_dict): """Parses the 'clientTemplates' section of the config file and returns a Dictionary of 'ClientTemplate' objects keyed by client template names. @@ -382,7 +416,7 @@ class Config: return client_templates_dict - def parse_server_templates(self, config_dict): + def _parse_server_templates(self, config_dict): """Parses the 'serverTemplates' section of the config file and returns a Dictionary of 'serverTemplate' objects keyed by server template names. @@ -417,7 +451,7 @@ class Config: return server_templates_dict - def parse_server_pod_specs(self, config_dict, docker_images_dict, + def _parse_server_pod_specs(self, config_dict, docker_images_dict, server_templates_dict): """Parses the 'serverPodSpecs' sub-section (under 'testMatrix' section) of the config file and returns a Dictionary of 'ServerPodSpec' objects keyed @@ -439,7 +473,7 @@ class Config: return server_pod_specs_dict - def parse_client_pod_specs(self, config_dict, docker_images_dict, + def _parse_client_pod_specs(self, config_dict, docker_images_dict, client_templates_dict, server_pod_specs_dict): """Parses the 'clientPodSpecs' sub-section (under 'testMatrix' section) of the config file and returns a Dictionary of 'ClientPodSpec' objects keyed @@ -464,11 +498,11 @@ class Config: return client_pod_specs_dict - def load_config(self, config_filename): + def _load_config(self, config_filename): """Opens the config file and converts the Json text to Dictionary""" if not os.path.isabs(config_filename): - config_filename = os.path.join( - os.path.dirname(sys.argv[0]), config_filename) + raise Exception('Config objects expects an absolute file path. ' + 'config file name passed: %s' % config_filename) with open(config_filename) as config_file: return json.load(config_file) @@ -487,7 +521,8 @@ def run_tests(config): run_id = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S') dataset_id = '%s_%s' % (config.global_settings.dataset_id_prefix, run_id) - bq_helper = BigQueryHelper(run_id, '', '', args.project_id, dataset_id, + bq_helper = BigQueryHelper(run_id, '', '', + config.global_settings.gcp_project_id, dataset_id, config.global_settings.summary_table_id, config.global_settings.qps_table_id) bq_helper.initialize() @@ -500,7 +535,7 @@ def run_tests(config): is_success = True try: - # Launch all servers first + print 'Launching servers..' for name, server_pod_spec in config.server_pod_specs_dict.iteritems(): if not gke.launch_servers(server_pod_spec): is_success = False # is_success is checked in the 'finally' block @@ -526,7 +561,7 @@ def run_tests(config): while True: if datetime.datetime.now() > end_time: - print 'Test was run for %d seconds' % tconfig.global_settings.test_duration_secs + print 'Test was run for %d seconds' % config.global_settings.test_duration_secs break # Check if either stress server or clients have failed (btw, the bq_helper @@ -535,12 +570,9 @@ def run_tests(config): if bq_helper.check_if_any_tests_failed(): is_success = False print 'Some tests failed.' - # Note: Doing a break instead of a return False here because we still - # want bq_helper to print qps and summary tables - break + break # Don't 'return' here. We still want to call bq_helper to print qps/summary tables - # Things seem to be running fine. Wait until next poll time to check the - # status + # Tests running fine. Wait until next poll time to check the status print 'Sleeping for %d seconds..' % config.global_settings.test_poll_interval_secs time.sleep(config.global_settings.test_poll_interval_secs) @@ -549,14 +581,13 @@ def run_tests(config): bq_helper.print_summary_records() finally: - # If is_success is False at this point, it means that the stress tests - # failed during pods creation or while running the tests. - # In this case we do should not delete the pods (especially if the failure - # happened while running the tests since the pods contain all the failure - # information like logs, crash dumps etc that is needed for debugging) + # If there was a test failure, we should not delete the pods since they + # would contain useful debug information (logs, core dumps etc) if is_success: - gke.delete_pods(config.server_pod_specs_dict.keys()) - gke.delete_pods(config.client_templates_dict.keys()) + for name, server_pod_spec in config.server_pod_specs_dict.iteritems(): + gke.delete_servers(server_pod_spec) + for name, client_pod_spec in config.client_pod_specs_dict.iteritems(): + gke.delete_clients(client_pod_spec) return is_success @@ -574,5 +605,21 @@ argp.add_argument('--config_file', if __name__ == '__main__': args = argp.parse_args() - config = Config(args.config_file, args.gcp_project_id) + + config_filename = args.config_file + + # Convert config_filename to absolute path + if not os.path.isabs(config_filename): + config_filename = os.path.abspath(os.path.join( + os.path.dirname(sys.argv[0]), config_filename)) + + config = Config(config_filename, args.gcp_project_id) + + # Change current working directory to grpc root + # (This is important because all relative file paths in the config file are + # supposed to interpreted as relative to the GRPC root) + grpc_root = os.path.abspath(os.path.join( + os.path.dirname(sys.argv[0]), '../../..')) + os.chdir(grpc_root) + run_tests(config) From 5cadf517c7d0578e71e4b9663e5c7858d8557cb5 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 08:55:11 -0700 Subject: [PATCH 65/74] More config files --- .../stress_test/configs/opt-tsan.json | 31 +- tools/run_tests/stress_test/configs/opt.json | 86 +++ tools/run_tests/stress_test/run_on_gke.py | 8 +- .../stress_test/run_stress_tests_on_gke.py | 573 ------------------ 4 files changed, 119 insertions(+), 579 deletions(-) create mode 100644 tools/run_tests/stress_test/configs/opt.json delete mode 100755 tools/run_tests/stress_test/run_stress_tests_on_gke.py diff --git a/tools/run_tests/stress_test/configs/opt-tsan.json b/tools/run_tests/stress_test/configs/opt-tsan.json index 97d67e52fac..67d0484e7c0 100644 --- a/tools/run_tests/stress_test/configs/opt-tsan.json +++ b/tools/run_tests/stress_test/configs/opt-tsan.json @@ -9,8 +9,13 @@ "buildScript": "tools/jenkins/build_interop_stress_image.sh", "dockerFileDir": "grpc_interop_stress_cxx", "buildType": "tsan" + }, + "grpc_stress_cxx_asan": { + "buildScript": "tools/jenkins/build_interop_stress_image.sh", + "dockerFileDir": "grpc_interop_stress_cxx", + "buildType": "asan" } - }, + }, "clientTemplates": { "baseTemplates": { @@ -41,6 +46,11 @@ "baseTemplate": "default", "clientImagePath": "/var/local/git/grpc/bins/tsan/stress_test", "metricsClientImagePath": "/var/local/git/grpc/bins/tsan/metrics_client" + }, + "cxx_client_asan": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/asan/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/asan/metrics_client" } } }, @@ -63,6 +73,10 @@ "cxx_server_tsan": { "baseTemplate": "default", "serverImagePath": "/var/local/git/grpc/bins/tsan/interop_server" + }, + "cxx_server_asan": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/asan/interop_server" } } }, @@ -78,8 +92,13 @@ "serverTemplate": "cxx_server_tsan", "dockerImage": "grpc_stress_cxx_tsan", "numInstances": 1 + }, + "stress-server-asan": { + "serverTemplate": "cxx_server_asan", + "dockerImage": "grpc_stress_cxx_asan", + "numInstances": 1 } - }, + }, "clientPodSpecs": { "stress-client-opt": { @@ -88,6 +107,12 @@ "numInstances": 3, "serverPodSpec": "stress-server-opt" }, + "stress-client-tsan": { + "clientTemplate": "cxx_client_tsan", + "dockerImage": "grpc_stress_cxx_tsan", + "numInstances": 3, + "serverPodSpec": "stress-server-tsan" + }, "stress-client-tsan": { "clientTemplate": "cxx_client_tsan", "dockerImage": "grpc_stress_cxx_tsan", @@ -98,7 +123,7 @@ }, "globalSettings": { - "buildDockerImages": false, + "buildDockerImages": true, "pollIntervalSecs": 10, "testDurationSecs": 70, "kubernetesProxyPort": 8001, diff --git a/tools/run_tests/stress_test/configs/opt.json b/tools/run_tests/stress_test/configs/opt.json new file mode 100644 index 00000000000..2569ca16b9d --- /dev/null +++ b/tools/run_tests/stress_test/configs/opt.json @@ -0,0 +1,86 @@ +{ + "dockerImages": { + "grpc_stress_cxx_opt" : { + "buildScript": "tools/jenkins/build_interop_stress_image.sh", + "dockerFileDir": "grpc_interop_stress_cxx", + "buildType": "opt" + } + }, + + "clientTemplates": { + "baseTemplates": { + "default": { + "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py", + "pollIntervalSecs": 60, + "clientArgs": { + "num_channels_per_server":5, + "num_stubs_per_channel":10, + "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1", + "metrics_port": 8081, + "metrics_collection_interval_secs":60 + }, + "metricsPort": 8081, + "metricsArgs": { + "metrics_server_address": "localhost:8081", + "total_only": "true" + } + } + }, + "templates": { + "cxx_client_opt": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/opt/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/opt/metrics_client" + } + } + }, + + "serverTemplates": { + "baseTemplates":{ + "default": { + "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py", + "serverPort": 8080, + "serverArgs": { + "port": 8080 + } + } + }, + "templates": { + "cxx_server_opt": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/opt/interop_server" + } + } + }, + + "testMatrix": { + "serverPodSpecs": { + "stress-server-opt": { + "serverTemplate": "cxx_server_opt", + "dockerImage": "grpc_stress_cxx_opt", + "numInstances": 1 + } + }, + + "clientPodSpecs": { + "stress-client-opt": { + "clientTemplate": "cxx_client_opt", + "dockerImage": "grpc_stress_cxx_opt", + "numInstances": 10, + "serverPodSpec": "stress-server-opt" + } + } + }, + + "globalSettings": { + "buildDockerImages": false, + "pollIntervalSecs": 10, + "testDurationSecs": 70, + "kubernetesProxyPort": 8001, + "datasetIdNamePrefix": "stress_test_opt", + "summaryTableId": "summary", + "qpsTableId": "qps", + "podWarmupSecs": 60 + } +} + diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py index c8131b2d878..c4d18038097 100755 --- a/tools/run_tests/stress_test/run_on_gke.py +++ b/tools/run_tests/stress_test/run_on_gke.py @@ -608,10 +608,12 @@ if __name__ == '__main__': config_filename = args.config_file - # Convert config_filename to absolute path + # Since we will be changing the current working directory to grpc root in the + # next step, we should check if the config filename path is a relative path + # (i.e a path relative to the current working directory) and if so, convert it + # to abosulte path if not os.path.isabs(config_filename): - config_filename = os.path.abspath(os.path.join( - os.path.dirname(sys.argv[0]), config_filename)) + config_filename = os.path.abspath(config_filename) config = Config(config_filename, args.gcp_project_id) diff --git a/tools/run_tests/stress_test/run_stress_tests_on_gke.py b/tools/run_tests/stress_test/run_stress_tests_on_gke.py deleted file mode 100755 index 79075f816cc..00000000000 --- a/tools/run_tests/stress_test/run_stress_tests_on_gke.py +++ /dev/null @@ -1,573 +0,0 @@ -#!/usr/bin/env python2.7 -# Copyright 2015-2016, Google Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import argparse -import datetime -import os -import subprocess -import sys -import time - -stress_test_utils_dir = os.path.abspath(os.path.join( - os.path.dirname(__file__), '../../gcp/stress_test')) -sys.path.append(stress_test_utils_dir) -from stress_test_utils import BigQueryHelper - -kubernetes_api_dir = os.path.abspath(os.path.join( - os.path.dirname(__file__), '../../gcp/utils')) -sys.path.append(kubernetes_api_dir) - -import kubernetes_api - -_GRPC_ROOT = os.path.abspath(os.path.join( - os.path.dirname(sys.argv[0]), '../../..')) -os.chdir(_GRPC_ROOT) - -# num of seconds to wait for the GKE image to start and warmup -_GKE_IMAGE_WARMUP_WAIT_SECS = 60 - -_SERVER_POD_NAME = 'stress-server' -_CLIENT_POD_NAME_PREFIX = 'stress-client' -_DATASET_ID_PREFIX = 'stress_test' -_SUMMARY_TABLE_ID = 'summary' -_QPS_TABLE_ID = 'qps' - -_DEFAULT_DOCKER_IMAGE_NAME = 'grpc_stress_test' - -# The default port on which the kubernetes proxy server is started on localhost -# (i.e kubectl proxy --port=) -_DEFAULT_KUBERNETES_PROXY_PORT = 8001 - -# How frequently should the stress client wrapper script (running inside a GKE -# container) poll the health of the stress client (also running inside the GKE -# container) and upload metrics to BigQuery -_DEFAULT_STRESS_CLIENT_POLL_INTERVAL_SECS = 60 - -# The default setting for stress test server and client -_DEFAULT_STRESS_SERVER_PORT = 8080 -_DEFAULT_METRICS_PORT = 8081 -_DEFAULT_TEST_CASES_STR = 'empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1' -_DEFAULT_NUM_CHANNELS_PER_SERVER = 5 -_DEFAULT_NUM_STUBS_PER_CHANNEL = 10 -_DEFAULT_METRICS_COLLECTION_INTERVAL_SECS = 30 - -# Number of stress client instances to launch -_DEFAULT_NUM_CLIENTS = 3 - -# How frequently should this test monitor the health of Stress clients and -# Servers running in GKE -_DEFAULT_TEST_POLL_INTERVAL_SECS = 60 - -# Default run time for this test (2 hour) -_DEFAULT_TEST_DURATION_SECS = 7200 - -# The number of seconds it would take a GKE pod to warm up (i.e get to 'Running' -# state from the time of creation). Ideally this is something the test should -# automatically determine by using Kubernetes API to poll the pods status. -_DEFAULT_GKE_WARMUP_SECS = 60 - - -class KubernetesProxy: - """ Class to start a proxy on localhost to the Kubernetes API server """ - - def __init__(self, api_port): - self.port = api_port - self.p = None - self.started = False - - def start(self): - cmd = ['kubectl', 'proxy', '--port=%d' % self.port] - self.p = subprocess.Popen(args=cmd) - self.started = True - time.sleep(2) - print '..Started' - - def get_port(self): - return self.port - - def is_started(self): - return self.started - - def __del__(self): - if self.p is not None: - print 'Shutting down Kubernetes proxy..' - self.p.kill() - - -class TestSettings: - - def __init__(self, build_docker_image, build_type, test_poll_interval_secs, - test_duration_secs, kubernetes_proxy_port): - self.build_docker_image = build_docker_image - self.build_type = build_type - self.test_poll_interval_secs = test_poll_interval_secs - self.test_duration_secs = test_duration_secs - self.kubernetes_proxy_port = kubernetes_proxy_port - - -class GkeSettings: - - def __init__(self, project_id, docker_image_name): - self.project_id = project_id - self.docker_image_name = docker_image_name - self.tag_name = 'gcr.io/%s/%s' % (project_id, docker_image_name) - - -class BigQuerySettings: - - def __init__(self, run_id, dataset_id, summary_table_id, qps_table_id): - self.run_id = run_id - self.dataset_id = dataset_id - self.summary_table_id = summary_table_id - self.qps_table_id = qps_table_id - - -class StressServerSettings: - - def __init__(self, build_type, server_pod_name, server_port): - self.build_type = build_type - self.server_pod_name = server_pod_name - self.server_port = server_port - - -class StressClientSettings: - - def __init__(self, build_type, num_clients, client_pod_name_prefix, - server_pod_name, server_port, metrics_port, - metrics_collection_interval_secs, - stress_client_poll_interval_secs, num_channels_per_server, - num_stubs_per_channel, test_cases_str): - self.build_type = build_type - self.num_clients = num_clients - self.client_pod_name_prefix = client_pod_name_prefix - self.server_pod_name = server_pod_name - self.server_port = server_port - self.metrics_port = metrics_port - self.metrics_collection_interval_secs = metrics_collection_interval_secs - self.stress_client_poll_interval_secs = stress_client_poll_interval_secs - self.num_channels_per_server = num_channels_per_server - self.num_stubs_per_channel = num_stubs_per_channel - self.test_cases_str = test_cases_str - - # == Derived properties == - # Note: Client can accept a list of server addresses (a comma separated list - # of 'server_name:server_port'). In this case, we only have one server - # address to pass - self.server_addresses = '%s.default.svc.cluster.local:%d' % ( - server_pod_name, server_port) - self.client_pod_names_list = ['%s-%d' % (client_pod_name_prefix, i) - for i in range(1, num_clients + 1)] - - -def _build_docker_image(image_name, tag_name, build_type): - """ Build the docker image and add tag it to the GKE repository """ - print 'Building docker image: %s' % image_name - os.environ['INTEROP_IMAGE'] = image_name - os.environ['INTEROP_IMAGE_REPOSITORY_TAG'] = tag_name - # Note that 'BASE_NAME' HAS to be 'grpc_interop_stress_cxx' since the script - # build_interop_stress_image.sh invokes the following script: - # tools/dockerfile/$BASE_NAME/build_interop_stress.sh - os.environ['BASE_NAME'] = 'grpc_interop_stress_cxx' - os.environ['BUILD_TYPE'] = build_type - cmd = ['tools/jenkins/build_interop_stress_image.sh'] - retcode = subprocess.call(args=cmd) - if retcode != 0: - print 'Error in building docker image' - return False - return True - - -def _push_docker_image_to_gke_registry(docker_tag_name): - """Executes 'gcloud docker push ' to push the image to GKE registry""" - cmd = ['gcloud', 'docker', 'push', docker_tag_name] - print 'Pushing %s to GKE registry..' % docker_tag_name - retcode = subprocess.call(args=cmd) - if retcode != 0: - print 'Error in pushing docker image %s to the GKE registry' % docker_tag_name - return False - return True - - -def _launch_server(gke_settings, stress_server_settings, bq_settings, - kubernetes_proxy): - """ Launches a stress test server instance in GKE cluster """ - if not kubernetes_proxy.is_started: - print 'Kubernetes proxy must be started before calling this function' - return False - - # This is the wrapper script that is run in the container. This script runs - # the actual stress test server - server_cmd_list = ['/var/local/git/grpc/tools/gcp/stress_test/run_server.py'] - - # run_server.py does not take any args from the command line. The args are - # instead passed via environment variables (see server_env below) - server_arg_list = [] - - # The parameters to the script run_server.py are injected into the container - # via environment variables - stress_test_image_path = '/var/local/git/grpc/bins/%s/interop_server' % stress_server_settings.build_type - server_env = { - 'STRESS_TEST_IMAGE_TYPE': 'SERVER', - 'STRESS_TEST_IMAGE': stress_test_image_path, - 'STRESS_TEST_ARGS_STR': '--port=%s' % stress_server_settings.server_port, - 'RUN_ID': bq_settings.run_id, - 'POD_NAME': stress_server_settings.server_pod_name, - 'GCP_PROJECT_ID': gke_settings.project_id, - 'DATASET_ID': bq_settings.dataset_id, - 'SUMMARY_TABLE_ID': bq_settings.summary_table_id, - 'QPS_TABLE_ID': bq_settings.qps_table_id - } - - # Launch Server - is_success = kubernetes_api.create_pod_and_service( - 'localhost', - kubernetes_proxy.get_port(), - 'default', # Use 'default' namespace - stress_server_settings.server_pod_name, - gke_settings.tag_name, - [stress_server_settings.server_port], # Port that should be exposed - server_cmd_list, - server_arg_list, - server_env, - True # Headless = True for server. Since we want DNS records to be created by GKE - ) - - return is_success - - -def _launch_client(gke_settings, stress_server_settings, stress_client_settings, - bq_settings, kubernetes_proxy): - """ Launches a configurable number of stress test clients on GKE cluster """ - if not kubernetes_proxy.is_started: - print 'Kubernetes proxy must be started before calling this function' - return False - - stress_client_arg_list = [ - '--server_addresses=%s' % stress_client_settings.server_addresses, - '--test_cases=%s' % stress_client_settings.test_cases_str, - '--num_stubs_per_channel=%d' % - stress_client_settings.num_stubs_per_channel - ] - - # This is the wrapper script that is run in the container. This script runs - # the actual stress client - client_cmd_list = ['/var/local/git/grpc/tools/gcp/stress_test/run_client.py'] - - # run_client.py takes no args. All args are passed as env variables (see - # client_env) - client_arg_list = [] - - metrics_server_address = 'localhost:%d' % stress_client_settings.metrics_port - metrics_client_arg_list = [ - '--metrics_server_address=%s' % metrics_server_address, - '--total_only=true' - ] - - # The parameters to the script run_client.py are injected into the container - # via environment variables - stress_test_image_path = '/var/local/git/grpc/bins/%s/stress_test' % stress_client_settings.build_type - metrics_client_image_path = '/var/local/git/grpc/bins/%s/metrics_client' % stress_client_settings.build_type - client_env = { - 'STRESS_TEST_IMAGE_TYPE': 'CLIENT', - 'STRESS_TEST_IMAGE': stress_test_image_path, - 'STRESS_TEST_ARGS_STR': ' '.join(stress_client_arg_list), - 'METRICS_CLIENT_IMAGE': metrics_client_image_path, - 'METRICS_CLIENT_ARGS_STR': ' '.join(metrics_client_arg_list), - 'RUN_ID': bq_settings.run_id, - 'POLL_INTERVAL_SECS': - str(stress_client_settings.stress_client_poll_interval_secs), - 'GCP_PROJECT_ID': gke_settings.project_id, - 'DATASET_ID': bq_settings.dataset_id, - 'SUMMARY_TABLE_ID': bq_settings.summary_table_id, - 'QPS_TABLE_ID': bq_settings.qps_table_id - } - - for pod_name in stress_client_settings.client_pod_names_list: - client_env['POD_NAME'] = pod_name - is_success = kubernetes_api.create_pod_and_service( - 'localhost', # Since proxy is running on localhost - kubernetes_proxy.get_port(), - 'default', # default namespace - pod_name, - gke_settings.tag_name, - [stress_client_settings.metrics_port - ], # Client pods expose metrics port - client_cmd_list, - client_arg_list, - client_env, - False # Client is not a headless service - ) - if not is_success: - print 'Error in launching client %s' % pod_name - return False - - return True - - -def _launch_server_and_client(gke_settings, stress_server_settings, - stress_client_settings, bq_settings, - kubernetes_proxy_port): - # Start kubernetes proxy - print 'Kubernetes proxy' - kubernetes_proxy = KubernetesProxy(kubernetes_proxy_port) - kubernetes_proxy.start() - - print 'Launching server..' - is_success = _launch_server(gke_settings, stress_server_settings, bq_settings, - kubernetes_proxy) - if not is_success: - print 'Error in launching server' - return False - - # Server takes a while to start. - # TODO(sree) Use Kubernetes API to query the status of the server instead of - # sleeping - print 'Waiting for %s seconds for the server to start...' % _GKE_IMAGE_WARMUP_WAIT_SECS - time.sleep(_GKE_IMAGE_WARMUP_WAIT_SECS) - - # Launch client - client_pod_name_prefix = 'stress-client' - is_success = _launch_client(gke_settings, stress_server_settings, - stress_client_settings, bq_settings, - kubernetes_proxy) - - if not is_success: - print 'Error in launching client(s)' - return False - - print 'Waiting for %s seconds for the client images to start...' % _GKE_IMAGE_WARMUP_WAIT_SECS - time.sleep(_GKE_IMAGE_WARMUP_WAIT_SECS) - return True - - -def _delete_server_and_client(stress_server_settings, stress_client_settings, - kubernetes_proxy_port): - kubernetes_proxy = KubernetesProxy(kubernetes_proxy_port) - kubernetes_proxy.start() - - # Delete clients first - is_success = True - for pod_name in stress_client_settings.client_pod_names_list: - is_success = kubernetes_api.delete_pod_and_service( - 'localhost', kubernetes_proxy_port, 'default', pod_name) - if not is_success: - return False - - # Delete server - is_success = kubernetes_api.delete_pod_and_service( - 'localhost', kubernetes_proxy_port, 'default', - stress_server_settings.server_pod_name) - return is_success - - -def run_test_main(test_settings, gke_settings, stress_server_settings, - stress_client_clients): - is_success = True - - if test_settings.build_docker_image: - is_success = _build_docker_image(gke_settings.docker_image_name, - gke_settings.tag_name, - test_settings.build_type) - if not is_success: - return False - - is_success = _push_docker_image_to_gke_registry(gke_settings.tag_name) - if not is_success: - return False - - # Create a unique id for this run (Note: Using timestamp instead of UUID to - # make it easier to deduce the date/time of the run just by looking at the run - # run id. This is useful in debugging when looking at records in Biq query) - run_id = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S') - dataset_id = '%s_%s' % (_DATASET_ID_PREFIX, run_id) - - # Big Query settings (common for both Stress Server and Client) - bq_settings = BigQuerySettings(run_id, dataset_id, _SUMMARY_TABLE_ID, - _QPS_TABLE_ID) - - bq_helper = BigQueryHelper(run_id, '', '', args.project_id, dataset_id, - _SUMMARY_TABLE_ID, _QPS_TABLE_ID) - bq_helper.initialize() - - try: - is_success = _launch_server_and_client(gke_settings, stress_server_settings, - stress_client_settings, bq_settings, - test_settings.kubernetes_proxy_port) - if not is_success: - return False - - start_time = datetime.datetime.now() - end_time = start_time + datetime.timedelta( - seconds=test_settings.test_duration_secs) - print 'Running the test until %s' % end_time.isoformat() - - while True: - if datetime.datetime.now() > end_time: - print 'Test was run for %d seconds' % test_settings.test_duration_secs - break - - # Check if either stress server or clients have failed - if bq_helper.check_if_any_tests_failed(): - is_success = False - print 'Some tests failed.' - break - - # Things seem to be running fine. Wait until next poll time to check the - # status - print 'Sleeping for %d seconds..' % test_settings.test_poll_interval_secs - time.sleep(test_settings.test_poll_interval_secs) - - # Print BiqQuery tables - bq_helper.print_summary_records() - bq_helper.print_qps_records() - - finally: - # If is_success is False at this point, it means that the stress tests were - # started successfully but failed while running the tests. In this case we - # do should not delete the pods (since they contain all the failure - # information) - if is_success: - _delete_server_and_client(stress_server_settings, stress_client_settings, - test_settings.kubernetes_proxy_port) - - return is_success - - -argp = argparse.ArgumentParser( - description='Launch stress tests in GKE', - formatter_class=argparse.ArgumentDefaultsHelpFormatter) -argp.add_argument('--project_id', - required=True, - help='The Google Cloud Platform Project Id') -argp.add_argument('--num_clients', - default=1, - type=int, - help='Number of client instances to start') -argp.add_argument('--docker_image_name', - default=_DEFAULT_DOCKER_IMAGE_NAME, - help='The name of the docker image containing stress client ' - 'and stress servers') -argp.add_argument('--build_docker_image', - dest='build_docker_image', - action='store_true', - help='Build a docker image and push to Google Container ' - 'Registry') -argp.add_argument('--do_not_build_docker_image', - dest='build_docker_image', - action='store_false', - help='Do not build and push docker image to Google Container ' - 'Registry') -argp.set_defaults(build_docker_image=True) - -argp.add_argument('--build_type', - choices=['opt', 'dbg', 'asan', 'tsan'], - default='opt', - help='The type of build i.e opt, dbg, asan or tsan.') - -argp.add_argument('--test_poll_interval_secs', - default=_DEFAULT_TEST_POLL_INTERVAL_SECS, - type=int, - help='How frequently should this script should monitor the ' - 'health of stress clients and servers running in the GKE ' - 'cluster') -argp.add_argument('--test_duration_secs', - default=_DEFAULT_TEST_DURATION_SECS, - type=int, - help='How long should this test be run') -argp.add_argument('--kubernetes_proxy_port', - default=_DEFAULT_KUBERNETES_PROXY_PORT, - type=int, - help='The port on which the kubernetes proxy (on localhost)' - ' is started') -argp.add_argument('--stress_server_port', - default=_DEFAULT_STRESS_SERVER_PORT, - type=int, - help='The port on which the stress server (in GKE ' - 'containers) listens') -argp.add_argument('--stress_client_metrics_port', - default=_DEFAULT_METRICS_PORT, - type=int, - help='The port on which the stress clients (in GKE ' - 'containers) expose metrics') -argp.add_argument('--stress_client_poll_interval_secs', - default=_DEFAULT_STRESS_CLIENT_POLL_INTERVAL_SECS, - type=int, - help='How frequently should the stress client wrapper script' - ' running inside GKE should monitor health of the actual ' - ' stress client process and upload the metrics to BigQuery') -argp.add_argument('--stress_client_metrics_collection_interval_secs', - default=_DEFAULT_METRICS_COLLECTION_INTERVAL_SECS, - type=int, - help='How frequently should metrics be collected in-memory on' - ' the stress clients (running inside GKE containers). Note ' - 'that this is NOT the same as the upload-to-BigQuery ' - 'frequency. The metrics upload frequency is controlled by the' - ' --stress_client_poll_interval_secs flag') -argp.add_argument('--stress_client_num_channels_per_server', - default=_DEFAULT_NUM_CHANNELS_PER_SERVER, - type=int, - help='The number of channels created to each server from a ' - 'stress client') -argp.add_argument('--stress_client_num_stubs_per_channel', - default=_DEFAULT_NUM_STUBS_PER_CHANNEL, - type=int, - help='The number of stubs created per channel. This number ' - 'indicates the max number of RPCs that can be made in ' - 'parallel on each channel at any given time') -argp.add_argument('--stress_client_test_cases', - default=_DEFAULT_TEST_CASES_STR, - help='List of test cases (with weights) to be executed by the' - ' stress test client. The list is in the following format:\n' - ' ..\n' - ' (Note: The weights do not have to add up to 100)') - -if __name__ == '__main__': - args = argp.parse_args() - - test_settings = TestSettings( - args.build_docker_image, args.build_type, args.test_poll_interval_secs, - args.test_duration_secs, args.kubernetes_proxy_port) - - gke_settings = GkeSettings(args.project_id, args.docker_image_name) - - server_pod_name = "%s-%s" % (_SERVER_POD_NAME, args.build_type) - client_pod_name_prefix = "%s-%s" % (_CLIENT_POD_NAME_PREFIX, args.build_type) - stress_server_settings = StressServerSettings( - args.build_type, server_pod_name, args.stress_server_port) - stress_client_settings = StressClientSettings( - args.build_type, args.num_clients, client_pod_name_prefix, - server_pod_name, args.stress_server_port, - args.stress_client_metrics_port, - args.stress_client_metrics_collection_interval_secs, - args.stress_client_poll_interval_secs, - args.stress_client_num_channels_per_server, - args.stress_client_num_stubs_per_channel, args.stress_client_test_cases) - - run_test_main(test_settings, gke_settings, stress_server_settings, - stress_client_settings) From 83f100e83ce17959386c800036a06140c40c1577 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 09:13:22 -0700 Subject: [PATCH 66/74] Add asan to the config --- .../configs/{opt-tsan.json => opt-tsan-asan.json} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename tools/run_tests/stress_test/configs/{opt-tsan.json => opt-tsan-asan.json} (95%) diff --git a/tools/run_tests/stress_test/configs/opt-tsan.json b/tools/run_tests/stress_test/configs/opt-tsan-asan.json similarity index 95% rename from tools/run_tests/stress_test/configs/opt-tsan.json rename to tools/run_tests/stress_test/configs/opt-tsan-asan.json index 67d0484e7c0..6d4f74f8163 100644 --- a/tools/run_tests/stress_test/configs/opt-tsan.json +++ b/tools/run_tests/stress_test/configs/opt-tsan-asan.json @@ -113,17 +113,17 @@ "numInstances": 3, "serverPodSpec": "stress-server-tsan" }, - "stress-client-tsan": { - "clientTemplate": "cxx_client_tsan", - "dockerImage": "grpc_stress_cxx_tsan", + "stress-client-asan": { + "clientTemplate": "cxx_client_asan", + "dockerImage": "grpc_stress_cxx_asan", "numInstances": 3, - "serverPodSpec": "stress-server-tsan" + "serverPodSpec": "stress-server-asan" } } }, "globalSettings": { - "buildDockerImages": true, + "buildDockerImages": false, "pollIntervalSecs": 10, "testDurationSecs": 70, "kubernetesProxyPort": 8001, From 9c9644b97a36c8498ee1a2b0f7cca7bbf58323e7 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 09:30:51 -0700 Subject: [PATCH 67/74] Add documentation to classes --- tools/run_tests/stress_test/run_on_gke.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py index c4d18038097..c948582ddc9 100755 --- a/tools/run_tests/stress_test/run_on_gke.py +++ b/tools/run_tests/stress_test/run_on_gke.py @@ -65,6 +65,7 @@ class GlobalSettings: class ClientTemplate: + """ Contains all the common settings that are used by a stress client """ def __init__(self, name, client_image_path, metrics_client_image_path, metrics_port, wrapper_script_path, poll_interval_secs, @@ -80,6 +81,7 @@ class ClientTemplate: class ServerTemplate: + """ Contains all the common settings used by a stress server """ def __init__(self, name, server_image_path, wrapper_script_path, server_port, server_args_dict): @@ -91,6 +93,10 @@ class ServerTemplate: class DockerImage: + """ Represents a docker image properties and has methods to build the image and + + push it to GKE registry + """ def __init__(self, gcp_project_id, image_name, build_script_path, dockerfile_dir, build_type): @@ -137,6 +143,7 @@ class DockerImage: class ServerPodSpec: + """ Contains the information required to launch server pods. """ def __init__(self, name, server_template, docker_image, num_instances): self.name = name @@ -157,6 +164,7 @@ class ServerPodSpec: class ClientPodSpec: + """ Contains the information required to launch client pods """ def __init__(self, name, client_template, docker_image, num_instances, server_addresses): @@ -179,6 +187,7 @@ class ClientPodSpec: class Gke: + """ Class that has helper methods to interact with GKE """ class KubernetesProxy: """Class to start a proxy on localhost to talk to the Kubernetes API server""" @@ -342,7 +351,7 @@ class Config: config_dict = self._load_config(config_filename) self.global_settings = self._parse_global_settings(config_dict, - gcp_project_id) + gcp_project_id) self.docker_images_dict = self._parse_docker_images( config_dict, self.global_settings.gcp_project_id) self.client_templates_dict = self._parse_client_templates(config_dict) @@ -452,7 +461,7 @@ class Config: return server_templates_dict def _parse_server_pod_specs(self, config_dict, docker_images_dict, - server_templates_dict): + server_templates_dict): """Parses the 'serverPodSpecs' sub-section (under 'testMatrix' section) of the config file and returns a Dictionary of 'ServerPodSpec' objects keyed by server pod spec names""" @@ -474,7 +483,7 @@ class Config: return server_pod_specs_dict def _parse_client_pod_specs(self, config_dict, docker_images_dict, - client_templates_dict, server_pod_specs_dict): + client_templates_dict, server_pod_specs_dict): """Parses the 'clientPodSpecs' sub-section (under 'testMatrix' section) of the config file and returns a Dictionary of 'ClientPodSpec' objects keyed by client pod spec names""" @@ -508,6 +517,7 @@ class Config: def run_tests(config): + """ The main function that launches the stress tests """ # Build docker images and push to GKE registry if config.global_settings.build_docker_images: for name, docker_image in config.docker_images_dict.iteritems(): From 55ddf848d0d1aae467a6e2054ba9ed7bc13acc78 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 10:37:16 -0700 Subject: [PATCH 68/74] update readme with the new stress test runner file --- tools/run_tests/stress_test/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/run_tests/stress_test/README.md b/tools/run_tests/stress_test/README.md index 1a48e90c69e..84f9719cb16 100644 --- a/tools/run_tests/stress_test/README.md +++ b/tools/run_tests/stress_test/README.md @@ -67,8 +67,10 @@ The script has several parameters and you can find out more details by using the - `$ tools/run_tests/stress_test/run_stress_tests_on_gke.py --help` > **Example** -> `$ tools/run_tests/stress_test/run_stress_tests_on_gke.py --project_id=sree-gce --test_duration_secs=180 --num_clients=5` +> ```bash +> $ # Change to the grpc root directory +> $ cd $GRPC_ROOT +> $ tools/run_tests/stress_test/run_on_gke.py --project_id=sree-gce --config_file=tools/run_tests/stress_test/configs/opt.json +> ``` -> Launches the 5 instances of stress test clients, 1 instance of stress test server and runs the test for 180 seconds. The test would be run on the default container cluster (that you have set in `gcloud`) in the project `sree-gce`. - -> Note: we currently do not have the ability to launch multiple instances of the server. This can be added very easily in future +> The above runs the stress test on GKE under the project `sree-gce` in the default cluster (that you set by `gcloud` command earlier). The test settings (like number of client instances, servers, the parmeters to pass, test cases etc) are all loaded from the config file `$GRPC_ROOT/tools/run_tests/stress_test/opt.json` From e68ec434804949209329c5953b65ae31e920a620 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 13:55:01 -0700 Subject: [PATCH 69/74] Fix indentation in config files, set defaults for longer term runs (opt-tsan-asan.json) and short term test runs (opt.json) --- .../stress_test/configs/opt-tsan-asan.json | 241 +++++++++--------- tools/run_tests/stress_test/configs/opt.json | 142 +++++------ tools/run_tests/stress_test/run_on_gke.py | 5 +- 3 files changed, 193 insertions(+), 195 deletions(-) diff --git a/tools/run_tests/stress_test/configs/opt-tsan-asan.json b/tools/run_tests/stress_test/configs/opt-tsan-asan.json index 6d4f74f8163..1dc2d3fe086 100644 --- a/tools/run_tests/stress_test/configs/opt-tsan-asan.json +++ b/tools/run_tests/stress_test/configs/opt-tsan-asan.json @@ -1,136 +1,135 @@ { - "dockerImages": { - "grpc_stress_cxx_opt" : { - "buildScript": "tools/jenkins/build_interop_stress_image.sh", - "dockerFileDir": "grpc_interop_stress_cxx", - "buildType": "opt" - }, - "grpc_stress_cxx_tsan": { - "buildScript": "tools/jenkins/build_interop_stress_image.sh", - "dockerFileDir": "grpc_interop_stress_cxx", - "buildType": "tsan" - }, - "grpc_stress_cxx_asan": { - "buildScript": "tools/jenkins/build_interop_stress_image.sh", - "dockerFileDir": "grpc_interop_stress_cxx", - "buildType": "asan" - } - }, + "dockerImages": { + "grpc_stress_cxx_opt" : { + "buildScript": "tools/jenkins/build_interop_stress_image.sh", + "dockerFileDir": "grpc_interop_stress_cxx", + "buildType": "opt" + }, + "grpc_stress_cxx_tsan": { + "buildScript": "tools/jenkins/build_interop_stress_image.sh", + "dockerFileDir": "grpc_interop_stress_cxx", + "buildType": "tsan" + }, + "grpc_stress_cxx_asan": { + "buildScript": "tools/jenkins/build_interop_stress_image.sh", + "dockerFileDir": "grpc_interop_stress_cxx", + "buildType": "asan" + } + }, - "clientTemplates": { - "baseTemplates": { - "default": { - "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py", - "pollIntervalSecs": 60, - "clientArgs": { - "num_channels_per_server":5, - "num_stubs_per_channel":10, - "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1", - "metrics_port": 8081, - "metrics_collection_interval_secs":60 - }, - "metricsPort": 8081, - "metricsArgs": { - "metrics_server_address": "localhost:8081", - "total_only": "true" - } - } - }, - "templates": { - "cxx_client_opt": { - "baseTemplate": "default", - "clientImagePath": "/var/local/git/grpc/bins/opt/stress_test", - "metricsClientImagePath": "/var/local/git/grpc/bins/opt/metrics_client" - }, - "cxx_client_tsan": { - "baseTemplate": "default", - "clientImagePath": "/var/local/git/grpc/bins/tsan/stress_test", - "metricsClientImagePath": "/var/local/git/grpc/bins/tsan/metrics_client" + "clientTemplates": { + "baseTemplates": { + "default": { + "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py", + "pollIntervalSecs": 60, + "clientArgs": { + "num_channels_per_server":5, + "num_stubs_per_channel":10, + "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1", + "metrics_port": 8081, + "metrics_collection_interval_secs":60 }, - "cxx_client_asan": { - "baseTemplate": "default", - "clientImagePath": "/var/local/git/grpc/bins/asan/stress_test", - "metricsClientImagePath": "/var/local/git/grpc/bins/asan/metrics_client" + "metricsPort": 8081, + "metricsArgs": { + "metrics_server_address": "localhost:8081", + "total_only": "true" } } }, - - "serverTemplates": { - "baseTemplates":{ - "default": { - "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py", - "serverPort": 8080, - "serverArgs": { - "port": 8080 - } - } + "templates": { + "cxx_client_opt": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/opt/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/opt/metrics_client" }, - "templates": { - "cxx_server_opt": { - "baseTemplate": "default", - "serverImagePath": "/var/local/git/grpc/bins/opt/interop_server" - }, - "cxx_server_tsan": { - "baseTemplate": "default", - "serverImagePath": "/var/local/git/grpc/bins/tsan/interop_server" - }, - "cxx_server_asan": { - "baseTemplate": "default", - "serverImagePath": "/var/local/git/grpc/bins/asan/interop_server" - } + "cxx_client_tsan": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/tsan/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/tsan/metrics_client" + }, + "cxx_client_asan": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/asan/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/asan/metrics_client" } - }, - - "testMatrix": { - "serverPodSpecs": { - "stress-server-opt": { - "serverTemplate": "cxx_server_opt", - "dockerImage": "grpc_stress_cxx_opt", - "numInstances": 1 - }, - "stress-server-tsan": { - "serverTemplate": "cxx_server_tsan", - "dockerImage": "grpc_stress_cxx_tsan", - "numInstances": 1 - }, - "stress-server-asan": { - "serverTemplate": "cxx_server_asan", - "dockerImage": "grpc_stress_cxx_asan", - "numInstances": 1 - } - }, + } + }, - "clientPodSpecs": { - "stress-client-opt": { - "clientTemplate": "cxx_client_opt", - "dockerImage": "grpc_stress_cxx_opt", - "numInstances": 3, - "serverPodSpec": "stress-server-opt" - }, - "stress-client-tsan": { - "clientTemplate": "cxx_client_tsan", - "dockerImage": "grpc_stress_cxx_tsan", - "numInstances": 3, - "serverPodSpec": "stress-server-tsan" - }, - "stress-client-asan": { - "clientTemplate": "cxx_client_asan", - "dockerImage": "grpc_stress_cxx_asan", - "numInstances": 3, - "serverPodSpec": "stress-server-asan" + "serverTemplates": { + "baseTemplates":{ + "default": { + "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py", + "serverPort": 8080, + "serverArgs": { + "port": 8080 } } }, + "templates": { + "cxx_server_opt": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/opt/interop_server" + }, + "cxx_server_tsan": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/tsan/interop_server" + }, + "cxx_server_asan": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/asan/interop_server" + } + } + }, - "globalSettings": { - "buildDockerImages": false, - "pollIntervalSecs": 10, - "testDurationSecs": 70, - "kubernetesProxyPort": 8001, - "datasetIdNamePrefix": "stress_test_opt_tsan", - "summaryTableId": "summary", - "qpsTableId": "qps", - "podWarmupSecs": 60 + "testMatrix": { + "serverPodSpecs": { + "stress-server-opt": { + "serverTemplate": "cxx_server_opt", + "dockerImage": "grpc_stress_cxx_opt", + "numInstances": 1 + }, + "stress-server-tsan": { + "serverTemplate": "cxx_server_tsan", + "dockerImage": "grpc_stress_cxx_tsan", + "numInstances": 1 + }, + "stress-server-asan": { + "serverTemplate": "cxx_server_asan", + "dockerImage": "grpc_stress_cxx_asan", + "numInstances": 1 + } + }, + + "clientPodSpecs": { + "stress-client-opt": { + "clientTemplate": "cxx_client_opt", + "dockerImage": "grpc_stress_cxx_opt", + "numInstances": 3, + "serverPodSpec": "stress-server-opt" + }, + "stress-client-tsan": { + "clientTemplate": "cxx_client_tsan", + "dockerImage": "grpc_stress_cxx_tsan", + "numInstances": 3, + "serverPodSpec": "stress-server-tsan" + }, + "stress-client-asan": { + "clientTemplate": "cxx_client_asan", + "dockerImage": "grpc_stress_cxx_asan", + "numInstances": 3, + "serverPodSpec": "stress-server-asan" + } } -} + }, + "globalSettings": { + "buildDockerImages": true, + "pollIntervalSecs": 60, + "testDurationSecs": 7200, + "kubernetesProxyPort": 8001, + "datasetIdNamePrefix": "stress_test_opt_tsan", + "summaryTableId": "summary", + "qpsTableId": "qps", + "podWarmupSecs": 60 + } +} diff --git a/tools/run_tests/stress_test/configs/opt.json b/tools/run_tests/stress_test/configs/opt.json index 2569ca16b9d..7fc024034b8 100644 --- a/tools/run_tests/stress_test/configs/opt.json +++ b/tools/run_tests/stress_test/configs/opt.json @@ -1,86 +1,86 @@ { - "dockerImages": { - "grpc_stress_cxx_opt" : { - "buildScript": "tools/jenkins/build_interop_stress_image.sh", - "dockerFileDir": "grpc_interop_stress_cxx", - "buildType": "opt" - } - }, + "dockerImages": { + "grpc_stress_cxx_opt" : { + "buildScript": "tools/jenkins/build_interop_stress_image.sh", + "dockerFileDir": "grpc_interop_stress_cxx", + "buildType": "opt" + } + }, - "clientTemplates": { - "baseTemplates": { - "default": { - "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py", - "pollIntervalSecs": 60, - "clientArgs": { - "num_channels_per_server":5, - "num_stubs_per_channel":10, - "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1", - "metrics_port": 8081, - "metrics_collection_interval_secs":60 - }, - "metricsPort": 8081, - "metricsArgs": { - "metrics_server_address": "localhost:8081", - "total_only": "true" - } - } - }, - "templates": { - "cxx_client_opt": { - "baseTemplate": "default", - "clientImagePath": "/var/local/git/grpc/bins/opt/stress_test", - "metricsClientImagePath": "/var/local/git/grpc/bins/opt/metrics_client" + "clientTemplates": { + "baseTemplates": { + "default": { + "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py", + "pollIntervalSecs": 60, + "clientArgs": { + "num_channels_per_server":5, + "num_stubs_per_channel":10, + "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1", + "metrics_port": 8081, + "metrics_collection_interval_secs":60 + }, + "metricsPort": 8081, + "metricsArgs": { + "metrics_server_address": "localhost:8081", + "total_only": "true" } } }, + "templates": { + "cxx_client_opt": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/opt/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/opt/metrics_client" + } + } + }, - "serverTemplates": { - "baseTemplates":{ - "default": { - "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py", - "serverPort": 8080, - "serverArgs": { - "port": 8080 - } + "serverTemplates": { + "baseTemplates":{ + "default": { + "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py", + "serverPort": 8080, + "serverArgs": { + "port": 8080 } - }, - "templates": { - "cxx_server_opt": { - "baseTemplate": "default", - "serverImagePath": "/var/local/git/grpc/bins/opt/interop_server" - } - } + } }, + "templates": { + "cxx_server_opt": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/opt/interop_server" + } + } + }, - "testMatrix": { - "serverPodSpecs": { - "stress-server-opt": { - "serverTemplate": "cxx_server_opt", - "dockerImage": "grpc_stress_cxx_opt", - "numInstances": 1 - } - }, - - "clientPodSpecs": { - "stress-client-opt": { - "clientTemplate": "cxx_client_opt", - "dockerImage": "grpc_stress_cxx_opt", - "numInstances": 10, - "serverPodSpec": "stress-server-opt" - } + "testMatrix": { + "serverPodSpecs": { + "stress-server-opt": { + "serverTemplate": "cxx_server_opt", + "dockerImage": "grpc_stress_cxx_opt", + "numInstances": 1 } }, - "globalSettings": { - "buildDockerImages": false, - "pollIntervalSecs": 10, - "testDurationSecs": 70, - "kubernetesProxyPort": 8001, - "datasetIdNamePrefix": "stress_test_opt", - "summaryTableId": "summary", - "qpsTableId": "qps", - "podWarmupSecs": 60 + "clientPodSpecs": { + "stress-client-opt": { + "clientTemplate": "cxx_client_opt", + "dockerImage": "grpc_stress_cxx_opt", + "numInstances": 10, + "serverPodSpec": "stress-server-opt" + } } + }, + + "globalSettings": { + "buildDockerImages": true, + "pollIntervalSecs": 10, + "testDurationSecs": 120, + "kubernetesProxyPort": 8001, + "datasetIdNamePrefix": "stress_test_opt", + "summaryTableId": "summary", + "qpsTableId": "qps", + "podWarmupSecs": 60 + } } diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py index c948582ddc9..3a81c1a3763 100755 --- a/tools/run_tests/stress_test/run_on_gke.py +++ b/tools/run_tests/stress_test/run_on_gke.py @@ -93,9 +93,8 @@ class ServerTemplate: class DockerImage: - """ Represents a docker image properties and has methods to build the image and - - push it to GKE registry + """ Represents properties of a Docker image. Provides methods to build the + image and push it to GKE registry """ def __init__(self, gcp_project_id, image_name, build_script_path, From fdef23f8d381ca116af6e0ef83d68ca9ea4c363c Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 28 Mar 2016 14:25:43 -0700 Subject: [PATCH 70/74] Fix includes --- test/core/client_config/uri_fuzzer_test.c | 2 +- test/core/http/fuzzer.c | 2 +- test/core/json/fuzzer.c | 2 +- test/core/transport/chttp2/hpack_parser_fuzzer_test.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/core/client_config/uri_fuzzer_test.c b/test/core/client_config/uri_fuzzer_test.c index f39288f1407..cd746c1c0e1 100644 --- a/test/core/client_config/uri_fuzzer_test.c +++ b/test/core/client_config/uri_fuzzer_test.c @@ -36,7 +36,7 @@ #include -#include "src/core/client_config/uri_parser.h" +#include "src/core/lib/client_config/uri_parser.h" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { char *s = gpr_malloc(size + 1); diff --git a/test/core/http/fuzzer.c b/test/core/http/fuzzer.c index 0aa95ee9e4d..bab846d7220 100644 --- a/test/core/http/fuzzer.c +++ b/test/core/http/fuzzer.c @@ -36,7 +36,7 @@ #include -#include "src/core/http/parser.h" +#include "src/core/lib/http/parser.h" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { grpc_http_parser parser; diff --git a/test/core/json/fuzzer.c b/test/core/json/fuzzer.c index eb29da3bf7c..65f89e64a4f 100644 --- a/test/core/json/fuzzer.c +++ b/test/core/json/fuzzer.c @@ -36,7 +36,7 @@ #include -#include "src/core/json/json.h" +#include "src/core/lib/json/json.h" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { char *s = gpr_malloc(size); diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c index 9e6d56fc9a2..f4f2eb9b876 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c @@ -37,7 +37,7 @@ #include #include -#include "src/core/transport/chttp2/hpack_parser.h" +#include "src/core/lib/transport/chttp2/hpack_parser.h" static void onhdr(void *ud, grpc_mdelem *md) { GRPC_MDELEM_UNREF(md); } From 564860547436a9162a8b966c73694e233e9a440d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 28 Mar 2016 22:40:25 -0700 Subject: [PATCH 71/74] Fix include --- test/core/transport/chttp2/hpack_parser_fuzzer_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c index f4f2eb9b876..6f77fa02cef 100644 --- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c @@ -37,7 +37,7 @@ #include #include -#include "src/core/lib/transport/chttp2/hpack_parser.h" +#include "src/core/ext/transport/chttp2/transport/hpack_parser.h" static void onhdr(void *ud, grpc_mdelem *md) { GRPC_MDELEM_UNREF(md); } From 67593ffc3459331bc53ac59de59ecc005ee1ad10 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 29 Mar 2016 11:38:24 -0700 Subject: [PATCH 72/74] Fix codegen --- tools/dockerfile/grpc_interop_stress_cxx/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile b/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile index 214747fd4a5..556a26ee139 100644 --- a/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile +++ b/tools/dockerfile/grpc_interop_stress_cxx/Dockerfile @@ -81,7 +81,7 @@ RUN pip install --upgrade google-api-python-client #================= -# Update clang to a version with improved tsan +# Update clang to a version with improved tsan and fuzzing capabilities RUN apt-get update && apt-get -y install python cmake && apt-get clean @@ -111,7 +111,7 @@ RUN cd llvm-build && cmake \ -DCMAKE_INSTALL_PREFIX:STRING=/usr \ -DLLVM_TARGETS_TO_BUILD:STRING=X86 \ ../llvm -RUN make -C llvm-build && make -C llvm-build install && rm -rf llvm-build +RUN make -C llvm-build -j 12 && make -C llvm-build install && rm -rf llvm-build # Define the default command. CMD ["bash"] From 943cdf99e9fa08f17b7f11c87492b865a1e4741e Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 29 Mar 2016 13:27:56 -0700 Subject: [PATCH 73/74] Swap header/src into the right order --- BUILD | 12 ++++++------ Makefile | 4 ++-- binding.gyp | 2 +- build.yaml | 4 ++-- config.m4 | 2 +- gRPC.podspec | 6 +++--- grpc.gemspec | 4 ++-- package.json | 4 ++-- package.xml | 4 ++-- src/python/grpcio/grpc_core_dependencies.py | 2 +- tools/doxygen/Doxyfile.core.internal | 4 ++-- tools/run_tests/sources_and_headers.json | 4 ++-- vsprojects/vcxproj/grpc/grpc.vcxproj | 4 ++-- vsprojects/vcxproj/grpc/grpc.vcxproj.filters | 4 ++-- .../vcxproj/grpc_unsecure/grpc_unsecure.vcxproj | 4 ++-- .../grpc_unsecure/grpc_unsecure.vcxproj.filters | 4 ++-- 16 files changed, 34 insertions(+), 34 deletions(-) diff --git a/BUILD b/BUILD index 1c638909ed4..22cbf3d0afd 100644 --- a/BUILD +++ b/BUILD @@ -158,7 +158,7 @@ cc_library( name = "grpc", srcs = [ "src/core/ext/lb_policy/grpclb/load_balancer_api.h", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", "src/core/ext/transport/chttp2/transport/alpn.h", "src/core/ext/transport/chttp2/transport/bin_encoder.h", "src/core/ext/transport/chttp2/transport/chttp2_transport.h", @@ -297,7 +297,7 @@ cc_library( "third_party/nanopb/pb_decode.h", "third_party/nanopb/pb_encode.h", "src/core/ext/lb_policy/grpclb/load_balancer_api.c", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", "src/core/ext/lb_policy/pick_first/pick_first.c", "src/core/ext/lb_policy/round_robin/round_robin.c", "src/core/ext/transport/chttp2/client/insecure/channel_create.c", @@ -532,7 +532,7 @@ cc_library( name = "grpc_unsecure", srcs = [ "src/core/ext/lb_policy/grpclb/load_balancer_api.h", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", "src/core/ext/transport/chttp2/transport/alpn.h", "src/core/ext/transport/chttp2/transport/bin_encoder.h", "src/core/ext/transport/chttp2/transport/chttp2_transport.h", @@ -657,7 +657,7 @@ cc_library( "third_party/nanopb/pb_decode.h", "third_party/nanopb/pb_encode.h", "src/core/ext/lb_policy/grpclb/load_balancer_api.c", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", "src/core/ext/lb_policy/pick_first/pick_first.c", "src/core/ext/lb_policy/round_robin/round_robin.c", "src/core/ext/transport/chttp2/client/insecure/channel_create.c", @@ -1359,7 +1359,7 @@ objc_library( name = "grpc_objc", srcs = [ "src/core/ext/lb_policy/grpclb/load_balancer_api.c", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", "src/core/ext/lb_policy/pick_first/pick_first.c", "src/core/ext/lb_policy/round_robin/round_robin.c", "src/core/ext/transport/chttp2/client/insecure/channel_create.c", @@ -1539,7 +1539,7 @@ objc_library( "include/grpc/impl/codegen/status.h", "include/grpc/status.h", "src/core/ext/lb_policy/grpclb/load_balancer_api.h", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", "src/core/ext/transport/chttp2/transport/alpn.h", "src/core/ext/transport/chttp2/transport/bin_encoder.h", "src/core/ext/transport/chttp2/transport/chttp2_transport.h", diff --git a/Makefile b/Makefile index 4b07c4eeaf2..e446e309783 100644 --- a/Makefile +++ b/Makefile @@ -2435,7 +2435,7 @@ endif LIBGRPC_SRC = \ src/core/ext/lb_policy/grpclb/load_balancer_api.c \ - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \ + src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \ src/core/ext/lb_policy/pick_first/pick_first.c \ src/core/ext/lb_policy/round_robin/round_robin.c \ src/core/ext/transport/chttp2/client/insecure/channel_create.c \ @@ -2797,7 +2797,7 @@ endif LIBGRPC_UNSECURE_SRC = \ src/core/ext/lb_policy/grpclb/load_balancer_api.c \ - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \ + src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \ src/core/ext/lb_policy/pick_first/pick_first.c \ src/core/ext/lb_policy/round_robin/round_robin.c \ src/core/ext/transport/chttp2/client/insecure/channel_create.c \ diff --git a/binding.gyp b/binding.gyp index b97ab023d1e..bfae59e50ce 100644 --- a/binding.gyp +++ b/binding.gyp @@ -559,7 +559,7 @@ ], 'sources': [ 'src/core/ext/lb_policy/grpclb/load_balancer_api.c', - 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h', + 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c', 'src/core/ext/lb_policy/pick_first/pick_first.c', 'src/core/ext/lb_policy/round_robin/round_robin.c', 'src/core/ext/transport/chttp2/client/insecure/channel_create.c', diff --git a/build.yaml b/build.yaml index f5dc786c26c..9a829f20802 100644 --- a/build.yaml +++ b/build.yaml @@ -461,10 +461,10 @@ filegroups: - name: grpc_lb_policy_grpclb headers: - src/core/ext/lb_policy/grpclb/load_balancer_api.h - - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c + - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h src: - src/core/ext/lb_policy/grpclb/load_balancer_api.c - - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h + - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c uses: - grpc_base - name: grpc_lb_policy_pick_first diff --git a/config.m4 b/config.m4 index 6bf0f4d8a71..1b414a1142b 100644 --- a/config.m4 +++ b/config.m4 @@ -81,7 +81,7 @@ if test "$PHP_GRPC" != "no"; then src/core/lib/support/tmpfile_win32.c \ src/core/lib/support/wrap_memcpy.c \ src/core/ext/lb_policy/grpclb/load_balancer_api.c \ - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \ + src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \ src/core/ext/lb_policy/pick_first/pick_first.c \ src/core/ext/lb_policy/round_robin/round_robin.c \ src/core/ext/transport/chttp2/client/insecure/channel_create.c \ diff --git a/gRPC.podspec b/gRPC.podspec index cacaa027fb2..d94905ce2a6 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -162,7 +162,7 @@ Pod::Spec.new do |s| 'src/core/lib/support/tmpfile_win32.c', 'src/core/lib/support/wrap_memcpy.c', 'src/core/ext/lb_policy/grpclb/load_balancer_api.h', - 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c', + 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h', 'src/core/ext/transport/chttp2/transport/alpn.h', 'src/core/ext/transport/chttp2/transport/bin_encoder.h', 'src/core/ext/transport/chttp2/transport/chttp2_transport.h', @@ -314,7 +314,7 @@ Pod::Spec.new do |s| 'include/grpc/impl/codegen/status.h', 'include/grpc/status.h', 'src/core/ext/lb_policy/grpclb/load_balancer_api.c', - 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h', + 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c', 'src/core/ext/lb_policy/pick_first/pick_first.c', 'src/core/ext/lb_policy/round_robin/round_robin.c', 'src/core/ext/transport/chttp2/client/insecure/channel_create.c', @@ -492,7 +492,7 @@ Pod::Spec.new do |s| 'src/core/lib/support/time_precise.h', 'src/core/lib/support/tmpfile.h', 'src/core/ext/lb_policy/grpclb/load_balancer_api.h', - 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c', + 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h', 'src/core/ext/transport/chttp2/transport/alpn.h', 'src/core/ext/transport/chttp2/transport/bin_encoder.h', 'src/core/ext/transport/chttp2/transport/chttp2_transport.h', diff --git a/grpc.gemspec b/grpc.gemspec index 59361b29778..e96bedb5875 100755 --- a/grpc.gemspec +++ b/grpc.gemspec @@ -158,7 +158,7 @@ Gem::Specification.new do |s| s.files += %w( include/grpc/impl/codegen/status.h ) s.files += %w( include/grpc/status.h ) s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h ) - s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c ) + s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h ) s.files += %w( src/core/ext/transport/chttp2/transport/alpn.h ) s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.h ) s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_transport.h ) @@ -297,7 +297,7 @@ Gem::Specification.new do |s| s.files += %w( third_party/nanopb/pb_decode.h ) s.files += %w( third_party/nanopb/pb_encode.h ) s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c ) - s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h ) + s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c ) s.files += %w( src/core/ext/lb_policy/pick_first/pick_first.c ) s.files += %w( src/core/ext/lb_policy/round_robin/round_robin.c ) s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c ) diff --git a/package.json b/package.json index 37e94a17613..cbcfc19ee3c 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "include/grpc/impl/codegen/status.h", "include/grpc/status.h", "src/core/ext/lb_policy/grpclb/load_balancer_api.h", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", "src/core/ext/transport/chttp2/transport/alpn.h", "src/core/ext/transport/chttp2/transport/bin_encoder.h", "src/core/ext/transport/chttp2/transport/chttp2_transport.h", @@ -240,7 +240,7 @@ "third_party/nanopb/pb_decode.h", "third_party/nanopb/pb_encode.h", "src/core/ext/lb_policy/grpclb/load_balancer_api.c", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", "src/core/ext/lb_policy/pick_first/pick_first.c", "src/core/ext/lb_policy/round_robin/round_robin.c", "src/core/ext/transport/chttp2/client/insecure/channel_create.c", diff --git a/package.xml b/package.xml index 6d9356bc09f..1caf850c561 100644 --- a/package.xml +++ b/package.xml @@ -162,7 +162,7 @@ - + @@ -301,7 +301,7 @@ - + diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py index 237a05130b5..3cd8f62221f 100644 --- a/src/python/grpcio/grpc_core_dependencies.py +++ b/src/python/grpcio/grpc_core_dependencies.py @@ -75,7 +75,7 @@ CORE_SOURCE_FILES = [ 'src/core/lib/support/tmpfile_win32.c', 'src/core/lib/support/wrap_memcpy.c', 'src/core/ext/lb_policy/grpclb/load_balancer_api.c', - 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h', + 'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c', 'src/core/ext/lb_policy/pick_first/pick_first.c', 'src/core/ext/lb_policy/round_robin/round_robin.c', 'src/core/ext/transport/chttp2/client/insecure/channel_create.c', diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index f3405fe5465..b94447c5550 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -774,7 +774,7 @@ include/grpc/impl/codegen/propagation_bits.h \ include/grpc/impl/codegen/status.h \ include/grpc/status.h \ src/core/ext/lb_policy/grpclb/load_balancer_api.h \ -src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \ +src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \ src/core/ext/transport/chttp2/transport/alpn.h \ src/core/ext/transport/chttp2/transport/bin_encoder.h \ src/core/ext/transport/chttp2/transport/chttp2_transport.h \ @@ -913,7 +913,7 @@ third_party/nanopb/pb_common.h \ third_party/nanopb/pb_decode.h \ third_party/nanopb/pb_encode.h \ src/core/ext/lb_policy/grpclb/load_balancer_api.c \ -src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \ +src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \ src/core/ext/lb_policy/pick_first/pick_first.c \ src/core/ext/lb_policy/round_robin/round_robin.c \ src/core/ext/transport/chttp2/client/insecure/channel_create.c \ diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json index e3e22769219..6084a16aa1f 100644 --- a/tools/run_tests/sources_and_headers.json +++ b/tools/run_tests/sources_and_headers.json @@ -3989,7 +3989,7 @@ "include/grpc/impl/codegen/status.h", "include/grpc/status.h", "src/core/ext/lb_policy/grpclb/load_balancer_api.h", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", "src/core/ext/transport/chttp2/transport/alpn.h", "src/core/ext/transport/chttp2/transport/bin_encoder.h", "src/core/ext/transport/chttp2/transport/chttp2_transport.h", @@ -4614,7 +4614,7 @@ "include/grpc/impl/codegen/status.h", "include/grpc/status.h", "src/core/ext/lb_policy/grpclb/load_balancer_api.h", - "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", + "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", "src/core/ext/transport/chttp2/transport/alpn.h", "src/core/ext/transport/chttp2/transport/bin_encoder.h", "src/core/ext/transport/chttp2/transport/chttp2_transport.h", diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj index 18b92fb359b..93d5a9b02fa 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj @@ -283,7 +283,7 @@ - + @@ -425,7 +425,7 @@ - + diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters index 31a852b692e..3e5032db0e1 100644 --- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters +++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters @@ -4,7 +4,7 @@ src\core\ext\lb_policy\grpclb - + src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0 @@ -542,7 +542,7 @@ src\core\ext\lb_policy\grpclb - + src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0 diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj index 981d0a27147..98a6bee1704 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj @@ -273,7 +273,7 @@ - + @@ -401,7 +401,7 @@ - + diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters index cebb073c59b..81c8a874fc9 100644 --- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters +++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters @@ -4,7 +4,7 @@ src\core\ext\lb_policy\grpclb - + src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0 @@ -479,7 +479,7 @@ src\core\ext\lb_policy\grpclb - + src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0 From 447bab1553d6b872e9cd447919f1b3a1e21c9ad6 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 29 Mar 2016 13:53:22 -0700 Subject: [PATCH 74/74] clang-format --- src/core/ext/lb_policy/grpclb/load_balancer_api.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/ext/lb_policy/grpclb/load_balancer_api.h b/src/core/ext/lb_policy/grpclb/load_balancer_api.h index b39b4635d34..d329a2ffe82 100644 --- a/src/core/ext/lb_policy/grpclb/load_balancer_api.h +++ b/src/core/ext/lb_policy/grpclb/load_balancer_api.h @@ -36,8 +36,8 @@ #include -#include "src/core/lib/client_config/lb_policy_factory.h" #include "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h" +#include "src/core/lib/client_config/lb_policy_factory.h" #ifdef __cplusplus extern "C" {