diff options
author | Fabian Meumertzheim <meumertzheim@code-intelligence.com> | 2021-01-29 16:20:19 +0100 |
---|---|---|
committer | Fabian Meumertzheim <meumertzheim@code-intelligence.com> | 2021-02-09 17:20:51 +0100 |
commit | 5246e52be3bf4427791000355cbef86626b43eca (patch) | |
tree | e0683ad15664f2c3deecf3a6ce8c56f2a9597d85 /bazel/fuzz_target.bzl | |
download | jazzer-api-5246e52be3bf4427791000355cbef86626b43eca.tar.gz |
Initial commit
Diffstat (limited to 'bazel/fuzz_target.bzl')
-rw-r--r-- | bazel/fuzz_target.bzl | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/bazel/fuzz_target.bzl b/bazel/fuzz_target.bzl new file mode 100644 index 00000000..f7b60c19 --- /dev/null +++ b/bazel/fuzz_target.bzl @@ -0,0 +1,65 @@ +# Copyright 2021 Code Intelligence GmbH +# +# 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. + +def java_fuzz_target_test( + name, + target_class, + hook_classes = [], + native_libs = [], + use_asan = False, + visibility = None, + tags = [], + fuzzer_args = [], + **kwargs): + target_name = name + "_target" + native.java_binary( + name = target_name, + visibility = ["//visibility:private"], + create_executable = False, + **kwargs + ) + + additional_args = [] + + hooks = ":".join(hook_classes) + if hooks != "": + additional_args.append("--custom_hooks=" + hooks) + + native_libs_paths = ":".join(["$$(dirname $(rootpaths %s) | paste -sd ':' -)" % native_lib for native_lib in native_libs]) + if native_libs_paths != "": + additional_args.append("--jvm_args=-Djava.library.path=" + native_libs_paths) + + driver = "//driver:jazzer_driver_asan" if use_asan else "//driver:jazzer_driver" + + native.sh_test( + name = name, + srcs = ["//bazel:fuzz_target_test_wrapper.sh"], + size = "large", + timeout = "moderate", + args = [ + "$(rootpath %s)" % driver, + "--cp=$(rootpath :%s_deploy.jar)" % target_name, + "--target_class=" + target_class, + "--agent_path=$(rootpath //agent:jazzer_agent_deploy.jar)", + # Should be bigger than the JVM max heap size (4096m) + "-rss_limit_mb=5000", + ] + additional_args + fuzzer_args, + data = [ + ":%s_deploy.jar" % target_name, + "//agent:jazzer_agent_deploy.jar", + driver, + ] + native_libs, + tags = tags, + visibility = visibility, + ) |