-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrun-fuzzer.sh
More file actions
executable file
·66 lines (52 loc) · 2.22 KB
/
run-fuzzer.sh
File metadata and controls
executable file
·66 lines (52 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash
# NOTE: RUN 'sbt assembly' FIRST IF YOU MADE CHANGES TO THE CODE
# NOTE: If you get scala.reflect.internal.MissingRequirementError, ensure that the machine is running java 8 when 'java' is invoked
# . Decide an output directory for coverage output
# . Run ScoverageInstrumenter.scala using the assembled jar file
# . Add scoverage-instrumented class files to jar using 'jar uf target/scala-2.11/$JAR_NAME target/scala-2.11/examples/fuzzable/<name of instrumented jars>'
# . Run a subject program e.g. examples.fuzzable.FlightDistance
# . Process the measurement files produced using CoverageMeasurementConsolidator.scala
# SAMPLE RUN:
# ./run-fuzzer.sh WebpageSegmentation 20 seeds/reduced_data/webpage_segmentation/{before,after}
# Temporarily hard-coded, should be parsed from args
NAME=$1
DURATION=$2
shift 2
ARGS=$*
#CLASS_INSTRUMENTED=examples.fuzzable.$NAME # which class needs to be fuzzed DISC vs FWA
PATH_SCALA_SRC="src/main/scala/examples/fwa/$NAME.scala"
PATH_INSTRUMENTED_CLASSES="examples/fwa/$NAME*"
DIR_FUZZER_OUT="target/depfuzz-output/$NAME"
JAR_NAME=DepFuzz-assembly-1.0.jar
rm -rf $DIR_FUZZER_OUT
mkdir -p graphs $DIR_FUZZER_OUT/{scoverage-results,report,log,reproducers,crashes} || exit 1
sbt assembly || exit 1
java -cp target/scala-2.12/$JAR_NAME \
transformers.RunTransformer \
$NAME \
|| exit
sbt assembly || exit 1
java -cp target/scala-2.12/$JAR_NAME \
utils.ScoverageInstrumenter \
$PATH_SCALA_SRC \
$DIR_FUZZER_OUT/scoverage-results/referenceProgram \
|| exit
pushd target/scala-2.12/classes || exit 1
jar uvf ../$JAR_NAME \
$PATH_INSTRUMENTED_CLASSES \
|| exit 1
popd || exit 1
java -cp target/scala-2.12/$JAR_NAME \
runners.RunFuzzerJar \
$NAME \
$DURATION \
"$(realpath $DIR_FUZZER_OUT)" \
$ARGS \
|| exit 1
python3 gen_graph.py \
--coords-file $DIR_FUZZER_OUT/scoverage-results/referenceProgram/coverage.tuples \
--outfile graphs/graph-$NAME-coverage.png \
--title " Coverage: $NAME" \
--x-label "Time (s)" \
--y-label "Statement Coverage (%)" && echo "Graphs generated!"
#rm -rf src/main/scala/examples/{fwa,instrumented}