diff options
author | practicalswift <practicalswift@users.noreply.github.com> | 2020-02-17 13:34:51 +0000 |
---|---|---|
committer | practicalswift <practicalswift@users.noreply.github.com> | 2020-02-18 06:56:26 +0000 |
commit | a3b539a924f8611abb3096f2bd9d35094b5577e3 (patch) | |
tree | a01f85b632f0a830084bd2ace903bd68086d7ecd | |
parent | 179504ccb6f4e5a4418b064a184ba37b04491a31 (diff) |
ci: Run fuzz testing test cases under valgrind
-rw-r--r-- | .travis.yml | 5 | ||||
-rw-r--r-- | ci/test/00_setup_env_native_fuzz_with_valgrind.sh | 18 | ||||
-rwxr-xr-x | ci/test/06_script_b.sh | 2 | ||||
-rwxr-xr-x | test/fuzz/test_runner.py | 4 |
4 files changed, 26 insertions, 3 deletions
diff --git a/.travis.yml b/.travis.yml index c5b8c476b7..9a111c03ad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -135,6 +135,11 @@ jobs: FILE_ENV="./ci/test/00_setup_env_native_fuzz.sh" - stage: test + name: 'x86_64 Linux [GOAL: install] [bionic] [no depends, only system libs, fuzzers under valgrind]' + env: >- + FILE_ENV="./ci/test/00_setup_env_native_fuzz_with_valgrind.sh" + + - stage: test name: 'x86_64 Linux [GOAL: install] [bionic] [no wallet]' env: >- FILE_ENV="./ci/test/00_setup_env_native_nowallet.sh" diff --git a/ci/test/00_setup_env_native_fuzz_with_valgrind.sh b/ci/test/00_setup_env_native_fuzz_with_valgrind.sh new file mode 100644 index 0000000000..45b13a669d --- /dev/null +++ b/ci/test/00_setup_env_native_fuzz_with_valgrind.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# +# Copyright (c) 2019 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +export LC_ALL=C.UTF-8 + +export CONTAINER_NAME=ci_native_fuzz_valgrind +export PACKAGES="clang-8 llvm-8 python3 libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev valgrind" +export NO_DEPENDS=1 +export RUN_UNIT_TESTS=false +export RUN_FUNCTIONAL_TESTS=false +export RUN_FUZZ_TESTS=true +export FUZZ_TESTS_CONFIG="--valgrind" +export GOAL="install" +export BITCOIN_CONFIG="--enable-fuzz --with-sanitizers=fuzzer CC=clang-8 CXX=clang++-8" +# Use clang-8, instead of default clang on bionic, which is clang-6 and does not come with libfuzzer on aarch64 diff --git a/ci/test/06_script_b.sh b/ci/test/06_script_b.sh index 537493a710..3b32513353 100755 --- a/ci/test/06_script_b.sh +++ b/ci/test/06_script_b.sh @@ -36,6 +36,6 @@ fi if [ "$RUN_FUZZ_TESTS" = "true" ]; then BEGIN_FOLD fuzz-tests - DOCKER_EXEC test/fuzz/test_runner.py -l DEBUG ${DIR_FUZZ_IN} + DOCKER_EXEC test/fuzz/test_runner.py ${FUZZ_TESTS_CONFIG} -l DEBUG ${DIR_FUZZ_IN} END_FOLD fi diff --git a/test/fuzz/test_runner.py b/test/fuzz/test_runner.py index 61c3e700c5..b638e6bac6 100755 --- a/test/fuzz/test_runner.py +++ b/test/fuzz/test_runner.py @@ -64,7 +64,7 @@ def main(): parser.add_argument( '--valgrind', action='store_true', - help='If true, run fuzzing binaries under the valgrind memory error detector. Valgrind 3.14 or later required.', + help='If true, run fuzzing binaries under the valgrind memory error detector', ) parser.add_argument( 'seed_dir', @@ -150,7 +150,7 @@ def run_once(*, corpus, test_list, build_dir, export_coverage, use_valgrind): corpus_path, ] if use_valgrind: - args = ['valgrind', '--quiet', '--error-exitcode=1', '--exit-on-first-error=yes'] + args + args = ['valgrind', '--quiet', '--error-exitcode=1'] + args logging.debug('Run {} with args {}'.format(t, args)) result = subprocess.run(args, stderr=subprocess.PIPE, universal_newlines=True) output = result.stderr |