diff --git a/fuzzers/FRET/benchmark/Snakefile b/fuzzers/FRET/benchmark/Snakefile index 16ca915d43..8627b27a23 100644 --- a/fuzzers/FRET/benchmark/Snakefile +++ b/fuzzers/FRET/benchmark/Snakefile @@ -1,6 +1,16 @@ import csv +import os def_flags="--no-default-features --features std,snapshot_restore,singlecore,restarting" remote="mnt/" +RUNTIME=21600 +TARGET_REPS_A=20 +TARGET_REPS_B=10 +NUM_NODES=2 +REP_PER_NODE_A=int(TARGET_REPS_A/NUM_NODES) +REP_PER_NODE_B=int(TARGET_REPS_B/NUM_NODES) +NODE_ID= 0 if os.getenv('NODE_ID') == None else int(os.environ['NODE_ID']) +MY_RANGE_A=range(NODE_ID*REP_PER_NODE_A,(NODE_ID+1)*REP_PER_NODE_A) +MY_RANGE_B=range(NODE_ID*REP_PER_NODE_B,(NODE_ID+1)*REP_PER_NODE_B) rule build_showmap: output: @@ -20,9 +30,9 @@ rule build_feedlongest: shell: "cargo build --target-dir {output} {def_flags},feed_longest" -rule build_afl_longest: +rule build_frafl: output: - directory("bins/target_afl_longest") + directory("bins/target_frafl") shell: "cargo build --target-dir {output} {def_flags},feed_afl,feed_longest" @@ -62,9 +72,9 @@ rule build_state_int: shell: "cargo build --target-dir {output} {def_flags},feed_systemtrace,fuzz_int" -rule build_afl_longest_int: +rule build_frafl_int: output: - directory("bins/target_afl_longest_int") + directory("bins/target_frafl_int") shell: "cargo build --target-dir {output} {def_flags},feed_afl,feed_longest,fuzz_int" @@ -144,7 +154,7 @@ rule run_bench: export TIME_DUMP=$(pwd)/{output[0]} export CASE_DUMP=$(pwd)/{output[0]}.case export TRACE_DUMP=$(pwd)/{output[0]}.trace - export FUZZ_ITERS=21600 + export FUZZ_ITERS={RUNTIME} export FUZZER=$(pwd)/{input[1]}/debug/fret set +e ../fuzzer.sh > {output[1]} 2>&1 @@ -224,15 +234,15 @@ rule all_bins: rule all_main: input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random','afl_longest','state','feedgeneration10'], target=['waters','watersv2'],num=range(0,10)) + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random','afl','feedgeneration10','state'], target=['waters','watersv2'],num=range(0,3)) rule all_main_int: input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random_int','afl_longest_int','state_int','feedgeneration10_int'], target=['waters_int','watersv2_int'],num=range(0,10)) + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random_int','afl_int','feedgeneration10_int','state_int'], target=['waters_int','watersv2_int'],num=range(0,4)) rule all_compare_feedgeneration: input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['feedgeneration1','feedgeneration10','feedgeneration100'], target=['waters','watersv2'],num=range(0,10)) + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['feedgeneration1','feedgeneration10','feedgeneration100'], target=['waters_int','watersv2'],num=range(0,10)) rule all_compare_feedgeneration_int: input: @@ -240,12 +250,25 @@ rule all_compare_feedgeneration_int: rule all_compare_afl: input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl','afl_longest','feedlongest'], target=['waters','watersv2'],num=range(0,10)) + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl','frafl','feedlongest'], target=['waters','watersv2'],num=range(0,10)) rule all_compare_afl_int: input: - expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl_int','afl_longest_int','feedlongest_int'], target=['waters_int','watersv2_int'],num=range(0,10)) + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl_int','frafl_int','feedlongest_int'], target=['waters_int','watersv2_int'],num=range(0,10)) rule all_images: input: - expand("{remote}timedump/{fuzzer}/{target}.{num}.trace.csv.png",remote=remote, fuzzer=['state_int','feedgeneration_int'], target=['waters_int','watersv2_int'],num=range(0,10)) + expand("{remote}timedump/{fuzzer}/{target}.{num}.trace.csv.png",remote=remote, fuzzer=['afl','feedgeneration10','state'], target=['waters','watersv2'],num=range(0,3)) + +rule all_images_int: + input: + expand("{remote}timedump/{fuzzer}/{target}.{num}.trace.csv.png",remote=remote, fuzzer=['afl_int','feedgeneration10_int','state_int'], target=['waters_int','watersv2_int'],num=range(0,3)) + +rule clusterfuzz: + input: + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random','afl','feedgeneration10','state'], target=['waters','watersv2'],num=MY_RANGE_A), + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['random_int','afl_int','feedgeneration10_int','state_int'], target=['waters_int','watersv2_int'],num=MY_RANGE_A), + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['feedgeneration1','feedgeneration10','feedgeneration100'], target=['waters_int','watersv2'],num=MY_RANGE_B), + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['feedgeneration1_int','feedgeneration10_int','feedgeneration100_int'], target=['waters_int','watersv2_int'],num=MY_RANGE_B), + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl','frafl','feedlongest'], target=['waters','watersv2'],num=MY_RANGE_B), + expand("timedump/{fuzzer}/{target}.{num}", fuzzer=['afl_int','frafl_int','feedlongest_int'], target=['waters_int','watersv2_int'],num=MY_RANGE_B), \ No newline at end of file