Add a CI task that checks performance regression (#1248)
Co-authored-by: hengzh <byone.heng@gmail.com>
This commit is contained in:
parent
c8c5d89f33
commit
6929c89b86
23
.github/workflows/build_and_test.yml
vendored
23
.github/workflows/build_and_test.yml
vendored
@ -225,6 +225,29 @@ jobs:
|
|||||||
if: runner.os == 'macOS' # use bash v4
|
if: runner.os == 'macOS' # use bash v4
|
||||||
run: /usr/local/bin/bash -c 'RUN_ON_CI=1 ./scripts/test_all_fuzzers.sh'
|
run: /usr/local/bin/bash -c 'RUN_ON_CI=1 ./scripts/test_all_fuzzers.sh'
|
||||||
|
|
||||||
|
executions-check:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macos-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
profile: minimal
|
||||||
|
toolchain: stable
|
||||||
|
- uses: lyricwulf/abc@v1
|
||||||
|
with:
|
||||||
|
linux: llvm llvm-dev clang
|
||||||
|
macos: llvm bash wget coreutils
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
- name: Build and run libfuzzer_libpng (Linux)
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
run: ./scripts/executions-check.sh
|
||||||
|
- name: Build and run libfuzzer_libpng (macOS)
|
||||||
|
if: runner.os == 'macOS'
|
||||||
|
run: /usr/local/bin/bash -c './scripts/executions-check.sh'
|
||||||
|
|
||||||
nostd-build:
|
nostd-build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
53
scripts/executions-check.sh
Executable file
53
scripts/executions-check.sh
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
install_libpng() {
|
||||||
|
cd ./fuzzers/libfuzzer_libpng && wget https://deac-fra.dl.sourceforge.net/project/libpng/libpng16/1.6.37/libpng-1.6.37.tar.xz
|
||||||
|
tar -xvf libpng-1.6.37.tar.xz || echo "Failed to download libpng"
|
||||||
|
cd libpng-1.6.37 && ./configure --enable-shared=no --with-pic=yes --enable-hardware-optimizations=yes && cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
build_libpng(){
|
||||||
|
cargo build --release || echo "ERROR: Failed to build libfuzzer_libpng"
|
||||||
|
|
||||||
|
cd libpng-1.6.37 && make CC="$(pwd)/../target/release/libafl_cc" CXX="$(pwd)/../target/release/ libafl_cxx" -j "$(nproc)" && cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
git_checkout(){
|
||||||
|
git reset --hard HEAD~1
|
||||||
|
}
|
||||||
|
|
||||||
|
build_run_fuzzer(){
|
||||||
|
./target/release/libafl_cxx ./harness.cc libpng-1.6.37/.libs/libpng16.a -I libpng-1.6.37/ -o fuzzer_libpng -lz -lm || echo "ERROR: Failed to build the fuzzer"
|
||||||
|
|
||||||
|
./fuzzer_libpng > log.txt &
|
||||||
|
timeout 5m ./fuzzer_libpng >/dev/null 2>&1 &
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
if grep -q "Broker" log.txt ; then
|
||||||
|
pkill --signal SIGKILL "fuzzer_libpng"
|
||||||
|
executions=$(grep -m 1 "Broker" log.txt | awk '{print $14}')
|
||||||
|
rm -rf ./libafl_unix_shmem_server
|
||||||
|
echo "${executions%,}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main(){
|
||||||
|
install_libpng
|
||||||
|
|
||||||
|
build_libpng
|
||||||
|
new_executions=$(build_run_fuzzer)
|
||||||
|
|
||||||
|
git_checkout
|
||||||
|
|
||||||
|
build_libpng
|
||||||
|
last_executions=$(build_run_fuzzer)
|
||||||
|
|
||||||
|
echo "the execution count of the new fuzzer is $new_executions"
|
||||||
|
echo "the execution count of the last fuzzer is $last_executions"
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user