#!/usr/bin/env bash

flush_caches() {
  sync
  echo 3 > /proc/sys/vm/drop_caches
}

create_temp_repo() {
  rm -rf $1/tmp
  flush_caches
  $SVNADMIN create $1/tmp --compatible-version=$2
}

BASE_LIST="/mnt/ssd /run/shm"
REPO_LIST="ruby-f6-nonpacked ruby-f7-nonpacked ruby-f6-packed ruby-f7-packed bsd-f6-packed bsd-f7-packed"
PREFIX_LIST="http://localhost/svn svn://localhost file:///files"
SVNADMIN=/home/stefan/develop/trunk-commit2/subversion/svnadmin/svnadmin
SVN=/home/stefan/develop/trunk-commit2/subversion/svn/svn
TIMEFORMAT=$'%3R\t%3U\t%3S'
ME=`basename $0`
LOG=${ME%.sh}.log

echo "

Load Ruby
" >> $LOG
$SVNADMIN dump /mnt/ssd/f7-test/ruby-f7-packed -r0:5000 -M 4096 2>/dev/null > /run/shm/dump
for base in $BASE_LIST
do
  for ver in 1.8 1.9
  do
    printf "$base\t$ver\tslow\t" >> $LOG
    create_temp_repo $base $ver
    (time $SVNADMIN load $base/tmp -q < /run/shm/dump) 2>>$LOG   

    printf "$base\t$ver\tmedium\t" >> $LOG
    create_temp_repo $base $ver
    (time $SVNADMIN load $base/tmp -q -M 256 < /run/shm/dump) 2>>$LOG   

    printf "$base\t$ver\tfast\t" >> $LOG
    create_temp_repo $base $ver
    (time eatmydata $SVNADMIN load $base/tmp -q -M 1024 < /run/shm/dump) 2>>$LOG   
  done
done

echo "

Load BSD
" >> $LOG
$SVNADMIN dump /mnt/ssd/f7-test/bsd-f7-packed -r0:5000 -M 4096 2>/dev/null > /run/shm/dump
for base in $BASE_LIST
do
  for ver in 1.8 1.9
  do
    printf "$base\t$ver\tslow\t" >> $LOG
    create_temp_repo $base $ver
    (time $SVNADMIN load $base/tmp -q < /run/shm/dump) 2>>$LOG   

    printf "$base\t$ver\tmedium\t" >> $LOG
    create_temp_repo $base $ver
    (time $SVNADMIN load $base/tmp -q -M 256 < /run/shm/dump) 2>>$LOG   

    printf "$base\t$ver\tfast\t" >> $LOG
    create_temp_repo $base $ver
    (time eatmydata $SVNADMIN load $base/tmp -q -M 1024 < /run/shm/dump) 2>>$LOG   
  done

  rm -rf $base/tmp
done
rm /run/shm/dump


