You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Jani Averbach <ja...@cc.jyu.fi> on 2003/11/03 22:43:28 UTC
[PATCH] tools/test-script/svntest: test ra_dav also and use conditionally ramdisk
On 2003-10-31 12:03+0100, Branko ??ibej wrote:
> I still don't understand why you want to rebuild httpd. You don't plan
> to test against HEAD, do you?
I am testing against:
Head of APR_0_9_BRANCH, APU_0_9_BRANCH and APACHE_2_0_BRANCH.
Because httpd depends of apr and apr-util, and subversion use mod_dav,
I don't see why I should not rebuild httpd if apr or apr-util has been
changed.
> I still strongly suggest against putting the ramdisk logic in the
> svntest files. Instead, move obj-sh and obj-st to a subdirectory (say,
> obj/st and obj/sh), then just mount obj to tempfs in a wrapper script.
The logic is isolated in to function in svntest-config.sh (and there
is one small support for directory rebuild logic in svntest-run.sh).
The problem is that I don't want build the whole obj tree on ramdisk,
and there should be an extra logic for rebuilding subversion/test.
see this Philip Martin's post:
http://www.contactor.se/~dast/svn/archive-2003-02/0068.shtml
and the patch.
> That was about 250 Watts, at a guess. :-)
Here is the patch, I have used it few times and it seems to work.
Now we can drag a searchlight, powerfull of thousands of candelas, at
the stage and start hunting black points.
Expecially I would like receive comments about usage of log files
(I am a little bit confused about them).
BR, Jani
Log:
This patch add support for ra_dav testing, and support for
putting test directory on ramdisk. Apr, Apr-util and httpd will
be rebuilt when necessary.
tools/test-script/svntest/svntest-rebuild-generic.sh is attachment.
Modified:
tools/test-scripts/svntest/svntest.sh
Check essential config variables
Rebuilding of apr, apr-util and httpd
Run ra_dav test
Send out result emails of ra_dav also
tools/test-scripts/svntest/svntest-update.sh
UPDATE_REBUILD_FLAG, new function
Update httpd also
tools/test-scripts/svntest/svntest-run.sh
Use SVNBIN instead of SVN for svn binary
Added ra_dav check
Added logic to re-initialize $OBJ/subversion/tests
directory when we are using ramdisk
tools/test-scripts/svntest/svntest-config.sh
Added names for project
Added MAKE_OPTS, RAMDISK, RA_DAV_CHECK_ARGS
Changed $BIN (==/usr/)binto USRBIN, added BIN (/bin)
OPTBIN (==/opt/bin), removed TOPBIN
Added MOUNT, UMOUNT and TOUCH
Changed TAIL to TAIL_100 (The woe of Coreutils 5.0!)
Added functions mount_ramdisk, umount_ramdisk
tools/test-scripts/svntest/svntest-rebuild.sh
Added logic to support ramdisk
Added install step
tools/test-scripts/svntest/svntest-sendmail.sh
Changed SVN to SVNBIN
tools/test-scripts/svntest/README
Documentation for changes
tools/test-scripts/svntest/svntest-rebuild-generic.sh
New file for building apr, apr-util and httpd.
Index: tools/test-scripts/svntest/svntest.sh
===================================================================
--- tools/test-scripts/svntest/svntest.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest.sh (working copy)
@@ -5,6 +5,27 @@
# Source the configuration file.
. "$EXEC_PATH/svntest-config.sh"
+
+test -z $TEST_ROOT && exit 1
+test -z $INST_DIR && exit 1
+test -z $SVN_REPO && exit 1
+test -z $APR && exit 1
+test -z $APR_REPO && exit 1
+test -z $APU && exit 1
+test -z $APU_REPO && exit 1
+test -z $HTTPD && exit 1
+test -z $HTTPD_REPO && exit 1
+test -z $RAMDISK && exit 1
+test -z $RA_DAV_CHECK_ARGS && exit 1
+test -z $LOG_FILE_PREFIX && exit 1
+test -z $CONFIG_PREFIX && exit 1
+test -z $OBJ_STATIC && exit 1
+test -z $OBJ_SHARED && exit 1
+test -z $FROM && exit 1
+test -z $TO && exit 1
+test -z $ERROR_TO && exit 1
+test -z $REPLY_TO && exit 1
+
# Remove log files from previous runs
$RM_F "$LOG_FILE_PREFIX.update"
$RM_F "$LOG_FILE_PREFIX.shared"
@@ -16,6 +37,30 @@
exit
}
+# conditionally rebuild apr, apr-util and httpd
+$EXEC_PATH/svntest-rebuild-generic.sh "$APR" "$APU" "$MAKE_OPTS" || {
+ $EXEC_PATH/svntest-sendmail.sh "update" "FAIL"
+ exit
+}
+$EXEC_PATH/svntest-rebuild-generic.sh "$APU" "$HTTPD" "$MAKE_OPTS" || {
+ $EXEC_PATH/svntest-sendmail.sh "update" "FAIL"
+ exit
+}
+# httpd won't build with parallel make
+$EXEC_PATH/svntest-rebuild-generic.sh "$HTTPD" "" "" || {
+ $EXEC_PATH/svntest-sendmail.sh "update" "FAIL"
+ exit
+}
+
+# add rebuild log files to the main log file
+test -f "$LOG_FILE_PREFIX.rebuild-$APR" && \
+ $CAT "$LOG_FILE_PREFIX.rebuild-$APR" >> "$LOG_FILE_PREFIX.update"
+test -f "$LOG_FILE_PREFIX.rebuild-$APU" && \
+ $CAT "$LOG_FILE_PREFIX.rebuild-$APU" >> "$LOG_FILE_PREFIX.update"
+test -f "$LOG_FILE_PREFIX.rebuild-$HTTPD" && \
+ $CAT "$LOG_FILE_PREFIX.rebuild-$HTTPD" >> "$LOG_FILE_PREFIX.update"
+
+
# Prime the shared and static log files
echo >> "$LOG_FILE_PREFIX.update"
$CP_F "$LOG_FILE_PREFIX.update" "$LOG_FILE_PREFIX.shared"
@@ -30,6 +75,9 @@
$NICE $EXEC_PATH/svntest-run.sh "shared" "ra_svn"
test $? = 0 && shared_ra_svn="PASS" || shared_ra_svn="FAIL"
+
+ $NICE $EXEC_PATH/svntest-run.sh "shared" "ra_dav"
+ test $? = 0 && shared_ra_dav="PASS" || shared_ra_dav="FAIL"
}
# Test static
@@ -41,6 +89,9 @@
$NICE $EXEC_PATH/svntest-run.sh "static" "ra_svn"
test $? = 0 && static_ra_svn="PASS" || static_ra_svn="FAIL"
+
+ $NICE $EXEC_PATH/svntest-run.sh "static" "ra_dav"
+ test $? = 0 && static_ra_dav="PASS" || static_ra_dav="FAIL"
}
# Send out the mails
@@ -49,6 +100,7 @@
test $shared = "PASS" && {
$EXEC_PATH/svntest-sendmail.sh "shared" "ra_local" "$shared_ra_local"
$EXEC_PATH/svntest-sendmail.sh "shared" "ra_svn" "$shared_ra_svn"
+ $EXEC_PATH/svntest-sendmail.sh "shared" "ra_dav" "$shared_ra_dav"
}
test $static = "FAIL" && \
@@ -56,4 +108,5 @@
test $static = "PASS" && {
$EXEC_PATH/svntest-sendmail.sh "static" "ra_local" "$static_ra_local"
$EXEC_PATH/svntest-sendmail.sh "static" "ra_svn" "$static_ra_svn"
+ $EXEC_PATH/svntest-sendmail.sh "static" "ra_dav" "$static_ra_dav"
}
Index: tools/test-scripts/svntest/svntest-update.sh
===================================================================
--- tools/test-scripts/svntest/svntest-update.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-update.sh (working copy)
@@ -8,34 +8,68 @@
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.update"
-# Update apr, apr-util, httpd-2.0
-START "update apr" "Updating APR..."
+CVS_UPDATE_REGEXP_1='^[UPARMC] \(\(docs\)\|\(STATUS\)\|\(CHANGES\)\)'
+CVS_UPDATE_REGEXP_2='^[UPARMC] [A-Za-z]'
+
+#
+# If update status file contains already
+# '0' (== don't rebuild) then update value,
+# otherwise, honor current 'rebuild needed' (1)
+# value, and don't update it because
+# current rebuild value could be '0'
+UPDATE_REBUILD_FLAG () {
+ local CVS_UP_STATUS="$1"
+ local RB_FILE="$2"
+
+ if test ! -f "$RB_FILE"
+ then
+ echo "1" > "$RB_FILE"
+ elif test 0 -eq `$CAT "$RB_FILE"`
+ then
+ if test "$CVS_UP_STATUS" -eq 0
+ then
+ echo "1" > "$RB_FILE"
+ else
+ echo "0" > "$RB_FILE"
+ fi
+ fi
+}
+
+# Update apr, apr-util, httpd
+START "update $APR" "Updating $APR..."
cd $APR_REPO && $CVS -f -q -z6 update -d -P > "$TEST_ROOT/LOG_up_apr" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_up_apr"
FAIL
}
PASS
+$GREP -qv "$UPDATE_REGEXP_1" "$TEST_ROOT/LOG_up_apr" | $GREP -q "$UPDATE_REGEXP_2" > /dev/null 2>&1
+UPDATE_REBUILD_FLAG $? $APR_REPO.rb
-START "update apr-util" "Updating APR-UTIL..."
+
+START "update $APU" "Updating $APU..."
cd $APU_REPO && $CVS -f -q -z6 update -d -P > "$TEST_ROOT/LOG_up_apu" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_up_apu"
FAIL
}
PASS
+$GREP -qv "$UPDATE_REGEXP_1" "$TEST_ROOT/LOG_up_apu" | $GREP -q "$UPDATE_REGEXP_2" > /dev/null 2>&1
+UPDATE_REBUILD_FLAG $? $APU_REPO.rb
-#START "update httpd-2.0" "Updating Apache..."
-#cd $HTTPD_REPO && $CVS -f -q -z6 update -d -P > "$TEST_ROOT/LOG_up_httpd" 2>&1
-#test $? = 0 || {
-# FAIL_LOG "$TEST_ROOT/LOG_up_httpd"
-# FAIL
-#}
-#PASS
+START "update $HTTPD" "Updating $HTTPD..."
+cd $HTTPD_REPO && $CVS -f -q -z6 update -d -P > "$TEST_ROOT/LOG_up_httpd" 2>&1
+test $? = 0 || {
+ FAIL_LOG "$TEST_ROOT/LOG_up_httpd"
+ FAIL
+}
+PASS
+$GREP -qv "$UPDATE_REGEXP_1" "$TEST_ROOT/LOG_up_httpd" | $GREP -q "$UPDATE_REGEXP_2" > /dev/null 2>&1
+UPDATE_REBUILD_FLAG $? $HTTPD_REPO.rb
# Update svn
START "update subversion" "Updating Subversion..."
-cd $SVN_REPO && $SVN update > "$TEST_ROOT/LOG_up_svn" 2>&1
+cd $SVN_REPO && $SVNBIN update > "$TEST_ROOT/LOG_up_svn" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_up_svn"
FAIL
Index: tools/test-scripts/svntest/svntest-run.sh
===================================================================
--- tools/test-scripts/svntest/svntest-run.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-run.sh (working copy)
@@ -10,7 +10,7 @@
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE.$RA_TYPE"
TEST="`$GUESS` $BUILD_TYPE $RA_TYPE"
-REV="`$SVN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
+REV="`$SVNBIN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
# Prime and initialize the log file
$CP_F "$LOG_FILE_PREFIX.$BUILD_TYPE" $LOG_FILE
@@ -25,7 +25,7 @@
static) OBJ="$OBJ_STATIC" ;;
*) echo "$BUILD_TYPE: unknown build type"
echo "$BUILD_TYPE: unknown build type" >> $LOG_FILE
- FAIL ;;
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests";;
esac
PASS
@@ -34,27 +34,61 @@
case $RA_TYPE in
ra_local) CHECK_TARGET="check" ;;
ra_svn) CHECK_TARGET="svncheck" ;;
+ ra_dav) CHECK_TARGET="davcheck" ;;
*) echo "$RA_TYPE: unknown RA type"
echo "$RA_TYPE: unknown RA type" >> $LOG_FILE
- FAIL ;;
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests";;
esac
PASS
# Check that the object directory exists, and that it contains the
# necessary executable files
START "check object directory" "Checking object directory..."
-test -d $TEST_ROOT/$OBJ || FAIL; PASS
+test -d $TEST_ROOT/$OBJ || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svn executable" "Checking svn executable..."
-test -x $TEST_ROOT/$OBJ/subversion/clients/cmdline/svn || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/clients/cmdline/svn || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svnadmin executable" "Checking svnadmin executable..."
-test -x $TEST_ROOT/$OBJ/subversion/svnadmin/svnadmin || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/svnadmin/svnadmin || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svnlook executable" "Checking svnlook executable..."
-test -x $TEST_ROOT/$OBJ/subversion/svnlook/svnlook || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/svnlook/svnlook || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svnserve executable" "Checking svnserve executable..."
-test -x $TEST_ROOT/$OBJ/subversion/svnserve/svnserve || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/svnserve/svnserve || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svnversion executable" "Checking svnversion executable..."
-test -x $TEST_ROOT/$OBJ/subversion/svnversion/svnversion || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/svnversion/svnversion || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+# Build has initially mounted ramdisk for us, but this
+# script will at the end to do unmount, so check if it is mounted or not
+# and if it is not, do initial fire up for it
+if test "xyes" == "x$RAMDISK";
+then
+ test -x $TEST_ROOT/$OBJ/subversion/tests/clients || {
+ START "re-initializing ramdisk" "Re-initializing ramdisk"
+ mount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests" >> "$LOG_FILE" 2>&1 || FAIL
+ cd "$TEST_ROOT/$OBJ"
+ $MAKE mkdir-init > "$LOG_FILE.ramdisk" 2>&1
+ test $? = 0 || {
+ FAIL_LOG "$LOG_FILE.ramdisk"
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ }
+ $MAKE $MAKE_OPTS > "$LOG_FILE.ramdisk" 2>&1
+ test $? = 0 || {
+ FAIL_LOG "$LOG_FILE.ramdisk"
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ }
+ PASS
+ }
+fi
+
# Prepare the server
case $CHECK_TARGET in
check)
@@ -65,16 +99,28 @@
$TEST_ROOT/$OBJ/subversion/svnserve/svnserve -d \
-r $TEST_ROOT/$OBJ/subversion/tests/clients/cmdline \
>> $LOG_FILE 2>&1
- test $? = 0 || FAIL
+ test $? = 0 || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
PASS
START "get svnserve pid" "Getting svnserve process ID..."
USER_NAME="`$ID_UN`"
SVNSERVE_PID="`$PS_U $USER_NAME | $GREP '[s]vnserve' \
| $SED -e 's/^ *//' | $CUT -f 1 -d ' ' -s`"
- test -n "$SVNSERVE_PID" || FAIL
+ test -n "$SVNSERVE_PID" || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
PASS
;;
+ davcheck)
+ START "run $HTTPD" "Running $HTTPD..."
+ $CP_F "$TEST_ROOT/$HTTPD.conf" "$INST_DIR/$HTTPD/conf/httpd.conf" || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ $CP_F "$TEST_ROOT/mod_dav_svn_$BUILDTYPE.conf" "$INST_DIR/$HTTPD/conf/mod_dav_svn.conf" || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ "$INST_DIR/$HTTPD/bin/apachectl" start \
+ >> $LOG_FILE 2>&1
+ test $? = 0 || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ PASS
+ CHECK_ARGS="$RA_DAV_CHECK_ARGS"
+ ;;
esac
# Kill the server
@@ -85,17 +131,32 @@
;;
svncheck)
START "kill svnserve" "Stopping svnserve..."
- $KILL $SVNSERVE_PID || FAIL
+ $KILL $SVNSERVE_PID || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
PASS
;;
+ davcheck)
+ START "kill $HTTPD" "Stopping $HTTPD..."
+ "$INST_DIR/$HTTPD/bin/apachectl" stop || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ PASS
+ ;;
esac
+
+ umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
}
# Test
START "make $CHECK_TARGET" "Testing $RA_TYPE..."
CHECK_LOG_FILE="$TEST_ROOT/LOG_svn_check_${BUILD_TYPE}_${RA_TYPE}"
cd $TEST_ROOT/$OBJ
-$MAKE $CHECK_TARGET > $CHECK_LOG_FILE 2>&1
+if test $CHECK_TARGET == davcheck ;
+then
+ # At the moment we can't give repository url with
+ # make davcheck, so use check & BASE_URL here for the present
+ $MAKE check "$CHECK_ARGS" > $CHECK_LOG_FILE 2>&1
+else
+ $MAKE $CHECK_TARGET > $CHECK_LOG_FILE 2>&1
+fi
test $? = 0 || {
FAIL_LOG $CHECK_LOG_FILE
$CP "tests.log" "$LOG_FILE_PREFIX.log.$BUILD_TYPE.$RA_TYPE.$REV.failed" \
@@ -108,3 +169,4 @@
PASS
kill_svnserve
+
Index: tools/test-scripts/svntest/svntest-config.sh
===================================================================
--- tools/test-scripts/svntest/svntest-config.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-config.sh (working copy)
@@ -3,16 +3,42 @@
#
# Root of the test tree
#
-TEST_ROOT="/home/brane/svn"
+TEST_ROOT="/data/svntest"
+# Installation path, everything under that is considered
+# to be temporary
+INST_DIR="$TEST_ROOT/inst"
+
#
-# Repository paths
+# Repository paths and projects name
#
-SVN_REPO="$TEST_ROOT/repo"
-APR_REPO="$TEST_ROOT/apr"
-APU_REPO="$TEST_ROOT/apr-util"
-HTTPD_REPO="$TEST_ROOT/httpd-2.0"
+# installation paths are expected to be:
+# '$INST_DIR/<proj_name>, so take care of your
+# config.<proj_name> files.
+# Everything in those directories will be wiped out
+# by installation procedure. See svntest-rebuild-generic.sh
+SVN="svn"
+SVN_REPO="$TEST_ROOT/$SVN"
+
+APR="apr-0.9"
+APR_REPO="$TEST_ROOT/$APR"
+
+APU="apr-util-0.9"
+APU_REPO="$TEST_ROOT/$APU"
+
+HTTPD="httpd-2.0"
+HTTPD_REPO="$TEST_ROOT/$HTTPD"
+
+
+MAKE_OPTS="-j4"
+
+# RAMDISK=<yes|no>
+RAMDISK=no
+
+# This should correspond with your httpd Listen directive
+RA_DAV_CHECK_ARGS="BASE_URL=http://localhost:42024"
+
#
# Log file name prefix
#
@@ -21,7 +47,7 @@
#
# Configure script prefix and object directory names
#
-CONFIG_PREFIX="config.solaris"
+CONFIG_PREFIX="config"
OBJ_STATIC="obj-st"
OBJ_SHARED="obj-sh"
@@ -36,40 +62,47 @@
#
# Path to utilities
#
-BIN="/usr/bin"
+BIN="/bin"
+USRBIN="/usr/bin"
LOCALBIN="/usr/local/bin"
+OPTBIN="/opt/bin"
# Statically linked svn binary (used for repository updates)
-SVN="$TEST_ROOT/inst/bin/svn"
+SVNBIN="$TEST_ROOT/static/bin/svn"
# CVS binary (used for updating APR & friends)
-CVS="$LOCALBIN/cvs"
+CVS="$USRBIN/cvs"
# Path to config.guess (used for generating the mail subject line)
-GUESS="/usr/local/share/libtool/config.guess"
+GUESS="/usr/share/libtool/config.guess"
# Path to sendmail
-SENDMAIL="/usr/lib/sendmail"
+SENDMAIL="/usr/sbin/sendmail"
# Other stuff
-BASE64_E="$BIN/base64 -e - -"
+BASE64_E="$OPTBIN/base64 -e - -"
CAT="$BIN/cat"
-CP="$BIN/cp"
-CP_F="$BIN/cp -f"
-CUT="$BIN/cut"
+CP="$USRBIN/cp"
+CP_F="$USRBIN/cp -f"
+CUT="$USRBIN/cut"
+DATE="$BIN/date"
GREP="$BIN/grep"
GZIP_C="$BIN/gzip -9c"
-ID_UN="$BIN/id -un"
-KILL="$BIN/kill"
-MAKE="$LOCALBIN/make"
-MKDIR="$BIN/mkdir"
-NICE="$BIN/nice"
-PS_U="$TOPBIN/ps -u"
+ID_UN="$USRBIN/id -un"
+KILL="$USRBIN/kill"
+MAKE="$USRBIN/make"
+MKDIR="$USRBIN/mkdir"
+MKDIR_P="$USRBIN/mkdir -p"
+MOUNT="$BIN/mount"
+NICE="$USRBIN/nice"
+PS_U="$BIN/ps -u"
RM="$BIN/rm"
RM_F="$BIN/rm -f"
RM_RF="$BIN/rm -rf"
-SED="$BIN/sed"
-TAIL="$BIN/tail"
+SED="$USRBIN/sed"
+TAIL_100="$USRBIN/tail -n 100"
+TOUCH="$BIN/touch"
+UMOUNT="$BIN/umount"
#
# Helper functions
@@ -85,7 +118,7 @@
# Test failed
FAIL() {
echo "FAIL: $TST" >> $LOG_FILE
- test -n "$1" && eval "$1" # Run cleanup code
+ test -n "$1" && eval "$1" "$@" # Run cleanup code
exit 1
}
@@ -98,7 +131,7 @@
FAIL_LOG() {
echo >> $LOG_FILE
echo "Last 100 lines of the log file follow:" >> $LOG_FILE
- $TAIL -100 "$1" >> $LOG_FILE 2>&1
+ $TAIL_100 "$1" >> $LOG_FILE 2>&1
if [ "x$REV" = "x" ]
then
SAVED_LOG="$1.failed"
@@ -108,3 +141,37 @@
$CP "$1" "$SAVED_LOG" >> $LOG_FILE 2>&1
echo "Complete log saved in $SAVED_LOG" >> $LOG_FILE
}
+
+# Mount ramdisk conditionally
+# check that
+# i) RAMDISK is defined
+# ii) Ramdisk isn't already mounted
+mount_ramdisk() {
+ local mount_dir="$1"
+ if test "xyes" == "x$RAMDISK";
+ then
+ test -z "$mount_dir" && return 1
+
+ test -f "$mount_dir/.ramdisk" && {
+ echo "Warning: ramdisk exists"
+ return 0
+ }
+
+ $MOUNT "$mount_dir" || return 1
+ $TOUCH "$mount_dir/.ramdisk" || return 1
+ fi
+ return 0
+}
+
+umount_ramdisk() {
+ local mount_dir="$1"
+ if test "xyes" == "x$RAMDISK";
+ then
+ test -z "$mount_dir" && return
+
+ test -f "$mount_dir/.ramdisk" && {
+ $UMOUNT "$mount_dir" >> /dev/null 2>&1
+ }
+ fi
+}
+
Index: tools/test-scripts/svntest/svntest-rebuild.sh
===================================================================
--- tools/test-scripts/svntest/svntest-rebuild.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-rebuild.sh (working copy)
@@ -9,7 +9,7 @@
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE"
BUILD="`$GUESS` $BUILD_TYPE"
-REV="`$SVN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
+REV="`$SVNBIN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
# Initialize the log file
echo "BUILD: Revision $REV on $BUILD" >> $LOG_FILE
@@ -28,8 +28,10 @@
# Create the object directory
START "create object directory" "Creating object directory..."
-$RM_RF $TEST_ROOT/$OBJ >> $LOG_FILE 2>&1 || FAIL
-$MKDIR $TEST_ROOT/$OBJ >> $LOG_FILE 2>&1 || FAIL
+$RM_RF "$TEST_ROOT/$OBJ" >> $LOG_FILE 2>&1 || FAIL
+$MKDIR "$TEST_ROOT/$OBJ" >> $LOG_FILE 2>&1 || FAIL
+$MKDIR_P "$TEST_ROOT/$OBJ/subversion/tests" >> $LOG_FILE 2>&1 || FAIL
+mount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests" >> $LOG_FILE 2>&1 || FAIL
PASS
# Configure
@@ -43,16 +45,29 @@
> "$TEST_ROOT/LOG_svn_configure_$BUILD_TYPE" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_svn_configure_$BUILD_TYPE"
- FAIL
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
}
PASS
# Build
START "build" "Building..."
cd $TEST_ROOT/$OBJ
-$MAKE > "$TEST_ROOT/LOG_svn_build_$BUILD_TYPE" 2>&1
+$MAKE $MAKE_OPTS > "$TEST_ROOT/LOG_svn_build_$BUILD_TYPE" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_svn_build_$BUILD_TYPE"
- FAIL
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
}
PASS
+
+
+# Install (bc mod_dav_svn.so)
+START "install" "Installing..."
+cd $TEST_ROOT/$OBJ
+$RM_RF "$INST_DIR/$SVN"
+$MAKE install > "$TEST_ROOT/LOG_svn_install_$BUILD_TYPE" 2>&1
+test $? = 0 || {
+ FAIL_LOG "$TEST_ROOT/LOG_svn_build_$BUILD_TYPE"
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+}
+PASS
+
Index: tools/test-scripts/svntest/svntest-sendmail.sh
===================================================================
--- tools/test-scripts/svntest/svntest-sendmail.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-sendmail.sh (working copy)
@@ -11,7 +11,7 @@
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE"
TEST="`$GUESS` $BUILD_TYPE"
-REV="`$SVN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
+REV="`$SVNBIN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
test -z "$RA_TYPE" || {
LOG_FILE="$LOG_FILE.$RA_TYPE"
TEST="$TEST $RA_TYPE"
Index: tools/test-scripts/svntest/README
===================================================================
--- tools/test-scripts/svntest/README (revision 7624)
+++ tools/test-scripts/svntest/README (working copy)
@@ -3,21 +3,72 @@
1) Read the INSTALL (http://svn.collab.net/repos/svm/trunk/INSTALL)
file, especially the sections about bootstrapping from a tarball
- and getting the latest APR, APR-UTIL and httpd-2.0 sources.
- Check out and compile the latest Subversion.
+ and getting the latest APR-0.9, APR-UTIL-0.9 and httpd-2.0 sources.
+ Check out and compile the latest Subversion. You could easily run
+ svntest.sh against APR/APR-UTIL 1.0 and HTTPD 2.1 branches, just
+ checkout corresponding repositories, and edit svntest-config.sh.
2) Copy the svntest scripts from trunk/tools/test-scripts/svntest to
somewhere outside the repository. Then read and modify
svntest-config.sh to reflect your local installation. Take special
- care about program locations and e-mail addresses.
+ care about program locations, program installation locations and
+ e-mail addresses.
+ Also notice that this test script will wipe out following paths
+ during rebuilding:
+ $INST_DIR/<proj_name>, ie. with present configuration the paths are:
+ /home/brane/svn/inst/{apr-0.9,apr-util-0.9,httpd-2.0,svn}
+
3) Create one or more scripts that configure Subversion in different
ways (e.g., configure.shared, configure.static). Here's the script
I'm using for static builds on Solaris 7:
- #!/bin/sh
- env CC='gcc' \
- "../repo/configure" \
+ config.apr-0.9:
+ #!/bin/sh
+
+ "../apr-0.9/configure" \
+ "--prefix=/home/brane/svn/inst/apr-0.9" \
+ "--with-pic" \
+ "$@"
+
+
+ config.apr-util-0.9:
+ #!/bin/sh
+
+ "../apr-util-0.9/configure" \
+ "--prefix=/home/brane/svn/inst/apr-util-0.9" \
+ "--with-apr=/home/brane/svn/inst/apr-0.9" \
+ "--with-pic" \
+ "--with-dbm=db4" \
+ "--with-berkeley-db" \
+ "--with-expat=/usr" \
+ "$@"
+
+
+ config.httpd-2.0:
+ #!/bin/sh
+
+ CURR_WD="`pwd`"
+ cd ../httpd-2.0
+
+ "./buildconf" \
+ "--with-apr=/home/brane/svn/apr-0.9" \
+ "--with-apr-util=/home/brane/svn/apr-util-0.9"
+
+ cd "$CURR_WD"
+
+ "../httpd-2.0/configure" \
+ "--prefix=/home/brane/svn/inst/httpd-2.0" \
+ "--with-apr=/home/brane/svn/inst/apr-0.9/bin/apr-config" \
+ "--with-apr-util=/home/brane/svn/inst/apr-util-0.9/bin/apu-config" \
+ "--enable-dav" \
+ "$@"
+
+
+ config.solaris.static (for subversion):
+ #!/bin/sh
+ env CC='gcc' \
+ "../svn/configure" \
"--prefix=/home/brane/svn/inst" \
"--with-berkeley-db=/home/brane/svn/db4" \
"--disable-shared" \
@@ -27,13 +78,65 @@
static build types, but you can easily change that. If you do, also
change svntest.sh so that it tests all the different configurations.
-4) Make sure your environment (e.g., LD_LIBRARY_PATH) is set correctly
+4) Tailor your $HTTPD.conf (ie. httpd-2.0.conf) to suit
+ your needs, (easiest way to get a template for http-2.0.conf is
+ install Apache httpd at once, and after that copy installed httpd.conf, and
+ edit it). Things to change are probably:
+ i) Listen 127.0.0.1:42024
+ ii) LoadModule dav_svn_module modules/mod_dav_svn.so
+ iii) User jaa
+ Group jaa
+ v) ServerName 127.0.0.1:42024
+
+ vi) Add mod_dav_svn block:
+
+ <IfModule mod_dav_svn.c>
+ Include conf/mod_dav_svn.conf
+ </IfModule>
+
+ vii) mod_dav_svn_shared.conf for shared builds:
+ <Location /repositories>
+ DAV svn
+ SVNParentPath /home/brane/svn/obj-sh/subversion/tests/clients/cmdline/repositories
+ </Location>
+ <Location /local_tmp/repos>
+ DAV svn
+ SVNPath /home/brane/svn/obj-sh/subversion/tests/clients/cmdline/local_tmp/repos
+ </Location>
+
+ mod_dav_svn_static.conf for static builds:
+ <Location /repositories>
+ DAV svn
+ SVNParentPath /home/brane/svn/obj-st/subversion/tests/clients/cmdline/repositories
+ </Location>
+ <Location /local_tmp/repos>
+ DAV svn
+ SVNPath /home/brane/svn/obj-st/subversion/tests/clients/cmdline/local_tmp/repos
+ </Location>
+
+ Don't ever thouch config files under $INST_DIR/$HTTPD/conf, they will be overwritten by
+ the script.
+
+5) Make sure your environment (e.g., LD_LIBRARY_PATH) is set correctly
to find Berkeley DB, etc.
-5) Run svntest.sh to get the latest versions of ARP, APR-UTIL and
- Subversion, build and test all the configurations. Note that the
- scripts do not test Apache integration (yet).
+6) If you like run test against ramdisk (subversion test data will be held on ramdisk)
+ then you shuold have something like that in your /etc/fstab (in Linux system):
+ tmpfs /home/brane/svn/obj-sh/subversion/tests tmpfs defaults,user,noauto,exec,size=600m
+ tmpfs /home/brane/svn/obj-st/subversion/tests tmpfs defaults,user,noauto,exec,size=600m
+
+ and you should set RAMDISK=yes, and check mount_ramdisk and umount_ramdisk in same file.
+ See http://subversion.tigris.org/project_faq.html#ramdisk-tests for further information.
+
+7) Run svntest.sh to get the latest versions of ARP, APR-UTIL, HTTPPD and
+ Subversion, build and test all the configurations.
+8) If you like force rebuilding of some component, you could do:
+ echo "1" > $PROJ_REPO.rb, dependies are:
+ apr-util depends of apr, and httpd depends of apr and apr-util.
+ Any dependent project will be also rebuild.
+ When you run this script first time, everything will be rebuild
+ automatically.
======================================================
Need more detailed instructions? Use the Source, Luke!
--
Jani Averbach
Re: [PATCH] tools/test-script/svntest: test ra_dav also and use conditionally
ramdisk
Posted by Branko Čibej <br...@xbc.nu>.
kfogel@collab.net wrote:
>Branko Čibej <br...@xbc.nu> writes:
>
>
>>Jani Averbach wrote:
>>
>>
>>>tools/test-scripts/svntest/svntest.sh
>>> - check essential config variables
>>> - rebuilding of apr, apr-util and httpd
>>> - run ra_dav test
>>> - send out result emails of ra_dav also
>>>
>>>
>>(This is not correct log message format... :-)
>>
>>
>
>To be a little more specific:
>
>We generally put a "* " before the filename. (There are also some
>conventions about putting a colon after the filename, if there's a
>change at the "top level", or after the first sectional change, if
>that change is listed in a paren group... But that part's less
>important, and may not apply here anyway.)
>
>The "* " helps with finding the file boundaries automatically.
>
>No patch should ever be rejected because of such a minor nit, I'd hope
>:-). Jani can commit directly, so that's not an issue here.
>
>
Of course. Smileys have their uses, after all. :-) :-\ :-( etc.
--
Brane Čibej <br...@xbc.nu> http://www.xbc.nu/brane/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [PATCH] tools/test-script/svntest: test ra_dav also and use conditionally ramdisk
Posted by kf...@collab.net.
Branko Čibej <br...@xbc.nu> writes:
> Jani Averbach wrote:
> >tools/test-scripts/svntest/svntest.sh
> > - check essential config variables
> > - rebuilding of apr, apr-util and httpd
> > - run ra_dav test
> > - send out result emails of ra_dav also
>
> (This is not correct log message format... :-)
To be a little more specific:
We generally put a "* " before the filename. (There are also some
conventions about putting a colon after the filename, if there's a
change at the "top level", or after the first sectional change, if
that change is listed in a paren group... But that part's less
important, and may not apply here anyway.)
The "* " helps with finding the file boundaries automatically.
No patch should ever be rejected because of such a minor nit, I'd hope
:-). Jani can commit directly, so that's not an issue here.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [PATCH] tools/test-script/svntest: test ra_dav also and use conditionally
ramdisk
Posted by Julian Foad <ju...@btopenworld.com>.
brane@xbc.nu wrote:
> Quoting Jani Averbach <ja...@cc.jyu.fi>:
>
>>In general, if somebody has energy and will to correct my english, I
>>will be very crateful and I will not feel anyhow offended.
"grateful"
>>However I understand and confront the fact that this task is like
>>trying to bring peace on earth or trying to invent a perpetual-motion
>>machine.
>
> Both of which would be very noble, if hopless, endavours. :-)
"hopeless", "endeavours"
- Julian
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [PATCH] tools/test-script/svntest: test ra_dav also and use conditionally ramdisk
Posted by br...@xbc.nu.
Quoting Jani Averbach <ja...@cc.jyu.fi>:
> On 2003-11-04 02:14+0100, Branko ??ibej wrote:
>
> > After all, umount_ramdisk a) already checks if the
> > ramdisk was moutned and b) can extract the parameter from global state.
>
> ... indeed this is very true at the moment, so I will go with that
> path. (I also feel deep inside of me that current code is somehow a
> mess.)
At least the parts that I wrote are. :-)
> > Depends _on_, not depends _of_.
> >
> > "B is a dependency of A, therefore A depends on B".
>
> In general, if somebody has energy and will to correct my english, I
> will be very crateful and I will not feel anyhow offended.
>
> However I understand and confront the fact that this task is like
> trying to bring peace on earth or trying to invent a perpetual-motion
> machine.
Both of which would be very noble, if hopless, endavours. :-)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [PATCH] tools/test-script/svntest: test ra_dav also and use conditionally ramdisk
Posted by Jani Averbach <ja...@cc.jyu.fi>.
On 2003-11-04 02:14+0100, Branko ??ibej wrote:
> >Index: tools/test-scripts/svntest/svntest.sh
>
> Looks good. The variable checks are especially useful. I'm not too sure
> about the portability of 'test -z', though.
I don't know either, I could change them to '! -n' if this is desirable.
> You've changed most FAILs to 'FAIL umount_ramdisk ...'. Why not just put
> this logic into FAIL?
My master plan is that someday (hopefully not so far away) svntest.sh
could run all layers with static and shared build simultaneously. And this
is the reason to use an argument for FAIL, but...
> After all, umount_ramdisk a) already checks if the
> ramdisk was moutned and b) can extract the parameter from global state.
... indeed this is very true at the moment, so I will go with that
path. (I also feel deep inside of me that current code is somehow a
mess.)
> > # Root of the test tree
> > #
> >-TEST_ROOT="/home/brane/svn"
> >+TEST_ROOT="/data/svntest"
> >
> >
> If you do this, please change the references in README, too.
This slipped inside accidentally. It is echoes of my current setup, as
you could guess.
> I'd suggest using $SVN_NAME here instead of $SVN, and anologously for
> apr, apr-util and httpd.
I will do that. It makes sense, a lot.
> >-BIN="/usr/bin"
> >+BIN="/bin"
> >+USRBIN="/usr/bin"
> > LOCALBIN="/usr/local/bin"
> >+OPTBIN="/opt/bin"
>
> These changes are going to make life a living hell for me if/when I
> migrate them to other OSes; but that's my problem, I guess...
I hope you could bear these changes. =)
> >
> >
> Not if your change to use /data/svntest stays in.
It won't.
> Depends _on_, not depends _of_.
>
> "B is a dependency of A, therefore A depends on B".
In general, if somebody has energy and will to correct my english, I
will be very crateful and I will not feel anyhow offended.
However I understand and confront the fact that this task is like
trying to bring peace on earth or trying to invent a perpetual-motion
machine.
Thanks about the comments!
BR, Jani
--
Jani Averbach
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [PATCH] tools/test-script/svntest: test ra_dav also and use conditionally
ramdisk
Posted by Branko Čibej <br...@xbc.nu>.
Jani Averbach wrote:
>tools/test-scripts/svntest/svntest.sh
> - check essential config variables
> - rebuilding of apr, apr-util and httpd
> - run ra_dav test
> - send out result emails of ra_dav also
>
>
(This is not correct log message format... :-)
[...]
>Index: tools/test-scripts/svntest/svntest.sh
>===================================================================
>--- tools/test-scripts/svntest/svntest.sh (revision 7624)
>+++ tools/test-scripts/svntest/svntest.sh (working copy)
>
>
Looks good. The variable checks are especially useful. I'm not too sure
about the portability of 'test -z', though.
>Index: tools/test-scripts/svntest/svntest-update.sh
>===================================================================
>--- tools/test-scripts/svntest/svntest-update.sh (revision 7624)
>+++ tools/test-scripts/svntest/svntest-update.sh (working copy)
>
>
Looks good.
>Index: tools/test-scripts/svntest/svntest-run.sh
>===================================================================
>--- tools/test-scripts/svntest/svntest-run.sh (revision 7624)
>+++ tools/test-scripts/svntest/svntest-run.sh (working copy)
>@@ -10,7 +10,7 @@
> # Compute local vars
> LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE.$RA_TYPE"
> TEST="`$GUESS` $BUILD_TYPE $RA_TYPE"
>-REV="`$SVN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
>+REV="`$SVNBIN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
>
> # Prime and initialize the log file
> $CP_F "$LOG_FILE_PREFIX.$BUILD_TYPE" $LOG_FILE
>@@ -25,7 +25,7 @@
> static) OBJ="$OBJ_STATIC" ;;
> *) echo "$BUILD_TYPE: unknown build type"
> echo "$BUILD_TYPE: unknown build type" >> $LOG_FILE
>- FAIL ;;
>+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests";;
>
>
You've changed most FAILs to 'FAIL umount_ramdisk ...'. Why not just put
this logic into FAIL? After all, umount_ramdisk a) already checks if the
ramdisk was moutned and b) can extract the parameter from global state.
[...]
> # Check that the object directory exists, and that it contains the
> # necessary executable files
> START "check object directory" "Checking object directory..."
>-test -d $TEST_ROOT/$OBJ || FAIL; PASS
>+test -d $TEST_ROOT/$OBJ || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
>
>
Please please please please keep lines under 80 columns, please please ...
[...]
>Index: tools/test-scripts/svntest/svntest-config.sh
>===================================================================
>--- tools/test-scripts/svntest/svntest-config.sh (revision 7624)
>+++ tools/test-scripts/svntest/svntest-config.sh (working copy)
>@@ -3,16 +3,42 @@
> #
> # Root of the test tree
> #
>-TEST_ROOT="/home/brane/svn"
>+TEST_ROOT="/data/svntest"
>
>
If you do this, please change the references in README, too.
[...]
>+SVN="svn"
>+SVN_REPO="$TEST_ROOT/$SVN"
>
>
I'd suggest using $SVN_NAME here instead of $SVN, and anologously for
apr, apr-util and httpd. It's confusing that $USRBIN and $LOCALBIN refer
to directories, but $SVNBIN refers to a file.
[...]
>@@ -21,7 +47,7 @@
> #
> # Configure script prefix and object directory names
> #
>-CONFIG_PREFIX="config.solaris"
>+CONFIG_PREFIX="config"
> OBJ_STATIC="obj-st"
> OBJ_SHARED="obj-sh"
>
>@@ -36,40 +62,47 @@
> #
> # Path to utilities
> #
>-BIN="/usr/bin"
>+BIN="/bin"
>+USRBIN="/usr/bin"
> LOCALBIN="/usr/local/bin"
>+OPTBIN="/opt/bin"
>
>
[etc]
> RM_F="$BIN/rm -f"
> RM_RF="$BIN/rm -rf"
>-SED="$BIN/sed"
>-TAIL="$BIN/tail"
>+SED="$USRBIN/sed"
>+TAIL_100="$USRBIN/tail -n 100"
>+TOUCH="$BIN/touch"
>+UMOUNT="$BIN/umount"
>
>
These changes are going to make life a living hell for me if/when I
migrate them to other OSes; but that's my problem, I guess...
> #
> # Helper functions
>@@ -85,7 +118,7 @@
> # Test failed
> FAIL() {
> echo "FAIL: $TST" >> $LOG_FILE
>- test -n "$1" && eval "$1" # Run cleanup code
>+ test -n "$1" && eval "$1" "$@" # Run cleanup code
>
>
See? Put the umount_ramdisk call here, and half your diffs go away.
[...]
>Index: tools/test-scripts/svntest/svntest-rebuild.sh
>===================================================================
>--- tools/test-scripts/svntest/svntest-rebuild.sh (revision 7624)
>+++ tools/test-scripts/svntest/svntest-rebuild.sh (working copy)
>
>
Looks good, except for the comments above.
>Index: tools/test-scripts/svntest/svntest-sendmail.sh
>===================================================================
>--- tools/test-scripts/svntest/svntest-sendmail.sh (revision 7624)
>+++ tools/test-scripts/svntest/svntest-sendmail.sh (working copy)
>@@ -11,7 +11,7 @@
> # Compute local vars
> LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE"
> TEST="`$GUESS` $BUILD_TYPE"
>-REV="`$SVN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
>+REV="`$SVNBIN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
> test -z "$RA_TYPE" || {
> LOG_FILE="$LOG_FILE.$RA_TYPE"
> TEST="$TEST $RA_TYPE"
>
>
There wouldn've been no changes here at all if you hadn't renamed $SVN
to $SVNBIN...
>Index: tools/test-scripts/svntest/README
>===================================================================
>--- tools/test-scripts/svntest/README (revision 7624)
>+++ tools/test-scripts/svntest/README (working copy)
>
>
[...]
>+ Also notice that this test script will wipe out following paths
>+ during rebuilding:
>+ $INST_DIR/<proj_name>, ie. with present configuration the paths are:
>+ /home/brane/svn/inst/{apr-0.9,apr-util-0.9,httpd-2.0,svn}
>
>
Not if your change to use /data/svntest stays in. And so on in the rest
of the file.
[...]
>+8) If you like force rebuilding of some component, you could do:
>+ echo "1" > $PROJ_REPO.rb, dependies are:
>+ apr-util depends of apr, and httpd depends of apr and apr-util.
>
>
Depends _on_, not depends _of_.
"B is a dependency of A, therefore A depends on B".
--
Brane Čibej <br...@xbc.nu> http://www.xbc.nu/brane/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [PATCH] tools/test-script/svntest: test ra_dav also and use conditionally ramdisk
Posted by Jani Averbach <ja...@cc.jyu.fi>.
On 2003-11-04 00:43+0200, Jani Averbach wrote:
This patch is essentially same as previously posted, except
one changed instanse of BUILDTYPE -> BUILD_TYPE.
+ $CP_F "$TEST_ROOT/mod_dav_svn_$BUILD_TYPE.conf" "$INST_DIR/$HTTPD/conf/mod_dav_svn.conf" || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
Sorry about that.
BR, Jani
>
> Log:
>
> This patch add support for ra_dav testing, and support for
> putting test directory on ramdisk. Apr, Apr-util and httpd will
> be rebuilt when necessary.
>
> tools/test-script/svntest/svntest-rebuild-generic.sh is attachment.
>
tools/test-scripts/svntest/svntest.sh
- check essential config variables
- rebuilding of apr, apr-util and httpd
- run ra_dav test
- send out result emails of ra_dav also
tools/test-scripts/svntest/svntest-update.sh
- UPDATE_REBUILD_FLAG, new function
- update httpd also
tools/test-scripts/svntest/svntest-run.sh
- use SVNBIN instead of SVN for svn binary
- added ra_dav check
- added logic to re-initialize $OBJ/subversion/tests
directory when we are using ramdisk
tools/test-scripts/svntest/svntest-config.sh
- added names for project
- added MAKE_OPTS, RAMDISK, RA_DAV_CHECK_ARGS
- changed $BIN (==/usr/)binto USRBIN, added BIN (/bin)
OPTBIN (==/opt/bin), removed TOPBIN
- Added MOUNT, UMOUNT and TOUCH
- Changed TAIL to TAIL_100 (The woe of Coreutils 5.0!)
- Added functions mount_ramdisk, umount_ramdisk
tools/test-scripts/svntest/svntest-rebuild.sh
- Added logic to support ramdisk
- Added install step
tools/test-scripts/svntest/svntest-sendmail.sh
- changed SVN to SVNBIN
tools/test-scripts/svntest/README
- new documentation for changes
tools/test-scripts/svntest/svntest-rebuild-generic.sh
- new file for building apr, apr-util and httpd.
Index: tools/test-scripts/svntest/svntest.sh
===================================================================
--- tools/test-scripts/svntest/svntest.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest.sh (working copy)
@@ -5,6 +5,27 @@
# Source the configuration file.
. "$EXEC_PATH/svntest-config.sh"
+
+test -z $TEST_ROOT && exit 1
+test -z $INST_DIR && exit 1
+test -z $SVN_REPO && exit 1
+test -z $APR && exit 1
+test -z $APR_REPO && exit 1
+test -z $APU && exit 1
+test -z $APU_REPO && exit 1
+test -z $HTTPD && exit 1
+test -z $HTTPD_REPO && exit 1
+test -z $RAMDISK && exit 1
+test -z $RA_DAV_CHECK_ARGS && exit 1
+test -z $LOG_FILE_PREFIX && exit 1
+test -z $CONFIG_PREFIX && exit 1
+test -z $OBJ_STATIC && exit 1
+test -z $OBJ_SHARED && exit 1
+test -z $FROM && exit 1
+test -z $TO && exit 1
+test -z $ERROR_TO && exit 1
+test -z $REPLY_TO && exit 1
+
# Remove log files from previous runs
$RM_F "$LOG_FILE_PREFIX.update"
$RM_F "$LOG_FILE_PREFIX.shared"
@@ -16,6 +37,30 @@
exit
}
+# conditionally rebuild apr, apr-util and httpd
+$EXEC_PATH/svntest-rebuild-generic.sh "$APR" "$APU" "$MAKE_OPTS" || {
+ $EXEC_PATH/svntest-sendmail.sh "update" "FAIL"
+ exit
+}
+$EXEC_PATH/svntest-rebuild-generic.sh "$APU" "$HTTPD" "$MAKE_OPTS" || {
+ $EXEC_PATH/svntest-sendmail.sh "update" "FAIL"
+ exit
+}
+# httpd won't build with parallel make
+$EXEC_PATH/svntest-rebuild-generic.sh "$HTTPD" "" "" || {
+ $EXEC_PATH/svntest-sendmail.sh "update" "FAIL"
+ exit
+}
+
+# add rebuild log files to the main log file
+test -f "$LOG_FILE_PREFIX.rebuild-$APR" && \
+ $CAT "$LOG_FILE_PREFIX.rebuild-$APR" >> "$LOG_FILE_PREFIX.update"
+test -f "$LOG_FILE_PREFIX.rebuild-$APU" && \
+ $CAT "$LOG_FILE_PREFIX.rebuild-$APU" >> "$LOG_FILE_PREFIX.update"
+test -f "$LOG_FILE_PREFIX.rebuild-$HTTPD" && \
+ $CAT "$LOG_FILE_PREFIX.rebuild-$HTTPD" >> "$LOG_FILE_PREFIX.update"
+
+
# Prime the shared and static log files
echo >> "$LOG_FILE_PREFIX.update"
$CP_F "$LOG_FILE_PREFIX.update" "$LOG_FILE_PREFIX.shared"
@@ -30,6 +75,9 @@
$NICE $EXEC_PATH/svntest-run.sh "shared" "ra_svn"
test $? = 0 && shared_ra_svn="PASS" || shared_ra_svn="FAIL"
+
+ $NICE $EXEC_PATH/svntest-run.sh "shared" "ra_dav"
+ test $? = 0 && shared_ra_dav="PASS" || shared_ra_dav="FAIL"
}
# Test static
@@ -41,6 +89,9 @@
$NICE $EXEC_PATH/svntest-run.sh "static" "ra_svn"
test $? = 0 && static_ra_svn="PASS" || static_ra_svn="FAIL"
+
+ $NICE $EXEC_PATH/svntest-run.sh "static" "ra_dav"
+ test $? = 0 && static_ra_dav="PASS" || static_ra_dav="FAIL"
}
# Send out the mails
@@ -49,6 +100,7 @@
test $shared = "PASS" && {
$EXEC_PATH/svntest-sendmail.sh "shared" "ra_local" "$shared_ra_local"
$EXEC_PATH/svntest-sendmail.sh "shared" "ra_svn" "$shared_ra_svn"
+ $EXEC_PATH/svntest-sendmail.sh "shared" "ra_dav" "$shared_ra_dav"
}
test $static = "FAIL" && \
@@ -56,4 +108,5 @@
test $static = "PASS" && {
$EXEC_PATH/svntest-sendmail.sh "static" "ra_local" "$static_ra_local"
$EXEC_PATH/svntest-sendmail.sh "static" "ra_svn" "$static_ra_svn"
+ $EXEC_PATH/svntest-sendmail.sh "static" "ra_dav" "$static_ra_dav"
}
Index: tools/test-scripts/svntest/svntest-update.sh
===================================================================
--- tools/test-scripts/svntest/svntest-update.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-update.sh (working copy)
@@ -8,34 +8,68 @@
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.update"
-# Update apr, apr-util, httpd-2.0
-START "update apr" "Updating APR..."
+CVS_UPDATE_REGEXP_1='^[UPARMC] \(\(docs\)\|\(STATUS\)\|\(CHANGES\)\)'
+CVS_UPDATE_REGEXP_2='^[UPARMC] [A-Za-z]'
+
+#
+# If update status file contains already
+# '0' (== don't rebuild) then update value,
+# otherwise, honor current 'rebuild needed' (1)
+# value, and don't update it because
+# current rebuild value could be '0'
+UPDATE_REBUILD_FLAG () {
+ local CVS_UP_STATUS="$1"
+ local RB_FILE="$2"
+
+ if test ! -f "$RB_FILE"
+ then
+ echo "1" > "$RB_FILE"
+ elif test 0 -eq `$CAT "$RB_FILE"`
+ then
+ if test "$CVS_UP_STATUS" -eq 0
+ then
+ echo "1" > "$RB_FILE"
+ else
+ echo "0" > "$RB_FILE"
+ fi
+ fi
+}
+
+# Update apr, apr-util, httpd
+START "update $APR" "Updating $APR..."
cd $APR_REPO && $CVS -f -q -z6 update -d -P > "$TEST_ROOT/LOG_up_apr" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_up_apr"
FAIL
}
PASS
+$GREP -qv "$UPDATE_REGEXP_1" "$TEST_ROOT/LOG_up_apr" | $GREP -q "$UPDATE_REGEXP_2" > /dev/null 2>&1
+UPDATE_REBUILD_FLAG $? $APR_REPO.rb
-START "update apr-util" "Updating APR-UTIL..."
+
+START "update $APU" "Updating $APU..."
cd $APU_REPO && $CVS -f -q -z6 update -d -P > "$TEST_ROOT/LOG_up_apu" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_up_apu"
FAIL
}
PASS
+$GREP -qv "$UPDATE_REGEXP_1" "$TEST_ROOT/LOG_up_apu" | $GREP -q "$UPDATE_REGEXP_2" > /dev/null 2>&1
+UPDATE_REBUILD_FLAG $? $APU_REPO.rb
-#START "update httpd-2.0" "Updating Apache..."
-#cd $HTTPD_REPO && $CVS -f -q -z6 update -d -P > "$TEST_ROOT/LOG_up_httpd" 2>&1
-#test $? = 0 || {
-# FAIL_LOG "$TEST_ROOT/LOG_up_httpd"
-# FAIL
-#}
-#PASS
+START "update $HTTPD" "Updating $HTTPD..."
+cd $HTTPD_REPO && $CVS -f -q -z6 update -d -P > "$TEST_ROOT/LOG_up_httpd" 2>&1
+test $? = 0 || {
+ FAIL_LOG "$TEST_ROOT/LOG_up_httpd"
+ FAIL
+}
+PASS
+$GREP -qv "$UPDATE_REGEXP_1" "$TEST_ROOT/LOG_up_httpd" | $GREP -q "$UPDATE_REGEXP_2" > /dev/null 2>&1
+UPDATE_REBUILD_FLAG $? $HTTPD_REPO.rb
# Update svn
START "update subversion" "Updating Subversion..."
-cd $SVN_REPO && $SVN update > "$TEST_ROOT/LOG_up_svn" 2>&1
+cd $SVN_REPO && $SVNBIN update > "$TEST_ROOT/LOG_up_svn" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_up_svn"
FAIL
Index: tools/test-scripts/svntest/svntest-run.sh
===================================================================
--- tools/test-scripts/svntest/svntest-run.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-run.sh (working copy)
@@ -10,7 +10,7 @@
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE.$RA_TYPE"
TEST="`$GUESS` $BUILD_TYPE $RA_TYPE"
-REV="`$SVN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
+REV="`$SVNBIN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
# Prime and initialize the log file
$CP_F "$LOG_FILE_PREFIX.$BUILD_TYPE" $LOG_FILE
@@ -25,7 +25,7 @@
static) OBJ="$OBJ_STATIC" ;;
*) echo "$BUILD_TYPE: unknown build type"
echo "$BUILD_TYPE: unknown build type" >> $LOG_FILE
- FAIL ;;
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests";;
esac
PASS
@@ -34,27 +34,61 @@
case $RA_TYPE in
ra_local) CHECK_TARGET="check" ;;
ra_svn) CHECK_TARGET="svncheck" ;;
+ ra_dav) CHECK_TARGET="davcheck" ;;
*) echo "$RA_TYPE: unknown RA type"
echo "$RA_TYPE: unknown RA type" >> $LOG_FILE
- FAIL ;;
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests";;
esac
PASS
# Check that the object directory exists, and that it contains the
# necessary executable files
START "check object directory" "Checking object directory..."
-test -d $TEST_ROOT/$OBJ || FAIL; PASS
+test -d $TEST_ROOT/$OBJ || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svn executable" "Checking svn executable..."
-test -x $TEST_ROOT/$OBJ/subversion/clients/cmdline/svn || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/clients/cmdline/svn || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svnadmin executable" "Checking svnadmin executable..."
-test -x $TEST_ROOT/$OBJ/subversion/svnadmin/svnadmin || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/svnadmin/svnadmin || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svnlook executable" "Checking svnlook executable..."
-test -x $TEST_ROOT/$OBJ/subversion/svnlook/svnlook || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/svnlook/svnlook || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svnserve executable" "Checking svnserve executable..."
-test -x $TEST_ROOT/$OBJ/subversion/svnserve/svnserve || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/svnserve/svnserve || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+
START "check svnversion executable" "Checking svnversion executable..."
-test -x $TEST_ROOT/$OBJ/subversion/svnversion/svnversion || FAIL; PASS
+test -x $TEST_ROOT/$OBJ/subversion/svnversion/svnversion || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"; PASS
+# Build has initially mounted ramdisk for us, but this
+# script will at the end to do unmount, so check if it is mounted or not
+# and if it is not, do initial fire up for it
+if test "xyes" == "x$RAMDISK";
+then
+ test -x $TEST_ROOT/$OBJ/subversion/tests/clients || {
+ START "re-initializing ramdisk" "Re-initializing ramdisk"
+ mount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests" >> "$LOG_FILE" 2>&1 || FAIL
+ cd "$TEST_ROOT/$OBJ"
+ $MAKE mkdir-init > "$LOG_FILE.ramdisk" 2>&1
+ test $? = 0 || {
+ FAIL_LOG "$LOG_FILE.ramdisk"
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ }
+ $MAKE $MAKE_OPTS > "$LOG_FILE.ramdisk" 2>&1
+ test $? = 0 || {
+ FAIL_LOG "$LOG_FILE.ramdisk"
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ }
+ PASS
+ }
+fi
+
# Prepare the server
case $CHECK_TARGET in
check)
@@ -65,16 +99,28 @@
$TEST_ROOT/$OBJ/subversion/svnserve/svnserve -d \
-r $TEST_ROOT/$OBJ/subversion/tests/clients/cmdline \
>> $LOG_FILE 2>&1
- test $? = 0 || FAIL
+ test $? = 0 || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
PASS
START "get svnserve pid" "Getting svnserve process ID..."
USER_NAME="`$ID_UN`"
SVNSERVE_PID="`$PS_U $USER_NAME | $GREP '[s]vnserve' \
| $SED -e 's/^ *//' | $CUT -f 1 -d ' ' -s`"
- test -n "$SVNSERVE_PID" || FAIL
+ test -n "$SVNSERVE_PID" || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
PASS
;;
+ davcheck)
+ START "run $HTTPD" "Running $HTTPD..."
+ $CP_F "$TEST_ROOT/$HTTPD.conf" "$INST_DIR/$HTTPD/conf/httpd.conf" || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ $CP_F "$TEST_ROOT/mod_dav_svn_$BUILD_TYPE.conf" "$INST_DIR/$HTTPD/conf/mod_dav_svn.conf" || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ "$INST_DIR/$HTTPD/bin/apachectl" start \
+ >> $LOG_FILE 2>&1
+ test $? = 0 || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ PASS
+ CHECK_ARGS="$RA_DAV_CHECK_ARGS"
+ ;;
esac
# Kill the server
@@ -85,17 +131,32 @@
;;
svncheck)
START "kill svnserve" "Stopping svnserve..."
- $KILL $SVNSERVE_PID || FAIL
+ $KILL $SVNSERVE_PID || FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
PASS
;;
+ davcheck)
+ START "kill $HTTPD" "Stopping $HTTPD..."
+ "$INST_DIR/$HTTPD/bin/apachectl" stop || \
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+ PASS
+ ;;
esac
+
+ umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
}
# Test
START "make $CHECK_TARGET" "Testing $RA_TYPE..."
CHECK_LOG_FILE="$TEST_ROOT/LOG_svn_check_${BUILD_TYPE}_${RA_TYPE}"
cd $TEST_ROOT/$OBJ
-$MAKE $CHECK_TARGET > $CHECK_LOG_FILE 2>&1
+if test $CHECK_TARGET == davcheck ;
+then
+ # At the moment we can't give repository url with
+ # make davcheck, so use check & BASE_URL here for the present
+ $MAKE check "$CHECK_ARGS" > $CHECK_LOG_FILE 2>&1
+else
+ $MAKE $CHECK_TARGET > $CHECK_LOG_FILE 2>&1
+fi
test $? = 0 || {
FAIL_LOG $CHECK_LOG_FILE
$CP "tests.log" "$LOG_FILE_PREFIX.log.$BUILD_TYPE.$RA_TYPE.$REV.failed" \
@@ -108,3 +169,4 @@
PASS
kill_svnserve
+
Index: tools/test-scripts/svntest/svntest-config.sh
===================================================================
--- tools/test-scripts/svntest/svntest-config.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-config.sh (working copy)
@@ -3,16 +3,42 @@
#
# Root of the test tree
#
-TEST_ROOT="/home/brane/svn"
+TEST_ROOT="/data/svntest"
+# Installation path, everything under that is considered
+# to be temporary
+INST_DIR="$TEST_ROOT/inst"
+
#
-# Repository paths
+# Repository paths and projects name
#
-SVN_REPO="$TEST_ROOT/repo"
-APR_REPO="$TEST_ROOT/apr"
-APU_REPO="$TEST_ROOT/apr-util"
-HTTPD_REPO="$TEST_ROOT/httpd-2.0"
+# installation paths are expected to be:
+# '$INST_DIR/<proj_name>, so take care of your
+# config.<proj_name> files.
+# Everything in those directories will be wiped out
+# by installation procedure. See svntest-rebuild-generic.sh
+SVN="svn"
+SVN_REPO="$TEST_ROOT/$SVN"
+
+APR="apr-0.9"
+APR_REPO="$TEST_ROOT/$APR"
+
+APU="apr-util-0.9"
+APU_REPO="$TEST_ROOT/$APU"
+
+HTTPD="httpd-2.0"
+HTTPD_REPO="$TEST_ROOT/$HTTPD"
+
+
+MAKE_OPTS="-j4"
+
+# RAMDISK=<yes|no>
+RAMDISK=no
+
+# This should correspond with your httpd Listen directive
+RA_DAV_CHECK_ARGS="BASE_URL=http://localhost:42024"
+
#
# Log file name prefix
#
@@ -21,7 +47,7 @@
#
# Configure script prefix and object directory names
#
-CONFIG_PREFIX="config.solaris"
+CONFIG_PREFIX="config"
OBJ_STATIC="obj-st"
OBJ_SHARED="obj-sh"
@@ -36,40 +62,47 @@
#
# Path to utilities
#
-BIN="/usr/bin"
+BIN="/bin"
+USRBIN="/usr/bin"
LOCALBIN="/usr/local/bin"
+OPTBIN="/opt/bin"
# Statically linked svn binary (used for repository updates)
-SVN="$TEST_ROOT/inst/bin/svn"
+SVNBIN="$TEST_ROOT/static/bin/svn"
# CVS binary (used for updating APR & friends)
-CVS="$LOCALBIN/cvs"
+CVS="$USRBIN/cvs"
# Path to config.guess (used for generating the mail subject line)
-GUESS="/usr/local/share/libtool/config.guess"
+GUESS="/usr/share/libtool/config.guess"
# Path to sendmail
-SENDMAIL="/usr/lib/sendmail"
+SENDMAIL="/usr/sbin/sendmail"
# Other stuff
-BASE64_E="$BIN/base64 -e - -"
+BASE64_E="$OPTBIN/base64 -e - -"
CAT="$BIN/cat"
-CP="$BIN/cp"
-CP_F="$BIN/cp -f"
-CUT="$BIN/cut"
+CP="$USRBIN/cp"
+CP_F="$USRBIN/cp -f"
+CUT="$USRBIN/cut"
+DATE="$BIN/date"
GREP="$BIN/grep"
GZIP_C="$BIN/gzip -9c"
-ID_UN="$BIN/id -un"
-KILL="$BIN/kill"
-MAKE="$LOCALBIN/make"
-MKDIR="$BIN/mkdir"
-NICE="$BIN/nice"
-PS_U="$TOPBIN/ps -u"
+ID_UN="$USRBIN/id -un"
+KILL="$USRBIN/kill"
+MAKE="$USRBIN/make"
+MKDIR="$USRBIN/mkdir"
+MKDIR_P="$USRBIN/mkdir -p"
+MOUNT="$BIN/mount"
+NICE="$USRBIN/nice"
+PS_U="$BIN/ps -u"
RM="$BIN/rm"
RM_F="$BIN/rm -f"
RM_RF="$BIN/rm -rf"
-SED="$BIN/sed"
-TAIL="$BIN/tail"
+SED="$USRBIN/sed"
+TAIL_100="$USRBIN/tail -n 100"
+TOUCH="$BIN/touch"
+UMOUNT="$BIN/umount"
#
# Helper functions
@@ -85,7 +118,7 @@
# Test failed
FAIL() {
echo "FAIL: $TST" >> $LOG_FILE
- test -n "$1" && eval "$1" # Run cleanup code
+ test -n "$1" && eval "$1" "$@" # Run cleanup code
exit 1
}
@@ -98,7 +131,7 @@
FAIL_LOG() {
echo >> $LOG_FILE
echo "Last 100 lines of the log file follow:" >> $LOG_FILE
- $TAIL -100 "$1" >> $LOG_FILE 2>&1
+ $TAIL_100 "$1" >> $LOG_FILE 2>&1
if [ "x$REV" = "x" ]
then
SAVED_LOG="$1.failed"
@@ -108,3 +141,37 @@
$CP "$1" "$SAVED_LOG" >> $LOG_FILE 2>&1
echo "Complete log saved in $SAVED_LOG" >> $LOG_FILE
}
+
+# Mount ramdisk conditionally
+# check that
+# i) RAMDISK is defined
+# ii) Ramdisk isn't already mounted
+mount_ramdisk() {
+ local mount_dir="$1"
+ if test "xyes" == "x$RAMDISK";
+ then
+ test -z "$mount_dir" && return 1
+
+ test -f "$mount_dir/.ramdisk" && {
+ echo "Warning: ramdisk exists"
+ return 0
+ }
+
+ $MOUNT "$mount_dir" || return 1
+ $TOUCH "$mount_dir/.ramdisk" || return 1
+ fi
+ return 0
+}
+
+umount_ramdisk() {
+ local mount_dir="$1"
+ if test "xyes" == "x$RAMDISK";
+ then
+ test -z "$mount_dir" && return
+
+ test -f "$mount_dir/.ramdisk" && {
+ $UMOUNT "$mount_dir" >> /dev/null 2>&1
+ }
+ fi
+}
+
Index: tools/test-scripts/svntest/svntest-rebuild.sh
===================================================================
--- tools/test-scripts/svntest/svntest-rebuild.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-rebuild.sh (working copy)
@@ -9,7 +9,7 @@
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE"
BUILD="`$GUESS` $BUILD_TYPE"
-REV="`$SVN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
+REV="`$SVNBIN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
# Initialize the log file
echo "BUILD: Revision $REV on $BUILD" >> $LOG_FILE
@@ -28,8 +28,10 @@
# Create the object directory
START "create object directory" "Creating object directory..."
-$RM_RF $TEST_ROOT/$OBJ >> $LOG_FILE 2>&1 || FAIL
-$MKDIR $TEST_ROOT/$OBJ >> $LOG_FILE 2>&1 || FAIL
+$RM_RF "$TEST_ROOT/$OBJ" >> $LOG_FILE 2>&1 || FAIL
+$MKDIR "$TEST_ROOT/$OBJ" >> $LOG_FILE 2>&1 || FAIL
+$MKDIR_P "$TEST_ROOT/$OBJ/subversion/tests" >> $LOG_FILE 2>&1 || FAIL
+mount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests" >> $LOG_FILE 2>&1 || FAIL
PASS
# Configure
@@ -43,16 +45,29 @@
> "$TEST_ROOT/LOG_svn_configure_$BUILD_TYPE" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_svn_configure_$BUILD_TYPE"
- FAIL
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
}
PASS
# Build
START "build" "Building..."
cd $TEST_ROOT/$OBJ
-$MAKE > "$TEST_ROOT/LOG_svn_build_$BUILD_TYPE" 2>&1
+$MAKE $MAKE_OPTS > "$TEST_ROOT/LOG_svn_build_$BUILD_TYPE" 2>&1
test $? = 0 || {
FAIL_LOG "$TEST_ROOT/LOG_svn_build_$BUILD_TYPE"
- FAIL
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
}
PASS
+
+
+# Install (bc mod_dav_svn.so)
+START "install" "Installing..."
+cd $TEST_ROOT/$OBJ
+$RM_RF "$INST_DIR/$SVN"
+$MAKE install > "$TEST_ROOT/LOG_svn_install_$BUILD_TYPE" 2>&1
+test $? = 0 || {
+ FAIL_LOG "$TEST_ROOT/LOG_svn_build_$BUILD_TYPE"
+ FAIL umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
+}
+PASS
+
Index: tools/test-scripts/svntest/svntest-sendmail.sh
===================================================================
--- tools/test-scripts/svntest/svntest-sendmail.sh (revision 7624)
+++ tools/test-scripts/svntest/svntest-sendmail.sh (working copy)
@@ -11,7 +11,7 @@
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE"
TEST="`$GUESS` $BUILD_TYPE"
-REV="`$SVN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
+REV="`$SVNBIN st -v $SVN_REPO/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
test -z "$RA_TYPE" || {
LOG_FILE="$LOG_FILE.$RA_TYPE"
TEST="$TEST $RA_TYPE"
Index: tools/test-scripts/svntest/README
===================================================================
--- tools/test-scripts/svntest/README (revision 7624)
+++ tools/test-scripts/svntest/README (working copy)
@@ -3,21 +3,72 @@
1) Read the INSTALL (http://svn.collab.net/repos/svm/trunk/INSTALL)
file, especially the sections about bootstrapping from a tarball
- and getting the latest APR, APR-UTIL and httpd-2.0 sources.
- Check out and compile the latest Subversion.
+ and getting the latest APR-0.9, APR-UTIL-0.9 and httpd-2.0 sources.
+ Check out and compile the latest Subversion. You could easily run
+ svntest.sh against APR/APR-UTIL 1.0 and HTTPD 2.1 branches, just
+ checkout corresponding repositories, and edit svntest-config.sh.
2) Copy the svntest scripts from trunk/tools/test-scripts/svntest to
somewhere outside the repository. Then read and modify
svntest-config.sh to reflect your local installation. Take special
- care about program locations and e-mail addresses.
+ care about program locations, program installation locations and
+ e-mail addresses.
+ Also notice that this test script will wipe out following paths
+ during rebuilding:
+ $INST_DIR/<proj_name>, ie. with present configuration the paths are:
+ /home/brane/svn/inst/{apr-0.9,apr-util-0.9,httpd-2.0,svn}
+
3) Create one or more scripts that configure Subversion in different
ways (e.g., configure.shared, configure.static). Here's the script
I'm using for static builds on Solaris 7:
- #!/bin/sh
- env CC='gcc' \
- "../repo/configure" \
+ config.apr-0.9:
+ #!/bin/sh
+
+ "../apr-0.9/configure" \
+ "--prefix=/home/brane/svn/inst/apr-0.9" \
+ "--with-pic" \
+ "$@"
+
+
+ config.apr-util-0.9:
+ #!/bin/sh
+
+ "../apr-util-0.9/configure" \
+ "--prefix=/home/brane/svn/inst/apr-util-0.9" \
+ "--with-apr=/home/brane/svn/inst/apr-0.9" \
+ "--with-pic" \
+ "--with-dbm=db4" \
+ "--with-berkeley-db" \
+ "--with-expat=/usr" \
+ "$@"
+
+
+ config.httpd-2.0:
+ #!/bin/sh
+
+ CURR_WD="`pwd`"
+ cd ../httpd-2.0
+
+ "./buildconf" \
+ "--with-apr=/home/brane/svn/apr-0.9" \
+ "--with-apr-util=/home/brane/svn/apr-util-0.9"
+
+ cd "$CURR_WD"
+
+ "../httpd-2.0/configure" \
+ "--prefix=/home/brane/svn/inst/httpd-2.0" \
+ "--with-apr=/home/brane/svn/inst/apr-0.9/bin/apr-config" \
+ "--with-apr-util=/home/brane/svn/inst/apr-util-0.9/bin/apu-config" \
+ "--enable-dav" \
+ "$@"
+
+
+ config.solaris.static (for subversion):
+ #!/bin/sh
+ env CC='gcc' \
+ "../svn/configure" \
"--prefix=/home/brane/svn/inst" \
"--with-berkeley-db=/home/brane/svn/db4" \
"--disable-shared" \
@@ -27,13 +78,65 @@
static build types, but you can easily change that. If you do, also
change svntest.sh so that it tests all the different configurations.
-4) Make sure your environment (e.g., LD_LIBRARY_PATH) is set correctly
+4) Tailor your $HTTPD.conf (ie. httpd-2.0.conf) to suit
+ your needs, (easiest way to get a template for http-2.0.conf is
+ install Apache httpd at once, and after that copy installed httpd.conf, and
+ edit it). Things to change are probably:
+ i) Listen 127.0.0.1:42024
+ ii) LoadModule dav_svn_module modules/mod_dav_svn.so
+ iii) User jaa
+ Group jaa
+ v) ServerName localhost:42024
+
+ vi) Add mod_dav_svn block:
+
+ <IfModule mod_dav_svn.c>
+ Include conf/mod_dav_svn.conf
+ </IfModule>
+
+ vii) mod_dav_svn_shared.conf for shared builds:
+ <Location /repositories>
+ DAV svn
+ SVNParentPath /home/brane/svn/obj-sh/subversion/tests/clients/cmdline/repositories
+ </Location>
+ <Location /local_tmp/repos>
+ DAV svn
+ SVNPath /home/brane/svn/obj-sh/subversion/tests/clients/cmdline/local_tmp/repos
+ </Location>
+
+ mod_dav_svn_static.conf for static builds:
+ <Location /repositories>
+ DAV svn
+ SVNParentPath /home/brane/svn/obj-st/subversion/tests/clients/cmdline/repositories
+ </Location>
+ <Location /local_tmp/repos>
+ DAV svn
+ SVNPath /home/brane/svn/obj-st/subversion/tests/clients/cmdline/local_tmp/repos
+ </Location>
+
+ Don't ever thouch config files under $INST_DIR/$HTTPD/conf, they will be overwritten by
+ the script.
+
+5) Make sure your environment (e.g., LD_LIBRARY_PATH) is set correctly
to find Berkeley DB, etc.
-5) Run svntest.sh to get the latest versions of ARP, APR-UTIL and
- Subversion, build and test all the configurations. Note that the
- scripts do not test Apache integration (yet).
+6) If you like run test against ramdisk (subversion test data will be held on ramdisk)
+ then you shuold have something like that in your /etc/fstab (in Linux system):
+ tmpfs /home/brane/svn/obj-sh/subversion/tests tmpfs defaults,user,noauto,exec,size=600m
+ tmpfs /home/brane/svn/obj-st/subversion/tests tmpfs defaults,user,noauto,exec,size=600m
+
+ and you should set RAMDISK=yes, and check mount_ramdisk and umount_ramdisk in same file.
+ See http://subversion.tigris.org/project_faq.html#ramdisk-tests for further information.
+
+7) Run svntest.sh to get the latest versions of ARP, APR-UTIL, HTTPPD and
+ Subversion, build and test all the configurations.
+8) If you like force rebuilding of some component, you could do:
+ echo "1" > $PROJ_REPO.rb, dependies are:
+ apr-util depends of apr, and httpd depends of apr and apr-util.
+ Any dependent project will be also rebuild.
+ When you run this script first time, everything will be rebuild
+ automatically.
======================================================
Need more detailed instructions? Use the Source, Luke!
--
Jani Averbach
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org