mirror of https://github.com/grpc/grpc.git
[fuzzing] Run fuzzers a little bit as a test (#29919)
* [fuzzer] Add a script to sample fuzzers * remember the script * add ci * bleh * fix * Update sample_fuzzers.sh * tweak * tweak * tweak * tweak * tweak * fix fuzzer found bug * add explainer * make it bold af * limit max fuzzing time in addition to runspull/29436/head
parent
df3ce20913
commit
50ae54dd1c
11 changed files with 188 additions and 13 deletions
@ -0,0 +1,21 @@ |
||||
actions { |
||||
create_channel { |
||||
channel_actions { |
||||
} |
||||
} |
||||
} |
||||
actions { |
||||
create_call { |
||||
method { |
||||
value: "contenttype" |
||||
} |
||||
} |
||||
} |
||||
actions { |
||||
queue_batch { |
||||
operations { |
||||
receive_initial_metadata { |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,19 @@ |
||||
#! /bin/bash -ex |
||||
# Copyright 2022 The gRPC Authors |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
|
||||
dir=$(dirname "${0}") |
||||
cd "${dir}/../.." |
||||
tools/bazel test `tools/bazel query "attr(tags, '\\bgrpc-fuzzer\\b', //test/...)"` \ |
||||
-c dbg --config fuzzer_asan --test_output=errors |
@ -0,0 +1,27 @@ |
||||
#!/usr/bin/env bash |
||||
# Copyright 2017 gRPC authors. |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
|
||||
set -ex |
||||
|
||||
# Enter the gRPC repo root |
||||
cd $(dirname $0)/../../.. |
||||
|
||||
cat tools/internal_ci/linux/grpc_sample_fuzzers_failure_explanation.txt |
||||
|
||||
source tools/internal_ci/helper_scripts/prepare_build_linux_rc |
||||
|
||||
export DOCKERFILE_DIR=tools/dockerfile/test/cxx_debian11_x64 |
||||
export DOCKER_RUN_SCRIPT=tools/internal_ci/linux/grpc_sample_fuzzers_in_docker.sh |
||||
exec tools/run_tests/dockerize/build_and_run_docker.sh |
@ -0,0 +1,31 @@ |
||||
******************************************************************************* |
||||
******************************************************************************* |
||||
******************************************************************************* |
||||
******************************************************************************* |
||||
******************************************************************************* |
||||
|
||||
|
||||
HEY THIS TEST IS FAILING AND I DONT KNOW HOW TO REPRODUCE IT?? |
||||
|
||||
At the point when this file was authored, I had no idea how to get the crash |
||||
artifacts out of bazel/the fuzzer/kokoro/somewhere and onto your machine. |
||||
|
||||
Without that this seemed like a problem - why check whether fuzzers pass if |
||||
we can't debug them? |
||||
|
||||
My thinking is this: if we can find an example that fails within a few minutes |
||||
in CI, we can probably do likewise on your machine. |
||||
|
||||
Try: |
||||
|
||||
bazel build path/to/fuzzer --config=fuzzer_asan -c dbg |
||||
bazel-bin/path/to/fuzzer path/to/fuzzer_corpus -jobs=$CPUS -workers=$CPUS |
||||
|
||||
You should see whatever failure this CI job found before terribly long. |
||||
|
||||
|
||||
******************************************************************************* |
||||
******************************************************************************* |
||||
******************************************************************************* |
||||
******************************************************************************* |
||||
******************************************************************************* |
@ -0,0 +1,28 @@ |
||||
#!/usr/bin/env bash |
||||
# Copyright 2022 The gRPC Authors |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
|
||||
set -ex |
||||
|
||||
# Enter the gRPC repo root |
||||
cd $(dirname $0)/../../.. |
||||
|
||||
# some extra pip packages are needed for the check_on_pr.py script to work |
||||
# TODO(jtattermusch): avoid needing to install these pip packages each time |
||||
time python3 -m pip install --user -r tools/internal_ci/helper_scripts/requirements.linux_perf.txt |
||||
|
||||
tools/run_tests/start_port_server.py |
||||
|
||||
tools/internal_ci/linux/run_if_c_cpp_modified.sh tools/fuzzing/sample_fuzzers.sh \ |
||||
-d "origin/$KOKORO_GITHUB_PULL_REQUEST_TARGET_BRANCH" |
@ -0,0 +1,35 @@ |
||||
# Copyright 2022 The gRPC Authors |
||||
# |
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
# |
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
# |
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
|
||||
# Config file for the internal CI (in protobuf text format) |
||||
|
||||
# Location of the continuous shell script in repository. |
||||
build_file: "grpc/tools/internal_ci/linux/grpc_sample_fuzzers.sh" |
||||
timeout_mins: 120 |
||||
before_action { |
||||
fetch_keystore { |
||||
keystore_resource { |
||||
keystore_config_id: 73836 |
||||
keyname: "grpc_checks_private_key" |
||||
} |
||||
} |
||||
} |
||||
action { |
||||
define_artifacts { |
||||
regex: "**/*sponge_log.*" |
||||
regex: "**/test.log" |
||||
regex: "github/grpc/reports/**" |
||||
regex: "**/crash-*" |
||||
} |
||||
} |
Loading…
Reference in new issue