| 1 | #!/usr/bin/env bash
|
| 2 | #
|
| 3 | # Analyze history
|
| 4 | #
|
| 5 | # Usage:
|
| 6 | # soil/history.sh <function name>
|
| 7 |
|
| 8 | set -o nounset
|
| 9 | set -o pipefail
|
| 10 | set -o errexit
|
| 11 |
|
| 12 | REPO_ROOT=$(cd $(dirname $0)/.. && pwd)
|
| 13 |
|
| 14 | #source $REPO_ROOT/soil/common.sh
|
| 15 |
|
| 16 |
|
| 17 | readonly BASE_DIR=_tmp/soil-history
|
| 18 |
|
| 19 | readonly HOST=travis-ci.oilshell.org
|
| 20 |
|
| 21 | list() {
|
| 22 | ### Used the sync'd testdata
|
| 23 | local dir=${1:-_tmp/github-jobs}
|
| 24 |
|
| 25 | # 4 digits
|
| 26 | ssh travis-ci.oilshell.org 'ls travis-ci.oilshell.org/github-jobs/'
|
| 27 | }
|
| 28 |
|
| 29 | find-wwz() {
|
| 30 | ### Used the sync'd testdata
|
| 31 | local dir=${1:-_tmp/github-jobs}
|
| 32 |
|
| 33 | mkdir -p $BASE_DIR
|
| 34 |
|
| 35 | # 4 digits
|
| 36 | ssh $HOST \
|
| 37 | 'cd travis-ci.oilshell.org && find github-jobs/48?? -name benchmarks2.wwz' \
|
| 38 | | tee $BASE_DIR/listing.txt
|
| 39 | }
|
| 40 |
|
| 41 | sync() {
|
| 42 | local dir=$HOST
|
| 43 | rsync \
|
| 44 | --archive --verbose \
|
| 45 | --files-from $BASE_DIR/listing.txt \
|
| 46 | $HOST:$dir/ $BASE_DIR/
|
| 47 | }
|
| 48 |
|
| 49 | list-zip() {
|
| 50 | unzip -l $BASE_DIR/github-jobs/5000/*.wwz
|
| 51 | }
|
| 52 |
|
| 53 | extract-one() {
|
| 54 | local id=$1
|
| 55 | local dir=$BASE_DIR/github-jobs/$id
|
| 56 | pushd $dir
|
| 57 |
|
| 58 | # commit-hash.txt
|
| 59 | unzip benchmarks2.wwz '_tmp/gc-cachegrind/stage2/*' '_tmp/soil/*' || true
|
| 60 | popd
|
| 61 | }
|
| 62 |
|
| 63 | extract-all() {
|
| 64 | for dir in $BASE_DIR/github-jobs/48??; do
|
| 65 | local id=$(basename $dir)
|
| 66 | extract-one $id
|
| 67 | done
|
| 68 | }
|
| 69 |
|
| 70 | show-all() {
|
| 71 | #local pat='mut+alloc+free+gc'
|
| 72 | local pat='bumpleak'
|
| 73 |
|
| 74 | grep "$pat" \
|
| 75 | $BASE_DIR/github-jobs/????/_tmp/gc-cachegrind/stage2/ex.compute-fib.tsv
|
| 76 | }
|
| 77 |
|
| 78 | "$@"
|