[Ocfs2-tools-devel] [PATCH 2/2] Ocfs2-tests: Add multiple_run.sh for ocfs2-test V2.

Marcos E. Matsunaga Marcos.Matsunaga at oracle.com
Thu Oct 9 08:32:41 PDT 2008


Tristan,

Did you check the diff file I sent you? I have it attached again, it
does clear some errors when accessing logfiles and the check of the
mount point (It doesn't have to be RW to the user running the tests,
just have to exist).

Regards,

Marcos Eduardo Matsunaga

Oracle USA
Linux Engineering

“The statements and opinions expressed here are my own and do not
necessarily represent those of Oracle Corporation.”



Marcos E. Matsunaga wrote:
> I'll take it back.. i needs 2 nodes.
> Regards,
>
> Marcos Eduardo Matsunaga
>
> Oracle USA
> Linux Engineering
>
> “The statements and opinions expressed here are my own and do not
> necessarily represent those of Oracle Corporation.”
>   
>
>
> Marcos E. Matsunaga wrote:
>> One note here. I believe the flock is a unit test and not meant to
>> run in cluster mode.
>> Regards,
>>
>> Marcos Eduardo Matsunaga
>>
>> Oracle USA
>> Linux Engineering
>>
>> “The statements and opinions expressed here are my own and do not
>> necessarily represent those of Oracle Corporation.”
>>   
>>
>>
>> Tristan Ye wrote:
>>> Changes from v1 to v2:
>>>
>>> 1.Change volume label name as a meaningful one under marcos's suggestion.
>>>
>>> 2.Add lvb_torture testacase.
>>>
>>> urrently,it includes following testcases,
>>>
>>>  	xattr_test
>>>  	inline_test
>>>  	write_append_truncate_test
>>>  	multi_mmap_test
>>>  	lvb_torture_test
>>>  	create_racer_test
>>>  	flock_tests
>>>  	open_delete_test
>>>
>>> Need to run this wrapper script like this:
>>>
>>>  	multiple_run.sh -n node1.us.oracle.com,node2.us.oracle.com -d /dev/sdd1 /storage
>>>
>>> All its logs and behaviors kept a unification as single_run.sh did. More testcases were expected
>>> to be integrated as we're going to develop more multi-nodes cases for ocfs2-test.
>>>
>>> Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
>>> ---
>>>  programs/python_common/multiple_run.sh |  411 ++++++++++++++++++++++++++++++++
>>>  1 files changed, 411 insertions(+), 0 deletions(-)
>>>  create mode 100755 programs/python_common/multiple_run.sh
>>>
>>> diff --git a/programs/python_common/multiple_run.sh b/programs/python_common/multiple_run.sh
>>> new file mode 100755
>>> index 0000000..64c6c76
>>> --- /dev/null
>>> +++ b/programs/python_common/multiple_run.sh
>>> @@ -0,0 +1,411 @@
>>> +#!/bin/bash
>>> +# vi: set ts=8 sw=8 autoindent noexpandtab :
>>> +################################################################################
>>> +#
>>> +# File :        multiple_run.sh
>>> +#
>>> +# Description:  The wrapper script help to organize all multi-nodes testcase
>>> +#		to perform a thorough test among multiple nodes.
>>> +#       
>>> +#
>>> +# Author:       Tristan Ye,     tristan.ye at oracle.com
>>> +#
>>> +# History:      22 Sep 2008
>>> +#
>>> +
>>> +################################################################################
>>> +# Global Variables
>>> +################################################################################
>>> +PATH=$PATH:/sbin      # Add /sbin to the path for ocfs2 tools
>>> +export PATH=$PATH:.
>>> +
>>> +USERNAME=`/usr/bin/whoami`
>>> +DATE=`/bin/date +%F-%H-%M`
>>> +DF=`which df`
>>> +GREP=`which grep`
>>> +AWK=`which awk`
>>> +ECHO="`which echo` -e"
>>> +
>>> +SUDO="`which sudo` -u root"
>>> +DEBUGFS_BIN="`which sudo` -u root `which debugfs.ocfs2`"
>>> +TUNEFS_BIN="`which sudo` -u root `which tunefs.ocfs2`"
>>> +MKFS_BIN="`which sudo` -u root `which mkfs.ocfs2`"
>>> +
>>> +REMOTE_MOUNT_BIN="`which sudo` -u root `which remote_mount.py`"
>>> +REMOTE_UMOUNT_BIN="`which sudo` -u root `which remote_umount.py`"
>>> +
>>> +NODE_LIST=
>>> +DEVICE_NAME=
>>> +MOUNT_POINT=
>>> +
>>> +################################################################################
>>> +# Utility Functions
>>> +################################################################################
>>> +f_usage()
>>> +{
>>> +    echo "usage: `basename ${0}` <-n nodes> <-d device> <mountpoint path>"
>>> +    echo "       -n nodelist,should be comma separated."
>>> +    echo "       -d device name used for ocfs2 volume."
>>> +    echo "       <mountpoint path> path of mountpoint where test will be performed."
>>> +    echo 
>>> +    echo "Eaxamples:"
>>> +    echo "	 `basename ${0}` -n node1.us.oracle.com,node2.us.oracle.com -d /dev/sdd1 /storage"
>>> +    exit 1;
>>> +
>>> +}
>>> +
>>> +f_getoptions()
>>> +{
>>> +         if [ $# -eq 0 ]; then
>>> +                f_usage;
>>> +                exit 1
>>> +         fi
>>> +
>>> +         while getopts "n:d:h:" options; do
>>> +                case $options in
>>> +                n ) NODE_LIST="$OPTARG";;
>>> +                d ) DEVICE_NAME="$OPTARG";;
>>> +                h ) f_usage
>>> +                    exit 1;;
>>> +                * ) f_usage
>>> +                   exit 1;;
>>> +                esac
>>> +        done
>>> +        shift $(($OPTIND -1))
>>> +        MOUNT_POINT=${1}
>>> +
>>> +}
>>> +
>>> +f_setup()
>>> +{
>>> +	f_getoptions $*
>>> +
>>> +	if [ -z "${MOUNT_POINT}" ];then
>>> +                f_usage
>>> +        fi
>>> +
>>> +	. ./config.sh
>>> +
>>> +	LOGFILE=${O2TDIR}/log/multiple_run_${DATE}.log
>>> +
>>> +	if [ ! -d ${MOUNT_POINT} -o ! -w ${MOUNT_POINT} ]; then
>>> +        	${ECHO} "Mount point ${MOUNT_POINT} does not exist or is not writable" \
>>> +                	|tee -a ${LOGFILE};
>>> +		exit 1
>>> +	fi
>>> +
>>> +	${DF} -h|${GREP} -q ${DEVICE_NAME}
>>> +        if [ "$?" == "0" ];then
>>> +                ${ECHO} "Partition has been mounted,should umount first to perform test" \
>>> +                        |tee -a ${LOGFILE};
>>> +		exit 1
>>> +        fi
>>> +
>>> +}
>>> +
>>> +LogRC()
>>> +{
>>> +if [ ${1} -ne 0 ]; then
>>> +        ${ECHO} "Failed." >> ${LOGFILE};
>>> +else
>>> +        ${ECHO} "Passed." >> ${LOGFILE};
>>> +fi;
>>> +END=$(date +%s);
>>> +DIFF=$(( ${END} - ${START} ));
>>> +${ECHO} "Runtime ${DIFF} seconds.\n" >> ${LOGFILE};
>>> +}
>>> +
>>> +LogMsg()
>>> +{
>>> +${ECHO} `date` >> ${LOGFILE};
>>> +${ECHO} "${1}\c" >> ${LOGFILE};
>>> +i=${#1};
>>> +while (( i < 60 ))
>>> +do
>>> +        ${ECHO} ".\c" >> ${LOGFILE};
>>> +        (( ++i ));
>>> +done;
>>> +}
>>> +
>>> +IsDeviceMounted()
>>> +{
>>> +	local OCFS2_DEVICE=${1}
>>> +	${DF} -h | ${GREP} -q ${OCFS2_DEVICE}
>>> +	
>>> +	if [ "$?" == "0" ]; then
>>> +		return 0
>>> +	else
>>> +		return 1
>>> +	fi
>>> +}
>>> +
>>> +run_xattr_test()
>>> +{
>>> +	LogMsg "xattr-test"
>>> +	${BINDIR}/xattr-multi-run.sh -r 8 -f ${NODE_LIST} -a rsh -o ${O2TDIR}/log/xattr-tests-log -d ${DEVICE_NAME} ${MOUNT_POINT}
>>> +	LogRC $?
>>> +}
>>> +
>>> +run_inline_test()
>>> +{
>>> +	LogMsg "inline-test"
>>> +	${BINDIR}/multi-inline-run.sh -r 4 -f ${NODE_LIST} -a rsh -o ${O2TDIR}/log/inline-tests-log -d ${DEVICE_NAME} ${MOUNT_POINT}
>>> +	LogRC $?
>>> +	
>>> +}
>>> +
>>> +run_write_append_truncate_test()
>>> +{
>>> +	LogMsg "write-append-truncate-test"
>>> +
>>> +	local logdir=${O2TDIR}/log/write_append_truncate_log
>>> +	local logfile=${logdir}/write_append_truncate_${DATE}.log
>>> +
>>> +	local testfile=${MOUNT_POINT}/write_append_truncate_test_file
>>> +
>>> +	${SUDO} mkdir -p ${logdir}
>>> +	#force to umount volume from all nodes
>>> +	${ECHO} "Try to umount volume from all nodes before test."|tee -a ${logfile}
>>> +	${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +	
>>> +
>>> +	CLUSTERSIZE=32k
>>> +	BLOCKSIZE=4k
>>> +	SLOTS=4
>>> +	LABEL=ocfs2test
>>> +
>>> +	${ECHO} "Format volume to launch new test"|tee -a ${logfile}
>>> +	echo y|${MKFS_BIN} -C ${CLUSTERSIZE} -b ${BLOCKSIZE} -N ${SLOTS} -L ${LABEL} ${DEVICE_NAME} || {
>>> +		${ECHO} "Can not format ${DEVICE_NAME}"
>>> +		return 1
>>> +	}
>>> +
>>> +	${ECHO} "Mount volume to all nodes"|tee -a ${logfile}
>>> +	${REMOTE_MOUNT_BIN} -l ${LABEL} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +
>>> +	${BINDIR}/run_write_append_truncate.py -i 20000 -l ${logfile} -n ${NODE_LIST} -f ${testfile}
>>> +
>>> +	LogRC $?
>>> +
>>> +	${ECHO} "Umount volume from all nodes after test."|tee -a ${logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +}
>>> +
>>> +run_multi_mmap_test()
>>> +{
>>> +	LogMsg "multi-mmap-test"
>>> +	
>>> +	local logdir=${O2TDIR}/log/multi_mmap_log
>>> +        local logfile=${logdir}/multi_mmap_test_${DATE}.log
>>> +
>>> +        local testfile=${MOUNT_POINT}/multi_mmap_test_file
>>> +
>>> +        ${SUDO} mkdir -p ${logdir}
>>> +        #force to umount volume from all nodes
>>> +        ${ECHO} "Try to umount volume from all nodes before test."|tee -a ${logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +
>>> +
>>> +        CLUSTERSIZE=32k
>>> +        BLOCKSIZE=4k
>>> +        SLOTS=4
>>> +        LABEL=ocfs2test
>>> +
>>> +        ${ECHO} "Format volume to launch new test"|tee -a ${logfile}
>>> +        echo y|${MKFS_BIN} -C ${CLUSTERSIZE} -b ${BLOCKSIZE} -N ${SLOTS} -L ${LABEL} ${DEVICE_NAME} || {
>>> +                ${ECHO} "Can not format ${DEVICE_NAME}"
>>> +                return 1
>>> +        }
>>> +
>>> +        ${ECHO} "Mount volume to all nodes"|tee -a ${logfile}
>>> +        ${REMOTE_MOUNT_BIN} -l ${LABEL} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +
>>> +        ${BINDIR}/run_multi_mmap.py -i 20000 -n ${NODE_LIST} -c -b 6000 --hole -f ${testfile} | tee -a ${logfile}
>>> +
>>> +	LogRC $?
>>> +
>>> +	${ECHO} "Umount volume from all nodes after test."|tee -a ${logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +}
>>> +
>>> +run_lvb_torture_test()
>>> +{
>>> +	LogMsg "lvb_torture_test"
>>> +
>>> +	local logdir=${O2TDIR}/log/lvb_torture_log
>>> +        local logfile=${logdir}/lvb_torture_test_${DATE}.log
>>> +
>>> +
>>> +	${SUDO} mkdir -p ${logdir}
>>> +	
>>> +	${BINDIR}/run_lvb_torture.py -d /dlm/ -i 10 -H ${DEVICE_NAME} -l ${logfile} -n ${NODE_LIST} ocfs2test_domain ocfs2test_lock
>>> +
>>> +	LogRC $?
>>> +
>>> +}
>>> +
>>> +run_create_racer_test()
>>> +{
>>> +	LogMsg "create-racer-test"
>>> +
>>> +	local logdir=${O2TDIR}/log/create_racer_log
>>> +        local logfile=${logdir}/create_racer_test_${DATE}.log
>>> +
>>> +        local testpath=${MOUNT_POINT}
>>> +
>>> +        ${SUDO} mkdir -p ${logdir}
>>> +        #force to umount volume from all nodes
>>> +        ${ECHO} "Try to umount volume from all nodes before test."|tee -a ${logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +
>>> +
>>> +        CLUSTERSIZE=32k
>>> +        BLOCKSIZE=4k
>>> +        SLOTS=4
>>> +        LABEL=ocfs2test
>>> +
>>> +        ${ECHO} "Format volume to launch new test"|tee -a ${logfile}
>>> +        echo y|${MKFS_BIN} -C ${CLUSTERSIZE} -b ${BLOCKSIZE} -N ${SLOTS} -L ${LABEL} ${DEVICE_NAME} || {
>>> +                ${ECHO} "Can not format ${DEVICE_NAME}"
>>> +                return 1
>>> +        }
>>> +
>>> +        ${ECHO} "Mount volume to all nodes"|tee -a ${logfile}
>>> +        ${REMOTE_MOUNT_BIN} -l ${LABEL} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +
>>> +        ${BINDIR}/run_create_racer.py -i 40000 -l ${logfile} -n ${NODE_LIST} -p ${testpath}
>>> +
>>> +	LogRC $?
>>> +
>>> +	${ECHO} "Umount volume from all nodes after test."|tee -a ${logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +}
>>> +
>>> +run_flock_tests()
>>> +{
>>> +	LogMsg "flock-tests"
>>> +
>>> +	local logdir=${O2TDIR}/log/flock_log
>>> +        local flock_logfile=${logdir}/flock_test_${DATE}.log
>>> +        local fcntl_logfile=${logdir}/fcntl_test_${DATE}.log
>>> +
>>> +        local testfile1=${MOUNT_POINT}/flock_test_file1
>>> +	local testfile2=${MOUNT_POINT}/flock_test_file2
>>> +
>>> +	${SUDO} touch ${testfile1}
>>> +	${SUDO} touch ${testfile2}
>>> +
>>> +        ${SUDO} mkdir -p ${logdir}
>>> +        #force to umount volume from all nodes
>>> +        ${ECHO} "Try to umount volume from all nodes before test."|tee -a ${flock_logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${flock_logfile} 2>&1
>>> +
>>> +
>>> +        CLUSTERSIZE=32k
>>> +        BLOCKSIZE=4k
>>> +        SLOTS=4
>>> +        LABEL=ocfs2test
>>> +
>>> +        ${ECHO} "Format volume to launch new test"|tee -a ${flock_logfile}
>>> +        echo y|${MKFS_BIN} -C ${CLUSTERSIZE} -b ${BLOCKSIZE} -N ${SLOTS} -L ${LABEL} ${DEVICE_NAME} || {
>>> +                ${ECHO} "Can not format ${DEVICE_NAME}"
>>> +                return 1
>>> +        }
>>> +
>>> +        ${ECHO} "Mount volume to all nodes"|tee -a ${flock_logfile}
>>> +        ${REMOTE_MOUNT_BIN} -l ${LABEL} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${flock_logfile} 2>&1
>>> +
>>> +        ${BINDIR}/run_flock_unit_test.py -l ${fcntl_logfile} -n ${NODE_LIST} -t fcntl -e ${testfile1} -f ${testfile2} \
>>> +	&& \
>>> +	${BINDIR}/run_flock_unit_test.py -l ${flock_logfile} -n ${NODE_LIST} -t flock -e ${testfile1} -f ${testfile2}
>>> +
>>> +	LogRC $?
>>> +
>>> +	${ECHO} "Umount volume from all nodes after test."|tee -a ${logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +
>>> +}
>>> +
>>> +run_open_delete_test()
>>> +{
>>> +	LogMsg "open-delete-test"
>>> +
>>> +	local logdir=${O2TDIR}/log/open_delete_log
>>> +        local logfile=${logdir}/open_delete_test_${DATE}.log
>>> +
>>> +        local testfile=${MOUNT_POINT}/open_delete_test_file
>>> +
>>> +        ${SUDO} mkdir -p ${logdir}
>>> +        #force to umount volume from all nodes
>>> +        ${ECHO} "Try to umount volume from all nodes before test."|tee -a ${logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +
>>> +
>>> +        CLUSTERSIZE=32k
>>> +        BLOCKSIZE=4k
>>> +        SLOTS=4
>>> +        LABEL=ocfs2test
>>> +
>>> +        ${ECHO} "Format volume to launch new test"|tee -a ${logfile}
>>> +        echo y|${MKFS_BIN} -C ${CLUSTERSIZE} -b ${BLOCKSIZE} -N ${SLOTS} -L ${LABEL} ${DEVICE_NAME} || {
>>> +                ${ECHO} "Can not format ${DEVICE_NAME}"
>>> +                return 1
>>> +        }
>>> +
>>> +        ${ECHO} "Mount volume to all nodes"|tee -a ${logfile}
>>> +        ${REMOTE_MOUNT_BIN} -l ${LABEL} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +
>>> +        ${BINDIR}/open_delete.py -f ${testfile} -i 10000 -l ${logfile} -n ${NODE_LIST}
>>> +
>>> +	LogRC $?
>>> +
>>> +	${ECHO} "Umount volume from all nodes after test."|tee -a ${logfile}
>>> +        ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${NODE_LIST}>>${logfile} 2>&1
>>> +}
>>> +
>>> +f_cleanup()
>>> +{
>>> +	:
>>> +}
>>> +################################################################################
>>> +# Main Entry
>>> +################################################################################
>>> +
>>> +trap 'echo -ne "\n\n">>${LOGFILE};echo  "Interrupted by Ctrl+C,Cleanuping... "|tee -a ${LOGFILE}; f_cleanup;exit 1' SIGINT
>>> +trap ' : ' SIGTERM
>>> +
>>> +f_setup $*
>>> +
>>> +STARTRUN=$(date +%s)
>>> +${ECHO} "`date` - Starting Multiple Nodes Regress test" > ${LOGFILE}
>>> +
>>> +START=$(date +%s)
>>> +run_xattr_test 
>>> +
>>> +START=$(date +%s)
>>> +run_inline_test
>>> +
>>> +START=$(date +%s)
>>> +run_write_append_truncate_test
>>> +
>>> +START=$(date +%s)
>>> +run_multi_mmap_test
>>> +
>>> +START=$(date +%s)
>>> +run_lvb_torture_test
>>> +
>>> +START=$(date +%s)
>>> +run_create_racer_test
>>> +
>>> +START=$(date +%s)
>>> +run_flock_tests
>>> +
>>> +START=$(date +%s)
>>> +run_open_delete_test
>>> +
>>> +END=$(date +%s)
>>> +DIFF=$(( ${END} - ${STARTRUN} ));
>>> +${ECHO} "Total Runtime ${DIFF} seconds.\n" >> ${LOGFILE}
>>> +${ECHO} "`date` - Ended Multiple Nodes Regress test" >> ${LOGFILE}
>>> +
>>> +
>>>   
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Ocfs2-tools-devel mailing list
>> Ocfs2-tools-devel at oss.oracle.com
>> http://oss.oracle.com/mailman/listinfo/ocfs2-tools-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://oss.oracle.com/pipermail/ocfs2-tools-devel/attachments/20081009/9cf344ca/attachment-0001.html 


More information about the Ocfs2-tools-devel mailing list