From 3f2133fc971b8150b0ee7ac61d6228dd723b9902 Mon Sep 17 00:00:00 2001 From: Paul Querna Date: Sun, 13 Mar 2016 15:11:23 -0700 Subject: kSCNetworkReachabilityFlagsIsWWAN is only available on iOS, not all Mac targets. --- src/objective-c/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 02871d5d02..4b92504b55 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) -- cgit v1.2.3 From 32173c5c3c8803ba3132452d9512437a76d857e6 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:12:45 -0700 Subject: First version of json fuzzer --- Makefile | 43 ++++++++++-- build.yaml | 33 ++++++--- templates/Makefile.template | 5 +- templates/tools/dockerfile/test/fuzzers.template | 50 ++++++++++++++ templates/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 44a4b12bac..16b2c026b3 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 8a65511969..ab91b6e5dc 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 c54c146620..57fc146131 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 0000000000..d9e3806191 --- /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 a985fea64d..21312ab79a 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 dbbb2c2ad1..ded98383da 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 ecf113b4a8..0bb208f443 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 0000000000..eb29da3bf7 --- /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 0000000000..b84d51136e --- /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 0000000000..a2108988d8 --- /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 0000000000..f695820a57 --- /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 503adba2fb..d1e660698b 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", -- cgit v1.2.3 From 655fb5751aab6cb59500dc3eb5285114714a54e8 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:24:28 -0700 Subject: 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 f695820a57..f2423c40ff 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" -- cgit v1.2.3 From 1b872f2020d3867b9f6f2e04c23b6446752e2585 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:31:34 -0700 Subject: 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 a2108988d8..c58fef2f0f 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 -- cgit v1.2.3 From 2360226ec283e91a8701052941a2675e4cd43f0d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:33:47 -0700 Subject: 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 c58fef2f0f..cd04684014 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 -- cgit v1.2.3 From a5d8bc2b5c76050790c38d98ee40eb153ad50497 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:36:21 -0700 Subject: 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 cd04684014..ace79523ea 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 -- cgit v1.2.3 From e6f1cb06c7dcbf7c4f6f684120581bb1c0ade6f0 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:44:14 -0700 Subject: 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 ace79523ea..67e3a5b99f 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 -- cgit v1.2.3 From 9812c6f69d0b5f5b266a10932370b11ec62e1296 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:46:18 -0700 Subject: adddeps --- templates/tools/dockerfile/test/fuzzers.template | 1 + tools/dockerfile/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 d9e3806191..d4e3d64411 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 b84d51136e..beae39c596 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 67e3a5b99f..ace79523ea 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 -- cgit v1.2.3 From eb784f359d8dd5a85b8d9fd67f0350bef7004fc1 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:50:49 -0700 Subject: 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 d4e3d64411..763a6169ea 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 beae39c596..1c95555df7 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 ace79523ea..b335859ecc 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 -- cgit v1.2.3 From 815b207555802e1a345fa83f4457ef0c3dc1188b Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 14:51:47 -0700 Subject: 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 b335859ecc..db95249fc1 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 -- cgit v1.2.3 From be615dc9da786e852c470093cc77eb8f34a841a2 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 15:01:41 -0700 Subject: 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 db95249fc1..67e3a5b99f 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 -- cgit v1.2.3 From 238e847ac1483c9b2deae3322f58666ebae3d740 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 15:02:16 -0700 Subject: 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 67e3a5b99f..4dbb6d8f69 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 -- cgit v1.2.3 From c5296f6d23cb6840a8e8aa09e377b193a341a77d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 15:02:34 -0700 Subject: 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 4dbb6d8f69..044de71aac 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 -- cgit v1.2.3 From 50b89533b55e465c201885063e255740b68c1277 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 15:22:42 -0700 Subject: 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 044de71aac..6b63ef02ca 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 -- cgit v1.2.3 From a4134159ab7a6084ff7692d6dfb744428c0df958 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 17 Mar 2016 16:02:51 -0700 Subject: j --- templates/tools/dockerfile/clang_update.include | 2 +- templates/tools/dockerfile/test/fuzzers.template | 5 +-- tools/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 83ab3e0bbb..a44fe717d8 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 763a6169ea..6cf8694f3b 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 b848f233b7..685d2038b0 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 1c95555df7..9335a2a97c 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 -- cgit v1.2.3 From c90886096a4530562f22ba9708c2a6caef14cde1 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Fri, 18 Mar 2016 00:24:33 +0100 Subject: 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 30da6f28f3..9a97826287 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 5add80d753..035265a6be 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}, -- cgit v1.2.3 From dc559c96979b45c8694586915fdecc7b0e21e51d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 07:29:18 -0700 Subject: Add fuzzer found crash to corpus --- test/core/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 0000000000..6d3bcfe024 --- /dev/null +++ b/test/core/json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0 @@ -0,0 +1 @@ +)!:{"*?'ʳ!!*!):!*:::\udbD8)!:{!`!?`!?'!*m,');'` \ No newline at end of file -- cgit v1.2.3 From c2c026e84376e8e65d7af84b9df33071c0511d1d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 08:28:21 -0700 Subject: Renames --- templates/tools/dockerfile/clang_update.include | 2 +- .../dockerfile/test/fuzzer/Dockerfile.template | 43 +++++++ templates/tools/dockerfile/test/fuzzers.template | 47 -------- tools/dockerfile/test/cxx_jessie_x64/Dockerfile | 2 +- tools/dockerfile/test/fuzzer/Dockerfile | 123 +++++++++++++++++++++ .../test/fuzzers/json_fuzzer_test/Dockerfile | 123 --------------------- tools/fuzzer/build_and_run_fuzzer.sh | 3 - tools/jenkins/run_fuzzer.sh | 2 +- 8 files changed, 169 insertions(+), 176 deletions(-) create mode 100644 templates/tools/dockerfile/test/fuzzer/Dockerfile.template delete mode 100644 templates/tools/dockerfile/test/fuzzers.template create mode 100644 tools/dockerfile/test/fuzzer/Dockerfile delete mode 100644 tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile diff --git a/templates/tools/dockerfile/clang_update.include b/templates/tools/dockerfile/clang_update.include index a44fe717d8..4f827c8dc2 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/fuzzer/Dockerfile.template b/templates/tools/dockerfile/test/fuzzer/Dockerfile.template new file mode 100644 index 0000000000..479be0556a --- /dev/null +++ b/templates/tools/dockerfile/test/fuzzer/Dockerfile.template @@ -0,0 +1,43 @@ +%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="../../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 + RUN rm -f Fuzzer*.o + # Define the default command. + CMD ["bash"] diff --git a/templates/tools/dockerfile/test/fuzzers.template b/templates/tools/dockerfile/test/fuzzers.template deleted file mode 100644 index 6cf8694f3b..0000000000 --- a/templates/tools/dockerfile/test/fuzzers.template +++ /dev/null @@ -1,47 +0,0 @@ -%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"/> - <%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 - RUN rm -f Fuzzer*.o - # Define the default command. - CMD ["bash"] diff --git a/tools/dockerfile/test/cxx_jessie_x64/Dockerfile b/tools/dockerfile/test/cxx_jessie_x64/Dockerfile index 685d2038b0..6c7aece4ff 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/fuzzer/Dockerfile b/tools/dockerfile/test/fuzzer/Dockerfile new file mode 100644 index 0000000000..7b35c009e3 --- /dev/null +++ b/tools/dockerfile/test/fuzzer/Dockerfile @@ -0,0 +1,123 @@ +# 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 + +#================= +# Update clang to a version with improved tsan and fuzzing capabilities + +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++ +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 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 +# 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 deleted file mode 100644 index 9335a2a97c..0000000000 --- a/tools/dockerfile/test/fuzzers/json_fuzzer_test/Dockerfile +++ /dev/null @@ -1,123 +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. - -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 - -#================= -# 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++ -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 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 -# 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 6b63ef02ca..a2108988d8 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 f2423c40ff..94ee493700 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 \ -- cgit v1.2.3 From d7b20b8ae17fb9c3d6ac71b70dc298b14de6853d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 08:29:12 -0700 Subject: 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 a2108988d8..21834a9741 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 -- cgit v1.2.3 From 3100eb8a28c0fdc8ee85345df6aa8a2506a8d5a2 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 08:31:05 -0700 Subject: 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 21834a9741..a57ef09cf7 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 -- cgit v1.2.3 From 0dca61fe2e249a7e6434391c84eb59541ab3b963 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 08:37:52 -0700 Subject: 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 a57ef09cf7..48d09b4d9f 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 -- cgit v1.2.3 From c6d6a024b7f70848c8ef349e003fcac7f5e0459e Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 11:52:36 -0700 Subject: 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 0000000000..2070716395 --- /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 48d09b4d9f..bbe68884ad 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 0000000000..47e457232d --- /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 -- cgit v1.2.3 From 71c610d512fa349cb1d58d4500d4dd761d80b578 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 15:57:08 -0700 Subject: 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 + .../transport/chttp2/hpack_parser_fuzzer_test.c | 53 +++++++++++ tools/fuzzer/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 2275f5698b..0f8a10aa07 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 7fa0ca7c6c..6ada7e77e3 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 c314f025a0..eb059e7804 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 a63c7db1f6..d0d2c7b42d 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 f1ce3b84fd..54ac59e056 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 0000000000..597a6db294 --- /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 0000000000..d56b8fc6c8 --- /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 0000000000..3936e8964c --- /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 0000000000..a94c4cf58d --- /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 0000000000..875ac2a4f9 --- /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 0000000000..59469af528 --- /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 0000000000..2f902351bd --- /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 0000000000..4bdc3f60c0 --- /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 0000000000..fb7665d0cc --- /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 0000000000..6c1e22fa32 --- /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 0000000000..725b2086c5 --- /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 0000000000..23d52e19a8 --- /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 0000000000..1dc4931ac6 --- /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 0000000000..7b9532914e --- /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 0000000000..4eaca39265 --- /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 0000000000..57cbd72dbc --- /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 0000000000..e13cf5a8e6 --- /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 0000000000..58ecc7e2af --- /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 0000000000..efb392b7d9 --- /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 0000000000..7155222547 --- /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 0000000000..4061e02189 --- /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 0000000000..736e63e7e7 --- /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 0000000000..dff2f8920d --- /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 0000000000..13a115481d --- /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 0000000000..fe019fc409 --- /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 0000000000..6e12167b52 --- /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 0000000000..b5655220d7 --- /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 0000000000..a7656724f5 --- /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 0000000000..d658fb8ee0 --- /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 0000000000..6d37b5fd45 --- /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 0000000000..577e1054e4 --- /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 0000000000..52f5a2382a --- /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 0000000000..c3c93fed6a --- /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 0000000000..45065e2f00 --- /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 0000000000..02151c8b6a --- /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 0000000000..8034e133d7 --- /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 0000000000..240946dbaa --- /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 0000000000..d089a59346 --- /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 0000000000..66eefbcc14 --- /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 0000000000..fe29486b6e --- /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 0000000000..7b6932be00 --- /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 0000000000..7a0997ec9a --- /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 0000000000..f39288f140 --- /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 0000000000..3d6face56a --- /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 0000000000..5cbaf2e460 --- /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 0000000000..8831f0786b --- /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 0000000000..c79e456904 --- /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 0000000000..7b979b5e10 --- /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 0000000000..67382b4f3a --- /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 0000000000..cce8ded71a --- /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 0000000000..8df43e4dce --- /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 0000000000..fefa4512a8 --- /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 0000000000..b967b57614 --- /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 0000000000..7d20266703 --- /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 0000000000..c59c4d2246 --- /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 0000000000..49d1c8f1d2 --- /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 0000000000..5f2c4dfef0 --- /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 0000000000..9a15ab025f --- /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 0000000000..1f14f69103 --- /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 0000000000..d4223ccf81 --- /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 0000000000..99e2c48bbd --- /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 0000000000..b1927fbf63 --- /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 0000000000..837449dda3 --- /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 0000000000..10905bed39 --- /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 0000000000..2704e4fb39 --- /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 0000000000..f5cbbc69e7 --- /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 0000000000..be33d81102 --- /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 0000000000..ccf918751d --- /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 0000000000..06f1a3b800 --- /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 0000000000..a17139982e --- /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 0000000000..ff960484db --- /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 0000000000..76b1250625 --- /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 0000000000..be20eb55de Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/06995c2f3f01c7ec50547415dc324c64030b7a3e differ 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 0000000000..0edc9f996f --- /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 0000000000..af778fb8af --- /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 0000000000..94a6997022 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/0a10bd140c6c5fb109a0816ca061739688a6db9a differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0c9996d4fef87bacd7a001e99a515b3ba3d5788f b/test/core/transport/chttp2/hpack_parser_corpus/0c9996d4fef87bacd7a001e99a515b3ba3d5788f new file mode 100644 index 0000000000..229a89045a Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/0c9996d4fef87bacd7a001e99a515b3ba3d5788f differ 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 0000000000..001fd0bc88 --- /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 0000000000..398077e307 --- /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 0000000000..8a3ef9ea82 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/0e9196f951874edbb5ed098739ea5c8b6c0751c2 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/1e8befb98cbaba059d6771abd1680e19484e7723 b/test/core/transport/chttp2/hpack_parser_corpus/1e8befb98cbaba059d6771abd1680e19484e7723 new file mode 100644 index 0000000000..6ae0cd1d85 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/1e8befb98cbaba059d6771abd1680e19484e7723 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/311dac5092e36134d3490f98aa4207425e0ee941 b/test/core/transport/chttp2/hpack_parser_corpus/311dac5092e36134d3490f98aa4207425e0ee941 new file mode 100644 index 0000000000..6c900ea761 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/311dac5092e36134d3490f98aa4207425e0ee941 @@ -0,0 +1 @@ +[(! [(!\ !G:[(!![( !GA)(!)!*!! ) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/342ff1db70a7616b4ef76c03a42802c6702c18cb b/test/core/transport/chttp2/hpack_parser_corpus/342ff1db70a7616b4ef76c03a42802c6702c18cb new file mode 100644 index 0000000000..d6921932bb --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/342ff1db70a7616b4ef76c03a42802c6702c18cb @@ -0,0 +1 @@ +):;!')*;}v)7I!);-M*!'d*CuX$0):*;:;;();:]@ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/38228bf98cdb50fd3fa830ba5a9d4c7399063dff b/test/core/transport/chttp2/hpack_parser_corpus/38228bf98cdb50fd3fa830ba5a9d4c7399063dff new file mode 100644 index 0000000000..6fdb6622b2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/38228bf98cdb50fd3fa830ba5a9d4c7399063dff @@ -0,0 +1 @@ +*@:[(c (;!!\ !cG: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3a4bb427a85bdc5bf66ac71db073c99e0dc9f881 b/test/core/transport/chttp2/hpack_parser_corpus/3a4bb427a85bdc5bf66ac71db073c99e0dc9f881 new file mode 100644 index 0000000000..54400a32f7 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3a4bb427a85bdc5bf66ac71db073c99e0dc9f881 @@ -0,0 +1 @@ +[('! (!\ !G:(!'[(!! [! c[(!! !G!G'A)([( '!! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3aec8d9311130dfbb6584fe6e619579c21992b5f b/test/core/transport/chttp2/hpack_parser_corpus/3aec8d9311130dfbb6584fe6e619579c21992b5f new file mode 100644 index 0000000000..345b8b2025 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3aec8d9311130dfbb6584fe6e619579c21992b5f @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3c5af4d73e94d0e8ad5666b6acb340f929031e95 b/test/core/transport/chttp2/hpack_parser_corpus/3c5af4d73e94d0e8ad5666b6acb340f929031e95 new file mode 100644 index 0000000000..6d2446ab3a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3c5af4d73e94d0e8ad5666b6acb340f929031e95 @@ -0,0 +1 @@ +c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3f8983e457033cc85997c356935ba9c21460e86b b/test/core/transport/chttp2/hpack_parser_corpus/3f8983e457033cc85997c356935ba9c21460e86b new file mode 100644 index 0000000000..0350f5adbd --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3f8983e457033cc85997c356935ba9c21460e86b @@ -0,0 +1 @@ +.:c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/4256437fc5897c0cd5d755816e4e68c7be326849 b/test/core/transport/chttp2/hpack_parser_corpus/4256437fc5897c0cd5d755816e4e68c7be326849 new file mode 100644 index 0000000000..6eebe104ae Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/4256437fc5897c0cd5d755816e4e68c7be326849 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/471a307b81dc37459087d41532741c5c9d7ba836 b/test/core/transport/chttp2/hpack_parser_corpus/471a307b81dc37459087d41532741c5c9d7ba836 new file mode 100644 index 0000000000..da07fc4a7a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/471a307b81dc37459087d41532741c5c9d7ba836 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/48bcce2c6487b18706ef0c609ca39c456215bac8 b/test/core/transport/chttp2/hpack_parser_corpus/48bcce2c6487b18706ef0c609ca39c456215bac8 new file mode 100644 index 0000000000..49a5a112dd --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/48bcce2c6487b18706ef0c609ca39c456215bac8 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/4c7a034d3a3b4f29d99caf021a0e9bbb89706c2e b/test/core/transport/chttp2/hpack_parser_corpus/4c7a034d3a3b4f29d99caf021a0e9bbb89706c2e new file mode 100644 index 0000000000..778ecf79e5 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/4c7a034d3a3b4f29d99caf021a0e9bbb89706c2e differ 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 0000000000..e2e8f9b231 --- /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 0000000000..b26118fd84 --- /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 0000000000..463f1a40fb --- /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 0000000000..198c062d33 --- /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 0000000000..0d758c9c7b --- /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 0000000000..a273e99788 --- /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 0000000000..8ac429215f --- /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 0000000000..e9dc85e59c --- /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 0000000000..ad5695bc9a --- /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 0000000000..8985a0765a --- /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 0000000000..a38435872b --- /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 0000000000..fc8f2aea18 --- /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 0000000000..e92f115945 --- /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 0000000000..532ee69601 --- /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 0000000000..b8c71bd5cd --- /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 0000000000..eafc76571c --- /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 0000000000..168a215596 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/99b2ed83be40cab431d1940e8de2dc3ebfe9352f differ 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 0000000000..ac4416657c --- /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 0000000000..59295acbf7 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/a871e7ce66afd4f57702cd1299de06cd08995561 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ac94b2788f5252f9e2e8502c7c75e04bef4c0b76 b/test/core/transport/chttp2/hpack_parser_corpus/ac94b2788f5252f9e2e8502c7c75e04bef4c0b76 new file mode 100644 index 0000000000..71cc57ac18 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ac94b2788f5252f9e2e8502c7c75e04bef4c0b76 @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/af417c83e831a96fda1bdde99a1af6509ef2df3d b/test/core/transport/chttp2/hpack_parser_corpus/af417c83e831a96fda1bdde99a1af6509ef2df3d new file mode 100644 index 0000000000..32171625ca --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/af417c83e831a96fda1bdde99a1af6509ef2df3d @@ -0,0 +1 @@ +(? \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/b0587e6e319f4b56d877e7ed46bc7da9b1e7249c b/test/core/transport/chttp2/hpack_parser_corpus/b0587e6e319f4b56d877e7ed46bc7da9b1e7249c new file mode 100644 index 0000000000..326107127d --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/b0587e6e319f4b56d877e7ed46bc7da9b1e7249c @@ -0,0 +1 @@ +):;!')*;}v)7I!);-M*!'d*CuX$0):*;:;;();:]@ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/b244c690157ff21d073940ef8c77d1898f37cf8e b/test/core/transport/chttp2/hpack_parser_corpus/b244c690157ff21d073940ef8c77d1898f37cf8e new file mode 100644 index 0000000000..e93670e5ed --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/b244c690157ff21d073940ef8c77d1898f37cf8e @@ -0,0 +1 @@ + cc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/bcf4684ce097faa7e9d99b6e93cc2de24f57aee3 b/test/core/transport/chttp2/hpack_parser_corpus/bcf4684ce097faa7e9d99b6e93cc2de24f57aee3 new file mode 100644 index 0000000000..3c7fb6e67a Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/bcf4684ce097faa7e9d99b6e93cc2de24f57aee3 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ccd3b8aa26c52f6d9c607c26ebdf621142aff745 b/test/core/transport/chttp2/hpack_parser_corpus/ccd3b8aa26c52f6d9c607c26ebdf621142aff745 new file mode 100644 index 0000000000..fa972a4f51 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/ccd3b8aa26c52f6d9c607c26ebdf621142aff745 differ 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 0000000000..81cc0fcbfb --- /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 0000000000..a4520fbd22 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/df01203edfa2dfe9e108ddde786ae48235624fef differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e25adf8de44f5978d00b7e8c52aee89c5cd1fe93 b/test/core/transport/chttp2/hpack_parser_corpus/e25adf8de44f5978d00b7e8c52aee89c5cd1fe93 new file mode 100644 index 0000000000..bc92a9fe32 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e25adf8de44f5978d00b7e8c52aee89c5cd1fe93 @@ -0,0 +1 @@ +?! c' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e29f05162e3d96d5549f96aa4a54c868535b2847 b/test/core/transport/chttp2/hpack_parser_corpus/e29f05162e3d96d5549f96aa4a54c868535b2847 new file mode 100644 index 0000000000..d00c6b4296 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e29f05162e3d96d5549f96aa4a54c868535b2847 @@ -0,0 +1 @@ +cc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/e4ce52007d001806fc9368b62c124dfc56e8471c b/test/core/transport/chttp2/hpack_parser_corpus/e4ce52007d001806fc9368b62c124dfc56e8471c new file mode 100644 index 0000000000..34de7ad356 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/e4ce52007d001806fc9368b62c124dfc56e8471c @@ -0,0 +1 @@ +):;!')*;}v-7I!)-M*!'d*CuX$0):*;:;;();:]@ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/eb48ebd4d01e5623dd16ae61938b3333fab3ce78 b/test/core/transport/chttp2/hpack_parser_corpus/eb48ebd4d01e5623dd16ae61938b3333fab3ce78 new file mode 100644 index 0000000000..b92817bb29 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/eb48ebd4d01e5623dd16ae61938b3333fab3ce78 @@ -0,0 +1 @@ +cc' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/eef2f30b5e2ecd98ebefb12d57aba8b4ad52d904 b/test/core/transport/chttp2/hpack_parser_corpus/eef2f30b5e2ecd98ebefb12d57aba8b4ad52d904 new file mode 100644 index 0000000000..9c27b3888f --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/eef2f30b5e2ecd98ebefb12d57aba8b4ad52d904 @@ -0,0 +1 @@ +? !cm' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ef23911de1a27d03d2d4983ca1527e17d6a7092b b/test/core/transport/chttp2/hpack_parser_corpus/ef23911de1a27d03d2d4983ca1527e17d6a7092b new file mode 100644 index 0000000000..453512785b --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ef23911de1a27d03d2d4983ca1527e17d6a7092b @@ -0,0 +1 @@ +0c'[(! [(!\ !G![(!! !GA)(!)!*)GA)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ef5b7fc62a2daecf1e8f928b1fa3ebd028413a41 b/test/core/transport/chttp2/hpack_parser_corpus/ef5b7fc62a2daecf1e8f928b1fa3ebd028413a41 new file mode 100644 index 0000000000..c3c6d7380e Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/ef5b7fc62a2daecf1e8f928b1fa3ebd028413a41 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/efdd6824bd2456e3e408e0e84369c4fa3aa14f41 b/test/core/transport/chttp2/hpack_parser_corpus/efdd6824bd2456e3e408e0e84369c4fa3aa14f41 new file mode 100644 index 0000000000..0926c631be --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/efdd6824bd2456e3e408e0e84369c4fa3aa14f41 @@ -0,0 +1 @@ +0c[(! [(!\ !G![(!! !GA)(!)!*)GA)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/efec040a5de1969df5e37e4bc50a0a8f0de341d8 b/test/core/transport/chttp2/hpack_parser_corpus/efec040a5de1969df5e37e4bc50a0a8f0de341d8 new file mode 100644 index 0000000000..9e21c0e98c --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/efec040a5de1969df5e37e4bc50a0a8f0de341d8 @@ -0,0 +1 @@ +(?:! c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f4628084cf46f139babb886a782b4ab5977d5d2e b/test/core/transport/chttp2/hpack_parser_corpus/f4628084cf46f139babb886a782b4ab5977d5d2e new file mode 100644 index 0000000000..8926de3707 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f4628084cf46f139babb886a782b4ab5977d5d2e @@ -0,0 +1 @@ +(?;[('! ( \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f7cf30724ab740918eee6e4a6b6658ae3d7706e8 b/test/core/transport/chttp2/hpack_parser_corpus/f7cf30724ab740918eee6e4a6b6658ae3d7706e8 new file mode 100644 index 0000000000..669e4a82f0 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f7cf30724ab740918eee6e4a6b6658ae3d7706e8 @@ -0,0 +1 @@ +c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/f823828ffd2a60efee36f1de52cb0f024ac5b4bb b/test/core/transport/chttp2/hpack_parser_corpus/f823828ffd2a60efee36f1de52cb0f024ac5b4bb new file mode 100644 index 0000000000..0fee6875ef --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f823828ffd2a60efee36f1de52cb0f024ac5b4bb @@ -0,0 +1 @@ +! c' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/fb15042c268625089ef6c8aa3d8a6f12d1d02c74 b/test/core/transport/chttp2/hpack_parser_corpus/fb15042c268625089ef6c8aa3d8a6f12d1d02c74 new file mode 100644 index 0000000000..67f84c5fbc --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/fb15042c268625089ef6c8aa3d8a6f12d1d02c74 @@ -0,0 +1 @@ +[(! (!\ !G:[(!'[(!! [(!! !G!GA)([( !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c new file mode 100644 index 0000000000..5ebcd320f4 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.c @@ -0,0 +1,53 @@ +/* + * + * 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 + +#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 0000000000..932b69e8ce --- /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 0000000000..c4b577879f --- /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 0000000000..2da8d29d89 --- /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 d1e660698b..5ebf6666e8 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", -- cgit v1.2.3 From cd0fbbdd50608dc043a7668397b716167b8c6815 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 16:02:31 -0700 Subject: Expand fuzzer corpus --- .../chttp2/hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4 | 1 + .../chttp2/hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c | 1 + .../chttp2/hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075 | 1 + .../chttp2/hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f | 1 + .../chttp2/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 0000000000..ebb1e884e3 --- /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 0000000000..75aa45a025 --- /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 0000000000..de4be3116b --- /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 0000000000..482d7db555 --- /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 0000000000..6caf38a623 --- /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 -- cgit v1.2.3 From 963c2b757a8576cf0e959bcfedfd03456915a470 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 18 Mar 2016 16:03:34 -0700 Subject: 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 94ee493700..513a594ae0 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" \ -- cgit v1.2.3 From 6c0618918345982d4f9460dcabd21b367f614ecc Mon Sep 17 00:00:00 2001 From: Masood Malekghassemi Date: Mon, 21 Mar 2016 17:56:32 -0700 Subject: Use a not-broken setuptools --- tools/run_tests/build_artifact_python.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh index 7ba04d7546..1f23f9fade 100755 --- a/tools/run_tests/build_artifact_python.sh +++ b/tools/run_tests/build_artifact_python.sh @@ -35,15 +35,18 @@ cd $(dirname $0)/../.. if [ "$SKIP_PIP_INSTALL" == "" ] then pip install --upgrade six - pip install --upgrade setuptools + # There's a bug in newer versions of setuptools (see + # https://bitbucket.org/pypa/setuptools/issues/503/pkg_resources_vendorpackagingrequirementsi) + pip install --upgrade 'setuptools==18' pip install -rrequirements.txt fi +export GRPC_PYTHON_USE_CUSTOM_BDIST=0 +export GRPC_PYTHON_BUILD_WITH_CYTHON=1 + # Build the source distribution first because MANIFEST.in cannot override # exclusion of built shared objects among package resources (for some # inexplicable reason). -GRPC_PYTHON_USE_CUSTOM_BDIST=0 \ -GRPC_PYTHON_BUILD_WITH_CYTHON=1 \ ${SETARCH_CMD} python setup.py \ sdist @@ -51,15 +54,11 @@ ${SETARCH_CMD} python setup.py \ # and thus ought to be run in a shell command separate of others. Further, it # trashes the actual bdist_wheel output, so it should be run first so that # bdist_wheel may be run unmolested. -GRPC_PYTHON_USE_CUSTOM_BDIST=0 \ -GRPC_PYTHON_BUILD_WITH_CYTHON=1 \ ${SETARCH_CMD} python setup.py \ build_tagged_ext # Wheel has a bug where directories don't get excluded. # https://bitbucket.org/pypa/wheel/issues/99/cannot-exclude-directory -GRPC_PYTHON_USE_CUSTOM_BDIST=0 \ -GRPC_PYTHON_BUILD_WITH_CYTHON=1 \ ${SETARCH_CMD} python setup.py \ bdist_wheel -- cgit v1.2.3 From 3eaaf39efffc95327b4ff440fc4a412486f94311 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 14 Mar 2016 11:53:42 -0700 Subject: Properly mark proc used in call credentials for garbage collection --- src/ruby/ext/grpc/rb_call_credentials.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ruby/ext/grpc/rb_call_credentials.c b/src/ruby/ext/grpc/rb_call_credentials.c index 2426f106a9..402becf6aa 100644 --- a/src/ruby/ext/grpc/rb_call_credentials.c +++ b/src/ruby/ext/grpc/rb_call_credentials.c @@ -57,6 +57,10 @@ typedef struct grpc_rb_call_credentials { /* Holder of ruby objects involved in contructing the credentials */ VALUE mark; + /* The proc called when getting the credentials. Same pointer as + wrapped->state */ + VALUE proc; + /* The actual credentials */ grpc_call_credentials *wrapped; } grpc_rb_call_credentials; @@ -164,11 +168,11 @@ static void grpc_rb_call_credentials_mark(void *p) { return; } wrapper = (grpc_rb_call_credentials *)p; - /* If it's not already cleaned up, mark the mark object */ if (wrapper->mark != Qnil) { rb_gc_mark(wrapper->mark); } + rb_gc_mark(wrapper->proc); } static rb_data_type_t grpc_rb_call_credentials_data_type = { @@ -187,6 +191,7 @@ static rb_data_type_t grpc_rb_call_credentials_data_type = { static VALUE grpc_rb_call_credentials_alloc(VALUE cls) { grpc_rb_call_credentials *wrapper = ALLOC(grpc_rb_call_credentials); wrapper->wrapped = NULL; + wrapper->proc = Qnil; wrapper->mark = Qnil; return TypedData_Wrap_Struct(cls, &grpc_rb_call_credentials_data_type, wrapper); } @@ -267,6 +272,7 @@ static VALUE grpc_rb_call_credentials_init(VALUE self, VALUE proc) { return Qnil; } + wrapper->proc = proc; wrapper->wrapped = creds; rb_ivar_set(self, id_callback, proc); -- cgit v1.2.3 From 05afaa838aad09ca65c8da5108492e63f15ae3f9 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 14 Mar 2016 13:01:00 -0700 Subject: Add GC marking for composite credentials --- src/ruby/ext/grpc/rb_call_credentials.c | 32 +++++++++++------------------- src/ruby/ext/grpc/rb_channel_credentials.c | 23 ++++++++++----------- 2 files changed, 23 insertions(+), 32 deletions(-) diff --git a/src/ruby/ext/grpc/rb_call_credentials.c b/src/ruby/ext/grpc/rb_call_credentials.c index 402becf6aa..7c4b69f7f0 100644 --- a/src/ruby/ext/grpc/rb_call_credentials.c +++ b/src/ruby/ext/grpc/rb_call_credentials.c @@ -50,17 +50,13 @@ * grpc_call_credentials */ static VALUE grpc_rb_cCallCredentials = Qnil; -/* grpc_rb_call_credentials wraps a grpc_call_credentials. It provides a peer - * ruby object, 'mark' to minimize copying when a credential is created from - * ruby. */ +/* grpc_rb_call_credentials wraps a grpc_call_credentials. It provides a mark + * object that is used to hold references to any objects used to create the + * credentials. */ typedef struct grpc_rb_call_credentials { /* Holder of ruby objects involved in contructing the credentials */ VALUE mark; - /* The proc called when getting the credentials. Same pointer as - wrapped->state */ - VALUE proc; - /* The actual credentials */ grpc_call_credentials *wrapped; } grpc_rb_call_credentials; @@ -150,13 +146,8 @@ static void grpc_rb_call_credentials_free(void *p) { return; } wrapper = (grpc_rb_call_credentials *)p; - - /* Delete the wrapped object if the mark object is Qnil, which indicates that - * no other object is the actual owner. */ - if (wrapper->wrapped != NULL && wrapper->mark == Qnil) { - grpc_call_credentials_release(wrapper->wrapped); - wrapper->wrapped = NULL; - } + grpc_call_credentials_release(wrapper->wrapped); + wrapper->wrapped = NULL; xfree(p); } @@ -168,11 +159,9 @@ static void grpc_rb_call_credentials_mark(void *p) { return; } wrapper = (grpc_rb_call_credentials *)p; - /* If it's not already cleaned up, mark the mark object */ if (wrapper->mark != Qnil) { rb_gc_mark(wrapper->mark); } - rb_gc_mark(wrapper->proc); } static rb_data_type_t grpc_rb_call_credentials_data_type = { @@ -191,7 +180,6 @@ static rb_data_type_t grpc_rb_call_credentials_data_type = { static VALUE grpc_rb_call_credentials_alloc(VALUE cls) { grpc_rb_call_credentials *wrapper = ALLOC(grpc_rb_call_credentials); wrapper->wrapped = NULL; - wrapper->proc = Qnil; wrapper->mark = Qnil; return TypedData_Wrap_Struct(cls, &grpc_rb_call_credentials_data_type, wrapper); } @@ -199,7 +187,7 @@ static VALUE grpc_rb_call_credentials_alloc(VALUE cls) { /* Creates a wrapping object for a given call credentials. This should only be * called with grpc_call_credentials objects that are not already associated * with any Ruby object */ -VALUE grpc_rb_wrap_call_credentials(grpc_call_credentials *c) { +VALUE grpc_rb_wrap_call_credentials(grpc_call_credentials *c, VALUE mark) { VALUE rb_wrapper; grpc_rb_call_credentials *wrapper; if (c == NULL) { @@ -209,6 +197,7 @@ VALUE grpc_rb_wrap_call_credentials(grpc_call_credentials *c) { TypedData_Get_Struct(rb_wrapper, grpc_rb_call_credentials, &grpc_rb_call_credentials_data_type, wrapper); wrapper->wrapped = c; + wrapper->mark = mark; return rb_wrapper; } @@ -272,7 +261,7 @@ static VALUE grpc_rb_call_credentials_init(VALUE self, VALUE proc) { return Qnil; } - wrapper->proc = proc; + wrapper->mark = proc; wrapper->wrapped = creds; rb_ivar_set(self, id_callback, proc); @@ -283,15 +272,18 @@ static VALUE grpc_rb_call_credentials_compose(int argc, VALUE *argv, VALUE self) { grpc_call_credentials *creds; grpc_call_credentials *other; + VALUE mark; if (argc == 0) { return self; } + mark = rb_ary_new(); creds = grpc_rb_get_wrapped_call_credentials(self); for (int i = 0; i < argc; i++) { + rb_ary_push(mark, argv[i]); other = grpc_rb_get_wrapped_call_credentials(argv[i]); creds = grpc_composite_call_credentials_create(creds, other, NULL); } - return grpc_rb_wrap_call_credentials(creds); + return grpc_rb_wrap_call_credentials(creds, mark); } void Init_grpc_call_credentials() { diff --git a/src/ruby/ext/grpc/rb_channel_credentials.c b/src/ruby/ext/grpc/rb_channel_credentials.c index 8c6fc3b7eb..f649084311 100644 --- a/src/ruby/ext/grpc/rb_channel_credentials.c +++ b/src/ruby/ext/grpc/rb_channel_credentials.c @@ -49,8 +49,8 @@ static VALUE grpc_rb_cChannelCredentials = Qnil; /* grpc_rb_channel_credentials wraps a grpc_channel_credentials. It provides a - * peer ruby object, 'mark' to minimize copying when a credential is - * created from ruby. */ + * mark object that is used to hold references to any objects used to create + * the credentials. */ typedef struct grpc_rb_channel_credentials { /* Holder of ruby objects involved in constructing the credentials */ VALUE mark; @@ -66,13 +66,8 @@ static void grpc_rb_channel_credentials_free(void *p) { return; }; wrapper = (grpc_rb_channel_credentials *)p; - - /* Delete the wrapped object if the mark object is Qnil, which indicates that - * no other object is the actual owner. */ - if (wrapper->wrapped != NULL && wrapper->mark == Qnil) { - grpc_channel_credentials_release(wrapper->wrapped); - wrapper->wrapped = NULL; - } + grpc_channel_credentials_release(wrapper->wrapped); + wrapper->wrapped = NULL; xfree(p); } @@ -85,7 +80,6 @@ static void grpc_rb_channel_credentials_mark(void *p) { } wrapper = (grpc_rb_channel_credentials *)p; - /* If it's not already cleaned up, mark the mark object */ if (wrapper->mark != Qnil) { rb_gc_mark(wrapper->mark); } @@ -114,7 +108,7 @@ static VALUE grpc_rb_channel_credentials_alloc(VALUE cls) { /* Creates a wrapping object for a given channel credentials. This should only * be called with grpc_channel_credentials objects that are not already * associated with any Ruby object. */ -VALUE grpc_rb_wrap_channel_credentials(grpc_channel_credentials *c) { +VALUE grpc_rb_wrap_channel_credentials(grpc_channel_credentials *c, VALUE mark) { VALUE rb_wrapper; grpc_rb_channel_credentials *wrapper; if (c == NULL) { @@ -124,6 +118,7 @@ VALUE grpc_rb_wrap_channel_credentials(grpc_channel_credentials *c) { TypedData_Get_Struct(rb_wrapper, grpc_rb_channel_credentials, &grpc_rb_channel_credentials_data_type, wrapper); wrapper->wrapped = c; + wrapper->mark = mark; return rb_wrapper; } @@ -222,11 +217,15 @@ static VALUE grpc_rb_channel_credentials_compose(int argc, VALUE *argv, VALUE self) { grpc_channel_credentials *creds; grpc_call_credentials *other; + VALUE mark; if (argc == 0) { return self; } + mark = rb_ary_new(); + rb_ary_push(mark, self); creds = grpc_rb_get_wrapped_channel_credentials(self); for (int i = 0; i < argc; i++) { + rb_ary_push(mark, argv[i]); other = grpc_rb_get_wrapped_call_credentials(argv[i]); creds = grpc_composite_channel_credentials_create(creds, other, NULL); if (creds == NULL) { @@ -234,7 +233,7 @@ static VALUE grpc_rb_channel_credentials_compose(int argc, VALUE *argv, "Failed to compose channel and call credentials"); } } - return grpc_rb_wrap_channel_credentials(creds); + return grpc_rb_wrap_channel_credentials(creds, mark); } void Init_grpc_channel_credentials() { -- cgit v1.2.3 From 8c9edc2a57badc215f0266ae770a973416ad4c62 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 14 Mar 2016 15:51:56 -0700 Subject: Make channels and calls properly mark references to their credentials --- src/ruby/ext/grpc/rb_call.c | 6 ++++++ src/ruby/ext/grpc/rb_channel.c | 22 ++++++++-------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c index af05ddf6e7..cd0aa6aaf2 100644 --- a/src/ruby/ext/grpc/rb_call.c +++ b/src/ruby/ext/grpc/rb_call.c @@ -72,6 +72,10 @@ static ID id_cq; * the flags used to create metadata from a Hash */ static ID id_flags; +/* id_credentials is the name of the hidden ivar that preserves the value + * of the credentials added to the call */ +static ID id_credentials; + /* id_input_md is the name of the hidden ivar that preserves the hash used to * create metadata, so that references to the strings it contains last as long * as the call the metadata is added to. */ @@ -299,6 +303,7 @@ static VALUE grpc_rb_call_set_credentials(VALUE self, VALUE credentials) { "grpc_call_set_credentials failed with %s (code=%d)", grpc_call_error_detail_of(err), err); } + rb_ivar_set(self, id_credentials, credentials); return Qnil; } @@ -859,6 +864,7 @@ void Init_grpc_call() { id_cq = rb_intern("__cq"); id_flags = rb_intern("__flags"); id_input_md = rb_intern("__input_md"); + id_credentials = rb_intern("__credentials"); /* Ids used in constructing the batch result. */ sym_send_message = ID2SYM(rb_intern("send_message")); diff --git a/src/ruby/ext/grpc/rb_channel.c b/src/ruby/ext/grpc/rb_channel.c index 0e6badbdaf..e1aaa539db 100644 --- a/src/ruby/ext/grpc/rb_channel.c +++ b/src/ruby/ext/grpc/rb_channel.c @@ -70,11 +70,10 @@ static VALUE grpc_rb_cChannel = Qnil; /* Used during the conversion of a hash to channel args during channel setup */ static VALUE grpc_rb_cChannelArgs; -/* grpc_rb_channel wraps a grpc_channel. It provides a peer ruby object, - * 'mark' to minimize copying when a channel is created from ruby. */ +/* grpc_rb_channel wraps a grpc_channel. */ typedef struct grpc_rb_channel { - /* Holder of ruby objects involved in constructing the channel */ - VALUE mark; + VALUE credentials; + /* The actual channel */ grpc_channel *wrapped; } grpc_rb_channel; @@ -87,13 +86,8 @@ static void grpc_rb_channel_free(void *p) { }; ch = (grpc_rb_channel *)p; - /* Deletes the wrapped object if the mark object is Qnil, which indicates - * that no other object is the actual owner. */ - if (ch->wrapped != NULL && ch->mark == Qnil) { + if (ch->wrapped != NULL) { grpc_channel_destroy(ch->wrapped); - rb_warning("channel gc: destroyed the c channel"); - } else { - rb_warning("channel gc: did not destroy the c channel"); } xfree(p); @@ -106,8 +100,8 @@ static void grpc_rb_channel_mark(void *p) { return; } channel = (grpc_rb_channel *)p; - if (channel->mark != Qnil) { - rb_gc_mark(channel->mark); + if (channel->credentials != Qnil) { + rb_gc_mark(channel->credentials); } } @@ -125,7 +119,7 @@ static rb_data_type_t grpc_channel_data_type = { static VALUE grpc_rb_channel_alloc(VALUE cls) { grpc_rb_channel *wrapper = ALLOC(grpc_rb_channel); wrapper->wrapped = NULL; - wrapper->mark = Qnil; + wrapper->credentials = Qnil; return TypedData_Wrap_Struct(cls, &grpc_channel_data_type, wrapper); } @@ -162,6 +156,7 @@ static VALUE grpc_rb_channel_init(int argc, VALUE *argv, VALUE self) { } ch = grpc_insecure_channel_create(target_chars, &args, NULL); } else { + wrapper->credentials = credentials; creds = grpc_rb_get_wrapped_channel_credentials(credentials); ch = grpc_secure_channel_create(creds, target_chars, &args, NULL); } @@ -330,7 +325,6 @@ static VALUE grpc_rb_channel_destroy(VALUE self) { if (ch != NULL) { grpc_channel_destroy(ch); wrapper->wrapped = NULL; - wrapper->mark = Qnil; } return Qnil; -- cgit v1.2.3 From d5dd1a388b21f2b897aaa8db8e77427e9e0efc79 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Wed, 23 Mar 2016 14:10:43 -0700 Subject: added grpclb support to sockaddr resolver --- .../client_config/resolvers/sockaddr_resolver.c | 37 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/core/client_config/resolvers/sockaddr_resolver.c b/src/core/client_config/resolvers/sockaddr_resolver.c index 3cb7d79b67..be9d62b8e3 100644 --- a/src/core/client_config/resolvers/sockaddr_resolver.c +++ b/src/core/client_config/resolvers/sockaddr_resolver.c @@ -287,17 +287,44 @@ static grpc_resolver *sockaddr_create( r->lb_policy_name = NULL; if (0 != strcmp(args->uri->query, "")) { gpr_slice query_slice; - gpr_slice_buffer query_parts; + gpr_slice_buffer query_parts; /* the &-separated elements of the query */ + gpr_slice_buffer query_param_parts; /* the =-separated subelements */ query_slice = gpr_slice_new(args->uri->query, strlen(args->uri->query), do_nothing); gpr_slice_buffer_init(&query_parts); - gpr_slice_split(query_slice, "=", &query_parts); - GPR_ASSERT(query_parts.count == 2); - if (0 == gpr_slice_str_cmp(query_parts.slices[0], "lb_policy")) { - r->lb_policy_name = gpr_dump_slice(query_parts.slices[1], GPR_DUMP_ASCII); + gpr_slice_buffer_init(&query_param_parts); + /* the query can contain "lb_policy=" and "lb_enabled=<1|0>" */ + + bool lb_enabled; + gpr_slice_split(query_slice, "&", &query_parts); + for (i = 0; i < query_parts.count; i++) { + gpr_slice_split(query_parts.slices[i], "=", &query_param_parts); + GPR_ASSERT(query_param_parts.count == 2); + if (0 == gpr_slice_str_cmp(query_param_parts.slices[0], "lb_policy")) { + r->lb_policy_name = + gpr_dump_slice(query_param_parts.slices[1], GPR_DUMP_ASCII); + } else if (0 == + gpr_slice_str_cmp(query_param_parts.slices[0], "lb_enabled")) { + if (0 != gpr_slice_str_cmp(query_param_parts.slices[1], "0")) { + /* anything other than 0 is taken to be true */ + lb_enabled = true; + } + } else { + gpr_log(GPR_ERROR, "invalid query element value: '%s'", + query_parts.slices[0]); + } + gpr_slice_buffer_reset_and_unref(&query_param_parts); + } + + if (strcmp("grpclb", r->lb_policy_name) == 0 && !lb_enabled) { + /* we want grpclb but the "resolved" addresses aren't LB enabled. Fall + * back to the default policy */ + gpr_free(r->lb_policy_name); + r->lb_policy_name = gpr_strdup(default_lb_policy_name); } gpr_slice_buffer_destroy(&query_parts); + gpr_slice_buffer_destroy(&query_param_parts); gpr_slice_unref(query_slice); } if (r->lb_policy_name == NULL) { -- cgit v1.2.3 From e17f6afd43c4c3b6def91b50c37f5ef18ab48eba Mon Sep 17 00:00:00 2001 From: yang-g Date: Wed, 2 Mar 2016 16:39:13 -0800 Subject: fix windows leaks --- src/core/iomgr/iocp_windows.c | 14 +++++++++----- src/core/iomgr/iocp_windows.h | 11 +++++++++-- src/core/iomgr/tcp_server_windows.c | 3 +-- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/core/iomgr/iocp_windows.c b/src/core/iomgr/iocp_windows.c index 807729708e..fa87e5246b 100644 --- a/src/core/iomgr/iocp_windows.c +++ b/src/core/iomgr/iocp_windows.c @@ -71,7 +71,8 @@ static DWORD deadline_to_millis_timeout(gpr_timespec deadline, timeout, gpr_time_from_nanos(GPR_NS_PER_MS - 1, GPR_TIMESPAN))); } -void grpc_iocp_work(grpc_exec_ctx *exec_ctx, gpr_timespec deadline) { +grpc_iocp_work_status grpc_iocp_work(grpc_exec_ctx *exec_ctx, + gpr_timespec deadline) { BOOL success; DWORD bytes = 0; DWORD flags = 0; @@ -84,14 +85,14 @@ void grpc_iocp_work(grpc_exec_ctx *exec_ctx, gpr_timespec deadline) { g_iocp, &bytes, &completion_key, &overlapped, deadline_to_millis_timeout(deadline, gpr_now(deadline.clock_type))); if (success == 0 && overlapped == NULL) { - return; + return GRPC_IOCP_WORK_TIMEOUT; } GPR_ASSERT(completion_key && overlapped); if (overlapped == &g_iocp_custom_overlap) { gpr_atm_full_fetch_add(&g_custom_events, -1); if (completion_key == (ULONG_PTR)&g_iocp_kick_token) { /* We were awoken from a kick. */ - return; + return GRPC_IOCP_WORK_KICK; } gpr_log(GPR_ERROR, "Unknown custom completion key."); abort(); @@ -121,6 +122,7 @@ void grpc_iocp_work(grpc_exec_ctx *exec_ctx, gpr_timespec deadline) { } gpr_mu_unlock(&socket->state_mu); grpc_exec_ctx_enqueue(exec_ctx, closure, true, NULL); + return GRPC_IOCP_WORK_WORK; } void grpc_iocp_init(void) { @@ -140,10 +142,12 @@ void grpc_iocp_kick(void) { void grpc_iocp_flush(void) { grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + grpc_iocp_work_status work_status; do { - grpc_iocp_work(&exec_ctx, gpr_inf_past(GPR_CLOCK_MONOTONIC)); - } while (grpc_exec_ctx_flush(&exec_ctx)); + work_status = grpc_iocp_work(&exec_ctx, gpr_inf_past(GPR_CLOCK_MONOTONIC)); + } while (work_status == GRPC_IOCP_WORK_KICK || + grpc_exec_ctx_flush(&exec_ctx)); } void grpc_iocp_shutdown(void) { diff --git a/src/core/iomgr/iocp_windows.h b/src/core/iomgr/iocp_windows.h index 75f3ba8477..8b2b1aeb5c 100644 --- a/src/core/iomgr/iocp_windows.h +++ b/src/core/iomgr/iocp_windows.h @@ -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 @@ -38,7 +38,14 @@ #include "src/core/iomgr/socket_windows.h" -void grpc_iocp_work(grpc_exec_ctx *exec_ctx, gpr_timespec deadline); +typedef enum { + GRPC_IOCP_WORK_WORK, + GRPC_IOCP_WORK_TIMEOUT, + GRPC_IOCP_WORK_KICK +} grpc_iocp_work_status; + +grpc_iocp_work_status grpc_iocp_work(grpc_exec_ctx *exec_ctx, + gpr_timespec deadline); void grpc_iocp_init(void); void grpc_iocp_kick(void); void grpc_iocp_flush(void); diff --git a/src/core/iomgr/tcp_server_windows.c b/src/core/iomgr/tcp_server_windows.c index ce930b8f41..a4abc5b974 100644 --- a/src/core/iomgr/tcp_server_windows.c +++ b/src/core/iomgr/tcp_server_windows.c @@ -240,8 +240,7 @@ static void decrement_active_ports_and_notify(grpc_exec_ctx *exec_ctx, sp->shutting_down = 0; gpr_mu_lock(&sp->server->mu); GPR_ASSERT(sp->server->active_ports > 0); - if (0 == --sp->server->active_ports && - sp->server->shutdown_complete != NULL) { + if (0 == --sp->server->active_ports) { notify = 1; } gpr_mu_unlock(&sp->server->mu); -- cgit v1.2.3 From ca5a9aded31e7abfcb627b7e7508b8f26e328461 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Thu, 17 Mar 2016 17:22:34 -0700 Subject: correct handling for shadowed assemblies when loading native extension --- src/csharp/Grpc.Core/Internal/NativeExtension.cs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/csharp/Grpc.Core/Internal/NativeExtension.cs b/src/csharp/Grpc.Core/Internal/NativeExtension.cs index 4c742ab6c3..282816d51e 100644 --- a/src/csharp/Grpc.Core/Internal/NativeExtension.cs +++ b/src/csharp/Grpc.Core/Internal/NativeExtension.cs @@ -32,6 +32,7 @@ #endregion using System; +using System.Globalization; using System.IO; using System.Reflection; @@ -99,14 +100,30 @@ namespace Grpc.Core.Internal // TODO: allow customizing path to native extension (possibly through exposing a GrpcEnvironment property). var libraryFlavor = string.Format("{0}_{1}", GetPlatformString(), GetArchitectureString()); - var fullPath = Path.Combine(GetExecutingAssemblyDirectory(), + var fullPath = Path.Combine(Path.GetDirectoryName(GetAssemblyPath()), NativeLibrariesDir, libraryFlavor, GetNativeLibraryFilename()); return new UnmanagedLibrary(fullPath); } - private static string GetExecutingAssemblyDirectory() + private static string GetAssemblyPath() { - return Path.GetDirectoryName(typeof(NativeExtension).GetTypeInfo().Assembly.Location); + var assembly = typeof(NativeExtension).GetTypeInfo().Assembly; + + // If assembly is shadowed (e.g. in a webapp), EscapedCodeBase is pointing + // to the original location of the assembly, and Location is pointing + // to the shadow copy. We care about the original location because + // the native dlls don't get shadowed. + var escapedCodeBase = assembly.EscapedCodeBase; + if (IsFileUri(escapedCodeBase)) + { + return new Uri(escapedCodeBase).LocalPath; + } + return assembly.Location; + } + + private static bool IsFileUri(string uri) + { + return uri.ToLowerInvariant().StartsWith(Uri.UriSchemeFile); } private static string GetPlatformString() -- cgit v1.2.3 From 2a712736fe0d8611a8ea402f9fa3e893902bf864 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 14:59:22 -0700 Subject: 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 e3124b1e43..d3b5ef8880 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 510885b436..bd75088cc6 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 3319c2cb1c..2e5e5e7cdb 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" -- cgit v1.2.3 From 2123974071e502cde2dea3a457dccfe66af58bc1 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 16:33:28 -0700 Subject: Merge fixes --- Makefile | 71 ++++++---------------- build.yaml | 24 ++------ .../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/http/corpus/request1.txt | 3 + test/core/http/corpus/response1.txt | 4 ++ test/core/http/fuzzer.c | 50 +++++++++++++++ test/core/http/request_corpus/request1.txt | 3 - test/core/http/request_fuzzer.c | 50 --------------- .../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/http/response_corpus/response1.txt | 4 -- test/core/http/response_fuzzer.c | 50 --------------- tools/fuzzer/runners/http_fuzzer_test.sh | 32 ++++++++++ tools/fuzzer/runners/http_request_fuzzer_test.sh | 32 ---------- tools/fuzzer/runners/http_response_fuzzer_test.sh | 32 ---------- tools/run_tests/sources_and_headers.json | 24 ++------ 65 files changed, 181 insertions(+), 324 deletions(-) create mode 100644 test/core/http/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 create mode 100644 test/core/http/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba create mode 100644 test/core/http/corpus/069352518a1d1baa05f317c677d275cefda2ac97 create mode 100644 test/core/http/corpus/0c5b7c2569410b526605e308309a7f36574e530d create mode 100644 test/core/http/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf create mode 100644 test/core/http/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 create mode 100644 test/core/http/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 create mode 100644 test/core/http/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece create mode 100644 test/core/http/corpus/39b19c41ba537f37511eff7727733715db432e76 create mode 100644 test/core/http/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac create mode 100644 test/core/http/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 create mode 100644 test/core/http/corpus/487725eb38511c79a9340bf4560a1411061fa6fa create mode 100644 test/core/http/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 create mode 100644 test/core/http/corpus/5028c56a5116a186b7343ff59567b47347a0796d create mode 100644 test/core/http/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 create mode 100644 test/core/http/corpus/657368df512ca6294b9df16adf935a3f374a8be2 create mode 100644 test/core/http/corpus/81f59a12b458ec3604035cb962165c604d1355e6 create mode 100644 test/core/http/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 create mode 100644 test/core/http/corpus/97e4499d450c95660de86747f527e670f2012548 create mode 100644 test/core/http/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 create mode 100644 test/core/http/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 create mode 100644 test/core/http/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 create mode 100644 test/core/http/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 create mode 100644 test/core/http/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 create mode 100644 test/core/http/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 create mode 100644 test/core/http/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 create mode 100644 test/core/http/corpus/request1.txt create mode 100644 test/core/http/corpus/response1.txt create mode 100644 test/core/http/fuzzer.c delete mode 100644 test/core/http/request_corpus/request1.txt delete mode 100644 test/core/http/request_fuzzer.c delete mode 100644 test/core/http/response_corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 delete mode 100644 test/core/http/response_corpus/05e613853d64a9669ea3cf41b0de777dc24931ba delete mode 100644 test/core/http/response_corpus/069352518a1d1baa05f317c677d275cefda2ac97 delete mode 100644 test/core/http/response_corpus/0c5b7c2569410b526605e308309a7f36574e530d delete mode 100644 test/core/http/response_corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf delete mode 100644 test/core/http/response_corpus/1e1273f90187fdf5df3625764245610f86af6aa4 delete mode 100644 test/core/http/response_corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 delete mode 100644 test/core/http/response_corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece delete mode 100644 test/core/http/response_corpus/39b19c41ba537f37511eff7727733715db432e76 delete mode 100644 test/core/http/response_corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac delete mode 100644 test/core/http/response_corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 delete mode 100644 test/core/http/response_corpus/487725eb38511c79a9340bf4560a1411061fa6fa delete mode 100644 test/core/http/response_corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 delete mode 100644 test/core/http/response_corpus/5028c56a5116a186b7343ff59567b47347a0796d delete mode 100644 test/core/http/response_corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 delete mode 100644 test/core/http/response_corpus/657368df512ca6294b9df16adf935a3f374a8be2 delete mode 100644 test/core/http/response_corpus/81f59a12b458ec3604035cb962165c604d1355e6 delete mode 100644 test/core/http/response_corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 delete mode 100644 test/core/http/response_corpus/97e4499d450c95660de86747f527e670f2012548 delete mode 100644 test/core/http/response_corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 delete mode 100644 test/core/http/response_corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 delete mode 100644 test/core/http/response_corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 delete mode 100644 test/core/http/response_corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 delete mode 100644 test/core/http/response_corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 delete mode 100644 test/core/http/response_corpus/d936dad71c129cf659097dc3db64550c4dd467f4 delete mode 100644 test/core/http/response_corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 delete mode 100644 test/core/http/response_corpus/response1.txt delete mode 100644 test/core/http/response_fuzzer.c create mode 100644 tools/fuzzer/runners/http_fuzzer_test.sh delete mode 100644 tools/fuzzer/runners/http_request_fuzzer_test.sh delete mode 100644 tools/fuzzer/runners/http_response_fuzzer_test.sh diff --git a/Makefile b/Makefile index d3b5ef8880..b974126a97 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 bd75088cc6..76a126c947 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/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 b/test/core/http/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 new file mode 100644 index 0000000000..3d6face56a --- /dev/null +++ b/test/core/http/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 @@ -0,0 +1,2 @@ +HTTP/1.1 200 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba b/test/core/http/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba new file mode 100644 index 0000000000..5cbaf2e460 --- /dev/null +++ b/test/core/http/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba @@ -0,0 +1,2 @@ +HTTP/1.1 8) pMKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/069352518a1d1baa05f317c677d275cefda2ac97 b/test/core/http/corpus/069352518a1d1baa05f317c677d275cefda2ac97 new file mode 100644 index 0000000000..8831f0786b --- /dev/null +++ b/test/core/http/corpus/069352518a1d1baa05f317c677d275cefda2ac97 @@ -0,0 +1,2 @@ +HTTP/1.1 80) OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/0c5b7c2569410b526605e308309a7f36574e530d b/test/core/http/corpus/0c5b7c2569410b526605e308309a7f36574e530d new file mode 100644 index 0000000000..c79e456904 --- /dev/null +++ b/test/core/http/corpus/0c5b7c2569410b526605e308309a7f36574e530d @@ -0,0 +1,4 @@ +H TTP/16.1 200 OK +test: h!ello + +abcd diff --git a/test/core/http/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf b/test/core/http/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf new file mode 100644 index 0000000000..7b979b5e10 --- /dev/null +++ b/test/core/http/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/http/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 b/test/core/http/corpus/1e1273f90187fdf5df3625764245610f86af6aa4 new file mode 100644 index 0000000000..67382b4f3a --- /dev/null +++ b/test/core/http/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/http/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 b/test/core/http/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 new file mode 100644 index 0000000000..cce8ded71a --- /dev/null +++ b/test/core/http/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 @@ -0,0 +1,2 @@ +HTTP/1*9y 200 OKm +tes \ No newline at end of file diff --git a/test/core/http/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece b/test/core/http/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece new file mode 100644 index 0000000000..8df43e4dce --- /dev/null +++ b/test/core/http/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece @@ -0,0 +1,2 @@ +HTTP/1.9y 200 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/39b19c41ba537f37511eff7727733715db432e76 b/test/core/http/corpus/39b19c41ba537f37511eff7727733715db432e76 new file mode 100644 index 0000000000..fefa4512a8 --- /dev/null +++ b/test/core/http/corpus/39b19c41ba537f37511eff7727733715db432e76 @@ -0,0 +1,2 @@ +HTTP/1.1 000 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac b/test/core/http/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac new file mode 100644 index 0000000000..b967b57614 --- /dev/null +++ b/test/core/http/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/http/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 b/test/core/http/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 new file mode 100644 index 0000000000..7d20266703 --- /dev/null +++ b/test/core/http/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 @@ -0,0 +1,2 @@ +HTTP/1.1y 200 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/487725eb38511c79a9340bf4560a1411061fa6fa b/test/core/http/corpus/487725eb38511c79a9340bf4560a1411061fa6fa new file mode 100644 index 0000000000..c59c4d2246 --- /dev/null +++ b/test/core/http/corpus/487725eb38511c79a9340bf4560a1411061fa6fa @@ -0,0 +1,2 @@ +HTTP/01.021 O,H +tes \ No newline at end of file diff --git a/test/core/http/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 b/test/core/http/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 new file mode 100644 index 0000000000..49d1c8f1d2 --- /dev/null +++ b/test/core/http/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 @@ -0,0 +1,2 @@ +HTTP/1.1 200 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/5028c56a5116a186b7343ff59567b47347a0796d b/test/core/http/corpus/5028c56a5116a186b7343ff59567b47347a0796d new file mode 100644 index 0000000000..5f2c4dfef0 --- /dev/null +++ b/test/core/http/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/http/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 b/test/core/http/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 new file mode 100644 index 0000000000..9a15ab025f --- /dev/null +++ b/test/core/http/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 @@ -0,0 +1,2 @@ +HTTP/1. 200 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/657368df512ca6294b9df16adf935a3f374a8be2 b/test/core/http/corpus/657368df512ca6294b9df16adf935a3f374a8be2 new file mode 100644 index 0000000000..1f14f69103 --- /dev/null +++ b/test/core/http/corpus/657368df512ca6294b9df16adf935a3f374a8be2 @@ -0,0 +1,3 @@ +HTT +/1.1 201 OKH +des \ No newline at end of file diff --git a/test/core/http/corpus/81f59a12b458ec3604035cb962165c604d1355e6 b/test/core/http/corpus/81f59a12b458ec3604035cb962165c604d1355e6 new file mode 100644 index 0000000000..d4223ccf81 --- /dev/null +++ b/test/core/http/corpus/81f59a12b458ec3604035cb962165c604d1355e6 @@ -0,0 +1,2 @@ +HTTP/1.1 8p) )MKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 b/test/core/http/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 new file mode 100644 index 0000000000..99e2c48bbd --- /dev/null +++ b/test/core/http/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/http/corpus/97e4499d450c95660de86747f527e670f2012548 b/test/core/http/corpus/97e4499d450c95660de86747f527e670f2012548 new file mode 100644 index 0000000000..b1927fbf63 --- /dev/null +++ b/test/core/http/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/http/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 b/test/core/http/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 new file mode 100644 index 0000000000..837449dda3 --- /dev/null +++ b/test/core/http/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 @@ -0,0 +1,2 @@ +HTTP/1.1 80 OH +tes \ No newline at end of file diff --git a/test/core/http/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 b/test/core/http/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 new file mode 100644 index 0000000000..10905bed39 --- /dev/null +++ b/test/core/http/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 @@ -0,0 +1,2 @@ +JHTTP/1.1 200 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 b/test/core/http/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 new file mode 100644 index 0000000000..2704e4fb39 --- /dev/null +++ b/test/core/http/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 @@ -0,0 +1,2 @@ +HTTP/1.1 767) OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 b/test/core/http/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 new file mode 100644 index 0000000000..f5cbbc69e7 --- /dev/null +++ b/test/core/http/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/http/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 b/test/core/http/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 new file mode 100644 index 0000000000..be33d81102 --- /dev/null +++ b/test/core/http/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/http/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 b/test/core/http/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 new file mode 100644 index 0000000000..ccf918751d --- /dev/null +++ b/test/core/http/corpus/d936dad71c129cf659097dc3db64550c4dd467f4 @@ -0,0 +1,2 @@ +HTTP/1.200 OKH +tes \ No newline at end of file diff --git a/test/core/http/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 b/test/core/http/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 new file mode 100644 index 0000000000..06f1a3b800 --- /dev/null +++ b/test/core/http/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 @@ -0,0 +1 @@ +HH \ No newline at end of file diff --git a/test/core/http/corpus/request1.txt b/test/core/http/corpus/request1.txt new file mode 100644 index 0000000000..16a750fbf9 --- /dev/null +++ b/test/core/http/corpus/request1.txt @@ -0,0 +1,3 @@ +GET / HTTP/1.0 + + diff --git a/test/core/http/corpus/response1.txt b/test/core/http/corpus/response1.txt new file mode 100644 index 0000000000..a17139982e --- /dev/null +++ b/test/core/http/corpus/response1.txt @@ -0,0 +1,4 @@ +HTTP/1.1 200 OK +test: hello + +abcd diff --git a/test/core/http/fuzzer.c b/test/core/http/fuzzer.c new file mode 100644 index 0000000000..0aa95ee9e4 --- /dev/null +++ b/test/core/http/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/http/parser.h" + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + grpc_http_parser parser; + grpc_http_parser_init(&parser); + gpr_slice slice = gpr_slice_from_copied_buffer((const char *)data, size); + grpc_http_parser_parse(&parser, slice); + grpc_http_parser_eof(&parser); + gpr_slice_unref(slice); + grpc_http_parser_destroy(&parser); + return 0; +} diff --git a/test/core/http/request_corpus/request1.txt b/test/core/http/request_corpus/request1.txt deleted file mode 100644 index 16a750fbf9..0000000000 --- a/test/core/http/request_corpus/request1.txt +++ /dev/null @@ -1,3 +0,0 @@ -GET / HTTP/1.0 - - diff --git a/test/core/http/request_fuzzer.c b/test/core/http/request_fuzzer.c deleted file mode 100644 index ff960484db..0000000000 --- a/test/core/http/request_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/test/core/http/response_corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 b/test/core/http/response_corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 deleted file mode 100644 index 3d6face56a..0000000000 --- a/test/core/http/response_corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1 200 OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/05e613853d64a9669ea3cf41b0de777dc24931ba b/test/core/http/response_corpus/05e613853d64a9669ea3cf41b0de777dc24931ba deleted file mode 100644 index 5cbaf2e460..0000000000 --- a/test/core/http/response_corpus/05e613853d64a9669ea3cf41b0de777dc24931ba +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1 8) pMKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/069352518a1d1baa05f317c677d275cefda2ac97 b/test/core/http/response_corpus/069352518a1d1baa05f317c677d275cefda2ac97 deleted file mode 100644 index 8831f0786b..0000000000 --- a/test/core/http/response_corpus/069352518a1d1baa05f317c677d275cefda2ac97 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1 80) OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/0c5b7c2569410b526605e308309a7f36574e530d b/test/core/http/response_corpus/0c5b7c2569410b526605e308309a7f36574e530d deleted file mode 100644 index c79e456904..0000000000 --- a/test/core/http/response_corpus/0c5b7c2569410b526605e308309a7f36574e530d +++ /dev/null @@ -1,4 +0,0 @@ -H TTP/16.1 200 OK -test: h!ello - -abcd diff --git a/test/core/http/response_corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf b/test/core/http/response_corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf deleted file mode 100644 index 7b979b5e10..0000000000 --- a/test/core/http/response_corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf +++ /dev/null @@ -1,3 +0,0 @@ -HTTP/1.1 200 OKH -tHTTP/01.021 Oes,H -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/1e1273f90187fdf5df3625764245610f86af6aa4 b/test/core/http/response_corpus/1e1273f90187fdf5df3625764245610f86af6aa4 deleted file mode 100644 index 67382b4f3a..0000000000 --- a/test/core/http/response_corpus/1e1273f90187fdf5df3625764245610f86af6aa4 +++ /dev/null @@ -1,3 +0,0 @@ -HTTP/1.1 200 OKHHTTP/1.200 OKH - -tHTHTTP/0 20T:tes/01. \ No newline at end of file diff --git a/test/core/http/response_corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 b/test/core/http/response_corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 deleted file mode 100644 index cce8ded71a..0000000000 --- a/test/core/http/response_corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1*9y 200 OKm -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece b/test/core/http/response_corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece deleted file mode 100644 index 8df43e4dce..0000000000 --- a/test/core/http/response_corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.9y 200 OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/39b19c41ba537f37511eff7727733715db432e76 b/test/core/http/response_corpus/39b19c41ba537f37511eff7727733715db432e76 deleted file mode 100644 index fefa4512a8..0000000000 --- a/test/core/http/response_corpus/39b19c41ba537f37511eff7727733715db432e76 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1 000 OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac b/test/core/http/response_corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac deleted file mode 100644 index b967b57614..0000000000 --- a/test/core/http/response_corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac +++ /dev/null @@ -1,3 +0,0 @@ -HTTP/1.1 200 OKH -tHTTP/01.021 : Oes,H -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 b/test/core/http/response_corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 deleted file mode 100644 index 7d20266703..0000000000 --- a/test/core/http/response_corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1y 200 OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/487725eb38511c79a9340bf4560a1411061fa6fa b/test/core/http/response_corpus/487725eb38511c79a9340bf4560a1411061fa6fa deleted file mode 100644 index c59c4d2246..0000000000 --- a/test/core/http/response_corpus/487725eb38511c79a9340bf4560a1411061fa6fa +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/01.021 O,H -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 b/test/core/http/response_corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 deleted file mode 100644 index 49d1c8f1d2..0000000000 --- a/test/core/http/response_corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1 200 OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/5028c56a5116a186b7343ff59567b47347a0796d b/test/core/http/response_corpus/5028c56a5116a186b7343ff59567b47347a0796d deleted file mode 100644 index 5f2c4dfef0..0000000000 --- a/test/core/http/response_corpus/5028c56a5116a186b7343ff59567b47347a0796d +++ /dev/null @@ -1,3 +0,0 @@ -HTTP/1.1 200 OKH - HTDP/01.021 : Oes,H -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 b/test/core/http/response_corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 deleted file mode 100644 index 9a15ab025f..0000000000 --- a/test/core/http/response_corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1. 200 OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/657368df512ca6294b9df16adf935a3f374a8be2 b/test/core/http/response_corpus/657368df512ca6294b9df16adf935a3f374a8be2 deleted file mode 100644 index 1f14f69103..0000000000 --- a/test/core/http/response_corpus/657368df512ca6294b9df16adf935a3f374a8be2 +++ /dev/null @@ -1,3 +0,0 @@ -HTT -/1.1 201 OKH -des \ No newline at end of file diff --git a/test/core/http/response_corpus/81f59a12b458ec3604035cb962165c604d1355e6 b/test/core/http/response_corpus/81f59a12b458ec3604035cb962165c604d1355e6 deleted file mode 100644 index d4223ccf81..0000000000 --- a/test/core/http/response_corpus/81f59a12b458ec3604035cb962165c604d1355e6 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1 8p) )MKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 b/test/core/http/response_corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 deleted file mode 100644 index 99e2c48bbd..0000000000 --- a/test/core/http/response_corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9 +++ /dev/null @@ -1,4 +0,0 @@ -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/http/response_corpus/97e4499d450c95660de86747f527e670f2012548 b/test/core/http/response_corpus/97e4499d450c95660de86747f527e670f2012548 deleted file mode 100644 index b1927fbf63..0000000000 --- a/test/core/http/response_corpus/97e4499d450c95660de86747f527e670f2012548 +++ /dev/null @@ -1,3 +0,0 @@ -HTHHTT`TT -/1.1 201 P*/OKH -des1.1 2T \ No newline at end of file diff --git a/test/core/http/response_corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 b/test/core/http/response_corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 deleted file mode 100644 index 837449dda3..0000000000 --- a/test/core/http/response_corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1 80 OH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 b/test/core/http/response_corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 deleted file mode 100644 index 10905bed39..0000000000 --- a/test/core/http/response_corpus/b04fea5c041c707db0ad9c09a81672557b52cc47 +++ /dev/null @@ -1,2 +0,0 @@ -JHTTP/1.1 200 OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 b/test/core/http/response_corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 deleted file mode 100644 index 2704e4fb39..0000000000 --- a/test/core/http/response_corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.1 767) OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 b/test/core/http/response_corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 deleted file mode 100644 index f5cbbc69e7..0000000000 --- a/test/core/http/response_corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2 +++ /dev/null @@ -1,3 +0,0 @@ -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/http/response_corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 b/test/core/http/response_corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 deleted file mode 100644 index be33d81102..0000000000 --- a/test/core/http/response_corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453 +++ /dev/null @@ -1,3 +0,0 @@ -HTTP/1.1 200 OKH - HTTP/01.021 : Oes,H -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/d936dad71c129cf659097dc3db64550c4dd467f4 b/test/core/http/response_corpus/d936dad71c129cf659097dc3db64550c4dd467f4 deleted file mode 100644 index ccf918751d..0000000000 --- a/test/core/http/response_corpus/d936dad71c129cf659097dc3db64550c4dd467f4 +++ /dev/null @@ -1,2 +0,0 @@ -HTTP/1.200 OKH -tes \ No newline at end of file diff --git a/test/core/http/response_corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 b/test/core/http/response_corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 deleted file mode 100644 index 06f1a3b800..0000000000 --- a/test/core/http/response_corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066 +++ /dev/null @@ -1 +0,0 @@ -HH \ No newline at end of file diff --git a/test/core/http/response_corpus/response1.txt b/test/core/http/response_corpus/response1.txt deleted file mode 100644 index a17139982e..0000000000 --- a/test/core/http/response_corpus/response1.txt +++ /dev/null @@ -1,4 +0,0 @@ -HTTP/1.1 200 OK -test: hello - -abcd diff --git a/test/core/http/response_fuzzer.c b/test/core/http/response_fuzzer.c deleted file mode 100644 index ff960484db..0000000000 --- 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_fuzzer_test.sh b/tools/fuzzer/runners/http_fuzzer_test.sh new file mode 100644 index 0000000000..afbc4f4c95 --- /dev/null +++ b/tools/fuzzer/runners/http_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/http_fuzzer_test -max_total_time=60 fuzzer_output test/core/http/corpus diff --git a/tools/fuzzer/runners/http_request_fuzzer_test.sh b/tools/fuzzer/runners/http_request_fuzzer_test.sh deleted file mode 100644 index fbcd830379..0000000000 --- a/tools/fuzzer/runners/http_request_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_request_fuzzer_test -max_total_time=60 fuzzer_output test/core/http/request_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 8e3f494370..0000000000 --- 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 2e5e5e7cdb..3ec51db598 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" -- cgit v1.2.3 From 0418d38803db4703b949de13bec393d456035fc4 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 16:54:06 -0700 Subject: 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 ebec8a5157..8a129374cf 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; -- cgit v1.2.3 From 75e50e4fbf3b2050a44267d151d16150d6954090 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 17:03:27 -0700 Subject: Expand corpus --- test/core/http/corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34 | 2 ++ test/core/http/corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55 | 3 +++ test/core/http/corpus/24756c396bc72894fd720092bb6f9c03e66b469f | 2 ++ test/core/http/corpus/276def41311933421ae7a9ee42e906c85b6a4d3f | 2 ++ test/core/http/corpus/29daa75432381937fd005cb25e314e328de6e9f9 | 2 ++ test/core/http/corpus/2a75204bc492084ad853682f8de3fb137d5907bc | 2 ++ test/core/http/corpus/2d34ba249b755a880525cf53c665633a5e359305 | 2 ++ test/core/http/corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b | 4 ++++ test/core/http/corpus/3953688866ccb3b4f371f1a858570d6afdb6452d | 3 +++ test/core/http/corpus/3f03265921120c6ffa61b944e213e062a5538d4b | 2 ++ test/core/http/corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9 | 4 ++++ test/core/http/corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5 | 2 ++ test/core/http/corpus/533f62b3f495ce704babf3ee8d840f196a714dff | 4 ++++ test/core/http/corpus/5892cbb284771fc9761caae37b19cd6e27dbc104 | 2 ++ test/core/http/corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee | 2 ++ test/core/http/corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0 | 2 ++ test/core/http/corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e | 2 ++ test/core/http/corpus/7fc4520094902ce2c760d70eaad5b674d2817337 | 5 +++++ test/core/http/corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c | 2 ++ test/core/http/corpus/9a996857196e0998a1278994a9bab3d35526e7f1 | 2 ++ test/core/http/corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8 | 3 +++ test/core/http/corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1 | 5 +++++ test/core/http/corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85 | 3 +++ test/core/http/corpus/c4acff8aa2ff886f35439f72625d05002990c940 | 4 ++++ test/core/http/corpus/cce734f1b263de6994f7950e0df7bf0c81449f70 | 3 +++ test/core/http/corpus/d51f7fcc089f269c7afecaaca51966bab5fde629 | 2 ++ test/core/http/corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b | 3 +++ test/core/http/corpus/e5c364b205855a2991ce07482aebb2a3a6147089 | 2 ++ test/core/http/corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb | 2 ++ test/core/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 0000000000..10967d975c --- /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 0000000000..deb8265a30 --- /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 0000000000..9f2e0e4a25 --- /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 0000000000..4db04b260a --- /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 0000000000..cee70bfe71 --- /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 0000000000..e76b00e34c --- /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 0000000000..7435f52ea5 --- /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 0000000000..57efa3cabc --- /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 0000000000..f85f1df035 --- /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 0000000000..8af90071c3 --- /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 0000000000..5996b9a75c --- /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 0000000000..8ac7ceb2d5 --- /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 0000000000..6313cd967a --- /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 0000000000..fee5512152 --- /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 0000000000..bd7e239537 --- /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 0000000000..480708e033 --- /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 0000000000..0ed0dfadec --- /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 0000000000..8fc481d92b --- /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 0000000000..776253d750 --- /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 0000000000..0eb2c0da3a --- /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 0000000000..f93b9a08e3 --- /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 0000000000..4ea07dc137 --- /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 0000000000..2e95bac35c --- /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 0000000000..4539d9f012 --- /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 0000000000..f6ea09c41b --- /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 0000000000..e81a59f30b --- /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 0000000000..b6fc095920 --- /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 0000000000..98b5f62b2a --- /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 0000000000..78b36c913b --- /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 0000000000..eb63d31fa5 --- /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 0000000000..897a28406c --- /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 0000000000..aaa75bbb52 --- /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 0000000000..593f6fa7b6 --- /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 0000000000..19fb244355 --- /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 0000000000..1b86449bb6 --- /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 0000000000..9e5b046c59 --- /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 513a594ae0..3d6da99762 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" -- cgit v1.2.3 From b33d5cdeb838351ce59e5bfa19077e5007e55a74 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 17:04:23 -0700 Subject: 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 0000000000..b237b01fe0 --- /dev/null +++ b/test/core/http/corpus/response4.txt @@ -0,0 +1,2 @@ +HTTP/1.1 404 Not Found + -- cgit v1.2.3 From 9366684d9fc6c9dbc21a97702959ea0952bbca3d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 17:17:54 -0700 Subject: 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 338a301534..e46b8ebb69 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: 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 0000000000..2630595713 --- /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 0000000000..797b6ee773 --- /dev/null +++ b/test/core/http/corpus/response6.txt @@ -0,0 +1,5 @@ +HTTP/0.9 200 OK +test: hello +content-length: 6 + +abcd -- cgit v1.2.3 From 9715822e6f3b276efacc6a5ac085941e694bd23b Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 20:38:47 -0700 Subject: 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 0000000000..9a9d5e2fc3 --- /dev/null +++ b/test/core/http/corpus/toolong.txt @@ -0,0 +1,2 @@ +GET / HTTP/1.1 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -- cgit v1.2.3 From 0b8bf0863fd220ba165b211cf1ac6051fb81b8d9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 20:42:38 -0700 Subject: 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 2070716395..99cd737676 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 932b69e8ce..d6315ec626 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 afbc4f4c95..74dfe6ea23 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 47e457232d..2b0770a505 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 2da8d29d89..5225d18db2 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 -- cgit v1.2.3 From ae94594a64daacd32d0ec85746b2e7f3d02164f3 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 21:43:58 -0700 Subject: 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 b974126a97..b23d5f8b7e 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 76a126c947..ef2f269272 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 99cd737676..26ac7c80df 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 d6315ec626..366fe76ab3 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 74dfe6ea23..00a420809c 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 2b0770a505..1cd3d55d1b 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 5225d18db2..bac4fb844d 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 a858170d87..325e9aa929 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" }, -- cgit v1.2.3 From ff82239acd26bcb06dc2916eec0804d785dcbcc6 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 21:46:52 -0700 Subject: Fix flags --- Makefile | 2 +- build.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index b23d5f8b7e..6f13bd684a 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 ef2f269272..beb5219ce0 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 -- cgit v1.2.3 From 88a4043dea5fd916f0f4e8f23488cc4773f98bf9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 21:49:26 -0700 Subject: Expand corpus --- .../chttp2/hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112 | 1 + .../chttp2/hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9 | 1 + .../chttp2/hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992 | 1 + .../chttp2/hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad | 1 + .../chttp2/hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854 | 1 + .../chttp2/hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c | 1 + .../chttp2/hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2 | 1 + .../chttp2/hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a | 1 + .../chttp2/hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9 | 1 + .../chttp2/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 0000000000..bbd1dae7e0 --- /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 0000000000..06af54ddf3 --- /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 0000000000..1203eb1748 --- /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 0000000000..65f4c69307 --- /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 0000000000..941f5530cf --- /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 0000000000..c60f729c7c --- /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 0000000000..45cce54c0e --- /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 0000000000..a61dd289a7 --- /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 0000000000..7691001119 --- /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 0000000000..d2cbcccb78 --- /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 -- cgit v1.2.3 From fe56d3ae72b97e5ac154ec3b998e19084ec9371c Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 22:54:00 -0700 Subject: Expand corpus --- .../json/corpus/006d552e952c42b5340baaeb85c2cb80c81e78dd | 1 + .../json/corpus/007eb985c44b6089a34995a7d9ebf349f1c2bf18 | 1 + .../json/corpus/05454ab015cf74e9c3e8574d995517e05dd56751 | 1 + .../json/corpus/0716d9708d321ffb6a00818614779e779925365c | 1 + .../json/corpus/0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc | 1 + .../json/corpus/0ea9a160c57f2c705dce037196e360bf9be739c5 | 1 + .../json/corpus/0f20d9c46991c0e97419e2cca07c7389f1d6bdf8 | 1 + .../json/corpus/0f2e2e6346f70c419300b661251754d50f7ca8ea | 1 + .../json/corpus/108e5bcd69b19ad0df743641085163b84f376fe8 | 2 ++ .../json/corpus/11aa091189b78d1cc35c7ff4907ac16a73aba547 | 1 + .../json/corpus/1227907b2ee5a9492a890beed55332e4560834c8 | 1 + .../json/corpus/137f554ee0f6b903acb81ab4e1f98c11fe92b008 | 1 + .../json/corpus/1401ea03ec78b8f20dc7be952555004d7147f0f5 | 1 + .../json/corpus/15c9c1284c27c8893559e15c9b2a50cbd5bbb56f | 1 + .../json/corpus/15d1a6cda48ef569b368a0c4627435bc2c80a988 | 1 + .../json/corpus/17b815f1f72cb64481bc40263e91ce063040f739 | 1 + .../json/corpus/190fbe2da448f6bdec0706c5301ad13363ae3ad9 | 1 + .../json/corpus/1b045a24b8f1f1fd6e8234d5019952ee7713a8b7 | 1 + .../json/corpus/1b6453892473a467d07372d45eb05abc2031647a | 1 + .../json/corpus/1dea95b5050b766274ef80847505c0e4f47f3ebb | 1 + .../json/corpus/1dfe267b623b20cd97c6e8969d8b9148af9f4a2c | 1 + .../json/corpus/1e5c2f367f02e47a8c160cda1cd9d91decbac441 | 1 + .../json/corpus/20efdba13ca7a3657d071b3d56997aa3b083068a | 1 + .../json/corpus/215a956168f77421253e947c2436371d56aa7ea1 | 1 + .../json/corpus/2174b9ab6bf4f7c21fe1ed56957f1776ef611959 | 1 + .../json/corpus/26aca41ee8f199e7c0c7cf31d979952571c53fc9 | 1 + .../json/corpus/27da426a5883662d19ea78f306d7a992be52f827 | 2 ++ .../json/corpus/296dcda6f7e6979e68ddef7cbc1206a355084ad3 | 1 + .../json/corpus/29b08c03ca5a6851fa4604a984cb7ff44433a5a5 | 1 + .../json/corpus/2b3b1ad952e3acb566e32a84e2d503acde13eb53 | 1 + .../json/corpus/2d3d5b9275553430b4cfa68114099120ad7809ee | 1 + .../json/corpus/2db610e1a230409a205cf22fbad3348a54cbe703 | 1 + .../json/corpus/2e32faacd3ea4461ec7aace297b4be6904d9a389 | 1 + .../json/corpus/2e756d91759d7e74f5b776c0d2a1935292f576d1 | 1 + .../json/corpus/3027d901361162b38fcaf17f97ba7d9646e32495 | 1 + .../json/corpus/356a192b7913b04c54574d18c28d46e6395428ab | 1 + .../json/corpus/373769c15c145472c8ec3bdde8fc84e85ec79211 | 2 ++ .../json/corpus/3795d911970a1fd8416b93649051b418948e3edf | 1 + .../json/corpus/38cd33bb390445e35b6514024b1317902cb7ba1b | 1 + .../json/corpus/3a90c688f44447a78efc111872b061a001f04d2b | 1 + .../json/corpus/3c0a8d6c31edaca124714624eb64cb8ec0cbab13 | 1 + .../json/corpus/3cc0c9adcf3882f01409c70391c3cd30588ef34c | 1 + .../json/corpus/3d0d9878b812ce4634962ba3dd755c0953550200 | 1 + .../json/corpus/3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59 | 1 + .../json/corpus/421b7e8ea86e3c07474af16ab3ccef55d1857205 | 2 ++ .../json/corpus/428d051e437dd260f2a2f7ed920d9734ca34dc90 | 1 + .../json/corpus/43620ecd2e2fd58fe5650da2e9783f980f29ec07 | 1 + .../json/corpus/43b1ffcda49477adb1632822202631990ed3a269 | 1 + .../json/corpus/45279f85bf2f533a629073caf89403006279fab2 | 2 ++ .../json/corpus/469e5ed2547e9e55a96e96eb832c615631e3b576 | 1 + .../json/corpus/4a0a19218e082a343a1b17e5333409af9d98f0f5 | 1 + .../json/corpus/4a6644a1a3d5218f4bbd60220cab79c0b7bef45e | 1 + .../json/corpus/4cd66dfabbd964f8c6c4414b07cdb45dae692e19 | 1 + .../json/corpus/4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8 | 1 + .../json/corpus/4ff99a030518a132748c44bc1d836018e5b82cd0 | 1 + .../json/corpus/534d66e7b0709d1e7692faae9e7f7299c92bba4b | 1 + .../json/corpus/548775f9d7d13339dba3001f8238b84e9a457533 | 1 + .../json/corpus/54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79 | 1 + .../json/corpus/552cfe1d8958e6d003ec8e883c4983dd67ef255e | 1 + .../json/corpus/56e5f35e3d08b4e17e3558cacddf9e5ed13a0159 | 1 + .../json/corpus/598a287a3e56caae23ed63abc95d5f3457165eef | 1 + .../json/corpus/5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184 | 2 ++ .../json/corpus/5ca6c45a8d2e11c782806df43e7668beb4aba8f5 | 1 + .../json/corpus/5da7b543313339f84fd52e96bacf3a73368a1d2c | 1 + .../json/corpus/5e629dfb8b7533c7c2d173d4c3d587c88112cc29 | 1 + .../json/corpus/5f3394f5058822cc044b92654837625897176480 | 1 + .../json/corpus/60ba4b2daa4ed4d070fec06687e249e0e6f9ee45 | 1 + .../json/corpus/625ed64c30c8ab2f0b3bc75690f9faa4270f0041 | 1 + .../json/corpus/6314c2b304d04dc0108a95d29a93515e85e2b0b0 | 1 + .../json/corpus/6462d8079d2ea921617e7d073b85cfab706800d3 | 1 + .../json/corpus/66328e03a2ccd5e54dab23b816182786e6f518b6 | 1 + .../json/corpus/683e9045bc95e0cb5fc16ec64b118433475ba559 | Bin 0 -> 4 bytes .../json/corpus/689f13680f4682303c8aa6828b67955959dc9669 | 1 + .../json/corpus/68c6ba7f0602a5410d1fa3c5de24fe264436b993 | 1 + .../json/corpus/699cafde80b1e1777306f781186d1253f018ab23 | 1 + .../json/corpus/69afa12510b2e653b0af7c7030832647b2d63c37 | 1 + .../json/corpus/6b75857f86be5c51b21a97f4a61e69e8bb6cd698 | 1 + .../json/corpus/6ce5170dc4f2eee3b31a875b6a41f2444959f3dd | 1 + .../json/corpus/6d2859436fbbee637f0a5981ca82e8f88a1d0d28 | 1 + .../json/corpus/6e05a0a240fe2974e14527bbe390d294564156e2 | 1 + .../json/corpus/6e6c9d301adb0f0ddffd79cdf3426a2de99bad48 | 2 ++ .../json/corpus/70142f66475ae2fb33722d8d4750f386ecfefe7b | 1 + .../json/corpus/719edbe667ce2729ac78a22dac29263c91144029 | 1 + .../json/corpus/77de68daecd823babbb58edb1c8e14d7106e83bb | 1 + .../json/corpus/7957dc9aac31e6a6783fb3a6ee073688fed6cf9d | 1 + .../json/corpus/7b20ac50954063e3ad00813acab4a98b2bfdb858 | 1 + .../json/corpus/7cf84b5a78281e6c6b5a9884110f3dbc6a40e310 | 2 ++ .../json/corpus/82059e250904b478f65daa0e647c1647ba6d6a3d | 1 + .../json/corpus/8207fdf4bd302d6b6b1894990b353944a8716aa7 | 1 + .../json/corpus/84582c1dbe026475319df14c19967d1dd0bf751f | 1 + .../json/corpus/88f658400b1870ddf081fb03020c3098b0b1e083 | 1 + .../json/corpus/88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a | 2 ++ .../json/corpus/89304953495f060c7abd3584d83cb1c8e6d6653b | 1 + .../json/corpus/8a5f6dc6873e3fd51fd866854d85258f8aa83a02 | 2 ++ .../json/corpus/8a87261277c15667e2957dd52c5db6757ebc8e88 | 1 + .../json/corpus/8aa61d8bd260942521bb1ba82cd4cce2324fdbee | 1 + .../json/corpus/8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c | 1 + .../json/corpus/8e7fda77644ff91578d25243fad51a3cd6d60860 | 1 + .../json/corpus/8ea6295ff82bb119acd44a91b463b19fedafb226 | 1 + .../json/corpus/8ef4dd9f2d0f9d770c937d9a43413d24df83f09b | 1 + .../json/corpus/8efd86fb78a56a5145ed7739dcb00c78581c5375 | 1 + .../json/corpus/8f0ba762c2fed0fc993feb91948902ac397b0919 | 1 + .../json/corpus/902ba3cda1883801594b6e1b452790cc53948fda | 1 + .../json/corpus/92049bf3d8a0ec93c2d1633631c0082e66ca69e7 | 2 ++ .../json/corpus/920a3c318f3127b9c30ab02a077555c7dfbb6edb | 1 + .../json/corpus/9367ba65affd5bf7aabf79c28e783cc5d93518e8 | 1 + .../json/corpus/95b54a84db75abab401d282fdb04440a879a9708 | 1 + .../json/corpus/98e02e7fc96479e8d10ff2cc7610be772e2d6fba | 1 + .../json/corpus/99667fcfa6d583a742fb5450527fc86dfb78ebbf | 1 + .../json/corpus/9d0441f23ae7d5a3a5b1140497868ee6eeab656b | 2 ++ .../json/corpus/9d890bd3139a8f9a44d435ff8edfbeb5b072ded0 | 2 ++ .../json/corpus/9e6a55b6b4563e652a23be9d623ca5055c356940 | 1 + .../json/corpus/9ec88420ef0408642f6930996e35f5b9f18ec88c | 1 + .../json/corpus/9fbda4f714043d975389b536b4497c6d713452e5 | 1 + .../json/corpus/a1abe8a785030d475a7350438fd23a05c382c110 | 2 ++ .../json/corpus/a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6 | 1 + .../json/corpus/a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc | 1 + .../json/corpus/a39653cb3d97c58c44013197f4d7557577700177 | 1 + .../json/corpus/a6b34b06b00e9226f2bd961483f9da81d8de99a8 | 1 + .../json/corpus/a806f43dd48e35e75c27814c13a2a96c12449bd1 | 1 + .../json/corpus/a90a858013f90d2a94e0d62a7156ffd6848bf238 | 1 + .../json/corpus/aa6e08a488d1ed00aa51f20c2477fc89e7b0a852 | 2 ++ .../json/corpus/aaa038513c192fec501e4e7302156872ce2fde37 | 2 ++ .../json/corpus/ac2686c095a5a1c92a1d4209a6c287778720c86d | 1 + .../json/corpus/ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4 | 1 + .../json/corpus/ac9231da4082430afe8f4d40127814c613648d8e | 1 + .../json/corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc | 1 + .../json/corpus/b021dd7cd98b63092685ea092df0dc01c8f63334 | 1 + .../json/corpus/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f | 1 + .../json/corpus/b6589fc6ab0dc82cf12099d1c2d40ab994e8410c | 1 + .../json/corpus/b6f19238d2b04c5b86a17369093dafda34f332e7 | 2 ++ .../json/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6 | 1 + .../json/corpus/b9c38fad09c80db7781fefbe51039752de575ecc | 1 + .../json/corpus/bd113c2c8a2328e3674c680c7cff829a6c8ab924 | 1 + .../json/corpus/bef524502f8dbbc45af717ece01ec88edd7f903b | 1 + .../json/corpus/c18d315f0d35849b2aae4a47cab4608204b85d76 | 2 ++ .../json/corpus/c257fd6bc9e5254a733378ab4ddd39629c4a3069 | 1 + .../json/corpus/c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a | 1 + .../json/corpus/c3badd71ef8a51b97ce93cbfe99f6778048f2128 | 1 + .../json/corpus/c541bb86e55b98e083b141114066f9c17d853374 | 1 + .../json/corpus/c7a34d6d49e1da1ccd490350c2df3a168ed09ae8 | 3 +++ .../json/corpus/c88c4bec8d440c56d3ea7abce39276f0927dbe0a | 1 + .../json/corpus/c92f147bfc034003ac42ed9e62a16c84102ab417 | 1 + .../json/corpus/ce3899b62ba3efe00eb31ddad2861ffe16a30d06 | 1 + .../json/corpus/cec87b67871fc7a59652bc3546fbbb68e4d31e28 | 2 ++ .../json/corpus/cf32406111908544e504c84731147f072cdf2fbd | 1 + .../json/corpus/cff891e5858ae68d08ecc8470ca6a68c9438bfa3 | 1 + .../json/corpus/d85ca051da784c0441898c5affbf11a2ae8f56bc | 1 + .../json/corpus/da4b9237bacccdf19c0760cab7aec4a8359010b0 | 1 + .../json/corpus/dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef | Bin 0 -> 13 bytes .../json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef | 1 + .../json/corpus/e0c124e90d068e2a70a3e148052869033453ec58 | 1 + .../json/corpus/e0d87b1f3e54e5adc5c2205f9e14772822a25766 | 1 + .../json/corpus/e1199df649697c570db5d6b2ea09d755eddd32b7 | 1 + .../json/corpus/e235f6f2a8b6a22117f1baa932fb6c69799e1136 | 1 + .../json/corpus/e3d134b35cc25a4861d90023c95988ec6103ddd5 | 1 + .../json/corpus/e3ff65de4b1622315c3b34b7a5e39bffb275489d | 1 + .../json/corpus/e4e3c69da200af932c8a79fa055d7aeea28eb1d1 | 1 + .../json/corpus/e6c3dd630428fd54834172b8fd2735fed9416da4 | 1 + .../json/corpus/e95ff1142118a2ca5b84935612a8a64d55360e64 | 1 + .../json/corpus/e9c5e2c67930513941753c2d54591c7098c82f6c | 1 + .../json/corpus/eb26070d17ffa908204912e75cb4313835042038 | 1 + .../json/corpus/ebc6aee49e5ae57722df86e7fa33c420f045a449 | 1 + .../json/corpus/f473451610783521d51bc08cdd920ddd97f8a71f | 1 + .../json/corpus/f63aa599600f6e7d648c4287905e16e8e6e479fd | 1 + .../json/corpus/f667dcf1c06e87db2dc49d86ea1c285e796f8f8c | 1 + .../json/corpus/f8d0f85975e49b959799cc52847110cc940b9db1 | 1 + .../json/corpus/f92c47e35da42d79a48beff54b93cd28f55f05fb | 1 + .../json/corpus/f9a33bb8bd78d869fbafa402d9be58940ce2c318 | 1 + .../json/corpus/fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f | 1 + .../json/corpus/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 0000000000..762064c7a4 --- /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 0000000000..8affa52ec5 --- /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 0000000000..8377c554f7 --- /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 0000000000..8e2afd3427 --- /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 0000000000..d249eb2e13 --- /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 0000000000..f92893d1da --- /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 0000000000..05a6fb2444 --- /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 0000000000..e429f5078e --- /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 0000000000..0973cbb254 --- /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 0000000000..cb88820207 --- /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 0000000000..fd35270ae2 --- /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 0000000000..98232c64fc --- /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 0000000000..595fe02dbc --- /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 0000000000..21a9555f3b --- /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 0000000000..8017a981b4 --- /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 0000000000..81b218eb64 --- /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 0000000000..37144c716f --- /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 0000000000..04ac543c3c --- /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 0000000000..bf0d87ab1b --- /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 0000000000..1237d77855 --- /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 0000000000..7f010a27de --- /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 0000000000..8e2f0bef13 --- /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 0000000000..5194be3963 --- /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 0000000000..a0aeede19a --- /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 0000000000..ef32707a4e --- /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 0000000000..016fe5628b --- /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 0000000000..2e7373e158 --- /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 0000000000..e510185137 --- /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 0000000000..60ec6c51e9 --- /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 0000000000..0f5e2da901 --- /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 0000000000..7e7e3f7a03 --- /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 0000000000..3541d8d15d --- /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 0000000000..83323c2503 --- /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 0000000000..037d9ceb5d --- /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 0000000000..8372b410d6 --- /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 0000000000..56a6051ca2 --- /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 0000000000..7f340609ed --- /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 0000000000..1df36a5b97 --- /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 0000000000..83312e5c07 --- /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 0000000000..2b729e722b --- /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 0000000000..82db9e7887 --- /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 0000000000..7a63c8c57c --- /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 0000000000..8793f1e0ad --- /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 0000000000..90a082d8d9 --- /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 0000000000..127471478b --- /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 0000000000..ad50d48199 --- /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 0000000000..f198034ea7 --- /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 0000000000..19db1d405f --- /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 0000000000..e6d3d7c28b --- /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 0000000000..97e7cafffb --- /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 0000000000..4d1ae35ba2 --- /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 0000000000..90b4ca3a2c --- /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 0000000000..a46c9d2265 --- /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 0000000000..17ef43e800 --- /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 0000000000..bc59462e43 --- /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 0000000000..44b3fa0c84 --- /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 0000000000..9fed6d1d0a --- /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 0000000000..25984e70ea --- /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 0000000000..1b18370072 --- /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 0000000000..1960fad59a --- /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 0000000000..7d3db88945 --- /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 0000000000..a1c1118041 --- /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 0000000000..ef736fdd7e --- /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 0000000000..0e44b3ec9b --- /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 0000000000..08b9840484 --- /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 0000000000..fb460ce022 --- /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 0000000000..81750b96f9 --- /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 0000000000..a9322d461a --- /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 0000000000..5981d9b677 --- /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 0000000000..8ecd203c10 --- /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 0000000000..0d7016ba9e --- /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 0000000000..ab9ecdf660 Binary files /dev/null and b/test/core/json/corpus/683e9045bc95e0cb5fc16ec64b118433475ba559 differ diff --git a/test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669 b/test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669 new file mode 100644 index 0000000000..e49c89033a --- /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 0000000000..05c556cb25 --- /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 0000000000..54a4e1edc4 --- /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 0000000000..5cd5103673 --- /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 0000000000..890abf258d --- /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 0000000000..c91aab3f3a --- /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 0000000000..12d7c034b9 --- /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 0000000000..82236fc0e8 --- /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 0000000000..363c669178 --- /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 0000000000..415b19fc36 --- /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 0000000000..fccbca338e --- /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 0000000000..e440e5c842 --- /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 0000000000..27410a6523 --- /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 0000000000..0bfbc04aab --- /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 0000000000..6409a85fb1 --- /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 0000000000..7912fa5b71 --- /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 0000000000..bbc3e31ed7 --- /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 0000000000..7f509bf389 --- /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 0000000000..6c4c53724a --- /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 0000000000..e37941d2de --- /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 0000000000..fa86cb3a72 --- /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 0000000000..057adde5d0 --- /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 0000000000..9d7ee39401 --- /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 0000000000..9c93de0d9e --- /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 0000000000..2146b214c3 --- /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 0000000000..538c0cc1ea --- /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 0000000000..1acdc8e43f --- /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 0000000000..64adcb3277 --- /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 0000000000..32f64f4d83 --- /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 0000000000..cda6df2258 --- /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 0000000000..c7930257df --- /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 0000000000..a4e01a762a --- /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 0000000000..2e7a62e916 --- /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 0000000000..8e9c1aa242 --- /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 0000000000..5b41744456 --- /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 0000000000..6bc0fb8fbf --- /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 0000000000..861ae0275d --- /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 0000000000..ed8622835d --- /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 0000000000..468bde0442 --- /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 0000000000..25bf17fc5a --- /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 0000000000..852eeab2f0 --- /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 0000000000..c02cbb56d2 --- /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 0000000000..bb4e42ed29 --- /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 0000000000..9ab1dd2a64 --- /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 0000000000..cfd23392af --- /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 0000000000..9e667ccabb --- /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 0000000000..56fbef6446 --- /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 0000000000..91725dbb7c --- /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 0000000000..cf6637a355 --- /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 0000000000..9794ac1722 --- /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 0000000000..3959c2e793 --- /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 0000000000..f02f0b834f --- /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 0000000000..7813681f5b --- /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 0000000000..501a6bbaf1 --- /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 0000000000..8b13789179 --- /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 0000000000..43789b2ec3 --- /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 0000000000..dec2bf5d61 --- /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 0000000000..c227083464 --- /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 0000000000..fb1edb4323 --- /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 0000000000..0519ecba6e --- /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 0000000000..c16d3bcd70 --- /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 0000000000..08894eebc3 --- /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 0000000000..2a42b126fb --- /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 0000000000..d082c57dc7 --- /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 0000000000..b040a5eb50 --- /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 0000000000..7f9e4a682d --- /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 0000000000..4d10e087fe --- /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 0000000000..8162989fcf --- /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 0000000000..1d06e430e3 --- /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 0000000000..9442128c10 --- /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 0000000000..3fae4b1b01 --- /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 0000000000..91bd82ae66 --- /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 0000000000..56e1cf48d4 --- /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 0000000000..a0d1ef1a02 --- /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 0000000000..9ef39eb937 --- /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 0000000000..921f250aef --- /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 0000000000..d8263ee986 --- /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 0000000000..9e15a74025 Binary files /dev/null and b/test/core/json/corpus/dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef differ diff --git a/test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef b/test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef new file mode 100644 index 0000000000..3c61ef6b9b --- /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 0000000000..e05343fabe --- /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 0000000000..83c6ab5f81 --- /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 0000000000..adac51f51f --- /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 0000000000..f3f2d8c51a --- /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 0000000000..a9f28d4a55 --- /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 0000000000..d188dbf352 --- /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 0000000000..fa71dbecbc --- /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 0000000000..2b82dfea30 --- /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 0000000000..ca8bbcc42a --- /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 0000000000..f9991b43f6 --- /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 0000000000..812293756d --- /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 0000000000..ee58b9086a --- /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 0000000000..b73c5ecd08 --- /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 0000000000..4b681256fe --- /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 0000000000..b6dfbd5336 --- /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 0000000000..0c7f592376 --- /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 0000000000..1444ba2be2 --- /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 0000000000..fbcb9dab0e --- /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 0000000000..301160a930 --- /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 0000000000..9586ab9bcc --- /dev/null +++ b/test/core/json/corpus/ff8fb34603c7f772768d61504954553e6bed173c @@ -0,0 +1 @@ +n' \ No newline at end of file -- cgit v1.2.3 From d0f1301d1299491916feb547634dfb7e22811beb Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 22:57:15 -0700 Subject: Expand corpus --- .../json/corpus/03b74a08f23734691512cb12d0b38d189a8df905 | 1 + .../json/corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6 | 1 + .../json/corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897 | 1 + .../json/corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318 | 1 + .../json/corpus/0bc13548356d08009703d35e9c8d74397367bdfb | 1 + .../json/corpus/108b310facc1a193833fc2971fd83081f775ea0c | 1 + .../json/corpus/10e3ecd5624465020fdf0662a67e0f0885536cae | 1 + .../json/corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc | 1 + .../json/corpus/11479d936dd006410a5946b6081a94d573bf8efd | 1 + .../json/corpus/134d65130947ec69cf8df8483424b45e99cf04e3 | 1 + .../json/corpus/13584505caa892d94982a968bbc4391ebcfe0d06 | 1 + .../json/corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95 | 1 + .../json/corpus/17a29f2ac6df774585d7713091b299729738030c | 1 + .../json/corpus/182d57403d2c973a394055017d35b7621aa0aa05 | 1 + .../json/corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af | 1 + .../json/corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b | 1 + .../json/corpus/232f4bced4075545bb1469d5c2360f083ec7ec65 | 1 + .../json/corpus/27d84210636e9e83786be9e9b96b69f70b743b86 | 1 + .../json/corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444 | 1 + .../json/corpus/2b04974149815b143afb17af4388d751217e54ec | 1 + .../json/corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e | 1 + .../json/corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7 | 1 + .../json/corpus/2d7c769bed62004270034b976b1d940a5686106b | 1 + .../json/corpus/2db120231eea12d9cdc6a00f30839b3cef2046be | 1 + .../json/corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225 | 1 + .../json/corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895 | 1 + .../json/corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9 | 1 + .../json/corpus/311048bbf4c4bbabcde73607d7e76915cee9312e | 1 + .../json/corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab | 1 + .../json/corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3 | 1 + .../json/corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1 | 1 + .../json/corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7 | 1 + .../json/corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a | 1 + .../json/corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580 | 1 + .../json/corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7 | 1 + .../json/corpus/455d9bb597f08bf698454157ecd86647b5dec4e0 | 1 + .../json/corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9 | 1 + .../json/corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f | 1 + .../json/corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5 | 1 + .../json/corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8 | 1 + .../json/corpus/486da8aff04083c5e0fe112e733f2ae510e312a1 | 1 + .../json/corpus/488a5ed641e340ae51992e04ce6590bdec587218 | 1 + .../json/corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882 | 1 + .../json/corpus/4bb0294e14946fb1f64213384097a676d3ef94f0 | 1 + .../json/corpus/4d134bc072212ace2df385dae143139da74ec0ef | 1 + .../json/corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc | 1 + .../json/corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e | 1 + .../json/corpus/4ff800de0863adb5851fa26935159aa53b11cba7 | 1 + .../json/corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46 | 1 + .../json/corpus/55f0c61d096a08506076489ded3b868db4086770 | 1 + .../json/corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a | 1 + .../json/corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4 | 1 + .../json/corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d | 1 + .../json/corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82 | 1 + .../json/corpus/5a37a26dd2482226f534f79d321d28e7a615ab72 | 1 + .../json/corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b | 1 + .../json/corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce | 1 + .../json/corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e | 1 + .../json/corpus/5e12ae9117668bcc22832640cc626315940aeba8 | 1 + .../json/corpus/5e397439a2680ed827c46704969c6711dabbda84 | 1 + .../json/corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c | 1 + .../json/corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7 | 1 + .../json/corpus/6008213a61d06b4382b223768530c3452968b7b3 | 1 + .../json/corpus/6474383282788e556aa86f57fc8650137ad264d0 | 1 + .../json/corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad | 1 + .../json/corpus/69ab053b59e235fd6af246c5180f15bd95295113 | 1 + .../json/corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830 | 1 + .../json/corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035 | 1 + .../json/corpus/6e989edf725ec64849377681ce02641c3d1870e8 | 1 + .../json/corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0 | 1 + .../json/corpus/7714a1a32872442a2eaff472685f3ea69451a732 | 1 + .../json/corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf | 1 + .../json/corpus/7ae893cbbf9b11ff411640b80985ce618907559c | 1 + .../json/corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf | 1 + .../json/corpus/7ef13b83e6bde582d9000be043e729cd3221c150 | 1 + .../json/corpus/831a49ad81b59025c241ac9e58bd88463fd798eb | 1 + .../json/corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6 | 2 ++ .../json/corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b | 1 + .../json/corpus/87a2b80f9272583517c0207af176fc40ea55022c | 1 + .../json/corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f | 1 + .../json/corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb | 1 + .../json/corpus/8d8874439569824e371a0284460440175cdb8a27 | 1 + .../json/corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7 | 1 + .../json/corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513 | 1 + .../json/corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2 | 1 + .../json/corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6 | 1 + .../json/corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285 | 1 + .../json/corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e | 1 + .../json/corpus/94d3598751569d2a5be258e59665cbbf0692dfbe | 1 + .../json/corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4 | 1 + .../json/corpus/96189202e587ec951d5795da3e03062f2fb5d708 | 1 + .../json/corpus/9711703428704ce2827a719eddb9d54be23a0cb7 | 1 + .../json/corpus/9734597e96eebe99b2243121a51d178a338ec46f | 1 + .../json/corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d | 1 + .../json/corpus/97d170e1550eee4afc0af065b78cda302a97674c | 1 + .../json/corpus/996156b191b619eff79b2fcbb7598518a09b06bc | 1 + .../json/corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867 | 1 + .../json/corpus/9b7669e201574bfb979d56110539a90da5aca2c0 | 1 + .../json/corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76 | 1 + .../json/corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd | 1 + .../json/corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea | Bin 0 -> 3 bytes .../json/corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9 | 1 + .../json/corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3 | 1 + .../json/corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8 | 1 + .../json/corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44 | 1 + .../json/corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07 | 1 + .../json/corpus/a749d24bac55bc19465acc92b12244c56ca0f20d | 1 + .../json/corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea | 1 + .../json/corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c | 1 + .../json/corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b | 1 + .../json/corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5 | 1 + .../json/corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9 | 1 + .../json/corpus/affced8168ec801de89deac663f708f0c96cf1a4 | 1 + .../json/corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8 | 1 + .../json/corpus/b17485b8bdec8809b3819a83753ca893871df403 | 1 + .../json/corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7 | 1 + .../json/corpus/b45a1635ec526bcc890f9d735976704e516c5f19 | 1 + .../json/corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370 | 1 + .../json/corpus/b5126721812b925426b30d283d2bb8b6969f230a | 1 + .../json/corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4 | 1 + .../json/corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd | 1 + .../json/corpus/bb407c8992800444201dccfe744dac49c0295fde | 1 + .../json/corpus/bc335734f73502b92d2bd3587259ce915985f0ee | 1 + .../json/corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2 | 1 + .../json/corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34 | 1 + .../json/corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f | 1 + .../json/corpus/c0b6a90832b78ed5f6d129d3640c612540527c85 | 1 + .../json/corpus/c308517acf6f7088634d491a1608240f83a3ac95 | 1 + .../json/corpus/c482a632702ae7f532d126e70149dda4fadc3cd7 | 1 + .../json/corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c | 1 + .../json/corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7 | 1 + .../json/corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06 | 1 + .../json/corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a | 1 + .../json/corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515 | 1 + .../json/corpus/cc8a3dd2678d4b400ad630f402012b894e841b05 | 1 + .../json/corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7 | 1 + .../json/corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32 | 1 + .../json/corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3 | 1 + .../json/corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767 | 1 + .../json/corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab | 1 + .../json/corpus/cfff4e9d08cba81b663dd1999710008342851e19 | 1 + .../json/corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194 | 1 + .../json/corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd | 1 + .../json/corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957 | 1 + .../json/corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678 | 1 + .../json/corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a | 1 + .../json/corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd | 1 + .../json/corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d | 1 + .../json/corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023 | 1 + .../json/corpus/e4a4085cc31476f5de9047422851d8ccf86339df | 1 + .../json/corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea | 1 + .../json/corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536 | 1 + .../json/corpus/ed1dc11d713e7487de18ce8317b62916959206d0 | 1 + .../json/corpus/ede3f66106acd7796da8b3942d029fe213058286 | 1 + .../json/corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a | 1 + .../json/corpus/f090932162756b798b1a050b05e3d36a3437c4fc | 1 + .../json/corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1 | 1 + .../json/corpus/f4635fbbf765ead81a261ca152df02622e182d2c | 1 + .../json/corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e | 1 + .../json/corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a | 1 + .../json/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 0000000000..7ffe3f3e08 --- /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 0000000000..f7752eeee7 --- /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 0000000000..f11c82a4cb --- /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 0000000000..b66d61bb14 --- /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 0000000000..2c23914282 --- /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 0000000000..45be455fdc --- /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 0000000000..5230607b9c --- /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 0000000000..8f04034910 --- /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 0000000000..58cf749566 --- /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 0000000000..522a9be402 --- /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 0000000000..9fb628a378 --- /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 0000000000..e2e68e8af9 --- /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 0000000000..9402a60393 --- /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 0000000000..f48f55e59d --- /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 0000000000..7fa1b2723d --- /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 0000000000..dd9df8833f --- /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 0000000000..d4e4ebe1bb --- /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 0000000000..701bd00f30 --- /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 0000000000..e5e723f2e3 --- /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 0000000000..880fb548fa --- /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 0000000000..f457fd8c48 --- /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 0000000000..42bbdf91aa --- /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 0000000000..8a2b4335b2 --- /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 0000000000..0cfb6e8489 --- /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 0000000000..390f40900f --- /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 0000000000..f7e8e7b7fe --- /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 0000000000..e396fbae6e --- /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 0000000000..79453e924d --- /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 0000000000..b558a9acd2 --- /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 0000000000..ffb93e3c54 --- /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 0000000000..e77a96349c --- /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 0000000000..c37e132d2a --- /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 0000000000..3029e046c6 --- /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 0000000000..c5246971bc --- /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 0000000000..59b1709541 --- /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 0000000000..0a601ebe35 --- /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 0000000000..1fdd026e41 --- /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 0000000000..f0848407d5 --- /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 0000000000..c9ff1a11aa --- /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 0000000000..b5045cc404 --- /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 0000000000..0afcc5fad8 --- /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 0000000000..f0b671befa --- /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 0000000000..a7c1d087f7 --- /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 0000000000..56e2dbcc1b --- /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 0000000000..cabf43b5dd --- /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 0000000000..ecf2233fc5 --- /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 0000000000..e9cb9407c9 --- /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 0000000000..edd3d2bf64 --- /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 0000000000..08f1be3183 --- /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 0000000000..d65b5377ce --- /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 0000000000..5c23e6237b --- /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 0000000000..d72c7c7a76 --- /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 0000000000..3ed722a2e2 --- /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 0000000000..d1cbcfa540 --- /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 0000000000..c9b11ff249 --- /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 0000000000..a1cd2e728b --- /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 0000000000..bd45ebfd39 --- /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 0000000000..a135742235 --- /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 0000000000..c1820184ab --- /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 0000000000..3be1f8657e --- /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 0000000000..134ad52f0d --- /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 0000000000..a83c813485 --- /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 0000000000..46f81353b4 --- /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 0000000000..9210f64068 --- /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 0000000000..dc9a929793 --- /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 0000000000..dc0f5a0aaf --- /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 0000000000..84d8fa5600 --- /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 0000000000..6b513824b5 --- /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 0000000000..45cb64d807 --- /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 0000000000..bad49bbd1c --- /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 0000000000..03a8147cf4 --- /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 0000000000..d99e90eb96 --- /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 0000000000..2306064d1c --- /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 0000000000..7e75a5796e --- /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 0000000000..bb690533a8 --- /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 0000000000..8d42875801 --- /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 0000000000..6e1ec8552a --- /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 0000000000..f78c7b5e9d --- /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 0000000000..1ba5237e8a --- /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 0000000000..978b4e8e51 --- /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 0000000000..7fffca893e --- /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 0000000000..ba964c2f6a --- /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 0000000000..69226f7293 --- /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 0000000000..6b3c0439cc --- /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 0000000000..1c5bc51f40 --- /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 0000000000..22425f2d2c --- /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 0000000000..20dd34e438 --- /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 0000000000..f996624001 --- /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 0000000000..e179cdef5f --- /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 0000000000..1de2ca84cc --- /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 0000000000..912fa7c4e1 --- /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 0000000000..fdb93ea319 --- /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 0000000000..690337689d --- /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 0000000000..614c91b5ef --- /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 0000000000..0637a088a0 --- /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 0000000000..c3f582eff6 --- /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 0000000000..d4f8951908 --- /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 0000000000..0cb3d49316 --- /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 0000000000..cbf048ba3c --- /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 0000000000..86d0a11613 --- /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 0000000000..c85b1ce1f3 Binary files /dev/null and b/test/core/json/corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea differ diff --git a/test/core/json/corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9 b/test/core/json/corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9 new file mode 100644 index 0000000000..3d9983adab --- /dev/null +++ b/test/core/json/corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9 @@ -0,0 +1 @@ +295 \ No newline at end of file diff --git a/test/core/json/corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3 b/test/core/json/corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3 new file mode 100644 index 0000000000..d6eb38c301 --- /dev/null +++ b/test/core/json/corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3 @@ -0,0 +1 @@ +8324E7"!;\' \ No newline at end of file diff --git a/test/core/json/corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8 b/test/core/json/corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8 new file mode 100644 index 0000000000..2950be2cd6 --- /dev/null +++ b/test/core/json/corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8 @@ -0,0 +1 @@ +"',!\u65E8850{2312;):)!*?'ʳ!!!):*!::8!9:\udbD8\u' \ No newline at end of file diff --git a/test/core/json/corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44 b/test/core/json/corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44 new file mode 100644 index 0000000000..079936b5b3 --- /dev/null +++ b/test/core/json/corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44 @@ -0,0 +1 @@ +{]) \ No newline at end of file diff --git a/test/core/json/corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07 b/test/core/json/corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07 new file mode 100644 index 0000000000..30b2379364 --- /dev/null +++ b/test/core/json/corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07 @@ -0,0 +1 @@ +0.9 }G3 \ No newline at end of file diff --git a/test/core/json/corpus/a749d24bac55bc19465acc92b12244c56ca0f20d b/test/core/json/corpus/a749d24bac55bc19465acc92b12244c56ca0f20d new file mode 100644 index 0000000000..0fc6abd4ba --- /dev/null +++ b/test/core/json/corpus/a749d24bac55bc19465acc92b12244c56ca0f20d @@ -0,0 +1 @@ +}G3 \ No newline at end of file diff --git a/test/core/json/corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea b/test/core/json/corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea new file mode 100644 index 0000000000..6f1758e19b --- /dev/null +++ b/test/core/json/corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea @@ -0,0 +1 @@ +3836278E344;2E;)) \ No newline at end of file diff --git a/test/core/json/corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c b/test/core/json/corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c new file mode 100644 index 0000000000..a42916acba --- /dev/null +++ b/test/core/json/corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c @@ -0,0 +1 @@ +0.724790.32996 \ No newline at end of file diff --git a/test/core/json/corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b b/test/core/json/corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b new file mode 100644 index 0000000000..6678fba6c3 --- /dev/null +++ b/test/core/json/corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b @@ -0,0 +1 @@ + ) \ No newline at end of file diff --git a/test/core/json/corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5 b/test/core/json/corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5 new file mode 100644 index 0000000000..70a969babf --- /dev/null +++ b/test/core/json/corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5 @@ -0,0 +1 @@ +0.9 \ No newline at end of file diff --git a/test/core/json/corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9 b/test/core/json/corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9 new file mode 100644 index 0000000000..ca4243001b --- /dev/null +++ b/test/core/json/corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9 @@ -0,0 +1 @@ +{"( \!'(\'! \ No newline at end of file diff --git a/test/core/json/corpus/affced8168ec801de89deac663f708f0c96cf1a4 b/test/core/json/corpus/affced8168ec801de89deac663f708f0c96cf1a4 new file mode 100644 index 0000000000..3579fbd382 --- /dev/null +++ b/test/core/json/corpus/affced8168ec801de89deac663f708f0c96cf1a4 @@ -0,0 +1 @@ +t92 \'862E517;) \ No newline at end of file diff --git a/test/core/json/corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8 b/test/core/json/corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8 new file mode 100644 index 0000000000..d5ffeffa24 --- /dev/null +++ b/test/core/json/corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8 @@ -0,0 +1 @@ +58E+4y;0) )! \ No newline at end of file diff --git a/test/core/json/corpus/b17485b8bdec8809b3819a83753ca893871df403 b/test/core/json/corpus/b17485b8bdec8809b3819a83753ca893871df403 new file mode 100644 index 0000000000..375ad53fb9 --- /dev/null +++ b/test/core/json/corpus/b17485b8bdec8809b3819a83753ca893871df403 @@ -0,0 +1 @@ +0,) \ No newline at end of file diff --git a/test/core/json/corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7 b/test/core/json/corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7 new file mode 100644 index 0000000000..62837674c2 --- /dev/null +++ b/test/core/json/corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7 @@ -0,0 +1 @@ +fals%) \ No newline at end of file diff --git a/test/core/json/corpus/b45a1635ec526bcc890f9d735976704e516c5f19 b/test/core/json/corpus/b45a1635ec526bcc890f9d735976704e516c5f19 new file mode 100644 index 0000000000..5df3969cc4 --- /dev/null +++ b/test/core/json/corpus/b45a1635ec526bcc890f9d735976704e516c5f19 @@ -0,0 +1 @@ +{"":(!'(\'! \ No newline at end of file diff --git a/test/core/json/corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370 b/test/core/json/corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370 new file mode 100644 index 0000000000..cb9a114076 --- /dev/null +++ b/test/core/json/corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370 @@ -0,0 +1 @@ +832834E4E;6;)) \ No newline at end of file diff --git a/test/core/json/corpus/b5126721812b925426b30d283d2bb8b6969f230a b/test/core/json/corpus/b5126721812b925426b30d283d2bb8b6969f230a new file mode 100644 index 0000000000..fdd7734f4a --- /dev/null +++ b/test/core/json/corpus/b5126721812b925426b30d283d2bb8b6969f230a @@ -0,0 +1 @@ +5E9 3'8)232;)6 \ No newline at end of file diff --git a/test/core/json/corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4 b/test/core/json/corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4 new file mode 100644 index 0000000000..b6970dd4e8 --- /dev/null +++ b/test/core/json/corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4 @@ -0,0 +1 @@ +0. { \ No newline at end of file diff --git a/test/core/json/corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd b/test/core/json/corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd new file mode 100644 index 0000000000..7bf416f706 --- /dev/null +++ b/test/core/json/corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd @@ -0,0 +1 @@ +0,f') \ No newline at end of file diff --git a/test/core/json/corpus/bb407c8992800444201dccfe744dac49c0295fde b/test/core/json/corpus/bb407c8992800444201dccfe744dac49c0295fde new file mode 100644 index 0000000000..7984a6f31a --- /dev/null +++ b/test/core/json/corpus/bb407c8992800444201dccfe744dac49c0295fde @@ -0,0 +1 @@ +{"!(!\t' \ No newline at end of file diff --git a/test/core/json/corpus/bc335734f73502b92d2bd3587259ce915985f0ee b/test/core/json/corpus/bc335734f73502b92d2bd3587259ce915985f0ee new file mode 100644 index 0000000000..75ce6ce699 --- /dev/null +++ b/test/core/json/corpus/bc335734f73502b92d2bd3587259ce915985f0ee @@ -0,0 +1 @@ +0.6995 \ No newline at end of file diff --git a/test/core/json/corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2 b/test/core/json/corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2 new file mode 100644 index 0000000000..c56ae0e91e --- /dev/null +++ b/test/core/json/corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2 @@ -0,0 +1 @@ +9! \ No newline at end of file diff --git a/test/core/json/corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34 b/test/core/json/corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34 new file mode 100644 index 0000000000..3ca9062a11 --- /dev/null +++ b/test/core/json/corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34 @@ -0,0 +1 @@ +84 \ No newline at end of file diff --git a/test/core/json/corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f b/test/core/json/corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/test/core/json/corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/core/json/corpus/c0b6a90832b78ed5f6d129d3640c612540527c85 b/test/core/json/corpus/c0b6a90832b78ed5f6d129d3640c612540527c85 new file mode 100644 index 0000000000..a03cfc1400 --- /dev/null +++ b/test/core/json/corpus/c0b6a90832b78ed5f6d129d3640c612540527c85 @@ -0,0 +1 @@ +{"'!\u3: \ No newline at end of file diff --git a/test/core/json/corpus/c308517acf6f7088634d491a1608240f83a3ac95 b/test/core/json/corpus/c308517acf6f7088634d491a1608240f83a3ac95 new file mode 100644 index 0000000000..cc5647402c --- /dev/null +++ b/test/core/json/corpus/c308517acf6f7088634d491a1608240f83a3ac95 @@ -0,0 +1 @@ +0.427$ \ No newline at end of file diff --git a/test/core/json/corpus/c482a632702ae7f532d126e70149dda4fadc3cd7 b/test/core/json/corpus/c482a632702ae7f532d126e70149dda4fadc3cd7 new file mode 100644 index 0000000000..e041368ade --- /dev/null +++ b/test/core/json/corpus/c482a632702ae7f532d126e70149dda4fadc3cd7 @@ -0,0 +1 @@ +0.2996 \ No newline at end of file diff --git a/test/core/json/corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c b/test/core/json/corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c new file mode 100644 index 0000000000..deb26ed130 --- /dev/null +++ b/test/core/json/corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c @@ -0,0 +1 @@ +"',!\u65E8850{2312;):)!*?'ʳ0.!!!):*!::8!9:\udbD8\u82510' \ No newline at end of file diff --git a/test/core/json/corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7 b/test/core/json/corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7 new file mode 100644 index 0000000000..f7ac6878d6 --- /dev/null +++ b/test/core/json/corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7 @@ -0,0 +1 @@ +{ 0 \ No newline at end of file diff --git a/test/core/json/corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06 b/test/core/json/corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06 new file mode 100644 index 0000000000..975bc39455 --- /dev/null +++ b/test/core/json/corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06 @@ -0,0 +1 @@ +8162E517;) \ No newline at end of file diff --git a/test/core/json/corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a b/test/core/json/corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a new file mode 100644 index 0000000000..e2c8b2ab6d --- /dev/null +++ b/test/core/json/corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a @@ -0,0 +1 @@ + \' \ No newline at end of file diff --git a/test/core/json/corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515 b/test/core/json/corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515 new file mode 100644 index 0000000000..767d85192a --- /dev/null +++ b/test/core/json/corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515 @@ -0,0 +1 @@ +"!2}G!\'')y3 \ No newline at end of file diff --git a/test/core/json/corpus/cc8a3dd2678d4b400ad630f402012b894e841b05 b/test/core/json/corpus/cc8a3dd2678d4b400ad630f402012b894e841b05 new file mode 100644 index 0000000000..f115f81312 --- /dev/null +++ b/test/core/json/corpus/cc8a3dd2678d4b400ad630f402012b894e841b05 @@ -0,0 +1 @@ +"9![\f \ No newline at end of file diff --git a/test/core/json/corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7 b/test/core/json/corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7 new file mode 100644 index 0000000000..0f8b1eb808 --- /dev/null +++ b/test/core/json/corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7 @@ -0,0 +1 @@ +{"',!\u@': \ No newline at end of file diff --git a/test/core/json/corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32 b/test/core/json/corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32 new file mode 100644 index 0000000000..8ecd07ae34 --- /dev/null +++ b/test/core/json/corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32 @@ -0,0 +1 @@ +8324E512;) \ No newline at end of file diff --git a/test/core/json/corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3 b/test/core/json/corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3 new file mode 100644 index 0000000000..24014216cb --- /dev/null +++ b/test/core/json/corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3 @@ -0,0 +1 @@ + 36 \ No newline at end of file diff --git a/test/core/json/corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767 b/test/core/json/corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767 new file mode 100644 index 0000000000..f4c0d10d23 --- /dev/null +++ b/test/core/json/corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767 @@ -0,0 +1 @@ +30.5E8;!4; \ No newline at end of file diff --git a/test/core/json/corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab b/test/core/json/corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab new file mode 100644 index 0000000000..77db9a610d --- /dev/null +++ b/test/core/json/corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab @@ -0,0 +1 @@ +{"',!\u65E8850{2312;):)!*?'ʳ!!!):*!::8!9:\udbD8\6' \ No newline at end of file diff --git a/test/core/json/corpus/cfff4e9d08cba81b663dd1999710008342851e19 b/test/core/json/corpus/cfff4e9d08cba81b663dd1999710008342851e19 new file mode 100644 index 0000000000..eb4d5f1d00 --- /dev/null +++ b/test/core/json/corpus/cfff4e9d08cba81b663dd1999710008342851e19 @@ -0,0 +1 @@ +nul*: \ No newline at end of file diff --git a/test/core/json/corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194 b/test/core/json/corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194 new file mode 100644 index 0000000000..f292b522dd --- /dev/null +++ b/test/core/json/corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194 @@ -0,0 +1 @@ +8324E684;) \ No newline at end of file diff --git a/test/core/json/corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd b/test/core/json/corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd new file mode 100644 index 0000000000..68efa7b291 --- /dev/null +++ b/test/core/json/corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd @@ -0,0 +1 @@ +"7 \ No newline at end of file diff --git a/test/core/json/corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957 b/test/core/json/corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957 new file mode 100644 index 0000000000..2f58c324ad --- /dev/null +++ b/test/core/json/corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957 @@ -0,0 +1 @@ +0.5! \ No newline at end of file diff --git a/test/core/json/corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678 b/test/core/json/corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678 new file mode 100644 index 0000000000..0e05e028ed --- /dev/null +++ b/test/core/json/corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678 @@ -0,0 +1 @@ +"',!\u65E8850{2312;):)!*?'ʳ0.!!!):*!::8!9:\udbD8\uD8250' \ No newline at end of file diff --git a/test/core/json/corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a b/test/core/json/corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a new file mode 100644 index 0000000000..86d708ff38 --- /dev/null +++ b/test/core/json/corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a @@ -0,0 +1 @@ +{"!!\'' \ No newline at end of file diff --git a/test/core/json/corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd b/test/core/json/corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd new file mode 100644 index 0000000000..fb9c6f852c --- /dev/null +++ b/test/core/json/corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd @@ -0,0 +1 @@ +834e;) \ No newline at end of file diff --git a/test/core/json/corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d b/test/core/json/corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d new file mode 100644 index 0000000000..428fe54772 --- /dev/null +++ b/test/core/json/corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d @@ -0,0 +1 @@ +"!!\'' \ No newline at end of file diff --git a/test/core/json/corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023 b/test/core/json/corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023 new file mode 100644 index 0000000000..53f048b650 --- /dev/null +++ b/test/core/json/corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023 @@ -0,0 +1 @@ +[}G3 \ No newline at end of file diff --git a/test/core/json/corpus/e4a4085cc31476f5de9047422851d8ccf86339df b/test/core/json/corpus/e4a4085cc31476f5de9047422851d8ccf86339df new file mode 100644 index 0000000000..e673b6dd2e --- /dev/null +++ b/test/core/json/corpus/e4a4085cc31476f5de9047422851d8ccf86339df @@ -0,0 +1 @@ +{"',!\u@': \ No newline at end of file diff --git a/test/core/json/corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea b/test/core/json/corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea new file mode 100644 index 0000000000..67a6628324 --- /dev/null +++ b/test/core/json/corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea @@ -0,0 +1 @@ +0 { \ No newline at end of file diff --git a/test/core/json/corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536 b/test/core/json/corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536 new file mode 100644 index 0000000000..3e747cc04e --- /dev/null +++ b/test/core/json/corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536 @@ -0,0 +1 @@ +{:)!"*?'ʳ!!*!):!*:::\udbD8)!:{!`!?`!?'!*m,');'` \ No newline at end of file diff --git a/test/core/json/corpus/ed1dc11d713e7487de18ce8317b62916959206d0 b/test/core/json/corpus/ed1dc11d713e7487de18ce8317b62916959206d0 new file mode 100644 index 0000000000..90e536ec3f --- /dev/null +++ b/test/core/json/corpus/ed1dc11d713e7487de18ce8317b62916959206d0 @@ -0,0 +1 @@ +8324E6;) \ No newline at end of file diff --git a/test/core/json/corpus/ede3f66106acd7796da8b3942d029fe213058286 b/test/core/json/corpus/ede3f66106acd7796da8b3942d029fe213058286 new file mode 100644 index 0000000000..69cea590c2 --- /dev/null +++ b/test/core/json/corpus/ede3f66106acd7796da8b3942d029fe213058286 @@ -0,0 +1 @@ +5834E0y);) )! \ No newline at end of file diff --git a/test/core/json/corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a b/test/core/json/corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a new file mode 100644 index 0000000000..60f86bd1d3 --- /dev/null +++ b/test/core/json/corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a @@ -0,0 +1 @@ +0,0 \ No newline at end of file diff --git a/test/core/json/corpus/f090932162756b798b1a050b05e3d36a3437c4fc b/test/core/json/corpus/f090932162756b798b1a050b05e3d36a3437c4fc new file mode 100644 index 0000000000..24f98f2d5f --- /dev/null +++ b/test/core/json/corpus/f090932162756b798b1a050b05e3d36a3437c4fc @@ -0,0 +1 @@ +367 \ No newline at end of file diff --git a/test/core/json/corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1 b/test/core/json/corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1 new file mode 100644 index 0000000000..601a7b20af --- /dev/null +++ b/test/core/json/corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1 @@ -0,0 +1 @@ +50{:)!"*?'ʳ!!*!):!*::8!9:\udbD8)!:{!` \ No newline at end of file diff --git a/test/core/json/corpus/f4635fbbf765ead81a261ca152df02622e182d2c b/test/core/json/corpus/f4635fbbf765ead81a261ca152df02622e182d2c new file mode 100644 index 0000000000..30e0f2b2e8 --- /dev/null +++ b/test/core/json/corpus/f4635fbbf765ead81a261ca152df02622e182d2c @@ -0,0 +1 @@ +"19 \ No newline at end of file diff --git a/test/core/json/corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e b/test/core/json/corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e new file mode 100644 index 0000000000..8c0a186967 --- /dev/null +++ b/test/core/json/corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e @@ -0,0 +1 @@ +363 diff --git a/test/core/json/corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a b/test/core/json/corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a new file mode 100644 index 0000000000..d60f1d8b43 --- /dev/null +++ b/test/core/json/corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a @@ -0,0 +1 @@ +0,fa%) \ No newline at end of file diff --git a/test/core/json/corpus/fe2ef495a1152561572949784c16bf23abb28057 b/test/core/json/corpus/fe2ef495a1152561572949784c16bf23abb28057 new file mode 100644 index 0000000000..abc4eff6ac --- /dev/null +++ b/test/core/json/corpus/fe2ef495a1152561572949784c16bf23abb28057 @@ -0,0 +1 @@ +46 \ No newline at end of file -- cgit v1.2.3 From a341fe2876e22f3a7048dcdaa59979054062d464 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:01:30 -0700 Subject: 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 0000000000..2393cd01d4 --- /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 0000000000..810c96eeeb --- /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 0000000000..8adb9bb604 --- /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 0000000000..4c3fcf9ac7 --- /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 0000000000..03f1d792ec --- /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 0000000000..27ba77ddaf --- /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 0000000000..c508d5366f --- /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 0000000000..19765bd501 --- /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 0000000000..affaba369a --- /dev/null +++ b/test/core/json/corpus/test9.json @@ -0,0 +1 @@ +{"alpha":null,"beta":false,"gamma":2.3,"xyz":"abc","negative":-133} -- cgit v1.2.3 From f137b72c1d050d8a79204da7e8fff86a1e73a010 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:05:05 -0700 Subject: 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 0000000000..fdeb10ae31 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/11442d93a554b9e7f9ab02782bbf9443bf6e1ddc differ 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 0000000000..b576e9fb7a Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/179e8ac763b4051a953a38b6b3b1f1e1f6cc6c9e differ 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 0000000000..3a78289fdd Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/71c2b0bebf7f0e916e4ab7eb36d47ccca2b9101c differ 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 0000000000..5529b966f6 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/7a51275b11ecb1efec9251390531681c8d6f2481 differ 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 0000000000..5c8757590d Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/8eb9b86b4f0aa79b8ef84b44e1fb03094e7bb426 differ 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 0000000000..cb68dfd5e5 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/eb6ca7624384239c7f7e0d83edb7cc334b7926d7 differ -- cgit v1.2.3 From 45991b3881c3c00e1718ed7dd74448e4887c4cae Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:19:48 -0700 Subject: 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 0000000000..6b6a742ff9 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/24ec2f3e17d3850564788f3fed17a5c586c44658 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3b14837f22905dcb04f93aed2aa69bf95924fb9d b/test/core/transport/chttp2/hpack_parser_corpus/3b14837f22905dcb04f93aed2aa69bf95924fb9d new file mode 100644 index 0000000000..dceaf045d2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3b14837f22905dcb04f93aed2aa69bf95924fb9d @@ -0,0 +1 @@ +f*!(!! i[! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/85eb0f4502a51e646dab4ae08eabd90613cdf8e1 b/test/core/transport/chttp2/hpack_parser_corpus/85eb0f4502a51e646dab4ae08eabd90613cdf8e1 new file mode 100644 index 0000000000..4ede523ada Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/85eb0f4502a51e646dab4ae08eabd90613cdf8e1 differ 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 0000000000..4f0cbfb0e7 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/bf0c98689ab81fc32787023300caf9a4175583dc differ -- cgit v1.2.3 From f1eac3c28a2110a8f5cc8ae24d817d66ad5834c4 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:36:30 -0700 Subject: 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 0000000000..e4c217c6e5 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/15ae43369798e48c396dfe7d53a21878b96e66c8 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/1b5150514364e2c17f5a4edac1b7af99b936f55a b/test/core/transport/chttp2/hpack_parser_corpus/1b5150514364e2c17f5a4edac1b7af99b936f55a new file mode 100644 index 0000000000..fc2f5a59a1 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/1b5150514364e2c17f5a4edac1b7af99b936f55a differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/2151945f43991c27e123c45dc72b93752a47e65f b/test/core/transport/chttp2/hpack_parser_corpus/2151945f43991c27e123c45dc72b93752a47e65f new file mode 100644 index 0000000000..2715d4e66a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/2151945f43991c27e123c45dc72b93752a47e65f @@ -0,0 +1 @@ +[(-bin! (!\ !G:[(!'[(!! [(*! !!GGA)([( !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/3de7b860c3fba2bc55707fd6875dce276f2f249b b/test/core/transport/chttp2/hpack_parser_corpus/3de7b860c3fba2bc55707fd6875dce276f2f249b new file mode 100644 index 0000000000..7d875fef83 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/3de7b860c3fba2bc55707fd6875dce276f2f249b @@ -0,0 +1 @@ +-binc[)(-'bin !!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8090444f98218e65ff9594789ff22bbea3c0497c b/test/core/transport/chttp2/hpack_parser_corpus/8090444f98218e65ff9594789ff22bbea3c0497c new file mode 100644 index 0000000000..a9663a0bbf --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8090444f98218e65ff9594789ff22bbea3c0497c @@ -0,0 +1 @@ +c ' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/894211571f9153c3c2ea4102541dac69be8aaa9c b/test/core/transport/chttp2/hpack_parser_corpus/894211571f9153c3c2ea4102541dac69be8aaa9c new file mode 100644 index 0000000000..ded03ee4e4 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/894211571f9153c3c2ea4102541dac69be8aaa9c differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/907d0021d42d0fdc867fd02d3609cdce13c8a055 b/test/core/transport/chttp2/hpack_parser_corpus/907d0021d42d0fdc867fd02d3609cdce13c8a055 new file mode 100644 index 0000000000..4bff0ff011 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/907d0021d42d0fdc867fd02d3609cdce13c8a055 @@ -0,0 +1 @@ +[(-bdin! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9267c81c3283da8193c198de05e05fa30631a453 b/test/core/transport/chttp2/hpack_parser_corpus/9267c81c3283da8193c198de05e05fa30631a453 new file mode 100644 index 0000000000..34951fe7d0 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9267c81c3283da8193c198de05e05fa30631a453 @@ -0,0 +1 @@ +?*@:[c (!!\; !~ G!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9c703141efd69eb8f32a58133c8035fb585e0f4c b/test/core/transport/chttp2/hpack_parser_corpus/9c703141efd69eb8f32a58133c8035fb585e0f4c new file mode 100644 index 0000000000..e1d551a8dc Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/9c703141efd69eb8f32a58133c8035fb585e0f4c differ 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 0000000000..6a28aa19db --- /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 0000000000..704e797881 --- /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 0000000000..d43c0945f3 --- /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 0000000000..e9cb7889f3 --- /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 0000000000..cb9bf614e7 --- /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 0000000000..df574771fd --- /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 0000000000..1ab7be333a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/f52f4d51aaaed0f9c3a20936cf5efd25d0692f67 @@ -0,0 +1 @@ +p!T* \ No newline at end of file -- cgit v1.2.3 From 66f039b160bf810c9353f1294873adc4857ad293 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:38:24 -0700 Subject: 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 26ac7c80df..287bb2acbf 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 366fe76ab3..6f89e5250c 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 00a420809c..fb7120ddce 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 1cd3d55d1b..fc10c77193 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 bac4fb844d..fb2fa69e34 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" -- cgit v1.2.3 From 59e49a28e7895cff3abd234931849680d39068b9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 23 Mar 2016 23:42:54 -0700 Subject: 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 0000000000..0ea34c4099 --- /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 0000000000..ce65ec6fd1 --- /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 0000000000..a7936f2faf --- /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 0000000000..e880d551ba --- /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 0000000000..e0c8806edc Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/08ffc4a4160e9fe6f322c28870a89a41fd9c37d7 differ 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 0000000000..93f599d059 --- /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 0000000000..1e92896b14 --- /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 0000000000..389f58b8ae Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/0a4d3fda02cdcb7adad1daa80d65780c9c8d1464 differ 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 0000000000..e4ec7808b9 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/0ad812832efa33e086874fbf3496664d3f1b4dbe differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/0dc9e41eedf35ccedf4e2b0d230ead7c4d72fdb2 b/test/core/transport/chttp2/hpack_parser_corpus/0dc9e41eedf35ccedf4e2b0d230ead7c4d72fdb2 new file mode 100644 index 0000000000..60191620fa Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/0dc9e41eedf35ccedf4e2b0d230ead7c4d72fdb2 differ 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 0000000000..ca7cbd033a --- /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 0000000000..203837bbd7 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/0e61e471fa6d3405daef4276ee00cf5fc189f378 differ 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 0000000000..480a056677 --- /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 0000000000..f706bd98e7 --- /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 0000000000..64fdd961e9 --- /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 0000000000..914e443ce8 --- /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 0000000000..970a9121b3 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/1e9b962969c359bc2ff766704c8ca8e25f5eccfc differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/213a734ccdb813b18ad9f2dd99b7f9967ee1460b b/test/core/transport/chttp2/hpack_parser_corpus/213a734ccdb813b18ad9f2dd99b7f9967ee1460b new file mode 100644 index 0000000000..64ab9ba5ed --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/213a734ccdb813b18ad9f2dd99b7f9967ee1460b @@ -0,0 +1 @@ +-bin[)('-bin !!?!{(-bi\n! ! ;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/21545d998c27a5a1572a89a552937752432b1c14 b/test/core/transport/chttp2/hpack_parser_corpus/21545d998c27a5a1572a89a552937752432b1c14 new file mode 100644 index 0000000000..ccb7d829cb --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/21545d998c27a5a1572a89a552937752432b1c14 @@ -0,0 +1 @@ +*-bn''c)[i(bn-!?! (!\c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/23c7443fa1ab713e7c34ec50222b1b8cceaedc65 b/test/core/transport/chttp2/hpack_parser_corpus/23c7443fa1ab713e7c34ec50222b1b8cceaedc65 new file mode 100644 index 0000000000..2b22f5cf1a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/23c7443fa1ab713e7c34ec50222b1b8cceaedc65 @@ -0,0 +1 @@ +-bin-[c'()bin !!?!;{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/2445bb2c6779712dc9e14c01fecb7103f8732858 b/test/core/transport/chttp2/hpack_parser_corpus/2445bb2c6779712dc9e14c01fecb7103f8732858 new file mode 100644 index 0000000000..7112c43872 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/2445bb2c6779712dc9e14c01fecb7103f8732858 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/244b0a20500e31d3c538418800db816b07f4d210 b/test/core/transport/chttp2/hpack_parser_corpus/244b0a20500e31d3c538418800db816b07f4d210 new file mode 100644 index 0000000000..f58d558aa5 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/244b0a20500e31d3c538418800db816b07f4d210 @@ -0,0 +1 @@ +-binc[)(-'bin 1!?!;*{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/2537b8d6b902b8dfc6e17f194cf7d05ddecf74cf b/test/core/transport/chttp2/hpack_parser_corpus/2537b8d6b902b8dfc6e17f194cf7d05ddecf74cf new file mode 100644 index 0000000000..c0cee4f308 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/2537b8d6b902b8dfc6e17f194cf7d05ddecf74cf @@ -0,0 +1 @@ +!Ф!:[oc \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/256d0bbdbed22f5867a6f503bf082011e61ee12b b/test/core/transport/chttp2/hpack_parser_corpus/256d0bbdbed22f5867a6f503bf082011e61ee12b new file mode 100644 index 0000000000..c5d69b5ae7 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/256d0bbdbed22f5867a6f503bf082011e61ee12b differ 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 0000000000..57727acb9e Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/2fdfd2abf30c636ec8c841f1ac26594e25664f0f differ 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 0000000000..b706187aa1 --- /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 0000000000..b1c0905a7b --- /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 0000000000..21f59d4d83 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/33bc9db104eb72891fb096f34cbac191b3f9918d differ 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 0000000000..982af7bac3 --- /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 0000000000..cd204010ca --- /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 0000000000..99507d2e1e --- /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 0000000000..164b22a5c2 --- /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 0000000000..b243e62540 --- /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 0000000000..1e49a898fd --- /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 0000000000..f1e7a8e1df --- /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 0000000000..98ff11fb49 --- /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 0000000000..ddf6c7cb63 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/3e2004ff9f40e398e0f41138a25a8b66e3d843d9 differ 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 0000000000..c72af1a7ad --- /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 0000000000..2bfbdf50fd --- /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 0000000000..24f6a24c86 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/420291d7139d9246de747739fd98102434a742dd differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/42bef44ae751a45c671d9da5b1231d2ac747a48d b/test/core/transport/chttp2/hpack_parser_corpus/42bef44ae751a45c671d9da5b1231d2ac747a48d new file mode 100644 index 0000000000..f9c48717cf Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/42bef44ae751a45c671d9da5b1231d2ac747a48d differ 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 0000000000..c000da7d7d --- /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 0000000000..9fd52afbf3 --- /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 0000000000..3894ad5659 --- /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 0000000000..acb762956c Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/46d595331689ae01d77aff387747a98ff3480096 differ 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 0000000000..22cebb56f5 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/499376c5e291da2f9c25999abf4960fab5a92ec8 differ 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 0000000000..3bf6b6e6c1 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/4a3fdb96bc8c80f1992f0f72f963f84856cbade8 differ 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 0000000000..fc8bdd1913 --- /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 0000000000..3a3c61a888 --- /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 0000000000..e5a06a1121 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/5032a75a98cd14d4dab75c1c5e2cd981abb19dcf differ 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 0000000000..1b08af84b6 --- /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 0000000000..103692aec1 --- /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 0000000000..06858ed86d Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/521809903d36db80b1ccd707f354361f2bf05075 differ 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 0000000000..fcec5d6fa5 --- /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 0000000000..aaada4fb29 --- /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 0000000000..ac9c813f0f Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/54a2b3993c3483745f6314c870a038a8e58f97a7 differ 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 0000000000..c9472247d4 --- /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 0000000000..48c1dfefe4 --- /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 0000000000..e7e115f84b --- /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 0000000000..c1c41667f4 --- /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 0000000000..144e68b7e9 --- /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 0000000000..4f5a88776e --- /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 0000000000..d38481ced8 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/5c9fd9cc7100feaeead1e0e45201945a6e76fd85 differ 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 0000000000..f0ce5a2af4 --- /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 0000000000..0759d5b791 --- /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 0000000000..3357333bb7 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/644deba51c79b6ebd470bd4367452941045d112a differ 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 0000000000..9aa7b9d404 --- /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 0000000000..07cf3ef26b --- /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 0000000000..c5a8cc695e --- /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 0000000000..3ad7a92e82 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/67b4cec5183659aeae0f5bc71b3adf0542a11828 differ 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 0000000000..56c98a43f4 --- /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 0000000000..cc3c4dd2b3 --- /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 0000000000..e87f23e2be --- /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 0000000000..d0a7c6403b --- /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 0000000000..5b7c52d2ba --- /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 0000000000..c901c4cc58 --- /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 0000000000..74d43925d4 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/78f5ff40e5554aa9c31b45f79a7ae9699f93e7fd differ 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 0000000000..53ba7aa1a7 --- /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 0000000000..bf413beb62 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/7b9682cd7a3984698f6eac034c59c0f91b4fb83d differ 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 0000000000..291a16d454 --- /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 0000000000..bf77deb49f Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/8035c81c95dedfc27c3649064f98f49e3e72c21f differ 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 0000000000..003033bf1c --- /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 0000000000..2760e03663 --- /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 0000000000..6a2345295e Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/80e516692955d5f224706f268e247858858e16d8 differ 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 0000000000..d5a3aeeb33 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/810a1372fa97380265f5529c5043ae96f007f5bb differ 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 0000000000..0f7035b4a4 --- /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 0000000000..42b9598aee --- /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 0000000000..20ab8498ed Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/84441efd7d8bdb0ce2fac28f218d3d5d4d77f1d4 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/870f9cc4bd89c6c04c6a51ceae1efa8634627cd6 b/test/core/transport/chttp2/hpack_parser_corpus/870f9cc4bd89c6c04c6a51ceae1efa8634627cd6 new file mode 100644 index 0000000000..7d35cc8032 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/870f9cc4bd89c6c04c6a51ceae1efa8634627cd6 @@ -0,0 +1 @@ +?*@:[c (!!\;!~ G!am:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8b0e12978b8e2eecf62346e438e47d0993845693 b/test/core/transport/chttp2/hpack_parser_corpus/8b0e12978b8e2eecf62346e438e47d0993845693 new file mode 100644 index 0000000000..4cb592693e --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8b0e12978b8e2eecf62346e438e47d0993845693 @@ -0,0 +1 @@ +-binc[)( ?-'bin !!?: \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8b3fa0bd4f289eff6a04a5205e04baaeafbdf637 b/test/core/transport/chttp2/hpack_parser_corpus/8b3fa0bd4f289eff6a04a5205e04baaeafbdf637 new file mode 100644 index 0000000000..573daa73e9 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8b3fa0bd4f289eff6a04a5205e04baaeafbdf637 @@ -0,0 +1 @@ +-bin()[c-'bin !!?!{(-bin !\ !;?G:[((#!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8d1deedd1e463f8c95129a6f839c380a7c83ab04 b/test/core/transport/chttp2/hpack_parser_corpus/8d1deedd1e463f8c95129a6f839c380a7c83ab04 new file mode 100644 index 0000000000..11e43ba8d3 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/8d1deedd1e463f8c95129a6f839c380a7c83ab04 @@ -0,0 +1 @@ +-binc*[)(-'bcin !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8d1e029bd72381e382c87e61b4c5a9741d80d644 b/test/core/transport/chttp2/hpack_parser_corpus/8d1e029bd72381e382c87e61b4c5a9741d80d644 new file mode 100644 index 0000000000..a4a1f3c1cf Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/8d1e029bd72381e382c87e61b4c5a9741d80d644 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8dfc2183691385432f92957cff0b2538e5a0ebfa b/test/core/transport/chttp2/hpack_parser_corpus/8dfc2183691385432f92957cff0b2538e5a0ebfa new file mode 100644 index 0000000000..c7552c3171 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/8dfc2183691385432f92957cff0b2538e5a0ebfa differ 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 0000000000..828e12f028 --- /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 0000000000..3378b5504c Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/8f3e48c49d0794909f6e8e61e5a4312edf484c33 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/92e80997a4237d76f10b70dae2870b7255c97435 b/test/core/transport/chttp2/hpack_parser_corpus/92e80997a4237d76f10b70dae2870b7255c97435 new file mode 100644 index 0000000000..0e176e3c9a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/92e80997a4237d76f10b70dae2870b7255c97435 @@ -0,0 +1 @@ +?*@:[(nc (;!;\ !c G!cm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/935322db76f5d4c74c2dc68fc4631915b8e24323 b/test/core/transport/chttp2/hpack_parser_corpus/935322db76f5d4c74c2dc68fc4631915b8e24323 new file mode 100644 index 0000000000..cbf58cf832 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/935322db76f5d4c74c2dc68fc4631915b8e24323 @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/939f2627ef6263d0176566de267ff3eb910e6a60 b/test/core/transport/chttp2/hpack_parser_corpus/939f2627ef6263d0176566de267ff3eb910e6a60 new file mode 100644 index 0000000000..0efdf47c50 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/939f2627ef6263d0176566de267ff3eb910e6a60 @@ -0,0 +1 @@ +-bin)['(=cbin a!?!{(-bin \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/96a89c005e8d9992e34cc149b0be096ad0051446 b/test/core/transport/chttp2/hpack_parser_corpus/96a89c005e8d9992e34cc149b0be096ad0051446 new file mode 100644 index 0000000000..2ac2d76500 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/96a89c005e8d9992e34cc149b0be096ad0051446 differ 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 0000000000..252816d57a Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/98f2cb84ad89550cf56ee54e11f1448ae7287247 differ 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 0000000000..d1028f392f --- /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 0000000000..5173bb4ec1 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/99e888b7372b29256dbefd476855ff73584cc00f differ 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 0000000000..838d0d2f75 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/9b18087deb3cfafa1b964aa65d8ee980bc61404e differ 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 0000000000..b7855d78e5 --- /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 0000000000..f10b76b53c --- /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 0000000000..dec67b6181 --- /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 0000000000..0855a4d883 --- /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 0000000000..7fff586ac9 --- /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 0000000000..d6a316be60 --- /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 0000000000..cba4e44f4d --- /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 0000000000..ba1a5dbd34 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/a84a1ed1a24e753a27adfd3ba806f06fc44f899f differ 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 0000000000..039af40437 --- /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 0000000000..e359cb7c92 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/ab97c1f6033dc7d96f69b9e1461fd594c16f4ebf differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ac8a8c23acd8c290a11dc7828f7f397957fa6400 b/test/core/transport/chttp2/hpack_parser_corpus/ac8a8c23acd8c290a11dc7828f7f397957fa6400 new file mode 100644 index 0000000000..39985fb66c --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ac8a8c23acd8c290a11dc7828f7f397957fa6400 @@ -0,0 +1 @@ +?*@:[c (!!\;!~ G!im:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/affd292cd2ce3306b4651cc7ec0ec0524cbbae3d b/test/core/transport/chttp2/hpack_parser_corpus/affd292cd2ce3306b4651cc7ec0ec0524cbbae3d new file mode 100644 index 0000000000..4ea1b6bd4b --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/affd292cd2ce3306b4651cc7ec0ec0524cbbae3d @@ -0,0 +1 @@ +binc[)'-bi. *)!?{(-bi\n! ! ;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/b166aa66b5b3ad178bc38aee5768226c8adc082f b/test/core/transport/chttp2/hpack_parser_corpus/b166aa66b5b3ad178bc38aee5768226c8adc082f new file mode 100644 index 0000000000..691e650208 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/b166aa66b5b3ad178bc38aee5768226c8adc082f @@ -0,0 +1 @@ +p!c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/b1ade0571262c6e5f1d72f6d25ebb513d2055bc9 b/test/core/transport/chttp2/hpack_parser_corpus/b1ade0571262c6e5f1d72f6d25ebb513d2055bc9 new file mode 100644 index 0000000000..cc073f43d3 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/b1ade0571262c6e5f1d72f6d25ebb513d2055bc9 @@ -0,0 +1 @@ +-binc[)('-bi. *!!?!{(-bi\n! ! ;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/bcaa71abf23b2e5130e0cc464755fe769bf4aaa7 b/test/core/transport/chttp2/hpack_parser_corpus/bcaa71abf23b2e5130e0cc464755fe769bf4aaa7 new file mode 100644 index 0000000000..81d87fa425 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/bcaa71abf23b2e5130e0cc464755fe769bf4aaa7 @@ -0,0 +1 @@ +-binc[)(-'bin !!?! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/bf479e97b39b697e715663de6a1e78dd58d64122 b/test/core/transport/chttp2/hpack_parser_corpus/bf479e97b39b697e715663de6a1e78dd58d64122 new file mode 100644 index 0000000000..fb6b7bd606 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/bf479e97b39b697e715663de6a1e78dd58d64122 @@ -0,0 +1 @@ +-binc*[)(-'bcin !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/bf826c96be94d1b42eea0666f7239cc5f699a375 b/test/core/transport/chttp2/hpack_parser_corpus/bf826c96be94d1b42eea0666f7239cc5f699a375 new file mode 100644 index 0000000000..cb679b9a79 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/bf826c96be94d1b42eea0666f7239cc5f699a375 @@ -0,0 +1 @@ +[(-bin-binc[)(-'bin !!?!{(-bin! ( !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c1e5307d88feda2c3b15fc221cba92bcf41622bf b/test/core/transport/chttp2/hpack_parser_corpus/c1e5307d88feda2c3b15fc221cba92bcf41622bf new file mode 100644 index 0000000000..6553242999 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c1e5307d88feda2c3b15fc221cba92bcf41622bf @@ -0,0 +1 @@ +(?*-bin;[('!c \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c249f408c552a0408eab3fe1d1cbeca95cd537c1 b/test/core/transport/chttp2/hpack_parser_corpus/c249f408c552a0408eab3fe1d1cbeca95cd537c1 new file mode 100644 index 0000000000..52f518b816 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c249f408c552a0408eab3fe1d1cbeca95cd537c1 @@ -0,0 +1 @@ +-binc[)(-b-binc[)('-bi. *!!? \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c26b460aebc9082c519539069f7e060042989696 b/test/core/transport/chttp2/hpack_parser_corpus/c26b460aebc9082c519539069f7e060042989696 new file mode 100644 index 0000000000..7c9ca4588b --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c26b460aebc9082c519539069f7e060042989696 @@ -0,0 +1 @@ +-binc[)(-'bni !%?!{(-bin !\!;?G[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c4836760377a7091fb20f4afa9c712875792b9a7 b/test/core/transport/chttp2/hpack_parser_corpus/c4836760377a7091fb20f4afa9c712875792b9a7 new file mode 100644 index 0000000000..2d3d63a157 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/c4836760377a7091fb20f4afa9c712875792b9a7 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c48caad597176404f776d532d4baf9faf7655ee2 b/test/core/transport/chttp2/hpack_parser_corpus/c48caad597176404f776d532d4baf9faf7655ee2 new file mode 100644 index 0000000000..2c7912f6ad Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/c48caad597176404f776d532d4baf9faf7655ee2 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c4eff0f59986fc5ab09d5bd95f394292f2882659 b/test/core/transport/chttp2/hpack_parser_corpus/c4eff0f59986fc5ab09d5bd95f394292f2882659 new file mode 100644 index 0000000000..5b704f81cf --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c4eff0f59986fc5ab09d5bd95f394292f2882659 @@ -0,0 +1 @@ +-bin)c[)-'bin 1!?! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c600877ce547166eb1b9d83afbe128d98767f8a3 b/test/core/transport/chttp2/hpack_parser_corpus/c600877ce547166eb1b9d83afbe128d98767f8a3 new file mode 100644 index 0000000000..7e26216a80 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c600877ce547166eb1b9d83afbe128d98767f8a3 @@ -0,0 +1 @@ +-binc)-bi (n'!!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c8d22f7fb4f37f2d8cc7953fa2d599d38d899aec b/test/core/transport/chttp2/hpack_parser_corpus/c8d22f7fb4f37f2d8cc7953fa2d599d38d899aec new file mode 100644 index 0000000000..104ab47b65 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/c8d22f7fb4f37f2d8cc7953fa2d599d38d899aec differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/c95ff2a172626efb50e94aa6781feba609820076 b/test/core/transport/chttp2/hpack_parser_corpus/c95ff2a172626efb50e94aa6781feba609820076 new file mode 100644 index 0000000000..0a104c7cb2 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c95ff2a172626efb50e94aa6781feba609820076 @@ -0,0 +1 @@ +[(-bin! (!\ !G!:[(!'[(!! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ca6c557afb9c571de62e9b65ca6469a6133760da b/test/core/transport/chttp2/hpack_parser_corpus/ca6c557afb9c571de62e9b65ca6469a6133760da new file mode 100644 index 0000000000..4d95be63c9 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ca6c557afb9c571de62e9b65ca6469a6133760da @@ -0,0 +1 @@ +?!c }' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/cb2d0fb23f66c968af2e80d59f71d4c1aed96fbd b/test/core/transport/chttp2/hpack_parser_corpus/cb2d0fb23f66c968af2e80d59f71d4c1aed96fbd new file mode 100644 index 0000000000..1cbb3361ca --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/cb2d0fb23f66c968af2e80d59f71d4c1aed96fbd @@ -0,0 +1 @@ +-binc[)(-'bcin !! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/cc60a642cc2037ad3c459a57381b8f65d8d7aa35 b/test/core/transport/chttp2/hpack_parser_corpus/cc60a642cc2037ad3c459a57381b8f65d8d7aa35 new file mode 100644 index 0000000000..b2d3847d13 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/cc60a642cc2037ad3c459a57381b8f65d8d7aa35 @@ -0,0 +1 @@ +?*@:[ 4;!!\ !~ DGcm:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/ccdfd1354997eb117bd76b75440a7e4ff20bf564 b/test/core/transport/chttp2/hpack_parser_corpus/ccdfd1354997eb117bd76b75440a7e4ff20bf564 new file mode 100644 index 0000000000..718a9e5839 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ccdfd1354997eb117bd76b75440a7e4ff20bf564 @@ -0,0 +1 @@ ++-bin 9c[)(-b \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/cd7a7b8f08c189e95ae3e2ea44b9015000e823f3 b/test/core/transport/chttp2/hpack_parser_corpus/cd7a7b8f08c189e95ae3e2ea44b9015000e823f3 new file mode 100644 index 0000000000..4d63ccbfcf --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/cd7a7b8f08c189e95ae3e2ea44b9015000e823f3 @@ -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/ce6b642b81373f05baa2a6fe6e9d5d1387046285 b/test/core/transport/chttp2/hpack_parser_corpus/ce6b642b81373f05baa2a6fe6e9d5d1387046285 new file mode 100644 index 0000000000..a311265858 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/ce6b642b81373f05baa2a6fe6e9d5d1387046285 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/cf84d06e4dddb997a79a41f9b6122bf620bbdb4b b/test/core/transport/chttp2/hpack_parser_corpus/cf84d06e4dddb997a79a41f9b6122bf620bbdb4b new file mode 100644 index 0000000000..350c941e9b --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/cf84d06e4dddb997a79a41f9b6122bf620bbdb4b @@ -0,0 +1 @@ +;?'c[)! [N! b4G!*(!! BGA)!)!*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d131f83ee73450ff45565d0c638be7d8beeb30d9 b/test/core/transport/chttp2/hpack_parser_corpus/d131f83ee73450ff45565d0c638be7d8beeb30d9 new file mode 100644 index 0000000000..c0404bae2e --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/d131f83ee73450ff45565d0c638be7d8beeb30d9 @@ -0,0 +1 @@ +-bin)['(=cbin a!?!{(-bin \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d2817b89d7aaa7fa880c077b1a67168ec2f4f0f7 b/test/core/transport/chttp2/hpack_parser_corpus/d2817b89d7aaa7fa880c077b1a67168ec2f4f0f7 new file mode 100644 index 0000000000..272be7461e Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/d2817b89d7aaa7fa880c077b1a67168ec2f4f0f7 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d4cfaf3b59b22b654d7af80ee6715ce5015bfdc0 b/test/core/transport/chttp2/hpack_parser_corpus/d4cfaf3b59b22b654d7af80ee6715ce5015bfdc0 new file mode 100644 index 0000000000..be8b8045e8 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/d4cfaf3b59b22b654d7af80ee6715ce5015bfdc0 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d5670827c8e8d4c95ac0f738c0790c19916c0336 b/test/core/transport/chttp2/hpack_parser_corpus/d5670827c8e8d4c95ac0f738c0790c19916c0336 new file mode 100644 index 0000000000..8c906c5023 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/d5670827c8e8d4c95ac0f738c0790c19916c0336 @@ -0,0 +1 @@ +*-bin-'(?;[( \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d59d7e94863f1ed89cacfbaabf7bc59946036c8f b/test/core/transport/chttp2/hpack_parser_corpus/d59d7e94863f1ed89cacfbaabf7bc59946036c8f new file mode 100644 index 0000000000..ed929ebd47 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/d59d7e94863f1ed89cacfbaabf7bc59946036c8f @@ -0,0 +1 @@ +*-bin('[i(bn-!? \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/d8b15e9e555ad9900ba4be8cc9f87bef75725b24 b/test/core/transport/chttp2/hpack_parser_corpus/d8b15e9e555ad9900ba4be8cc9f87bef75725b24 new file mode 100644 index 0000000000..9ed0c807d5 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/d8b15e9e555ad9900ba4be8cc9f87bef75725b24 @@ -0,0 +1 @@ +?*@:[c (!!\;!~ G!im:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/da9fc821f0c1e00728b139b36269bc3d21c0a8cc b/test/core/transport/chttp2/hpack_parser_corpus/da9fc821f0c1e00728b139b36269bc3d21c0a8cc new file mode 100644 index 0000000000..e752baf261 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/da9fc821f0c1e00728b139b36269bc3d21c0a8cc @@ -0,0 +1 @@ +rbinc[)(-'bin !!?!{(-bin !\ !;?G[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/dd3ba9b139e13324fc76cd62af84b00ca8b87205 b/test/core/transport/chttp2/hpack_parser_corpus/dd3ba9b139e13324fc76cd62af84b00ca8b87205 new file mode 100644 index 0000000000..bad7f6093e --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/dd3ba9b139e13324fc76cd62af84b00ca8b87205 @@ -0,0 +1 @@ +p!T* \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/de0a9dce0ea4e4bfdcb13f788ae728bf979fed25 b/test/core/transport/chttp2/hpack_parser_corpus/de0a9dce0ea4e4bfdcb13f788ae728bf979fed25 new file mode 100644 index 0000000000..5a2a027b3e --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/de0a9dce0ea4e4bfdcb13f788ae728bf979fed25 @@ -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/deb6f9a930d9b31586ede19fd8fd3caae0e5b1f2 b/test/core/transport/chttp2/hpack_parser_corpus/deb6f9a930d9b31586ede19fd8fd3caae0e5b1f2 new file mode 100644 index 0000000000..1ceb5590f3 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/deb6f9a930d9b31586ede19fd8fd3caae0e5b1f2 @@ -0,0 +1 @@ +-bin)['(;-cbin !!?!{(-bin !\ !;?G:[((!!\ \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/dee95e0280b70681eddfb68e3b418126c5661e18 b/test/core/transport/chttp2/hpack_parser_corpus/dee95e0280b70681eddfb68e3b418126c5661e18 new file mode 100644 index 0000000000..713d1783db Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/dee95e0280b70681eddfb68e3b418126c5661e18 differ 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 0000000000..eb157d300a Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/e1d86c0094657386197d191855b5645ac1dd5936 differ 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 0000000000..c9898303c2 --- /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 0000000000..9296f0ee3a Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/e3cfdc862187b4ec28bd4fb2ced5094bb5b09909 differ 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 0000000000..84f475391d --- /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 0000000000..b87a36fcfc --- /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 0000000000..0a16a74e6d --- /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 0000000000..ffa9431bc3 --- /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 0000000000..5ef662da50 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/edff5256a2d60d0e51caef25dc1d6f1643dad6d5 differ 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 0000000000..be01d46af5 --- /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 0000000000..58cc22fbab --- /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 0000000000..a217e4f2d8 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/f1e30464c24dc1d7cec7ec1dd2adec8512232b43 differ 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 0000000000..9b0d16f3bf --- /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 0000000000..0c8d29083e --- /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 0000000000..a7c841c10d --- /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 0000000000..667c24677c --- /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 0000000000..c5005c7700 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/fd34ec90fe8f9218fd25c3eac151aec998cff6d8 differ 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 0000000000..fcae5ce55e --- /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 0000000000..e8e30c889e Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/ff2097734bd7bb8451aece13c9336c4624735170 differ 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 0000000000..58337fbf9b --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/ff7d6ff060e63355701b2e655c802902338497de @@ -0,0 +1 @@ +-binc*[)(-'!bcin ;!! \ No newline at end of file -- cgit v1.2.3 From ec0d95ae380b1e630533e35d4ffbd380fd264af9 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:18:43 -0700 Subject: 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 e46b8ebb69..e673f8ebfc 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: 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 9a97826287..f7095a53e2 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 54ac59e056..a487d23ba0 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 0cc4b60239..df719afd99 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 035265a6be..cbd96a75fe 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 -- cgit v1.2.3 From 633cbf708f2d0f500e0a3569c7d1e9fa2629bc3b Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:24:57 -0700 Subject: 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 0000000000..483097294c Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/17faf0ba8a491a835d35977a9007b90ab7d30d2a differ 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 0000000000..ae0ab51374 --- /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 0000000000..cf1dac3094 --- /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 0000000000..598576b7e3 --- /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 0000000000..689d7f2c8f --- /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 0000000000..4616caf56b Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/42b25a5413c536478a3e63da5adef4250babf2f4 differ 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 0000000000..5b390fd26a Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/49027bbd3f3f3cafa315843c8fe8280f86985273 differ 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 0000000000..6b93c8280e Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/4a3b7ce0cdf217963a0b692769e5d6f4befe73b8 differ 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 0000000000..ebcc00934b --- /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 0000000000..1bfc596dbe Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/5838b5a683229ebb6e6277e2810863e642b8afc2 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5b8ca72ba00231c38b19f582127e6a146eba4282 b/test/core/transport/chttp2/hpack_parser_corpus/5b8ca72ba00231c38b19f582127e6a146eba4282 new file mode 100644 index 0000000000..eb49d1d44a --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/5b8ca72ba00231c38b19f582127e6a146eba4282 @@ -0,0 +1 @@ +;?'c[(! [N!\ !G!*(! !GA)(!)!*)GI)(;) \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/5c6f6b6f7f3e7b435f060abb73c20d2b773a7f56 b/test/core/transport/chttp2/hpack_parser_corpus/5c6f6b6f7f3e7b435f060abb73c20d2b773a7f56 new file mode 100644 index 0000000000..d8e3155a80 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/5c6f6b6f7f3e7b435f060abb73c20d2b773a7f56 @@ -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/6129954942e26c2a9ec071b6659675745613cf3c b/test/core/transport/chttp2/hpack_parser_corpus/6129954942e26c2a9ec071b6659675745613cf3c new file mode 100644 index 0000000000..1ae539b3f8 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/6129954942e26c2a9ec071b6659675745613cf3c differ 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 0000000000..cfe8f60dff --- /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 0000000000..2fb6e2887c --- /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 0000000000..bb540ad811 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/6b203d49bbba6ee74def0d35c2266e06ad3c45d9 differ 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 0000000000..9f2955b0cb Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/6f231dec759eb2105e09263d53e171de19a92c74 differ 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 0000000000..b57b2aabd2 --- /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 0000000000..cda608f32f --- /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 0000000000..8fe52778d2 --- /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 0000000000..bae722a39a --- /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 0000000000..218bfa3279 --- /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 0000000000..24e9fc4ab7 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/8f1bec32f4b8e64062f5405a096543e61d771076 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/919511c217a3427c22cad4a71aae31a6cd47b193 b/test/core/transport/chttp2/hpack_parser_corpus/919511c217a3427c22cad4a71aae31a6cd47b193 new file mode 100644 index 0000000000..fcaef32576 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/919511c217a3427c22cad4a71aae31a6cd47b193 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/94adea6a0d9a44bee6f5e88adcee57be9e9e3597 b/test/core/transport/chttp2/hpack_parser_corpus/94adea6a0d9a44bee6f5e88adcee57be9e9e3597 new file mode 100644 index 0000000000..78e29a4e9b Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/94adea6a0d9a44bee6f5e88adcee57be9e9e3597 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/94dcbe0d3352bd9b230096b8dce9c6d8d63f9d51 b/test/core/transport/chttp2/hpack_parser_corpus/94dcbe0d3352bd9b230096b8dce9c6d8d63f9d51 new file mode 100644 index 0000000000..449c0da1d5 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/94dcbe0d3352bd9b230096b8dce9c6d8d63f9d51 @@ -0,0 +1 @@ +(?8! \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/95dad738f60e3e5eb0f1cdafd91ad461f4418e8f b/test/core/transport/chttp2/hpack_parser_corpus/95dad738f60e3e5eb0f1cdafd91ad461f4418e8f new file mode 100644 index 0000000000..38402df6a5 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/95dad738f60e3e5eb0f1cdafd91ad461f4418e8f differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/960c0a21c9e5c1a61b93b34da3189b0de1c264df b/test/core/transport/chttp2/hpack_parser_corpus/960c0a21c9e5c1a61b93b34da3189b0de1c264df new file mode 100644 index 0000000000..9265e2f484 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/960c0a21c9e5c1a61b93b34da3189b0de1c264df differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9d139835d91474e8d8361d65698a31b8b38c4f7b b/test/core/transport/chttp2/hpack_parser_corpus/9d139835d91474e8d8361d65698a31b8b38c4f7b new file mode 100644 index 0000000000..4781557c61 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9d139835d91474e8d8361d65698a31b8b38c4f7b @@ -0,0 +1 @@ +?!𤤐 c'-bin[c'!)bi \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9f318b2c2ff9cf4615bd06ba13bdd086b4ad08c6 b/test/core/transport/chttp2/hpack_parser_corpus/9f318b2c2ff9cf4615bd06ba13bdd086b4ad08c6 new file mode 100644 index 0000000000..40a6ab5569 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/9f318b2c2ff9cf4615bd06ba13bdd086b4ad08c6 @@ -0,0 +1 @@ +?*@:[c (!!\;!~ G!im:' \ No newline at end of file diff --git a/test/core/transport/chttp2/hpack_parser_corpus/9f8d90b1480989fc46ea2f1c66cf687638994587 b/test/core/transport/chttp2/hpack_parser_corpus/9f8d90b1480989fc46ea2f1c66cf687638994587 new file mode 100644 index 0000000000..6c655aa396 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/9f8d90b1480989fc46ea2f1c66cf687638994587 differ 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 0000000000..6d66d372aa --- /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 0000000000..3e28333e9f --- /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 0000000000..efcad331b1 --- /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 0000000000..10b7a9f21d Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/df0adbe2523508e9afb42a58d98c2657710d6033 differ 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 0000000000..6e3118913f --- /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 0000000000..274e09dd1c --- /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 0000000000..720a576a90 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/e6fab7572fb2a1c6e107b6f83cffd103a233d021 differ 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 0000000000..fce39c6198 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/e8809017a4cf6c1e80a93f661166ead961f26bb4 differ 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 0000000000..9b15875d69 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/ec9457ad41ed745ea9377ffdb16ad09f981daa7f differ 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 0000000000..cd45daf8aa Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/ee4d9c5d22512da42726f47213ff56404d1d81d1 differ 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 0000000000..ee6ac4e30f Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/f27a617b936814476770a3b31a5afb80d0f3b423 differ 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 0000000000..4ed844aca1 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/fe47fb18b064e26479c3c3140082bd01065e897a @@ -0,0 +1 @@ +(??;[(('? \ No newline at end of file -- cgit v1.2.3 From f04920bb5724c0588b8383081850dd9cdbf7faf0 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:27:32 -0700 Subject: 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 8d6c42cd9b..49f185aba3 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). -- cgit v1.2.3 From 1c8fc73e3b8af3092fa858fe9d9f7e59d14fe322 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:30:24 -0700 Subject: 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 49f185aba3..90a2bd8e36 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). -- cgit v1.2.3 From 1266e34d51b45aab0566f65d795e06a3b826e0b8 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:38:13 -0700 Subject: 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 5ebcd320f4..9e6d56fc9a 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); -- cgit v1.2.3 From c63a09eb6ceb547c73b674f48a5833412cd5f08f Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 24 Mar 2016 00:42:24 -0700 Subject: 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 0000000000..e28a5867db Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/0255050a9ccb25f46d6c1bf6a5a8a4c0c7635599 differ 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 0000000000..68b2d0efc7 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/1fcc4afd6f48e83d61ea74970df3ca9dcd8ec291 differ 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 0000000000..5d9d035115 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/48900b4a5557530922ce45c15ad0d3b0a337520d differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/86080f33e4eae21b37863c253ce61eaa13021a97 b/test/core/transport/chttp2/hpack_parser_corpus/86080f33e4eae21b37863c253ce61eaa13021a97 new file mode 100644 index 0000000000..8f5c7a8bda Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/86080f33e4eae21b37863c253ce61eaa13021a97 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/8dd1983889b6632228d4897c365a1e6124d101e1 b/test/core/transport/chttp2/hpack_parser_corpus/8dd1983889b6632228d4897c365a1e6124d101e1 new file mode 100644 index 0000000000..3a98220f2f Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/8dd1983889b6632228d4897c365a1e6124d101e1 differ diff --git a/test/core/transport/chttp2/hpack_parser_corpus/b855c161121bfa29c6fb22d3c0236fae4af6984e b/test/core/transport/chttp2/hpack_parser_corpus/b855c161121bfa29c6fb22d3c0236fae4af6984e new file mode 100644 index 0000000000..2a4856a342 --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/b855c161121bfa29c6fb22d3c0236fae4af6984e @@ -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/c2eae71daad0d3561ab4d09b8b85372b8d790bc1 b/test/core/transport/chttp2/hpack_parser_corpus/c2eae71daad0d3561ab4d09b8b85372b8d790bc1 new file mode 100644 index 0000000000..120b74baae --- /dev/null +++ b/test/core/transport/chttp2/hpack_parser_corpus/c2eae71daad0d3561ab4d09b8b85372b8d790bc1 @@ -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/c37fda8d02e99132a1de99f959596c784ab8a53c b/test/core/transport/chttp2/hpack_parser_corpus/c37fda8d02e99132a1de99f959596c784ab8a53c new file mode 100644 index 0000000000..ced68ebb75 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/c37fda8d02e99132a1de99f959596c784ab8a53c differ 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 0000000000..4d7ff3e26a --- /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 0000000000..a422dc476e Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/d000502f32ca5620d7745f39ff6be3b547e26a6d differ 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 0000000000..e55083f276 Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/d9748abd540810c2449c3dd39a0ebb62754e520f differ 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 0000000000..b818778f8b Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/e790f5d312957dbfd20abdefe4b1735779ff9689 differ 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 0000000000..99d90a032a Binary files /dev/null and b/test/core/transport/chttp2/hpack_parser_corpus/fc3dd4292d6884a770199596f5e9cbc1e869e5fb differ -- cgit v1.2.3 From 2209d4ec1ad6ac0a18627cef4e54416df42af652 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 25 Mar 2016 11:54:47 -0700 Subject: make grpc_pollset_set_create for windows match the header --- src/core/iomgr/pollset_set_windows.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/iomgr/pollset_set_windows.c b/src/core/iomgr/pollset_set_windows.c index 3b8eca28e6..d17b65b13b 100644 --- a/src/core/iomgr/pollset_set_windows.c +++ b/src/core/iomgr/pollset_set_windows.c @@ -37,7 +37,7 @@ #include "src/core/iomgr/pollset_set_windows.h" -grpc_pollset_set* grpc_pollset_set_create(pollset_set) { return NULL; } +grpc_pollset_set* grpc_pollset_set_create(void) { return NULL; } void grpc_pollset_set_destroy(grpc_pollset_set* pollset_set) {} -- cgit v1.2.3 From af307d7339e0a552352f7eed697b89b8e8329d96 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 25 Mar 2016 14:21:42 -0700 Subject: always embed zlib and openssl for C# --- tools/run_tests/run_tests.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index dc11c0bd51..99de45adcb 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -512,7 +512,7 @@ class CSharpLanguage(object): def make_targets(self): # For Windows, this target doesn't really build anything, - # everything is build by buildall script later. + # everything is built by buildall script later. if self.platform == 'windows': return [] else: @@ -521,9 +521,10 @@ class CSharpLanguage(object): def make_options(self): if self.platform == 'mac': # On Mac, official distribution of mono is 32bit. - return ['CFLAGS=-arch i386', 'LDFLAGS=-arch i386'] + return ['EMBED_OPENSSL=true', 'EMBED_ZLIB=true', + 'CFLAGS=-arch i386', 'LDFLAGS=-arch i386'] else: - return [] + return ['EMBED_OPENSSL=true', 'EMBED_ZLIB=true'] def build_steps(self): if self.platform == 'windows': -- cgit v1.2.3 From def177b7febd6f96eed31628144cba964f1bae77 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 25 Mar 2016 15:00:47 -0700 Subject: Don't set -ex for nvm functions --- test/distrib/node/run_distrib_test.sh | 2 +- tools/run_tests/build_artifact_node.sh | 2 +- tools/run_tests/build_node.sh | 2 +- tools/run_tests/build_package_node.sh | 2 +- tools/run_tests/pre_build_node.sh | 2 +- tools/run_tests/run_node.sh | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/distrib/node/run_distrib_test.sh b/test/distrib/node/run_distrib_test.sh index 9b8f15771b..18b339399b 100755 --- a/test/distrib/node/run_distrib_test.sh +++ b/test/distrib/node/run_distrib_test.sh @@ -30,11 +30,11 @@ NODE_VERSION=$1 source ~/.nvm/nvm.sh -set -ex cd $(dirname $0) nvm install $NODE_VERSION +set -ex npm install -g node-static diff --git a/tools/run_tests/build_artifact_node.sh b/tools/run_tests/build_artifact_node.sh index 6aa4824538..ef3476a038 100755 --- a/tools/run_tests/build_artifact_node.sh +++ b/tools/run_tests/build_artifact_node.sh @@ -30,9 +30,9 @@ NODE_TARGET_ARCH=$1 source ~/.nvm/nvm.sh -set -ex nvm use 4 +set -ex cd $(dirname $0)/../.. diff --git a/tools/run_tests/build_node.sh b/tools/run_tests/build_node.sh index 9c4af07185..cbe0e31d2e 100755 --- a/tools/run_tests/build_node.sh +++ b/tools/run_tests/build_node.sh @@ -31,9 +31,9 @@ NODE_VERSION=$1 source ~/.nvm/nvm.sh -set -ex nvm use $NODE_VERSION +set -ex CONFIG=${CONFIG:-opt} diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh index aca90a3750..540c826311 100755 --- a/tools/run_tests/build_package_node.sh +++ b/tools/run_tests/build_package_node.sh @@ -29,9 +29,9 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. source ~/.nvm/nvm.sh -set -ex nvm use 4 +set -ex cd $(dirname $0)/../.. diff --git a/tools/run_tests/pre_build_node.sh b/tools/run_tests/pre_build_node.sh index 11f46d60fc..1f55df0b7b 100755 --- a/tools/run_tests/pre_build_node.sh +++ b/tools/run_tests/pre_build_node.sh @@ -31,9 +31,9 @@ NODE_VERSION=$1 source ~/.nvm/nvm.sh -set -ex nvm use $NODE_VERSION +set -ex export GRPC_CONFIG=${CONFIG:-opt} diff --git a/tools/run_tests/run_node.sh b/tools/run_tests/run_node.sh index d33890068d..b94dc3ec62 100755 --- a/tools/run_tests/run_node.sh +++ b/tools/run_tests/run_node.sh @@ -30,9 +30,9 @@ NODE_VERSION=$1 source ~/.nvm/nvm.sh -set -ex nvm use $NODE_VERSION +set -ex CONFIG=${CONFIG:-opt} -- cgit v1.2.3 From 78a511a314b5a87036db09f30458c3ad50e2200e Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 25 Mar 2016 14:46:52 -0700 Subject: polish some .bat files --- vsprojects/build_vs2010.bat | 2 +- vsprojects/build_vs2013.bat | 2 +- vsprojects/build_vs2015.bat | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/vsprojects/build_vs2010.bat b/vsprojects/build_vs2010.bat index 64b0ed5d3f..1bc3c86a92 100644 --- a/vsprojects/build_vs2010.bat +++ b/vsprojects/build_vs2010.bat @@ -1,5 +1,5 @@ @rem Convenience wrapper that runs specified gRPC target using msbuild -@rem Usage: build.bat TARGET_NAME +@rem Usage: build_vs2010.bat TARGET_NAME setlocal @rem Set VS variables (uses Visual Studio 2010) diff --git a/vsprojects/build_vs2013.bat b/vsprojects/build_vs2013.bat index be3caa9298..82c0a3ad82 100644 --- a/vsprojects/build_vs2013.bat +++ b/vsprojects/build_vs2013.bat @@ -1,5 +1,5 @@ @rem Convenience wrapper that runs specified gRPC target using msbuild -@rem Usage: build.bat TARGET_NAME +@rem Usage: build_vs2013.bat TARGET_NAME setlocal @rem Set VS variables (uses Visual Studio 2013) diff --git a/vsprojects/build_vs2015.bat b/vsprojects/build_vs2015.bat index 50485a30f3..c6e1b433a3 100644 --- a/vsprojects/build_vs2015.bat +++ b/vsprojects/build_vs2015.bat @@ -1,5 +1,5 @@ @rem Convenience wrapper that runs specified gRPC target using msbuild -@rem Usage: build.bat TARGET_NAME +@rem Usage: build_vs2015.bat TARGET_NAME setlocal @rem Set VS variables (uses Visual Studio 2015) -- cgit v1.2.3 From 690914f138d63e9bdf2478ff4e6e1e5d7a3613c3 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 25 Mar 2016 15:07:22 -0700 Subject: refactor C# building --- tools/run_tests/run_tests.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 99de45adcb..aa4e3eb7ca 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -464,7 +464,17 @@ class CSharpLanguage(object): def configure(self, config, args): self.config = config self.args = args - _check_compiler(self.args.compiler, ['default']) + if self.platform == 'windows': + self._make_options = [_windows_toolset_option(self.args.compiler), + _windows_arch_option(self.args.arch)] + else: + _check_compiler(self.args.compiler, ['default']) + if self.platform == 'mac': + # On Mac, official distribution of mono is 32bit. + self._make_options = ['EMBED_OPENSSL=true', 'EMBED_ZLIB=true', + 'CFLAGS=-arch i386', 'LDFLAGS=-arch i386'] + else: + self._make_options = ['EMBED_OPENSSL=true', 'EMBED_ZLIB=true'] def test_specs(self): with open('src/csharp/tests.json') as f: @@ -511,24 +521,16 @@ class CSharpLanguage(object): return [['tools/run_tests/pre_build_csharp.sh']] def make_targets(self): - # For Windows, this target doesn't really build anything, - # everything is built by buildall script later. - if self.platform == 'windows': - return [] - else: - return ['grpc_csharp_ext'] + return ['grpc_csharp_ext'] def make_options(self): - if self.platform == 'mac': - # On Mac, official distribution of mono is 32bit. - return ['EMBED_OPENSSL=true', 'EMBED_ZLIB=true', - 'CFLAGS=-arch i386', 'LDFLAGS=-arch i386'] - else: - return ['EMBED_OPENSSL=true', 'EMBED_ZLIB=true'] + return self._make_options; def build_steps(self): if self.platform == 'windows': - return [['src\\csharp\\buildall.bat']] + return [[_windows_build_bat(self.args.compiler), + 'src/csharp/Grpc.sln', + '/p:Configuration=%s' % _MSBUILD_CONFIG[self.config.build_config]]] else: return [['tools/run_tests/build_csharp.sh']] -- cgit v1.2.3 From f22f4c60bad22746b4e76928f82a3e35872f63e6 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 25 Mar 2016 15:52:42 -0700 Subject: Node distrib test: don't start all static servers on the same port --- test/distrib/node/run_distrib_test.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/test/distrib/node/run_distrib_test.sh b/test/distrib/node/run_distrib_test.sh index 18b339399b..e9183a203b 100755 --- a/test/distrib/node/run_distrib_test.sh +++ b/test/distrib/node/run_distrib_test.sh @@ -38,13 +38,10 @@ set -ex npm install -g node-static -# Kill off existing static servers -kill -9 $(ps aux | grep '[n]ode .*static' | awk '{print $2}') || true - STATIC_SERVER=127.0.0.1 -STATIC_PORT=8080 +STATIC_PORT=$$ -# Serves the input_artifacts directory statically at localhost:8080 +# Serves the input_artifacts directory statically at localhost: static "$EXTERNAL_GIT_ROOT/input_artifacts" -a $STATIC_SERVER -p $STATIC_PORT & STATIC_PID=$! -- cgit v1.2.3 From abd7df8b1a4bbd34e494ade05b9c711f43f41eb5 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 25 Mar 2016 16:14:41 -0700 Subject: disable C# arch choosing for now --- tools/run_tests/run_tests.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index aa4e3eb7ca..c292d08dc2 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -120,7 +120,12 @@ def get_c_tests(travis, test_lang) : def _check_compiler(compiler, supported_compilers): if compiler not in supported_compilers: - raise Exception('Compiler %s not supported.' % compiler) + raise Exception('Compiler %s not supported (on this platform).' % compiler) + + +def _check_arch(arch, supported_archs): + if arch not in supported_archs: + raise Exception('Architecture %s not supported.' % arch) def _is_use_docker_child(): @@ -465,6 +470,8 @@ class CSharpLanguage(object): self.config = config self.args = args if self.platform == 'windows': + # Explicitly choosing between x86 and x64 arch doesn't work yet + _check_arch(self.args.arch, ['default']) self._make_options = [_windows_toolset_option(self.args.compiler), _windows_arch_option(self.args.arch)] else: -- cgit v1.2.3 From 3d6644aefd73f5030ad46154917c4a2732544e82 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 09:46:15 -0700 Subject: 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 c4016012cb..3223d0d080 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 4a73645e6c..9f210081e7 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 -- cgit v1.2.3 From c848502f552563cd12b065238ae860b120f7c72e Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 12:27:18 -0700 Subject: honor request.ReponseSize for benchmark service --- src/csharp/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 47a15224f1..7e7bc713a0 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 3223d0d080..0b6a8ee626 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 9f210081e7..516436ac5a 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) } }; -- cgit v1.2.3 From e26e2e5ad96f9bce89ff32a6a108190feda20046 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 13:52:50 -0700 Subject: 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 0b6a8ee626..76e877d4aa 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]) }; -- cgit v1.2.3 From e45ca5f59286ef8a3b617e5f9c49f07f9fcfeefd Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 14:59:08 -0700 Subject: 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 76e877d4aa..a749f4a8a3 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]) }; -- cgit v1.2.3 From 253769e92d5ff1883c1623fd0ee130ae4ce4b380 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 21 Mar 2016 16:25:59 -0700 Subject: 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 a749f4a8a3..e6dc2321c4 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 0000000000..c6128264ac --- /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 372991374e..4c049944ea 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 516436ac5a..c326378cfa 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(); } - } - + } } -- cgit v1.2.3 From 7be750e367825f8bb5a2f5acaf61da6cf8271bde Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 25 Mar 2016 17:02:38 -0700 Subject: 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 0000000000..167a256b84 --- /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' $* -- cgit v1.2.3 From 42140525abdcd0186996d7b64bde89aaf10488c7 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 25 Mar 2016 17:13:24 -0700 Subject: fix RunnerClientServerTest and copyrights --- src/csharp/Grpc.IntegrationTesting/BenchmarkServiceImpl.cs | 2 +- src/csharp/Grpc.IntegrationTesting/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 7e7bc713a0..1edeedae2f 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 06d5ee93d8..a8cf75bd81 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 -- cgit v1.2.3 From 67c0d04d052b43b8e29fd0de0abf883f61375fcd Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Fri, 25 Mar 2016 01:37:53 -0700 Subject: Changes to resolver-lb interfaces. - Creation of a load balancer now takes an execution context. - load balancers are now passed addresses as arguments and are responsible for the creation of the corresponding subchannels, something that used to be done by the resolvers. --- src/core/client_config/lb_policies/pick_first.c | 41 +++++++++++---- src/core/client_config/lb_policies/round_robin.c | 59 +++++++++++++++------- src/core/client_config/lb_policy_factory.c | 7 +-- src/core/client_config/lb_policy_factory.h | 14 +++-- src/core/client_config/lb_policy_registry.c | 6 +-- src/core/client_config/lb_policy_registry.h | 3 +- src/core/client_config/resolvers/dns_resolver.c | 23 ++------- .../client_config/resolvers/sockaddr_resolver.c | 52 +++++++------------ .../client_config/resolvers/zookeeper_resolver.c | 26 ++++------ test/core/client_config/lb_policies_test.c | 8 +-- 10 files changed, 127 insertions(+), 112 deletions(-) diff --git a/src/core/client_config/lb_policies/pick_first.c b/src/core/client_config/lb_policies/pick_first.c index 8ed1223d39..718141c8fa 100644 --- a/src/core/client_config/lb_policies/pick_first.c +++ b/src/core/client_config/lb_policies/pick_first.c @@ -385,19 +385,42 @@ static void pick_first_factory_ref(grpc_lb_policy_factory *factory) {} static void pick_first_factory_unref(grpc_lb_policy_factory *factory) {} -static grpc_lb_policy *create_pick_first(grpc_lb_policy_factory *factory, +static grpc_lb_policy *create_pick_first(grpc_exec_ctx *exec_ctx, + grpc_lb_policy_factory *factory, grpc_lb_policy_args *args) { - if (args->num_subchannels == 0) return NULL; + GPR_ASSERT(args->addresses != NULL); + GPR_ASSERT(args->subchannel_factory != NULL); + + if (args->addresses->naddrs == 0) return NULL; + pick_first_lb_policy *p = gpr_malloc(sizeof(*p)); memset(p, 0, sizeof(*p)); - grpc_lb_policy_init(&p->base, &pick_first_lb_policy_vtable); + p->subchannels = - gpr_malloc(sizeof(grpc_subchannel *) * args->num_subchannels); - p->num_subchannels = args->num_subchannels; - grpc_connectivity_state_init(&p->state_tracker, GRPC_CHANNEL_IDLE, - "pick_first"); - memcpy(p->subchannels, args->subchannels, - sizeof(grpc_subchannel *) * args->num_subchannels); + gpr_malloc(sizeof(grpc_subchannel *) * args->addresses->naddrs); + memset(p->subchannels, 0, sizeof(*p->subchannels) * args->addresses->naddrs); + grpc_subchannel_args sc_args; + size_t subchannel_idx = 0; + for (size_t i = 0; i < args->addresses->naddrs; i++) { + memset(&sc_args, 0, sizeof(grpc_subchannel_args)); + sc_args.addr = (struct sockaddr *)(args->addresses->addrs[i].addr); + sc_args.addr_len = (size_t)args->addresses->addrs[i].len; + + grpc_subchannel *subchannel = grpc_subchannel_factory_create_subchannel( + exec_ctx, args->subchannel_factory, &sc_args); + + if (subchannel != NULL) { + p->subchannels[subchannel_idx++] = subchannel; + } + } + if (subchannel_idx == 0) { + gpr_free(p->subchannels); + gpr_free(p); + return NULL; + } + p->num_subchannels = subchannel_idx; + + grpc_lb_policy_init(&p->base, &pick_first_lb_policy_vtable); grpc_closure_init(&p->connectivity_changed, pf_connectivity_changed, p); gpr_mu_init(&p->mu); return &p->base; diff --git a/src/core/client_config/lb_policies/round_robin.c b/src/core/client_config/lb_policies/round_robin.c index 98d9acc75b..10a6ed512d 100644 --- a/src/core/client_config/lb_policies/round_robin.c +++ b/src/core/client_config/lb_policies/round_robin.c @@ -490,30 +490,47 @@ static void round_robin_factory_ref(grpc_lb_policy_factory *factory) {} static void round_robin_factory_unref(grpc_lb_policy_factory *factory) {} -static grpc_lb_policy *create_round_robin(grpc_lb_policy_factory *factory, +static grpc_lb_policy *create_round_robin(grpc_exec_ctx *exec_ctx, + grpc_lb_policy_factory *factory, grpc_lb_policy_args *args) { - size_t i; + GPR_ASSERT(args->addresses != NULL); + GPR_ASSERT(args->subchannel_factory != NULL); + round_robin_lb_policy *p = gpr_malloc(sizeof(*p)); - GPR_ASSERT(args->num_subchannels > 0); memset(p, 0, sizeof(*p)); - grpc_lb_policy_init(&p->base, &round_robin_lb_policy_vtable); - p->num_subchannels = args->num_subchannels; - p->subchannels = gpr_malloc(sizeof(*p->subchannels) * p->num_subchannels); - memset(p->subchannels, 0, sizeof(*p->subchannels) * p->num_subchannels); - grpc_connectivity_state_init(&p->state_tracker, GRPC_CHANNEL_IDLE, - "round_robin"); - gpr_mu_init(&p->mu); - for (i = 0; i < args->num_subchannels; i++) { - subchannel_data *sd = gpr_malloc(sizeof(*sd)); - memset(sd, 0, sizeof(*sd)); - p->subchannels[i] = sd; - sd->policy = p; - sd->index = i; - sd->subchannel = args->subchannels[i]; - grpc_closure_init(&sd->connectivity_changed_closure, - rr_connectivity_changed, sd); + p->subchannels = + gpr_malloc(sizeof(*p->subchannels) * args->addresses->naddrs); + memset(p->subchannels, 0, sizeof(*p->subchannels) * args->addresses->naddrs); + + grpc_subchannel_args sc_args; + size_t subchannel_idx = 0; + for (size_t i = 0; i < args->addresses->naddrs; i++) { + memset(&sc_args, 0, sizeof(grpc_subchannel_args)); + sc_args.addr = (struct sockaddr *)(args->addresses->addrs[i].addr); + sc_args.addr_len = (size_t)args->addresses->addrs[i].len; + + grpc_subchannel *subchannel = grpc_subchannel_factory_create_subchannel( + exec_ctx, args->subchannel_factory, &sc_args); + + if (subchannel != NULL) { + subchannel_data *sd = gpr_malloc(sizeof(*sd)); + memset(sd, 0, sizeof(*sd)); + p->subchannels[subchannel_idx] = sd; + sd->policy = p; + sd->index = subchannel_idx; + sd->subchannel = subchannel; + ++subchannel_idx; + grpc_closure_init(&sd->connectivity_changed_closure, + rr_connectivity_changed, sd); + } + } + if (subchannel_idx == 0) { + gpr_free(p->subchannels); + gpr_free(p); + return NULL; } + p->num_subchannels = subchannel_idx; /* The (dummy node) root of the ready list */ p->ready_list.subchannel = NULL; @@ -521,6 +538,10 @@ static grpc_lb_policy *create_round_robin(grpc_lb_policy_factory *factory, p->ready_list.next = NULL; p->ready_list_last_pick = &p->ready_list; + grpc_lb_policy_init(&p->base, &round_robin_lb_policy_vtable); + grpc_connectivity_state_init(&p->state_tracker, GRPC_CHANNEL_IDLE, + "round_robin"); + gpr_mu_init(&p->mu); return &p->base; } diff --git a/src/core/client_config/lb_policy_factory.c b/src/core/client_config/lb_policy_factory.c index e49de544e3..ea26f4559b 100644 --- a/src/core/client_config/lb_policy_factory.c +++ b/src/core/client_config/lb_policy_factory.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 @@ -42,7 +42,8 @@ void grpc_lb_policy_factory_unref(grpc_lb_policy_factory* factory) { } grpc_lb_policy* grpc_lb_policy_factory_create_lb_policy( - grpc_lb_policy_factory* factory, grpc_lb_policy_args* args) { + grpc_exec_ctx* exec_ctx, grpc_lb_policy_factory* factory, + grpc_lb_policy_args* args) { if (factory == NULL) return NULL; - return factory->vtable->create_lb_policy(factory, args); + return factory->vtable->create_lb_policy(exec_ctx, factory, args); } diff --git a/src/core/client_config/lb_policy_factory.h b/src/core/client_config/lb_policy_factory.h index 842ba96098..86b2a8cdd2 100644 --- a/src/core/client_config/lb_policy_factory.h +++ b/src/core/client_config/lb_policy_factory.h @@ -36,6 +36,10 @@ #include "src/core/client_config/lb_policy.h" #include "src/core/client_config/subchannel.h" +#include "src/core/client_config/subchannel_factory.h" + +#include "src/core/iomgr/exec_ctx.h" +#include "src/core/iomgr/resolve_address.h" typedef struct grpc_lb_policy_factory grpc_lb_policy_factory; typedef struct grpc_lb_policy_factory_vtable grpc_lb_policy_factory_vtable; @@ -47,8 +51,8 @@ struct grpc_lb_policy_factory { }; typedef struct grpc_lb_policy_args { - grpc_subchannel **subchannels; - size_t num_subchannels; + grpc_resolved_addresses *addresses; + grpc_subchannel_factory *subchannel_factory; } grpc_lb_policy_args; struct grpc_lb_policy_factory_vtable { @@ -56,7 +60,8 @@ struct grpc_lb_policy_factory_vtable { void (*unref)(grpc_lb_policy_factory *factory); /** Implementation of grpc_lb_policy_factory_create_lb_policy */ - grpc_lb_policy *(*create_lb_policy)(grpc_lb_policy_factory *factory, + grpc_lb_policy *(*create_lb_policy)(grpc_exec_ctx *exec_ctx, + grpc_lb_policy_factory *factory, grpc_lb_policy_args *args); /** Name for the LB policy this factory implements */ @@ -68,6 +73,7 @@ void grpc_lb_policy_factory_unref(grpc_lb_policy_factory *factory); /** Create a lb_policy instance. */ grpc_lb_policy *grpc_lb_policy_factory_create_lb_policy( - grpc_lb_policy_factory *factory, grpc_lb_policy_args *args); + grpc_exec_ctx *exec_ctx, grpc_lb_policy_factory *factory, + grpc_lb_policy_args *args); #endif /* GRPC_CORE_CLIENT_CONFIG_LB_POLICY_FACTORY_H */ diff --git a/src/core/client_config/lb_policy_registry.c b/src/core/client_config/lb_policy_registry.c index fc302e82d7..7a278c66d5 100644 --- a/src/core/client_config/lb_policy_registry.c +++ b/src/core/client_config/lb_policy_registry.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 @@ -79,10 +79,10 @@ static grpc_lb_policy_factory *lookup_factory(const char *name) { return NULL; } -grpc_lb_policy *grpc_lb_policy_create(const char *name, +grpc_lb_policy *grpc_lb_policy_create(grpc_exec_ctx *exec_ctx, const char *name, grpc_lb_policy_args *args) { grpc_lb_policy_factory *factory = lookup_factory(name); grpc_lb_policy *lb_policy = - grpc_lb_policy_factory_create_lb_policy(factory, args); + grpc_lb_policy_factory_create_lb_policy(exec_ctx, factory, args); return lb_policy; } diff --git a/src/core/client_config/lb_policy_registry.h b/src/core/client_config/lb_policy_registry.h index f3a08a3558..8970c5c86b 100644 --- a/src/core/client_config/lb_policy_registry.h +++ b/src/core/client_config/lb_policy_registry.h @@ -35,6 +35,7 @@ #define GRPC_CORE_CLIENT_CONFIG_LB_POLICY_REGISTRY_H #include "src/core/client_config/lb_policy_factory.h" +#include "src/core/iomgr/exec_ctx.h" /** Initialize the registry and set \a default_factory as the factory to be * returned when no name is provided in a lookup */ @@ -48,7 +49,7 @@ void grpc_register_lb_policy(grpc_lb_policy_factory *factory); * * If \a name is NULL, the default factory from \a grpc_lb_policy_registry_init * will be returned. */ -grpc_lb_policy *grpc_lb_policy_create(const char *name, +grpc_lb_policy *grpc_lb_policy_create(grpc_exec_ctx *exec_ctx, const char *name, grpc_lb_policy_args *args); #endif /* GRPC_CORE_CLIENT_CONFIG_LB_POLICY_REGISTRY_H */ diff --git a/src/core/client_config/resolvers/dns_resolver.c b/src/core/client_config/resolvers/dns_resolver.c index 2b2ee97e12..c201a406f7 100644 --- a/src/core/client_config/resolvers/dns_resolver.c +++ b/src/core/client_config/resolvers/dns_resolver.c @@ -162,38 +162,23 @@ static void dns_on_resolved(grpc_exec_ctx *exec_ctx, void *arg, grpc_resolved_addresses *addresses) { dns_resolver *r = arg; grpc_client_config *config = NULL; - grpc_subchannel **subchannels; - grpc_subchannel_args args; grpc_lb_policy *lb_policy; - size_t i; gpr_mu_lock(&r->mu); GPR_ASSERT(r->resolving); r->resolving = 0; if (addresses != NULL) { grpc_lb_policy_args lb_policy_args; config = grpc_client_config_create(); - subchannels = gpr_malloc(sizeof(grpc_subchannel *) * addresses->naddrs); - size_t naddrs = 0; - for (i = 0; i < addresses->naddrs; i++) { - memset(&args, 0, sizeof(args)); - args.addr = (struct sockaddr *)(addresses->addrs[i].addr); - args.addr_len = (size_t)addresses->addrs[i].len; - grpc_subchannel *subchannel = grpc_subchannel_factory_create_subchannel( - exec_ctx, r->subchannel_factory, &args); - if (subchannel != NULL) { - subchannels[naddrs++] = subchannel; - } - } memset(&lb_policy_args, 0, sizeof(lb_policy_args)); - lb_policy_args.subchannels = subchannels; - lb_policy_args.num_subchannels = naddrs; - lb_policy = grpc_lb_policy_create(r->lb_policy_name, &lb_policy_args); + lb_policy_args.addresses = addresses; + lb_policy_args.subchannel_factory = r->subchannel_factory; + lb_policy = + grpc_lb_policy_create(exec_ctx, r->lb_policy_name, &lb_policy_args); if (lb_policy != NULL) { grpc_client_config_set_lb_policy(config, lb_policy); GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "construction"); } grpc_resolved_addresses_destroy(addresses); - gpr_free(subchannels); } else { gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); gpr_timespec next_try = gpr_backoff_step(&r->backoff_state, now); diff --git a/src/core/client_config/resolvers/sockaddr_resolver.c b/src/core/client_config/resolvers/sockaddr_resolver.c index 3cb7d79b67..52166f37e1 100644 --- a/src/core/client_config/resolvers/sockaddr_resolver.c +++ b/src/core/client_config/resolvers/sockaddr_resolver.c @@ -58,11 +58,7 @@ typedef struct { char *lb_policy_name; /** the addresses that we've 'resolved' */ - struct sockaddr_storage *addrs; - /** the corresponding length of the addresses */ - size_t *addrs_len; - /** how many elements in \a addrs */ - size_t num_addrs; + grpc_resolved_addresses *addresses; /** mutex guarding the rest of the state */ gpr_mu mu; @@ -125,28 +121,14 @@ static void sockaddr_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, static void sockaddr_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, sockaddr_resolver *r) { - grpc_client_config *cfg; - grpc_lb_policy *lb_policy; - grpc_lb_policy_args lb_policy_args; - grpc_subchannel **subchannels; - grpc_subchannel_args args; - if (r->next_completion != NULL && !r->published) { - size_t i; - cfg = grpc_client_config_create(); - subchannels = gpr_malloc(sizeof(grpc_subchannel *) * r->num_addrs); - for (i = 0; i < r->num_addrs; i++) { - memset(&args, 0, sizeof(args)); - args.addr = (struct sockaddr *)&r->addrs[i]; - args.addr_len = r->addrs_len[i]; - subchannels[i] = grpc_subchannel_factory_create_subchannel( - exec_ctx, r->subchannel_factory, &args); - } + grpc_client_config *cfg = grpc_client_config_create(); + grpc_lb_policy_args lb_policy_args; memset(&lb_policy_args, 0, sizeof(lb_policy_args)); - lb_policy_args.subchannels = subchannels; - lb_policy_args.num_subchannels = r->num_addrs; - lb_policy = grpc_lb_policy_create(r->lb_policy_name, &lb_policy_args); - gpr_free(subchannels); + lb_policy_args.addresses = r->addresses; + lb_policy_args.subchannel_factory = r->subchannel_factory; + grpc_lb_policy *lb_policy = + grpc_lb_policy_create(exec_ctx, r->lb_policy_name, &lb_policy_args); grpc_client_config_set_lb_policy(cfg, lb_policy); GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "sockaddr"); r->published = 1; @@ -160,8 +142,7 @@ static void sockaddr_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) { sockaddr_resolver *r = (sockaddr_resolver *)gr; gpr_mu_destroy(&r->mu); grpc_subchannel_factory_unref(exec_ctx, r->subchannel_factory); - gpr_free(r->addrs); - gpr_free(r->addrs_len); + grpc_resolved_addresses_destroy(r->addresses); gpr_free(r->lb_policy_name); gpr_free(r); } @@ -269,7 +250,6 @@ static void do_nothing(void *ignored) {} static grpc_resolver *sockaddr_create( grpc_resolver_args *args, const char *default_lb_policy_name, int parse(grpc_uri *uri, struct sockaddr_storage *dst, size_t *len)) { - size_t i; int errors_found = 0; /* GPR_FALSE */ sockaddr_resolver *r; gpr_slice path_slice; @@ -309,15 +289,18 @@ static grpc_resolver *sockaddr_create( gpr_slice_buffer_init(&path_parts); gpr_slice_split(path_slice, ",", &path_parts); - r->num_addrs = path_parts.count; - r->addrs = gpr_malloc(sizeof(struct sockaddr_storage) * r->num_addrs); - r->addrs_len = gpr_malloc(sizeof(*r->addrs_len) * r->num_addrs); + r->addresses = gpr_malloc(sizeof(grpc_resolved_addresses)); + r->addresses->naddrs = path_parts.count; + r->addresses->addrs = + gpr_malloc(sizeof(grpc_resolved_address) * r->addresses->naddrs); - for (i = 0; i < r->num_addrs; i++) { + for (size_t i = 0; i < r->addresses->naddrs; i++) { grpc_uri ith_uri = *args->uri; char *part_str = gpr_dump_slice(path_parts.slices[i], GPR_DUMP_ASCII); ith_uri.path = part_str; - if (!parse(&ith_uri, &r->addrs[i], &r->addrs_len[i])) { + if (!parse(&ith_uri, + (struct sockaddr_storage *)(&r->addresses->addrs[i].addr), + &r->addresses->addrs[i].len)) { errors_found = 1; /* GPR_TRUE */ } gpr_free(part_str); @@ -328,8 +311,7 @@ static grpc_resolver *sockaddr_create( gpr_slice_unref(path_slice); if (errors_found) { gpr_free(r->lb_policy_name); - gpr_free(r->addrs); - gpr_free(r->addrs_len); + grpc_resolved_addresses_destroy(r->addresses); gpr_free(r); return NULL; } diff --git a/src/core/client_config/resolvers/zookeeper_resolver.c b/src/core/client_config/resolvers/zookeeper_resolver.c index 166738e768..fd667cc56f 100644 --- a/src/core/client_config/resolvers/zookeeper_resolver.c +++ b/src/core/client_config/resolvers/zookeeper_resolver.c @@ -184,28 +184,22 @@ static void zookeeper_on_resolved(grpc_exec_ctx *exec_ctx, void *arg, grpc_resolved_addresses *addresses) { zookeeper_resolver *r = arg; grpc_client_config *config = NULL; - grpc_subchannel **subchannels; - grpc_subchannel_args args; grpc_lb_policy *lb_policy; - size_t i; + if (addresses != NULL) { grpc_lb_policy_args lb_policy_args; config = grpc_client_config_create(); - subchannels = gpr_malloc(sizeof(grpc_subchannel *) * addresses->naddrs); - for (i = 0; i < addresses->naddrs; i++) { - memset(&args, 0, sizeof(args)); - args.addr = (struct sockaddr *)(addresses->addrs[i].addr); - args.addr_len = addresses->addrs[i].len; - subchannels[i] = grpc_subchannel_factory_create_subchannel( - exec_ctx, r->subchannel_factory, &args); + + lb_policy_args.addresses = addresses; + lb_policy_args.subchannel_factory = r->subchannel_factory; + lb_policy = + grpc_lb_policy_create(exec_ctx, r->lb_policy_name, &lb_policy_args); + + if (lb_policy != NULL) { + grpc_client_config_set_lb_policy(config, lb_policy); + GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "construction"); } - lb_policy_args.subchannels = subchannels; - lb_policy_args.num_subchannels = addresses->naddrs; - lb_policy = grpc_lb_policy_create(r->lb_policy_name, &lb_policy_args); - grpc_client_config_set_lb_policy(config, lb_policy); - GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "construction"); grpc_resolved_addresses_destroy(addresses); - gpr_free(subchannels); } gpr_mu_lock(&r->mu); GPR_ASSERT(r->resolving == 1); diff --git a/test/core/client_config/lb_policies_test.c b/test/core/client_config/lb_policies_test.c index 1ea0c423c1..9b4793bf5c 100644 --- a/test/core/client_config/lb_policies_test.c +++ b/test/core/client_config/lb_policies_test.c @@ -870,6 +870,7 @@ static void verify_rebirth_round_robin(const servers_fixture *f, } int main(int argc, char **argv) { + grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; test_spec *spec; size_t i; const size_t NUM_ITERS = 10; @@ -879,9 +880,9 @@ int main(int argc, char **argv) { grpc_init(); grpc_lb_round_robin_trace = 1; - GPR_ASSERT(grpc_lb_policy_create("this-lb-policy-does-not-exist", NULL) == - NULL); - GPR_ASSERT(grpc_lb_policy_create(NULL, NULL) == NULL); + GPR_ASSERT(grpc_lb_policy_create(&exec_ctx, "this-lb-policy-does-not-exist", + NULL) == NULL); + GPR_ASSERT(grpc_lb_policy_create(&exec_ctx, NULL, NULL) == NULL); spec = test_spec_create(NUM_ITERS, NUM_SERVERS); /* everything is fine, all servers stay up the whole time and life's peachy */ @@ -933,6 +934,7 @@ int main(int argc, char **argv) { test_pending_calls(4); test_ping(); + grpc_exec_ctx_finish(&exec_ctx); grpc_shutdown(); return 0; } -- cgit v1.2.3 From 95a137b692f38db6821fea8df499d258b657b6b7 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 21 Mar 2016 11:10:42 -0700 Subject: Add build type option (asan/tsan/dbg or opt) --- .../tools/dockerfile/gcp_api_libraries.include | 4 ++ .../grpc_interop_stress_cxx/Dockerfile.template | 40 ++++++++++++++++ .../dockerfile/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 0000000000..669b0f887c --- /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 0000000000..b1049d0d7f --- /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 4123cc1a26..214747fd4a 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 392bdfccda..470db4c13f 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 501dc5b7ca..b5dbcc5ce4 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 634eb1aca5..79075f816c 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, -- cgit v1.2.3 From 575f0fa2da4509b8e985be83db02c4abd8fe0147 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Fri, 25 Mar 2016 14:27:07 -0700 Subject: Revamped test launcher --- tools/run_tests/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 0000000000..41401a3f56 --- /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 0000000000..3c95df2da0 --- /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) -- cgit v1.2.3 From 8d41d518004077b522540c9156983fddd9d37dec Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Fri, 25 Mar 2016 14:50:31 -0700 Subject: 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 41401a3f56..dab78e5f4c 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 3c95df2da0..c301cf441a 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): -- cgit v1.2.3 From 815c589d7f5cd912f0785da2f4d4f1e88a343242 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Fri, 25 Mar 2016 15:03:50 -0700 Subject: 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 dab78e5f4c..e0e487333a 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 c301cf441a..4ef53f1d86 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) -- cgit v1.2.3 From cdf773464d35de81f7068bfb2afca207f6b9eddf Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Fri, 25 Mar 2016 15:37:34 -0700 Subject: Minor corrections --- tools/run_tests/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 e0e487333a..97d67e52fa 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 4ef53f1d86..c8131b2d87 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) -- cgit v1.2.3 From 5cadf517c7d0578e71e4b9663e5c7858d8557cb5 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 08:55:11 -0700 Subject: More config files --- tools/run_tests/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 97d67e52fa..67d0484e7c 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 0000000000..2569ca16b9 --- /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 c8131b2d87..c4d1803809 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 79075f816c..0000000000 --- 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) -- cgit v1.2.3 From 83f100e83ce17959386c800036a06140c40c1577 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 09:13:22 -0700 Subject: Add asan to the config --- .../stress_test/configs/opt-tsan-asan.json | 136 +++++++++++++++++++++ tools/run_tests/stress_test/configs/opt-tsan.json | 136 --------------------- 2 files changed, 136 insertions(+), 136 deletions(-) create mode 100644 tools/run_tests/stress_test/configs/opt-tsan-asan.json delete mode 100644 tools/run_tests/stress_test/configs/opt-tsan.json diff --git a/tools/run_tests/stress_test/configs/opt-tsan-asan.json b/tools/run_tests/stress_test/configs/opt-tsan-asan.json new file mode 100644 index 0000000000..6d4f74f816 --- /dev/null +++ b/tools/run_tests/stress_test/configs/opt-tsan-asan.json @@ -0,0 +1,136 @@ +{ + "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" + }, + "cxx_client_asan": { + "baseTemplate": "default", + "clientImagePath": "/var/local/git/grpc/bins/asan/stress_test", + "metricsClientImagePath": "/var/local/git/grpc/bins/asan/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" + }, + "cxx_server_asan": { + "baseTemplate": "default", + "serverImagePath": "/var/local/git/grpc/bins/asan/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 + }, + "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": false, + "pollIntervalSecs": 10, + "testDurationSecs": 70, + "kubernetesProxyPort": 8001, + "datasetIdNamePrefix": "stress_test_opt_tsan", + "summaryTableId": "summary", + "qpsTableId": "qps", + "podWarmupSecs": 60 + } +} + diff --git a/tools/run_tests/stress_test/configs/opt-tsan.json b/tools/run_tests/stress_test/configs/opt-tsan.json deleted file mode 100644 index 67d0484e7c..0000000000 --- a/tools/run_tests/stress_test/configs/opt-tsan.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "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" - }, - "cxx_client_asan": { - "baseTemplate": "default", - "clientImagePath": "/var/local/git/grpc/bins/asan/stress_test", - "metricsClientImagePath": "/var/local/git/grpc/bins/asan/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" - }, - "cxx_server_asan": { - "baseTemplate": "default", - "serverImagePath": "/var/local/git/grpc/bins/asan/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 - }, - "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-tsan": { - "clientTemplate": "cxx_client_tsan", - "dockerImage": "grpc_stress_cxx_tsan", - "numInstances": 3, - "serverPodSpec": "stress-server-tsan" - } - } - }, - - "globalSettings": { - "buildDockerImages": true, - "pollIntervalSecs": 10, - "testDurationSecs": 70, - "kubernetesProxyPort": 8001, - "datasetIdNamePrefix": "stress_test_opt_tsan", - "summaryTableId": "summary", - "qpsTableId": "qps", - "podWarmupSecs": 60 - } -} - -- cgit v1.2.3 From 9c9644b97a36c8498ee1a2b0f7cca7bbf58323e7 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 09:30:51 -0700 Subject: 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 c4d1803809..c948582ddc 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(): -- cgit v1.2.3 From 55ddf848d0d1aae467a6e2054ba9ed7bc13acc78 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 10:37:16 -0700 Subject: 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 1a48e90c69..84f9719cb1 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` -- cgit v1.2.3 From bebf2df6e4c2548ef53ec93a6339900ad3de61e5 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 28 Mar 2016 11:31:51 -0700 Subject: Make distribtest more robust, especially on Mac --- test/distrib/node/run_distrib_test.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/test/distrib/node/run_distrib_test.sh b/test/distrib/node/run_distrib_test.sh index e9183a203b..13a42fcb0a 100755 --- a/test/distrib/node/run_distrib_test.sh +++ b/test/distrib/node/run_distrib_test.sh @@ -28,6 +28,15 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +function finish() { + rv=$? + kill $STATIC_PID || true + curl "localhost:32767/drop/$STATIC_PORT" || true + exit $rv +} + +trap finish EXIT + NODE_VERSION=$1 source ~/.nvm/nvm.sh @@ -39,7 +48,9 @@ set -ex npm install -g node-static STATIC_SERVER=127.0.0.1 -STATIC_PORT=$$ +# If port_server is running, get port from that. Otherwise, assume we're in +# docker and use 8080 +STATIC_PORT=$(curl 'localhost:32767/get' || echo '8080') # Serves the input_artifacts directory statically at localhost: static "$EXTERNAL_GIT_ROOT/input_artifacts" -a $STATIC_SERVER -p $STATIC_PORT & @@ -49,6 +60,4 @@ STATIC_URL="http://$STATIC_SERVER:$STATIC_PORT/" npm install --unsafe-perm $STATIC_URL/grpc.tgz --grpc_node_binary_host_mirror=$STATIC_URL -kill -9 $STATIC_PID - ./distrib_test.js -- cgit v1.2.3 From e68ec434804949209329c5953b65ae31e920a620 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Mon, 28 Mar 2016 13:55:01 -0700 Subject: 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 6d4f74f816..1dc2d3fe08 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 2569ca16b9..7fc024034b 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 c948582ddc..3a81c1a376 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, -- cgit v1.2.3 From fdef23f8d381ca116af6e0ef83d68ca9ea4c363c Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 28 Mar 2016 14:25:43 -0700 Subject: 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 f39288f140..cd746c1c0e 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 0aa95ee9e4..bab846d722 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 eb29da3bf7..65f89e64a4 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 9e6d56fc9a..f4f2eb9b87 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); } -- cgit v1.2.3 From 5548cc9263b6cc110f7502cc6b7b67ccf8e2802d Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Mon, 28 Mar 2016 16:37:05 -0700 Subject: small improvements to channel_args docstrings --- src/core/lib/channel/channel_args.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h index 67d287ec6b..1ea202c543 100644 --- a/src/core/lib/channel/channel_args.h +++ b/src/core/lib/channel/channel_args.h @@ -37,23 +37,23 @@ #include #include -/* Copy some arguments */ +/** Copy the arguments in \a src into a new instance */ grpc_channel_args *grpc_channel_args_copy(const grpc_channel_args *src); -/* Copy some arguments, stably sorting keys */ -grpc_channel_args *grpc_channel_args_normalize(const grpc_channel_args *a); +/** Copy the arguments in \a src into a new instance, stably sorting keys */ +grpc_channel_args *grpc_channel_args_normalize(const grpc_channel_args *src); -/** Copy some arguments and add the to_add parameter in the end. - If to_add is NULL, it is equivalent to call grpc_channel_args_copy. */ +/** Copy the arguments in \a src and append \a to_add. If \a to_add is NULL, it + * is equivalent to calling \a grpc_channel_args_copy. */ grpc_channel_args *grpc_channel_args_copy_and_add(const grpc_channel_args *src, const grpc_arg *to_add, size_t num_to_add); -/** Copy args from a then args from b into a new channel args */ +/** Concatenate args from \a a and \a b into a new instance */ grpc_channel_args *grpc_channel_args_merge(const grpc_channel_args *a, const grpc_channel_args *b); -/** Destroy arguments created by grpc_channel_args_copy */ +/** Destroy arguments created by \a grpc_channel_args_copy */ void grpc_channel_args_destroy(grpc_channel_args *a); /** Reads census_enabled settings from channel args. Returns 1 if census_enabled -- cgit v1.2.3 From 1809bba1ca7332836a20d8e3f8222b18d594b688 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Mon, 28 Mar 2016 17:03:14 -0700 Subject: PR comments. --- src/core/client_config/resolvers/sockaddr_resolver.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/client_config/resolvers/sockaddr_resolver.c b/src/core/client_config/resolvers/sockaddr_resolver.c index be9d62b8e3..28c8ce5377 100644 --- a/src/core/client_config/resolvers/sockaddr_resolver.c +++ b/src/core/client_config/resolvers/sockaddr_resolver.c @@ -318,10 +318,12 @@ static grpc_resolver *sockaddr_create( } if (strcmp("grpclb", r->lb_policy_name) == 0 && !lb_enabled) { - /* we want grpclb but the "resolved" addresses aren't LB enabled. Fall - * back to the default policy */ - gpr_free(r->lb_policy_name); - r->lb_policy_name = gpr_strdup(default_lb_policy_name); + /* we want grpclb but the "resolved" addresses aren't LB enabled. Bail + * out, as this is meant mostly for tests. */ + gpr_log(GPR_ERROR, + "Requested 'grpclb' LB policy but resolved addresses don't " + "support load balancing."); + abort(); } gpr_slice_buffer_destroy(&query_parts); gpr_slice_buffer_destroy(&query_param_parts); -- cgit v1.2.3 From 564860547436a9162a8b966c73694e233e9a440d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 28 Mar 2016 22:40:25 -0700 Subject: 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 f4f2eb9b87..6f77fa02ce 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); } -- cgit v1.2.3 From bbbbf621e408bd8f744bd92dacedaa04771364cd Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Tue, 29 Mar 2016 00:35:26 -0700 Subject: Add a concurrent test for sync client, async server case --- test/cpp/end2end/thread_stress_test.cc | 162 +++++++++++++++++++++++++++++---- 1 file changed, 144 insertions(+), 18 deletions(-) diff --git a/test/cpp/end2end/thread_stress_test.cc b/test/cpp/end2end/thread_stress_test.cc index 8760b8d28e..ff20292812 100644 --- a/test/cpp/end2end/thread_stress_test.cc +++ b/test/cpp/end2end/thread_stress_test.cc @@ -58,6 +58,7 @@ using std::chrono::system_clock; const int kNumThreads = 100; // Number of threads const int kNumAsyncSendThreads = 2; const int kNumAsyncReceiveThreads = 50; +const int kNumAsyncServerThreads = 50; const int kNumRpcs = 1000; // Number of RPCs per thread namespace grpc { @@ -174,39 +175,142 @@ class TestServiceImplDupPkg } }; +template class CommonStressTest { public: CommonStressTest() : kMaxMessageSize_(8192) {} - void SetUp() { - int port = grpc_pick_unused_port_or_die(); - server_address_ << "localhost:" << port; - // Setup server - ServerBuilder builder; - builder.AddListeningPort(server_address_.str(), - InsecureServerCredentials()); - builder.RegisterService(&service_); - builder.SetMaxMessageSize( - kMaxMessageSize_); // For testing max message size. - builder.RegisterService(&dup_pkg_service_); - server_ = builder.BuildAndStart(); - } - void TearDown() { server_->Shutdown(); } + virtual void SetUp() = 0; + virtual void TearDown() = 0; void ResetStub() { std::shared_ptr channel = CreateChannel(server_address_.str(), InsecureChannelCredentials()); stub_ = grpc::testing::EchoTestService::NewStub(channel); } grpc::testing::EchoTestService::Stub* GetStub() { return stub_.get(); } - + protected: + void SetUpStart(ServerBuilder *builder, Service *service) { + int port = grpc_pick_unused_port_or_die(); + server_address_ << "localhost:" << port; + // Setup server + builder->AddListeningPort(server_address_.str(), + InsecureServerCredentials()); + builder->RegisterService(service); + builder->SetMaxMessageSize( + kMaxMessageSize_); // For testing max message size. + builder->RegisterService(&dup_pkg_service_); + } + void SetUpEnd(ServerBuilder *builder) { + server_ = builder->BuildAndStart(); + } + void TearDownStart() { server_->Shutdown(); } + void TearDownEnd() { } private: std::unique_ptr stub_; std::unique_ptr server_; std::ostringstream server_address_; const int kMaxMessageSize_; - TestServiceImpl service_; TestServiceImplDupPkg dup_pkg_service_; }; +class CommonStressTestSyncServer : public CommonStressTest { + public: + void SetUp() GRPC_OVERRIDE { + ServerBuilder builder; + SetUpStart(&builder, &service_); + SetUpEnd(&builder); + } + void TearDown() GRPC_OVERRIDE { + TearDownStart(); + TearDownEnd(); + } + private: + TestServiceImpl service_; +}; + +class CommonStressTestAsyncServer : + public CommonStressTest< ::grpc::testing::EchoTestService::AsyncService> { + public: + void SetUp() GRPC_OVERRIDE { + shutting_down_ = false; + ServerBuilder builder; + SetUpStart(&builder, &service_); + cq_ = builder.AddCompletionQueue(); + SetUpEnd(&builder); + contexts_ = new Context[kNumAsyncServerThreads * 100]; + for (int i = 0; i < kNumAsyncServerThreads * 100; i++) { + RefreshContext(i); + } + for (int i = 0; i < kNumAsyncServerThreads; i++) { + server_threads_.push_back(new std::thread(&CommonStressTestAsyncServer::ProcessRpcs, this)); + } + } + void TearDown() GRPC_OVERRIDE { + { + unique_lock l(mu_); + TearDownStart(); + shutting_down_ = true; + cq_->Shutdown(); + } + + for (int i = 0; i < kNumAsyncServerThreads; i++) { + server_threads_[i]->join(); + delete server_threads_[i]; + } + + void* ignored_tag; + bool ignored_ok; + while (cq_->Next(&ignored_tag, &ignored_ok)) + ; + TearDownEnd(); + delete[] contexts_; + } + private: + void ProcessRpcs() { + void *tag; + bool ok; + while (cq_->Next(&tag, &ok)) { + if (ok) { + int i = static_cast(reinterpret_cast(tag)); + switch (contexts_[i].state) { + case Context::READY: { + contexts_[i].state = Context::DONE; + EchoResponse send_response; + send_response.set_message(contexts_[i].recv_request.message()); + contexts_[i].response_writer->Finish(send_response, Status::OK, tag); + break; + } + case Context::DONE: + RefreshContext(i); + break; + } + } + } + } + void RefreshContext(int i) { + unique_lock l(mu_); + if (!shutting_down_) { + contexts_[i].state = Context::READY; + contexts_[i].srv_ctx.reset(new ServerContext); + contexts_[i].response_writer.reset(new grpc::ServerAsyncResponseWriter(contexts_[i].srv_ctx.get())); + service_.RequestEcho(contexts_[i].srv_ctx.get(), &contexts_[i].recv_request, + contexts_[i].response_writer.get(), cq_.get(), + cq_.get(), (void*)(intptr_t)i); + } + } + struct Context { + std::unique_ptr srv_ctx; + std::unique_ptr> + response_writer; + EchoRequest recv_request; + enum {READY, DONE} state; + } *contexts_; + ::grpc::testing::EchoTestService::AsyncService service_; + std::unique_ptr cq_; + bool shutting_down_; + mutex mu_; + std::vector server_threads_; +}; + class End2endTest : public ::testing::Test { protected: End2endTest() {} @@ -214,7 +318,17 @@ class End2endTest : public ::testing::Test { void TearDown() GRPC_OVERRIDE { common_.TearDown(); } void ResetStub() { common_.ResetStub(); } - CommonStressTest common_; + CommonStressTestSyncServer common_; +}; + +class End2endTestAsyncServer : public ::testing::Test { + protected: + End2endTestAsyncServer() {} + void SetUp() GRPC_OVERRIDE { common_.SetUp(); } + void TearDown() GRPC_OVERRIDE { common_.TearDown(); } + void ResetStub() { common_.ResetStub(); } + + CommonStressTestAsyncServer common_; }; static void SendRpc(grpc::testing::EchoTestService::Stub* stub, int num_rpcs) { @@ -242,6 +356,18 @@ TEST_F(End2endTest, ThreadStress) { } } +TEST_F(End2endTestAsyncServer, ThreadStress) { + common_.ResetStub(); + std::vector threads; + for (int i = 0; i < kNumThreads; ++i) { + threads.push_back(new std::thread(SendRpc, common_.GetStub(), kNumRpcs)); + } + for (int i = 0; i < kNumThreads; ++i) { + threads[i]->join(); + delete threads[i]; + } +} + class AsyncClientEnd2endTest : public ::testing::Test { protected: AsyncClientEnd2endTest() : rpcs_outstanding_(0) {} @@ -309,7 +435,7 @@ class AsyncClientEnd2endTest : public ::testing::Test { } } - CommonStressTest common_; + CommonStressTestSyncServer common_; CompletionQueue cq_; mutex mu_; condition_variable cv_; -- cgit v1.2.3 From 40d1a2cb876e3ee19bccd5a59f3cfba48a22c4a5 Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Tue, 29 Mar 2016 00:38:09 -0700 Subject: clang-format --- test/cpp/end2end/thread_stress_test.cc | 39 ++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/test/cpp/end2end/thread_stress_test.cc b/test/cpp/end2end/thread_stress_test.cc index ff20292812..22ea3a82b4 100644 --- a/test/cpp/end2end/thread_stress_test.cc +++ b/test/cpp/end2end/thread_stress_test.cc @@ -187,8 +187,9 @@ class CommonStressTest { stub_ = grpc::testing::EchoTestService::NewStub(channel); } grpc::testing::EchoTestService::Stub* GetStub() { return stub_.get(); } + protected: - void SetUpStart(ServerBuilder *builder, Service *service) { + void SetUpStart(ServerBuilder* builder, Service* service) { int port = grpc_pick_unused_port_or_die(); server_address_ << "localhost:" << port; // Setup server @@ -199,11 +200,10 @@ class CommonStressTest { kMaxMessageSize_); // For testing max message size. builder->RegisterService(&dup_pkg_service_); } - void SetUpEnd(ServerBuilder *builder) { - server_ = builder->BuildAndStart(); - } + void SetUpEnd(ServerBuilder* builder) { server_ = builder->BuildAndStart(); } void TearDownStart() { server_->Shutdown(); } - void TearDownEnd() { } + void TearDownEnd() {} + private: std::unique_ptr stub_; std::unique_ptr server_; @@ -223,12 +223,13 @@ class CommonStressTestSyncServer : public CommonStressTest { TearDownStart(); TearDownEnd(); } + private: TestServiceImpl service_; }; -class CommonStressTestAsyncServer : - public CommonStressTest< ::grpc::testing::EchoTestService::AsyncService> { +class CommonStressTestAsyncServer + : public CommonStressTest<::grpc::testing::EchoTestService::AsyncService> { public: void SetUp() GRPC_OVERRIDE { shutting_down_ = false; @@ -241,7 +242,8 @@ class CommonStressTestAsyncServer : RefreshContext(i); } for (int i = 0; i < kNumAsyncServerThreads; i++) { - server_threads_.push_back(new std::thread(&CommonStressTestAsyncServer::ProcessRpcs, this)); + server_threads_.push_back( + new std::thread(&CommonStressTestAsyncServer::ProcessRpcs, this)); } } void TearDown() GRPC_OVERRIDE { @@ -264,9 +266,10 @@ class CommonStressTestAsyncServer : TearDownEnd(); delete[] contexts_; } + private: void ProcessRpcs() { - void *tag; + void* tag; bool ok; while (cq_->Next(&tag, &ok)) { if (ok) { @@ -276,7 +279,8 @@ class CommonStressTestAsyncServer : contexts_[i].state = Context::DONE; EchoResponse send_response; send_response.set_message(contexts_[i].recv_request.message()); - contexts_[i].response_writer->Finish(send_response, Status::OK, tag); + contexts_[i].response_writer->Finish(send_response, Status::OK, + tag); break; } case Context::DONE: @@ -291,8 +295,11 @@ class CommonStressTestAsyncServer : if (!shutting_down_) { contexts_[i].state = Context::READY; contexts_[i].srv_ctx.reset(new ServerContext); - contexts_[i].response_writer.reset(new grpc::ServerAsyncResponseWriter(contexts_[i].srv_ctx.get())); - service_.RequestEcho(contexts_[i].srv_ctx.get(), &contexts_[i].recv_request, + contexts_[i].response_writer.reset( + new grpc::ServerAsyncResponseWriter( + contexts_[i].srv_ctx.get())); + service_.RequestEcho(contexts_[i].srv_ctx.get(), + &contexts_[i].recv_request, contexts_[i].response_writer.get(), cq_.get(), cq_.get(), (void*)(intptr_t)i); } @@ -300,15 +307,15 @@ class CommonStressTestAsyncServer : struct Context { std::unique_ptr srv_ctx; std::unique_ptr> - response_writer; + response_writer; EchoRequest recv_request; - enum {READY, DONE} state; - } *contexts_; + enum { READY, DONE } state; + } * contexts_; ::grpc::testing::EchoTestService::AsyncService service_; std::unique_ptr cq_; bool shutting_down_; mutex mu_; - std::vector server_threads_; + std::vector server_threads_; }; class End2endTest : public ::testing::Test { -- cgit v1.2.3 From 98f2f754b8b4cf460720eaf605c55734f28b2057 Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Tue, 29 Mar 2016 00:54:11 -0700 Subject: Used TYPED_TEST to parametrize Include all 4 sync/async client/server combos --- test/cpp/end2end/thread_stress_test.cc | 55 +++++++++++++--------------------- 1 file changed, 21 insertions(+), 34 deletions(-) diff --git a/test/cpp/end2end/thread_stress_test.cc b/test/cpp/end2end/thread_stress_test.cc index 22ea3a82b4..3f75a0c92e 100644 --- a/test/cpp/end2end/thread_stress_test.cc +++ b/test/cpp/end2end/thread_stress_test.cc @@ -318,6 +318,7 @@ class CommonStressTestAsyncServer std::vector server_threads_; }; +template class End2endTest : public ::testing::Test { protected: End2endTest() {} @@ -325,17 +326,7 @@ class End2endTest : public ::testing::Test { void TearDown() GRPC_OVERRIDE { common_.TearDown(); } void ResetStub() { common_.ResetStub(); } - CommonStressTestSyncServer common_; -}; - -class End2endTestAsyncServer : public ::testing::Test { - protected: - End2endTestAsyncServer() {} - void SetUp() GRPC_OVERRIDE { common_.SetUp(); } - void TearDown() GRPC_OVERRIDE { common_.TearDown(); } - void ResetStub() { common_.ResetStub(); } - - CommonStressTestAsyncServer common_; + Common common_; }; static void SendRpc(grpc::testing::EchoTestService::Stub* stub, int num_rpcs) { @@ -351,23 +342,16 @@ static void SendRpc(grpc::testing::EchoTestService::Stub* stub, int num_rpcs) { } } -TEST_F(End2endTest, ThreadStress) { - common_.ResetStub(); - std::vector threads; - for (int i = 0; i < kNumThreads; ++i) { - threads.push_back(new std::thread(SendRpc, common_.GetStub(), kNumRpcs)); - } - for (int i = 0; i < kNumThreads; ++i) { - threads[i]->join(); - delete threads[i]; - } -} - -TEST_F(End2endTestAsyncServer, ThreadStress) { - common_.ResetStub(); +typedef ::testing::Types + CommonTypes; +TYPED_TEST_CASE(End2endTest, CommonTypes); +TYPED_TEST(End2endTest, ThreadStress) { + this->common_.ResetStub(); std::vector threads; for (int i = 0; i < kNumThreads; ++i) { - threads.push_back(new std::thread(SendRpc, common_.GetStub(), kNumRpcs)); + threads.push_back( + new std::thread(SendRpc, this->common_.GetStub(), kNumRpcs)); } for (int i = 0; i < kNumThreads; ++i) { threads[i]->join(); @@ -375,6 +359,7 @@ TEST_F(End2endTestAsyncServer, ThreadStress) { } } +template class AsyncClientEnd2endTest : public ::testing::Test { protected: AsyncClientEnd2endTest() : rpcs_outstanding_(0) {} @@ -442,31 +427,33 @@ class AsyncClientEnd2endTest : public ::testing::Test { } } - CommonStressTestSyncServer common_; + Common common_; CompletionQueue cq_; mutex mu_; condition_variable cv_; int rpcs_outstanding_; }; -TEST_F(AsyncClientEnd2endTest, ThreadStress) { - common_.ResetStub(); +TYPED_TEST_CASE(AsyncClientEnd2endTest, CommonTypes); +TYPED_TEST(AsyncClientEnd2endTest, ThreadStress) { + this->common_.ResetStub(); std::vector send_threads, completion_threads; for (int i = 0; i < kNumAsyncReceiveThreads; ++i) { completion_threads.push_back(new std::thread( - &AsyncClientEnd2endTest_ThreadStress_Test::AsyncCompleteRpc, this)); + &AsyncClientEnd2endTest_ThreadStress_Test::AsyncCompleteRpc, + this)); } for (int i = 0; i < kNumAsyncSendThreads; ++i) { - send_threads.push_back( - new std::thread(&AsyncClientEnd2endTest_ThreadStress_Test::AsyncSendRpc, - this, kNumRpcs)); + send_threads.push_back(new std::thread( + &AsyncClientEnd2endTest_ThreadStress_Test::AsyncSendRpc, + this, kNumRpcs)); } for (int i = 0; i < kNumAsyncSendThreads; ++i) { send_threads[i]->join(); delete send_threads[i]; } - Wait(); + this->Wait(); for (int i = 0; i < kNumAsyncReceiveThreads; ++i) { completion_threads[i]->join(); delete completion_threads[i]; -- cgit v1.2.3 From 67593ffc3459331bc53ac59de59ecc005ee1ad10 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 29 Mar 2016 11:38:24 -0700 Subject: 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 214747fd4a..556a26ee13 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"] -- cgit v1.2.3 From b7b8d05f25974c1cf14718d23ca67192f63d41c0 Mon Sep 17 00:00:00 2001 From: Rob Earhart Date: Tue, 29 Mar 2016 11:35:29 -0700 Subject: Fix the Bazel build re/nanopb This change modifies the BUILD rule dependencies used for nanopb, switching them from third_party to //external -- the former uses submodules, which don't work well with Bazel (since Bazel removes submodules from repositories as it fetches them, preferring instead to unify submodule versions across the workspace via the top-level WORKSPACE configuration). --- BUILD | 36 +++++++++++++++--------------------- templates/BUILD.template | 28 +++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/BUILD b/BUILD index 52d1d5a69f..025878d82a 100644 --- a/BUILD +++ b/BUILD @@ -41,6 +41,7 @@ package(default_visibility = ["//visibility:public"]) + cc_library( name = "gpr", srcs = [ @@ -154,6 +155,7 @@ cc_library( ) + cc_library( name = "grpc", srcs = [ @@ -294,10 +296,6 @@ cc_library( "src/core/lib/tsi/ssl_types.h", "src/core/lib/tsi/transport_security.h", "src/core/lib/tsi/transport_security_interface.h", - "third_party/nanopb/pb.h", - "third_party/nanopb/pb_common.h", - "third_party/nanopb/pb_decode.h", - "third_party/nanopb/pb_encode.h", "src/core/ext/transport/chttp2/client/insecure/channel_create.c", "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c", "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c", @@ -459,9 +457,6 @@ cc_library( "src/core/lib/tsi/fake_transport_security.c", "src/core/lib/tsi/ssl_transport_security.c", "src/core/lib/tsi/transport_security.c", - "third_party/nanopb/pb_common.c", - "third_party/nanopb/pb_decode.c", - "third_party/nanopb/pb_encode.c", ], hdrs = [ "include/grpc/byte_buffer.h", @@ -486,6 +481,7 @@ cc_library( "//external:libssl", "//external:zlib", ":gpr", + "//external:nanopb", ], copts = [ "-std=gnu99", @@ -493,6 +489,7 @@ cc_library( ) + cc_library( name = "grpc_codegen_lib", srcs = [ @@ -529,6 +526,7 @@ cc_library( ) + cc_library( name = "grpc_unsecure", srcs = [ @@ -655,10 +653,6 @@ cc_library( "src/core/lib/transport/static_metadata.h", "src/core/lib/transport/transport.h", "src/core/lib/transport/transport_impl.h", - "third_party/nanopb/pb.h", - "third_party/nanopb/pb_common.h", - "third_party/nanopb/pb_decode.h", - "third_party/nanopb/pb_encode.h", "src/core/ext/transport/chttp2/client/insecure/channel_create.c", "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c", "src/core/ext/transport/chttp2/transport/alpn.c", @@ -800,9 +794,6 @@ cc_library( "src/core/lib/transport/static_metadata.c", "src/core/lib/transport/transport.c", "src/core/lib/transport/transport_op_string.c", - "third_party/nanopb/pb_common.c", - "third_party/nanopb/pb_decode.c", - "third_party/nanopb/pb_encode.c", ], hdrs = [ "include/grpc/byte_buffer.h", @@ -824,6 +815,7 @@ cc_library( ], deps = [ ":gpr", + "//external:nanopb", ], copts = [ "-std=gnu99", @@ -831,6 +823,7 @@ cc_library( ) + cc_library( name = "grpc_zookeeper", srcs = [ @@ -851,6 +844,7 @@ cc_library( ) + cc_library( name = "grpc++", srcs = [ @@ -983,6 +977,7 @@ cc_library( ) + cc_library( name = "grpc++_codegen_lib", srcs = [ @@ -1050,6 +1045,7 @@ cc_library( ) + cc_library( name = "grpc++_unsecure", srcs = [ @@ -1174,6 +1170,7 @@ cc_library( ) + cc_library( name = "grpc_plugin_support", srcs = [ @@ -1225,6 +1222,7 @@ cc_library( ) + cc_library( name = "grpc_csharp_ext", srcs = [ @@ -1244,6 +1242,7 @@ cc_library( + objc_library( name = "gpr_objc", srcs = [ @@ -1357,6 +1356,7 @@ objc_library( ) + objc_library( name = "grpc_objc", srcs = [ @@ -1521,9 +1521,6 @@ objc_library( "src/core/lib/tsi/fake_transport_security.c", "src/core/lib/tsi/ssl_transport_security.c", "src/core/lib/tsi/transport_security.c", - "third_party/nanopb/pb_common.c", - "third_party/nanopb/pb_decode.c", - "third_party/nanopb/pb_encode.c", ], hdrs = [ "include/grpc/byte_buffer.h", @@ -1676,10 +1673,6 @@ objc_library( "src/core/lib/tsi/ssl_types.h", "src/core/lib/tsi/transport_security.h", "src/core/lib/tsi/transport_security_interface.h", - "third_party/nanopb/pb.h", - "third_party/nanopb/pb_common.h", - "third_party/nanopb/pb_decode.h", - "third_party/nanopb/pb_encode.h", ], includes = [ "include", @@ -1688,6 +1681,7 @@ objc_library( deps = [ ":gpr_objc", "//external:libssl_objc", + "//external:nanopb", ], sdk_dylibs = ["libz"], ) diff --git a/templates/BUILD.template b/templates/BUILD.template index 54dc697125..ebf7ffbf9a 100644 --- a/templates/BUILD.template +++ b/templates/BUILD.template @@ -60,7 +60,7 @@ deps.append(':%s' % (d)) return deps %> - + % for lib in libs: % if lib.build in ("all", "protoc"): ${cc_library(lib)} @@ -80,13 +80,19 @@ % endfor <%def name="cc_library(lib)"> + <% + lib_hdrs = lib.get("headers", []) + hdrs = [h for h in lib_hdrs if not h.startswith('third_party/nanopb')] + srcs = [s for s in lib.src if not s.startswith('third_party/nanopb')] + uses_nanopb = len(lib_hdrs) != len(hdrs) or len(srcs) != len(lib.src) + %> cc_library( name = "${lib.name}", srcs = [ - % for hdr in lib.get("headers", []): + % for hdr in hdrs: "${hdr}", % endfor - % for src in lib.src: + % for src in srcs: "${src}", % endfor ], @@ -103,6 +109,9 @@ % for dep in get_deps(lib): "${dep}", % endfor + % if uses_nanopb: + "//external:nanopb", + % endif ], % if lib.name in ("grpc", "grpc_unsecure"): copts = [ @@ -113,10 +122,16 @@ <%def name="objc_library(lib)"> + <% + lib_hdrs = lib.get("headers", []) + hdrs = [h for h in lib_hdrs if not h.startswith('third_party/nanopb')] + srcs = [s for s in lib.src if not s.startswith('third_party/nanopb')] + uses_nanopb = len(lib_hdrs) != len(hdrs) or len(srcs) != len(lib.src) + %> objc_library( name = "${lib.name}_objc", srcs = [ - % for src in lib.src: + % for src in srcs: "${src}", % endfor ], @@ -124,7 +139,7 @@ % for hdr in lib.get("public_headers", []): "${hdr}", % endfor - % for hdr in lib.get("headers", []): + % for hdr in hdrs: "${hdr}", % endfor ], @@ -138,6 +153,9 @@ % endfor % if lib.get('secure', False): "//external:libssl_objc", + % endif + % if uses_nanopb: + "//external:nanopb", % endif ], % if lib.get("baselib", false): -- cgit v1.2.3 From ff20c2b46cbe967f73ba02caa87bcdb57417229c Mon Sep 17 00:00:00 2001 From: Rob Earhart Date: Tue, 29 Mar 2016 11:39:04 -0700 Subject: Add protobuf_clib to deps of grpc++_codegen_lib This is required in order to compile grpc++_codegen_lib. --- BUILD | 1 + templates/BUILD.template | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/BUILD b/BUILD index 025878d82a..fc4dfe8d9a 100644 --- a/BUILD +++ b/BUILD @@ -1041,6 +1041,7 @@ cc_library( ".", ], deps = [ + "//external:protobuf_clib", ], ) diff --git a/templates/BUILD.template b/templates/BUILD.template index ebf7ffbf9a..23a656c360 100644 --- a/templates/BUILD.template +++ b/templates/BUILD.template @@ -49,7 +49,9 @@ ] if target_dict.get('build', None) == 'protoc': deps.append("//external:protobuf_compiler") - if target_dict['name'] == 'grpc++_unsecure' or target_dict['name'] == 'grpc++': + if (target_dict['name'] == 'grpc++_unsecure' or + target_dict['name'] == 'grpc++' or + target_dict['name'] == 'grpc++_codegen_lib'): deps.append("//external:protobuf_clib") elif target_dict['name'] == 'grpc': deps.append("//external:zlib") -- cgit v1.2.3 From 67af237be2c49fae82a183648c3208a1185553ba Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 29 Mar 2016 15:34:05 -0700 Subject: Trim number of CPUs --- 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 287bb2acbf..aa81a6545d 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 -jobs=20 -workers=20" + flags="-max_total_time=3600 -jobs=3 -workers=3" 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 6f89e5250c..a91cf6d458 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 -jobs=20 -workers=20" +flags="-max_total_time=3600 -jobs=3 -workers=3" 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 fb7120ddce..47adad0cb7 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 -jobs=20 -workers=20" +flags="-max_total_time=3600 -jobs=3 -workers=3" 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 fc10c77193..9c5cba3baf 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 -jobs=20 -workers=20" +flags="-max_total_time=3600 -jobs=3 -workers=3" 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 fb2fa69e34..58f20d021c 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 -jobs=20 -workers=20" +flags="-max_total_time=3600 -jobs=3 -workers=3" if [ "$config" == "asan-trace-cmp" ] then flags="-use_traces=1 $flags" -- cgit v1.2.3 From 97daf35addf51951748d2954580fe10dffd3be36 Mon Sep 17 00:00:00 2001 From: Zhuochun Date: Sun, 13 Mar 2016 16:19:56 +0800 Subject: Fix Ruby memory leaks - `recv_message` is not cleaned up after call - `send_message` is not cleaned up in failure cases - `xmalloc` ruby string is not freed after used --- src/ruby/ext/grpc/rb_byte_buffer.c | 7 +++++-- src/ruby/ext/grpc/rb_call.c | 14 +++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ruby/ext/grpc/rb_byte_buffer.c b/src/ruby/ext/grpc/rb_byte_buffer.c index db7cac363a..52523b8319 100644 --- a/src/ruby/ext/grpc/rb_byte_buffer.c +++ b/src/ruby/ext/grpc/rb_byte_buffer.c @@ -52,12 +52,12 @@ grpc_byte_buffer* grpc_rb_s_to_byte_buffer(char *string, size_t length) { VALUE grpc_rb_byte_buffer_to_s(grpc_byte_buffer *buffer) { size_t length = 0; char *string = NULL; + VALUE rb_string; size_t offset = 0; grpc_byte_buffer_reader reader; gpr_slice next; if (buffer == NULL) { return Qnil; - } length = grpc_byte_buffer_length(buffer); string = xmalloc(length + 1); @@ -65,6 +65,9 @@ VALUE grpc_rb_byte_buffer_to_s(grpc_byte_buffer *buffer) { while (grpc_byte_buffer_reader_next(&reader, &next) != 0) { memcpy(string + offset, GPR_SLICE_START_PTR(next), GPR_SLICE_LENGTH(next)); offset += GPR_SLICE_LENGTH(next); + gpr_slice_unref(next); } - return rb_str_new(string, length); + rb_string = rb_str_new(string, length); + xfree(string); + return rb_string; } diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c index cd0aa6aaf2..b0829efdc7 100644 --- a/src/ruby/ext/grpc/rb_call.c +++ b/src/ruby/ext/grpc/rb_call.c @@ -551,13 +551,26 @@ static void grpc_run_batch_stack_init(run_batch_stack *st, /* grpc_run_batch_stack_cleanup ensures the run_batch_stack is properly * cleaned up */ static void grpc_run_batch_stack_cleanup(run_batch_stack *st) { + size_t i = 0; + grpc_metadata_array_destroy(&st->send_metadata); grpc_metadata_array_destroy(&st->send_trailing_metadata); grpc_metadata_array_destroy(&st->recv_metadata); grpc_metadata_array_destroy(&st->recv_trailing_metadata); + if (st->recv_status_details != NULL) { gpr_free(st->recv_status_details); } + + if (st->recv_message != NULL) { + grpc_byte_buffer_destroy(st->recv_message); + } + + for (i = 0; i < st->op_num; i++) { + if (st->ops[i].op == GRPC_OP_SEND_MESSAGE) { + grpc_byte_buffer_destroy(st->ops[i].data.send_message); + } + } } /* grpc_run_batch_stack_fill_ops fills the run_batch_stack ops array from @@ -643,7 +656,6 @@ static VALUE grpc_run_batch_stack_build_result(run_batch_stack *st) { break; case GRPC_OP_SEND_MESSAGE: rb_struct_aset(result, sym_send_message, Qtrue); - grpc_byte_buffer_destroy(st->ops[i].data.send_message); break; case GRPC_OP_SEND_CLOSE_FROM_CLIENT: rb_struct_aset(result, sym_send_close, Qtrue); -- cgit v1.2.3 From 375d1f47cad2f678da49e3e3d0a5e6c79c5e0f30 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Wed, 30 Mar 2016 01:53:01 +0200 Subject: Better memory management for grpc_rb_byte_buffer_to_s. --- src/ruby/ext/grpc/rb_byte_buffer.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/ruby/ext/grpc/rb_byte_buffer.c b/src/ruby/ext/grpc/rb_byte_buffer.c index 52523b8319..9b617e13d3 100644 --- a/src/ruby/ext/grpc/rb_byte_buffer.c +++ b/src/ruby/ext/grpc/rb_byte_buffer.c @@ -50,24 +50,18 @@ grpc_byte_buffer* grpc_rb_s_to_byte_buffer(char *string, size_t length) { } VALUE grpc_rb_byte_buffer_to_s(grpc_byte_buffer *buffer) { - size_t length = 0; - char *string = NULL; VALUE rb_string; - size_t offset = 0; grpc_byte_buffer_reader reader; gpr_slice next; if (buffer == NULL) { return Qnil; } - length = grpc_byte_buffer_length(buffer); - string = xmalloc(length + 1); + rb_string = rb_str_buf_new(grpc_byte_buffer_length(buffer)); grpc_byte_buffer_reader_init(&reader, buffer); while (grpc_byte_buffer_reader_next(&reader, &next) != 0) { - memcpy(string + offset, GPR_SLICE_START_PTR(next), GPR_SLICE_LENGTH(next)); - offset += GPR_SLICE_LENGTH(next); + rb_str_cat(rb_string, (const char *) GPR_SLICE_START_PTR(next), + GPR_SLICE_LENGTH(next)); gpr_slice_unref(next); } - rb_string = rb_str_new(string, length); - xfree(string); return rb_string; } -- cgit v1.2.3 From 3eb403f4cdf4100994066744055cc4be64be6fb4 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Wed, 30 Mar 2016 07:30:55 -0700 Subject: Revert "Refactor C# building in run_tests.py" --- tools/run_tests/run_tests.py | 38 ++++++++++++++------------------------ vsprojects/build_vs2010.bat | 2 +- vsprojects/build_vs2013.bat | 2 +- vsprojects/build_vs2015.bat | 2 +- 4 files changed, 17 insertions(+), 27 deletions(-) diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 6b84daea54..a9438045aa 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -120,12 +120,7 @@ def get_c_tests(travis, test_lang) : def _check_compiler(compiler, supported_compilers): if compiler not in supported_compilers: - raise Exception('Compiler %s not supported (on this platform).' % compiler) - - -def _check_arch(arch, supported_archs): - if arch not in supported_archs: - raise Exception('Architecture %s not supported.' % arch) + raise Exception('Compiler %s not supported.' % compiler) def _is_use_docker_child(): @@ -469,19 +464,7 @@ class CSharpLanguage(object): def configure(self, config, args): self.config = config self.args = args - if self.platform == 'windows': - # Explicitly choosing between x86 and x64 arch doesn't work yet - _check_arch(self.args.arch, ['default']) - self._make_options = [_windows_toolset_option(self.args.compiler), - _windows_arch_option(self.args.arch)] - else: - _check_compiler(self.args.compiler, ['default']) - if self.platform == 'mac': - # On Mac, official distribution of mono is 32bit. - self._make_options = ['EMBED_OPENSSL=true', 'EMBED_ZLIB=true', - 'CFLAGS=-arch i386', 'LDFLAGS=-arch i386'] - else: - self._make_options = ['EMBED_OPENSSL=true', 'EMBED_ZLIB=true'] + _check_compiler(self.args.compiler, ['default']) def test_specs(self): with open('src/csharp/tests.json') as f: @@ -528,16 +511,23 @@ class CSharpLanguage(object): return [['tools/run_tests/pre_build_csharp.sh']] def make_targets(self): - return ['grpc_csharp_ext'] + # For Windows, this target doesn't really build anything, + # everything is build by buildall script later. + if self.platform == 'windows': + return [] + else: + return ['grpc_csharp_ext'] def make_options(self): - return self._make_options; + if self.platform == 'mac': + # On Mac, official distribution of mono is 32bit. + return ['CFLAGS=-arch i386', 'LDFLAGS=-arch i386'] + else: + return [] def build_steps(self): if self.platform == 'windows': - return [[_windows_build_bat(self.args.compiler), - 'src/csharp/Grpc.sln', - '/p:Configuration=%s' % _MSBUILD_CONFIG[self.config.build_config]]] + return [['src\\csharp\\buildall.bat']] else: return [['tools/run_tests/build_csharp.sh']] diff --git a/vsprojects/build_vs2010.bat b/vsprojects/build_vs2010.bat index 1bc3c86a92..64b0ed5d3f 100644 --- a/vsprojects/build_vs2010.bat +++ b/vsprojects/build_vs2010.bat @@ -1,5 +1,5 @@ @rem Convenience wrapper that runs specified gRPC target using msbuild -@rem Usage: build_vs2010.bat TARGET_NAME +@rem Usage: build.bat TARGET_NAME setlocal @rem Set VS variables (uses Visual Studio 2010) diff --git a/vsprojects/build_vs2013.bat b/vsprojects/build_vs2013.bat index 82c0a3ad82..be3caa9298 100644 --- a/vsprojects/build_vs2013.bat +++ b/vsprojects/build_vs2013.bat @@ -1,5 +1,5 @@ @rem Convenience wrapper that runs specified gRPC target using msbuild -@rem Usage: build_vs2013.bat TARGET_NAME +@rem Usage: build.bat TARGET_NAME setlocal @rem Set VS variables (uses Visual Studio 2013) diff --git a/vsprojects/build_vs2015.bat b/vsprojects/build_vs2015.bat index c6e1b433a3..50485a30f3 100644 --- a/vsprojects/build_vs2015.bat +++ b/vsprojects/build_vs2015.bat @@ -1,5 +1,5 @@ @rem Convenience wrapper that runs specified gRPC target using msbuild -@rem Usage: build_vs2015.bat TARGET_NAME +@rem Usage: build.bat TARGET_NAME setlocal @rem Set VS variables (uses Visual Studio 2015) -- cgit v1.2.3 From 1a05ba4897adb6042c89af01ba5e8c59dfdb2e29 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 30 Mar 2016 07:36:01 -0700 Subject: Fix include guards --- src/core/lib/iomgr/ev_poll_and_epoll_posix.h | 6 +++--- src/core/lib/iomgr/ev_posix.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/lib/iomgr/ev_poll_and_epoll_posix.h b/src/core/lib/iomgr/ev_poll_and_epoll_posix.h index 4ca371f4f5..a8b7efd471 100644 --- a/src/core/lib/iomgr/ev_poll_and_epoll_posix.h +++ b/src/core/lib/iomgr/ev_poll_and_epoll_posix.h @@ -31,11 +31,11 @@ * */ -#ifndef GRPC_CORE_IOMGR_EV_POLL_AND_EPOLL_POSIX_H -#define GRPC_CORE_IOMGR_EV_POLL_AND_EPOLL_POSIX_H +#ifndef GRPC_CORE_LIB_IOMGR_EV_POLL_AND_EPOLL_POSIX_H +#define GRPC_CORE_LIB_IOMGR_EV_POLL_AND_EPOLL_POSIX_H #include "src/core/lib/iomgr/ev_posix.h" const grpc_event_engine_vtable *grpc_init_poll_and_epoll_posix(void); -#endif /* GRPC_CORE_IOMGR_EV_POLL_AND_EPOLL_POSIX_H */ +#endif /* GRPC_CORE_LIB_IOMGR_EV_POLL_AND_EPOLL_POSIX_H */ diff --git a/src/core/lib/iomgr/ev_posix.h b/src/core/lib/iomgr/ev_posix.h index 8c909f1a3f..9d27b2bcda 100644 --- a/src/core/lib/iomgr/ev_posix.h +++ b/src/core/lib/iomgr/ev_posix.h @@ -31,8 +31,8 @@ * */ -#ifndef GRPC_CORE_IOMGR_EV_POSIX_H -#define GRPC_CORE_IOMGR_EV_POSIX_H +#ifndef GRPC_CORE_LIB_IOMGR_EV_POSIX_H +#define GRPC_CORE_LIB_IOMGR_EV_POSIX_H #include @@ -155,4 +155,4 @@ typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int); extern grpc_poll_function_type grpc_poll_function; extern grpc_wakeup_fd grpc_global_wakeup_fd; -#endif /* GRPC_CORE_IOMGR_EV_POSIX_H */ +#endif /* GRPC_CORE_LIB_IOMGR_EV_POSIX_H */ -- cgit v1.2.3 From f45496fdb040fed2aaeda087d0cdc8ba70b2ce07 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 30 Mar 2016 07:41:19 -0700 Subject: Fix include path --- test/cpp/end2end/async_end2end_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc index aa52af2412..b5c766d979 100644 --- a/test/cpp/end2end/async_end2end_test.cc +++ b/test/cpp/end2end/async_end2end_test.cc @@ -53,7 +53,7 @@ #include "test/cpp/util/string_ref_helper.h" #ifdef GPR_POSIX_SOCKET -#include "src/core/iomgr/ev_posix.h" +#include "src/core/lib/iomgr/ev_posix.h" #endif using grpc::testing::EchoRequest; -- cgit v1.2.3 From dd2cfc55ab68aee249c3988d5530f0fcc6c6ec58 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 30 Mar 2016 07:56:23 -0700 Subject: Revert "added grpclb support to sockaddr resolver" --- .../client_config/resolvers/sockaddr_resolver.c | 39 +++------------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/src/core/lib/client_config/resolvers/sockaddr_resolver.c b/src/core/lib/client_config/resolvers/sockaddr_resolver.c index 5c5133649a..c787bd57d6 100644 --- a/src/core/lib/client_config/resolvers/sockaddr_resolver.c +++ b/src/core/lib/client_config/resolvers/sockaddr_resolver.c @@ -267,46 +267,17 @@ static grpc_resolver *sockaddr_create( r->lb_policy_name = NULL; if (0 != strcmp(args->uri->query, "")) { gpr_slice query_slice; - gpr_slice_buffer query_parts; /* the &-separated elements of the query */ - gpr_slice_buffer query_param_parts; /* the =-separated subelements */ + gpr_slice_buffer query_parts; query_slice = gpr_slice_new(args->uri->query, strlen(args->uri->query), do_nothing); gpr_slice_buffer_init(&query_parts); - gpr_slice_buffer_init(&query_param_parts); - /* the query can contain "lb_policy=" and "lb_enabled=<1|0>" */ - - bool lb_enabled; - gpr_slice_split(query_slice, "&", &query_parts); - for (i = 0; i < query_parts.count; i++) { - gpr_slice_split(query_parts.slices[i], "=", &query_param_parts); - GPR_ASSERT(query_param_parts.count == 2); - if (0 == gpr_slice_str_cmp(query_param_parts.slices[0], "lb_policy")) { - r->lb_policy_name = - gpr_dump_slice(query_param_parts.slices[1], GPR_DUMP_ASCII); - } else if (0 == - gpr_slice_str_cmp(query_param_parts.slices[0], "lb_enabled")) { - if (0 != gpr_slice_str_cmp(query_param_parts.slices[1], "0")) { - /* anything other than 0 is taken to be true */ - lb_enabled = true; - } - } else { - gpr_log(GPR_ERROR, "invalid query element value: '%s'", - query_parts.slices[0]); - } - gpr_slice_buffer_reset_and_unref(&query_param_parts); - } - - if (strcmp("grpclb", r->lb_policy_name) == 0 && !lb_enabled) { - /* we want grpclb but the "resolved" addresses aren't LB enabled. Bail - * out, as this is meant mostly for tests. */ - gpr_log(GPR_ERROR, - "Requested 'grpclb' LB policy but resolved addresses don't " - "support load balancing."); - abort(); + gpr_slice_split(query_slice, "=", &query_parts); + GPR_ASSERT(query_parts.count == 2); + if (0 == gpr_slice_str_cmp(query_parts.slices[0], "lb_policy")) { + r->lb_policy_name = gpr_dump_slice(query_parts.slices[1], GPR_DUMP_ASCII); } gpr_slice_buffer_destroy(&query_parts); - gpr_slice_buffer_destroy(&query_param_parts); gpr_slice_unref(query_slice); } if (r->lb_policy_name == NULL) { -- cgit v1.2.3