#!/bin/sh
EXEC_PATH="`dirname $0`"
BUILD_TYPE="$1"
RA_TYPE="$2"
FS_TYPE="$3"
# Source the configuration file.
. "$EXEC_PATH/svntest-config.sh"
# Compute local vars
LOG_FILE="$LOG_FILE_PREFIX.$BUILD_TYPE.$RA_TYPE.$FS_TYPE"
TEST="`$GUESS` $BUILD_TYPE $RA_TYPE $FS_TYPE"
REV="`$SVN st -v $SVN_SOURCE/README | $CUT -c 12-17 | $SED -e 's/^ *//'`"
# Prime and initialize the log file
$CP_F "$LOG_FILE_PREFIX.$BUILD_TYPE" $LOG_FILE
echo >> $LOG_FILE
echo "TEST: $REVPREFIX$REV on $TEST" >> $LOG_FILE
echo "TIME: $($DATE '+%Y-%m-%d %H:%M:%S %z')" >> $LOG_FILE
echo >> $LOG_FILE
# Check the build type
START "check build type" "Checking build type..."
case $BUILD_TYPE in
shared) OBJ="$OBJ_SHARED" ;;
static) OBJ="$OBJ_STATIC" ;;
*) echo "$BUILD_TYPE: unknown build type"
echo "$BUILD_TYPE: unknown build type" >> $LOG_FILE
FAIL ;;
esac
PASS
# Check the test type
START "check RA type" "Checking RA methd..."
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 ;;
esac
PASS
# Check the FS type
START "check FS type" "Checking FS type..."
case $FS_TYPE in
bdb) CHECK_ARGS="FS_TYPE=bdb" ;;
fsfs) CHECK_ARGS="FS_TYPE=fsfs" ;;
*) echo "$FS_TYPE: unknown FS type"
echo "$FS_TYPE: unknown FS type" >> $LOG_FILE
FAIL ;;
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
START "check svn executable" "Checking svn executable..."
test -x $INST_DIR/$SVN_NAME/bin/svn || FAIL; PASS
START "check svnadmin executable" "Checking svnadmin executable..."
test -x $INST_DIR/$SVN_NAME/bin/svnadmin || FAIL; PASS
START "check svnlook executable" "Checking svnlook executable..."
test -x $INST_DIR/$SVN_NAME/bin/svnlook || FAIL; PASS
START "check svnserve executable" "Checking svnserve executable..."
test -x $INST_DIR/$SVN_NAME/bin/svnserve || FAIL; PASS
START "check svnversion executable" "Checking svnversion executable..."
test -x $INST_DIR/$SVN_NAME/bin/svnversion || FAIL; 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
reinitialize_ramdisk
fi
if test "xyes" = "x$INTERMEDIATE_CLEANUP";
then
# Flag the tests to cleanup after themselves to avoid requiring
# hundreds of MBs of storage at once for test data.
CHECK_ARGS="$CHECK_ARGS CLEANUP=1"
fi
# Prepare the server
case $CHECK_TARGET in
check)
# Nothing to do here
;;
svncheck)
START "run svnserve" "Running svnserve..."
$TEST_ROOT/$OBJ/subversion/svnserve/svnserve -d \
--listen-port $SVNSERVE_PORT \
-r $TEST_ROOT/$OBJ/$RA_SVN_REPO_ROOT \
>> $LOG_FILE 2>&1
test $? = 0 || FAIL
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
PASS
CHECK_ARGS="$CHECK_ARGS $RA_SVN_CHECK_ARGS"
;;
davcheck)
START "run $HTTPD_NAME" "Running $HTTPD_NAME..."
$CP_F "$TEST_ROOT/$HTTPD_NAME.conf" \
"$INST_DIR/$HTTPD_NAME/conf/httpd.conf" || FAIL
$CP_F "$TEST_ROOT/mod_dav_${SVN_NAME}.conf" \
"$INST_DIR/$HTTPD_NAME/conf/mod_dav_svn.conf" || FAIL
"$INST_DIR/$HTTPD_NAME/bin/apachectl" start \
>> $LOG_FILE 2>&1
test $? = 0 || FAIL
PASS
CHECK_ARGS="$CHECK_ARGS $RA_DAV_CHECK_ARGS"
;;
esac
# Kill the server
kill_svnserve() {
case $CHECK_TARGET in
check)
# Nothing to do here
;;
svncheck)
START "kill svnserve" "Stopping svnserve..."
$KILL $SVNSERVE_PID || FAIL
PASS
;;
davcheck)
START "kill $HTTPD_NAME" "Stopping $HTTPD_NAME..."
"$INST_DIR/$HTTPD_NAME/bin/apachectl" stop || \
FAIL
PASS
;;
esac
umount_ramdisk "$TEST_ROOT/$OBJ/subversion/tests"
}
# Test
ts_start=`$DATE +"%s"`
START "make $CHECK_TARGET" "Testing $RA_TYPE on $FS_TYPE..."
CHECK_LOG_FILE="$LOG_FILE_DIR/LOG_svn_check_${BUILD_TYPE}_${RA_TYPE}_${FS_TYPE}"
cd $TEST_ROOT/$OBJ
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
elif test "$CHECK_TARGET" = "svncheck";
then
$MAKE check $CHECK_ARGS > $CHECK_LOG_FILE 2>&1
else
$MAKE $CHECK_TARGET $CHECK_ARGS > $CHECK_LOG_FILE 2>&1
fi
test $? = 0 || {
FAIL_LOG $CHECK_LOG_FILE
$CP "tests.log" \
"$LOG_FILE_PREFIX.log.$BUILD_TYPE.$RA_TYPE.$FS_TYPE.$REV.failed" \
>> $LOG_FILE 2>&1
# Prepare the log file for the mailer
$GZIP_C < "tests.log" \
> "$LOG_FILE_DIR/tests.$BUILD_TYPE.$RA_TYPE.$FS_TYPE.log.gz"
FAIL kill_svnserve
}
PASS
ts_stop=`$DATE +"%s"`
START "Timer: make $CHECK_TARGET $(($ts_stop - $ts_start)) sec" \
"Timer: make $CHECK_TARGET $(($ts_stop - $ts_start)) sec"
PASS
kill_svnserve
echo "TIME: $($DATE '+%Y-%m-%d %H:%M:%S %z')" >> $LOG_FILE
syntax highlighted by Code2HTML, v. 0.9.1