From 49c8cd01778f030404f7535816c5c1afe360ab07 Mon Sep 17 00:00:00 2001 From: Sam Alws Date: Tue, 21 Dec 2021 10:43:20 -0600 Subject: [PATCH] Add autogenerate profiles script --- autogenProfiles | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 autogenProfiles diff --git a/autogenProfiles b/autogenProfiles new file mode 100755 index 000000000..f1a4e5b5e --- /dev/null +++ b/autogenProfiles @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# Generates a profile directory with profiles and outputs +# from running each .sol file in a given examples directory + +# ARGUMENTS: +# $1 - path to echidna-test to run, defaults to "echidna-test" +# $2 - examples folder to profile, defaults to "examples" + +echidna=$1 +if [ -z "$1" ]; then + echidna="echidna-test" +else + echidna="$1" +fi + +examples=$2 +if [ -z "$2" ]; then + examples="examples" +else + examples="$2" +fi + +# prepare profiles folder and subfolders +for dir in $(find "$examples" -type d); do + mkdir -p "profiles/$dir" +done + +# get number of total files +# (there must be a better way to do this) +declare -i totalFiles +totalFiles=0 +for file in $(find "$examples" -type f -name *.sol); do + totalFiles+=1 +done + +# profile each of the files +declare -i doneFiles +doneFiles=0 +for file in $(find "$examples" -type f -name *.sol); do + doneFiles+=1 + echo "$doneFiles/$totalFiles - $file" + # timeout 60 is because some of the files, eg examples/solidity/basic/propGasLimit.sol, can run infinitely + timeout 60 "$1" "$file" --format none +RTS -p 2> "profiles/$file.otp" + mv echidna-test.prof "profiles/$file.prof" +done