From: Serge Petrenko <sergepetrenko@tarantool.org> To: Sergey Bronnikov <sergeyb@tarantool.org> Cc: o.piskunov@tarantool.org, tml <tarantool-patches@dev.tarantool.org> Subject: Re: [Tarantool-patches] [PATCH v2] Add infrastructure for fuzzing testing and fuzzers Date: Thu, 30 Apr 2020 14:10:56 +0300 [thread overview] Message-ID: <d083dbe1-c1ce-c306-edb4-17e0ed6bf6de@tarantool.org> (raw) In-Reply-To: <20200429092855.GA83580@pony.bronevichok.ru> 29.04.2020 12:28, Sergey Bronnikov wrote: > Hi, Serge > > thanks for review. See my answers inline. > > On 16:56 Fri 24 Apr , Serge Petrenko wrote: > > <snipped> > Hi! Thanks for the answers! >>> +option(ENABLE_FUZZER "Enable fuzzing testing" OFF) >>> +if (ENABLE_FUZZER) >>> + set(TESTING_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Testing") >>> +endif () >> Maybe report some error on an attemt to set ENABLE_FUZZER=ON >> when the compiler isn't clang? Then there’ll be no need to check >> for CMAKE_CXX_COMPILER_ID in each test’s file. > Agree, added check for compiler here. Let me paste bits of the new patch below for commenting. ================== diff --git a/cmake/profile.cmake b/cmake/profile.cmake index bc4bf67f5..419f7b3cc 100644 --- a/cmake/profile.cmake +++ b/cmake/profile.cmake @@ -42,6 +42,15 @@ else() add_definitions(-DNVALGRIND=1) endif() +option(ENABLE_FUZZER "Enable fuzzing testing" OFF) +if(ENABLE_FUZZER) + if(NOT (CMAKE_C_COMPILER_ID STREQUAL "Clang")) + message(WARNING "Fuzzing supported with Clang compiler only.") + else() + set(TESTING_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Testing") + endif() +endif() + option(ENABLE_ASAN "Enable AddressSanitizer, a fast memory error detector based on compiler instrumentation" OFF) if (ENABLE_ASAN) if (CMAKE_COMPILER_IS_GNUCC) =============== shouldn't it be message(FATAL_ERROR "...") ? So that cmake config fails. Otherwise it'll produce the warning, but proceed to build anyway. > >>> + >>> option(ENABLE_ASAN "Enable AddressSanitizer, a fast memory error detector based on compiler instrumentation" OFF) >>> if (ENABLE_ASAN) >>> if (CMAKE_COMPILER_IS_GNUCC) >>> diff --git a/src/lib/csv/CMakeLists.txt b/src/lib/csv/CMakeLists.txt >>> index 3580e4da2..d5a3ed1f6 100644 >>> --- a/src/lib/csv/CMakeLists.txt >>> +++ b/src/lib/csv/CMakeLists.txt >>> @@ -4,3 +4,14 @@ set(lib_sources >>> >>> set_source_files_compile_flags(${lib_sources}) >>> add_library(csv STATIC ${lib_sources}) >>> + >>> +if (ENABLE_FUZZER AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") >> Is there such a thing as CMAKE_C_COMPILER_ID ? >> If yes, then maybe check it instead of _CXX_ one ? > Agree, replaced. ============== diff --git a/src/lib/csv/CMakeLists.txt b/src/lib/csv/CMakeLists.txt index 3580e4da2..9be0a9e73 100644 --- a/src/lib/csv/CMakeLists.txt +++ b/src/lib/csv/CMakeLists.txt @@ -4,3 +4,14 @@ set(lib_sources set_source_files_compile_flags(${lib_sources}) add_library(csv STATIC ${lib_sources}) + +if(ENABLE_FUZZER AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(TestName "test_csv") ================= If you error on compiler check, as mentioned above, there's no need to check for compiler here. It's the only place left, besides. You've omitted the checks in http_parser and uri tests. > >>> + set(TestName "test_csv") >>> + add_executable(${TestName} ${TestName}.c) >>> + set_target_properties(${TestName} >>> + PROPERTIES >>> + COMPILE_FLAGS "-fsanitize=fuzzer,address -g -O1" >>> + LINK_FLAGS "-fsanitize=fuzzer,address") >>> + target_link_libraries(${TestName} PRIVATE csv) >>> + set_target_properties(${TestName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}") >>> +endif () >>> diff --git a/src/lib/csv/test_csv.c b/src/lib/csv/test_csv.c >>> new file mode 100644 >>> index 000000000..aa1703514 >>> --- /dev/null >>> +++ b/src/lib/csv/test_csv.c >> Maybe we should put all the tests to test/fuzzing/smth ? >> Since we have test/unit/smth. > I did it for convenience - it is more convenient when tests lie together > with code. I don't know why we place tarantool unit tests and > other tests in a single directory seperately with modules that they > tests. These three tests (csv, uri and http) are related to small libraries and > I don't see any reasons to place them outside of library dir. Ok, it's up to you then. > <snipped> -- Serge Petrenko
next prev parent reply other threads:[~2020-04-30 11:10 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-20 8:47 Sergey Bronnikov 2020-04-24 13:56 ` Serge Petrenko 2020-04-29 9:28 ` Sergey Bronnikov 2020-04-30 11:10 ` Serge Petrenko [this message] 2020-04-30 11:40 ` Sergey Bronnikov 2020-04-30 13:01 ` Serge Petrenko 2020-04-28 11:19 ` Igor Munkin 2020-04-29 12:09 ` Sergey Bronnikov 2020-05-26 15:54 ` Igor Munkin 2020-12-01 16:22 ` Sergey Bronnikov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=d083dbe1-c1ce-c306-edb4-17e0ed6bf6de@tarantool.org \ --to=sergepetrenko@tarantool.org \ --cc=o.piskunov@tarantool.org \ --cc=sergeyb@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v2] Add infrastructure for fuzzing testing and fuzzers' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox