Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#28656: fuzz: Allow multiple --m_dir args
Browse files Browse the repository at this point in the history
faa5e06 fuzz: Allow multiple --m_dir args (MarcoFalke)

Pull request description:

  This allows to merge the result from several servers (or just several folders) at the same time, instead of having to iterate over them.

  This should also allow the fuzz engine (libFuzzer) to optimize the final merge result more, because all fuzz inputs from all folders are available at the same time.

ACKs for top commit:
  dergoegge:
    tACK faa5e06

Tree-SHA512: bf0da418b1f7b8a8af16bb7cc1e148b1ccd0f17062ce70758d1ca5b35c3eee77c0c30377d376befdd55480adfd1f1a1073cfc47118e7a710e6760e020abe24bb
  • Loading branch information
fanquake committed Oct 17, 2023
2 parents 4caa10b + faa5e06 commit e6c3083
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions test/fuzz/test_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ def main():
)
parser.add_argument(
'--m_dir',
help='Merge inputs from this directory into the corpus_dir.',
action="append",
help="Merge inputs from these directories into the corpus_dir.",
)
parser.add_argument(
'-g',
Expand Down Expand Up @@ -176,7 +177,7 @@ def main():
test_list=test_list_selection,
src_dir=config['environment']['SRCDIR'],
build_dir=config["environment"]["BUILDDIR"],
merge_dir=args.m_dir,
merge_dirs=[Path(m_dir) for m_dir in args.m_dir],
)
return

Expand Down Expand Up @@ -270,8 +271,8 @@ def job(command, t, t_env):
future.result()


def merge_inputs(*, fuzz_pool, corpus, test_list, src_dir, build_dir, merge_dir):
logging.info("Merge the inputs from the passed dir into the corpus_dir. Passed dir {}".format(merge_dir))
def merge_inputs(*, fuzz_pool, corpus, test_list, src_dir, build_dir, merge_dirs):
logging.info(f"Merge the inputs from the passed dir into the corpus_dir. Passed dirs {merge_dirs}")
jobs = []
for t in test_list:
args = [
Expand All @@ -289,10 +290,10 @@ def merge_inputs(*, fuzz_pool, corpus, test_list, src_dir, build_dir, merge_dir)
# [0] https://github.com/google/oss-fuzz/issues/1406#issuecomment-387790487
# [1] https://github.com/bitcoin-core/qa-assets/issues/130#issuecomment-1749075891
os.path.join(corpus, t),
os.path.join(merge_dir, t),
]
] + [str(m_dir / t) for m_dir in merge_dirs]
os.makedirs(os.path.join(corpus, t), exist_ok=True)
os.makedirs(os.path.join(merge_dir, t), exist_ok=True)
for m_dir in merge_dirs:
(m_dir / t).mkdir(exist_ok=True)

def job(t, args):
output = 'Run {} with args {}\n'.format(t, " ".join(args))
Expand Down

0 comments on commit e6c3083

Please sign in to comment.