The unified diff between revisions [9b09f962..] and [84fd07d7..] is displayed below. It can also be downloaded as a raw diff.

#
#
# add_file "PROCEDURE"
#  content [cb945ce991124872bc9e32660646774952f391d1]
#
============================================================
--- PROCEDURE	cb945ce991124872bc9e32660646774952f391d1
+++ PROCEDURE	cb945ce991124872bc9e32660646774952f391d1
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+# A potential test procedure. This is suitable even for candidates that don't
+# have migration code (such as limited-length forward deltas, which can populate
+# a database for testing using pull).
+#
+# MTO_HEAD - normal monotone mainline
+# MTO_TEST - a test binary
+# SOURCE_DB - the source dataset
+# TEST_BRANCH - a source dataset branch to test checkouts (such as n.v.m)
+# REVS_PER_SYNC - how many revs to sync at a time
+
+# SEED - a random seed
+
+# PURGE - get a cold cache
+
+# This assumes appropriate hook files etc.
+
+echo '"Migrating"' $SOURCE_DB via pull
+
+# TODO: --quiet?
+$MTO_TEST -d test.db db init
+$MTO_HEAD -d $SOURCE_DB serve \* &
+$MTO_TEST -d test.db pull localhost \*
+kill %1
+
+echo "Producing incremental pull test db"
+
+rm -f serve.db
+rm -f pull.db
+./on_the_fly.py test.db $REVS_PER_SYNC $MTO_TEST $MTO_TEST $SEED
+
+mv pull.db incremental.db
+
+echo "=== Disk usage, incremental ==="
+du incremental.db
+du -a incremental.db
+
+$MTO_TEST -d cleanpull.db db init
+$PURGE
+$MTO_TEST 2>&1 > /dev/null
+
+time $MTO_TEST -d incremental.db serve \* &
+echo "=== Clean pull timing 1, cold ==="
+time $MTO_TEST -d cleanpull.db pull localhost \*
+echo "=== Clean serve timing 1, cold ==="
+kill %1
+
+rm cleanpull.db
+$MTO_TEST -d cleanpull.db db init
+time $MTO_TEST -d incremental.db serve \* &
+echo "=== Clean pull timing 1, warm ==="
+time $MTO_TEST -d cleanpull.db pull localhost \*
+echo "=== Clean serve timing 1, warm ==="
+kill %1
+
+echo "=== Disk usage, cleanpull ==="
+du cleanpull.db
+du -a cleanpull.db.db
+
+echo "Checkout timings"
+
+rm -rf test_checkout
+$PURGE
+$MTO_TEST 2>&1 > /dev/null
+echo "=== Checkout incremental, cold ==="
+time $MTO_TEST -d incremental.db co -b $TEST_BRANCH test_checkout
+rm -rf test_checkout
+echo "=== Checkout incremental, warm ==="
+time $MTO_TEST -d incremental.db co -b $TEST_BRANCH test_checkout
+rm -rf test_checkout
+
+$PURGE
+$MTO_TEST 2>&1 > /dev/null
+echo "=== Checkout cleanpull, cold ==="
+time $MTO_TEST -d cleanpull.db co -b $TEST_BRANCH test_checkout
+rm -rf test_checkout
+echo "=== Checkout cleanpull, warm ==="
+time $MTO_TEST -d cleanpull.db co -b $TEST_BRANCH test_checkout
+rm -rf test_checkout
+
+echo "Log timings"
+HEAD=`$MTO_TEST -d cleanpull.db automate heads $TEST_BRANCH | head -1`
+
+$PURGE
+$MTO_TEST 2>&1 > /dev/null
+echo "=== log --diffs --last=40 cleanpull, cold ==="
+time $MTO_TEST -d cleanpull.db log -r $HEAD -b $TEST_BRANCH --last=40 --diffs > /dev/null
+echo "=== log --diffs --last=40 cleanpull, warm ==="
+time $MTO_TEST -d cleanpull.db log -r $HEAD -b $TEST_BRANCH --last=40 --diffs > /dev/null
+
+$PURGE
+$MTO_TEST 2>&1 > /dev/null
+echo "=== log --diffs --last=40 incremental, cold ==="
+time $MTO_TEST -d incremental.db log -r $HEAD -b $TEST_BRANCH --last=40 --diffs > /dev/null
+echo "=== log --diffs --last=40 incremental, warm ==="
+time $MTO_TEST -d incremental.db log -r $HEAD -b $TEST_BRANCH --last=40 --diffs > /dev/null