Commit 2363a6a6 authored by machenbach's avatar machenbach Committed by Commit bot

[Swarming] Isolate jsfunfuzz.

This isolates all files necessary to run jsfunfuzz. The fuzz
harness is copied into the jsfunfuzz directory and will be
deleted in the old location after the migration to swarming.

BUG=chromium:535160
LOG=n
NOTRY=true

Review URL: https://codereview.chromium.org/1706223002

Cr-Commit-Position: refs/heads/master@{#34122}
parent 545943db
......@@ -38,6 +38,7 @@
'../test/webkit/webkit.gyp:*',
'../tools/check-static-initializers.gyp:*',
'../tools/gcmole/run_gcmole.gyp:*',
'../tools/jsfunfuzz/jsfunfuzz.gyp:*',
'../tools/run-deopt-fuzzer.gyp:*',
'../tools/run-valgrind.gyp:*',
],
......
#!/bin/bash
# Copyright 2016 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# A simple harness that downloads and runs 'jsfunfuzz' against d8. This
# takes a long time because it runs many iterations and is intended for
# automated usage. The package containing 'jsfunfuzz' can be found as an
# attachment to this bug:
# https://bugzilla.mozilla.org/show_bug.cgi?id=jsfunfuzz
JSFUNFUZZ_URL="https://bugzilla.mozilla.org/attachment.cgi?id=310631"
JSFUNFUZZ_MD5="d0e497201c5cd7bffbb1cdc1574f4e32"
v8_root=$(readlink -f $(dirname $BASH_SOURCE)/../../)
jsfunfuzz_dir="$v8_root/tools/jsfunfuzz"
cd "$jsfunfuzz_dir"
if [ -n "$1" ]; then
d8="${v8_root}/$1"
else
d8="${v8_root}/d8"
fi
if [ ! -f "$d8" ]; then
echo "Failed to find d8 binary: $d8"
exit 1
fi
# Deprecated download method. A prepatched archive is downloaded as a hook
# if jsfunfuzz=1 is specified as a gyp flag. Requires google.com authentication
# for google storage.
if [ "$3" == "--download" ]; then
jsfunfuzz_file="$v8_root/tools/jsfunfuzz.zip"
if [ ! -f "$jsfunfuzz_file" ]; then
echo "Downloading $jsfunfuzz_file ..."
wget -q -O "$jsfunfuzz_file" $JSFUNFUZZ_URL || exit 1
fi
jsfunfuzz_sum=$(md5sum "$jsfunfuzz_file" | awk '{ print $1 }')
if [ $jsfunfuzz_sum != $JSFUNFUZZ_MD5 ]; then
echo "Failed to verify checksum!"
exit 1
fi
if [ ! -d "$jsfunfuzz_dir" ]; then
echo "Unpacking into $jsfunfuzz_dir ..."
unzip "$jsfunfuzz_file" -d "$jsfunfuzz_dir" || exit 1
echo "Patching runner ..."
cat << EOF | patch -s -p0 -d "$v8_root"
--- tools/jsfunfuzz/jsfunfuzz/multi_timed_run.py~
+++ tools/jsfunfuzz/jsfunfuzz/multi_timed_run.py
@@ -125,7 +125,7 @@
def many_timed_runs():
iteration = 0
- while True:
+ while iteration < 100:
iteration += 1
logfilename = "w%d" % iteration
one_timed_run(logfilename)
EOF
fi
fi
flags='--debug-code --expose-gc --verify-gc'
python -u "$jsfunfuzz_dir/jsfunfuzz/multi_timed_run.py" 300 \
"$d8" $flags "$jsfunfuzz_dir/jsfunfuzz/jsfunfuzz.js"
exit_code=$(cat w* | grep " looking good" -c)
exit_code=$((100-exit_code))
if [ -n "$2" ]; then
archive="$2"
else
archive=fuzz-results-$(date +%Y%m%d%H%M%S).tar.bz2
fi
echo "Creating archive $archive"
tar -cjf $archive err-* w*
rm -f err-* w*
echo "Total failures: $exit_code"
exit $exit_code
# Copyright 2016 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
'conditions': [
['test_isolation_mode != "noop"', {
'targets': [
{
'target_name': 'jsfunfuzz_run',
'type': 'none',
'dependencies': [
'../../src/d8.gyp:d8_run',
],
'includes': [
'../../build/features.gypi',
'../../build/isolate.gypi',
],
'sources': [
'jsfunfuzz.isolate',
],
},
],
}],
],
}
# Copyright 2016 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
'variables': {
'command': [
'fuzz-harness.sh',
],
'files': [
# Grab current directory. This avoids adding logic for checking the
# existence of the jsfunfuzz subdirectory.
'./',
],
},
'includes': [
'../../src/d8.isolate',
],
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment