| #!/usr/bin/env bash |
| |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # debug? Just uncomment. |
| #SVNBENCH_DEBUG=DEBUG_ |
| if [ -n "$SVNBENCH_DEBUG" ]; then |
| SVNBENCH_DEBUG="DEBUG_" |
| fi |
| |
| # Subversion bin-dir used for maintenance of working copies |
| SVN_STABLE="$HOME/pat/stable/prefix/bin/" |
| |
| # Where to find the svn binaries you want to benchmark, what are their labels |
| # and Last Changed Revisions? |
| # side A |
| SVN_A_NAME="1.7.0" |
| SVN_A="$HOME/pat/bench/prefix/bin" |
| SVN_A_REV="$("$SVN_STABLE"/svnversion -c "$HOME/pat/bench/src" | sed 's/.*://')" |
| |
| # side B |
| SVN_B_NAME="trunk" |
| SVN_B="$HOME/pat/trunk/prefix/bin" |
| SVN_B_REV="$("$SVN_STABLE"/svnversion -c "$HOME/pat/trunk/src" | sed 's/.*://')" |
| |
| echo "$SVN_A_NAME@$SVN_A_REV vs. $SVN_B_NAME@$SVN_B_REV" |
| |
| # benchmark script and parameters... |
| benchmark="$PWD/benchmark.py" |
| |
| db="$PWD/${SVNBENCH_DEBUG}benchmark.db" |
| |
| batch(){ |
| levels="$1" |
| spread="$2" |
| N="$3" |
| |
| # SVN_A is a fixed tag, currently 1.7.0. For each call, run this once. |
| # It will be called again and again for each trunk build being tested, |
| # that's why we don't really need to run it $N times every time. |
| N_for_A=1 |
| "$benchmark" "--db-path=$db" "--svn-bin-dir=$SVN_A" \ |
| run "$SVN_A_NAME@$SVN_A_REV,${levels}x$spread" "$N_for_A" >/dev/null |
| |
| # SVN_B is a branch, i.e. the moving target, benchmarked at a specific |
| # point in history each time this script is called. Run this $N times. |
| "$benchmark" "--db-path=$db" "--svn-bin-dir=$SVN_B" \ |
| run "$SVN_B_NAME@$SVN_B_REV,${levels}x$spread" $N >/dev/null |
| } |
| |
| N=3 |
| al=5 |
| as=5 |
| bl=100 |
| bs=1 |
| cl=1 |
| cs=100 |
| |
| if [ -n "$SVNBENCH_DEBUG" ]; then |
| echo "DEBUG" |
| N=1 |
| al=1 |
| as=1 |
| bl=2 |
| bs=1 |
| cl=1 |
| cs=2 |
| fi |
| |
| |
| { |
| started="$(date)" |
| echo "Started at $started" |
| |
| echo " |
| *DISCLAIMER* - This tests only file://-URL access on a GNU/Linux VM. |
| This is intended to measure changes in performance of the local working |
| copy layer, *only*. These results are *not* generally true for everyone. |
| |
| Charts of this data are available at http://svn-qavm.apache.org/charts/" |
| |
| if [ -z "$SVNBENCH_SUMMARY_ONLY" ]; then |
| batch $al $as $N |
| batch $bl $bs $N |
| batch $cl $cs $N |
| else |
| echo "(not running benchmarks, just printing results on record.)" |
| fi |
| |
| echo "" |
| echo "Averaged-total results across all runs:" |
| echo "---------------------------------------" |
| echo "" |
| "$benchmark" "--db-path=$db" \ |
| compare "$SVN_A_NAME" "$SVN_B_NAME@$SVN_B_REV" |
| |
| echo "" |
| echo "" |
| echo "Above totals split into separate <dir-levels>x<dir-spread> runs:" |
| echo "----------------------------------------------------------------" |
| echo "" |
| |
| for lvlspr in "${al}x${as}" "${bl}x${bs}" "${cl}x${cs}"; do |
| "$benchmark" "--db-path=$db" \ |
| compare "$SVN_A_NAME,$lvlspr" "$SVN_B_NAME@$SVN_B_REV,$lvlspr" |
| echo "" |
| done |
| |
| echo "" |
| echo "" |
| echo "More detail:" |
| echo "------------" |
| echo "" |
| |
| for lvlspr in "${al}x${as}" "${bl}x${bs}" "${cl}x${cs}" "" ; do |
| "$benchmark" "--db-path=$db" show "$SVN_A_NAME,$lvlspr" |
| echo -- |
| "$benchmark" "--db-path=$db" show "$SVN_B_NAME@$SVN_B_REV,$lvlspr" |
| echo -- |
| "$benchmark" "--db-path=$db" \ |
| compare -v "$SVN_A_NAME,$lvlspr" "$SVN_B_NAME@$SVN_B_REV,$lvlspr" |
| echo "" |
| echo "" |
| done |
| |
| echo "" |
| echo "Had started at $started," |
| echo " done at $(date)" |
| } 2>&1 | tee results.txt |
| |