[Ocfs2-tools-devel] [Ocfs2-test-devel] [PATCH 1/6] New set of inline-data testing tools:Add shell wrapper for single-node inline-data testing.

tristan.ye tristan.ye at oracle.com
Sun Aug 31 22:54:13 PDT 2008


On Mon, 2008-09-01 at 10:52 +0800, Tao Ma wrote:
> Hi Tristan,
> 	We have moved ocfs2-test to git version control.
> You can see information about the new Git repository at
> http://oss.oracle.com/projects/ocfs2-test/source.html
> 
> So could you please resend them based on git next round?

Yes,the all coming pathes will be based on git flavor:)

> 
> tristan.ye wrote:
> > This patch aims at creating a shell wrapper to schedule the testcases
> > for single-node inline-data testing,which helps to make things easier to
> > go by automating testing.
> > 
> > Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
> > ---
> > 
> > Index: ocfs2-test/programs/inline-data/single-inline-run.sh
> > ===================================================================
> > --- ocfs2-test/programs/inline-data/single-inline-run.sh	(revision 0)
> > +++ ocfs2-test/programs/inline-data/single-inline-run.sh	(revision 0)
> > @@ -0,0 +1,372 @@
> > +#!/bin/bash
> > +# vi: set ts=8 sw=8 autoindent noexpandtab :
> > +################################################################################
> > +#
> > +# File :        single-inline-run.sh
> > +#
> > +# Description:  The wrapper script help to run the inline-data test for
> > both files and
> > +#		dirs.
> > +#       
> > +#
> > +# Author:       Tristan Ye,     tristan.ye at oracle.com
> > +#
> > +# History:      25 Aug 2008
> > +#
> > +
> > +################################################################################
> > +# Global Variables
> > +################################################################################
> > +PATH=$PATH:/sbin      # Add /sbin to the path for ocfs2 tools
> > +export PATH=$PATH:.
> > +RM="`which rm`"
> > +MKDIR="`which mkdir`"
> > +TOUCH_BIN="`which touch`"
> > +MOUNT_BIN="`which sudo` -u root `which mount`"
> > +UMOUNT_BIN="`which sudo` -u root `which umount`"
> > +MKFS_BIN="`which sudo` -u root `which mkfs.ocfs2`"
> > +INLINE_DATA_BIN=`which single-inline-data`
> > +INLINE_DIRS_BIN=`which single-inline-dirs`
> > +DEFAULT_LOG="single-inline-data-test-logs"
> > +LOG_OUT_DIR=
> > +DATA_LOG_FILE=
> > +DIRS_LOG_FILE=
> > +RUN_LOG_FILE=
> > +MOUNT_POINT=
> > +OCFS2_DEVICE=
> > +
> > +BLOCKSIZE=
> > +CLUSTERSIZE=
> > +BLOCKNUMS=
> > +
> > +
> > +set -o pipefail
> > +
> > +BOOTUP=color
> > +RES_COL=80
> > +MOVE_TO_COL="echo -en \\033[${RES_COL}G"
> > +SETCOLOR_SUCCESS="echo -en \\033[1;32m"
> > +SETCOLOR_FAILURE="echo -en \\033[1;31m"
> > +SETCOLOR_WARNING="echo -en \\033[1;33m"
> > +SETCOLOR_NORMAL="echo -en \\033[0;39m"
> > +LOGLEVEL=1
> > +
> > +echo_success()
> > +{
> > +  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
> > +  echo -n "["
> > +  [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
> > +  echo -n $" PASS "
> > +  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
> > +  echo -n "]"
> > +  return 0
> > +}
> > +
> > +echo_failure()
> > +{
> > +  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
> > +  echo -n "["
> > +  [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
> > +  echo -n $"FAILED"
> > +  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
> > +  echo -n "]"
> > +  return 1
> > +}
> > +
> > +echo_status()
> > +{
> > +	if [ "${1}" == "0" ];then
> > +		echo_success
> > +		echo
> > +	else
> > +		echo_failure
> > +		echo
> > +		exit 1
> > +	fi
> > +
> > +	
> > +}
> > +
> > +exit_or_not()
> > +{
> > +	if [ "${1}" != "0" ];then
> > +		exit 1;
> > +	fi
> > +}
> > +
> > +################################################################################
> > +# Utility Functions
> > +################################################################################
> > +f_usage()
> > +{
> > +    echo "usage: `basename ${0}` [-o output] <-d <device>> <mountpoint
> > path>"
> > +    echo "       -o output directory for the logs"
> > +    echo "       -d device name used for ocfs2 volume"
> > +    echo "       <mountpoint path> path of mountpoint where the ocfs2
> > volume will be mounted on."
> > +    exit 1;
> > +
> > +}
> > +
> > +f_getoptions()
> > +{
> > +         if [ $# -eq 0 ]; then
> > +                f_usage;
> > +                exit 1
> > +         fi
> > +
> > +         while getopts "o:hd:" options; do
> > +                case $options in
> > +                o ) LOG_OUT_DIR="$OPTARG";;
> > +                d ) OCFS2_DEVICE="$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
> > +
> > +        LOG_OUT_DIR=${LOG_OUT_DIR:-$DEFAULT_LOG}
> > +
> > +        ${MKDIR} -p ${LOG_OUT_DIR} || exit 1
> > +
> > +
> > +        LOG_POSTFIX=$(date +%Y%m%d-%H%M%S)
> > +        DATA_LOG_FILE="`dirname ${LOG_OUT_DIR}`/`basename
> > ${LOG_OUT_DIR}`/single-inline-data-test-${LOG_POSTFIX}.log"
> > +        DIRS_LOG_FILE="`dirname ${LOG_OUT_DIR}`/`basename
> > ${LOG_OUT_DIR}`/single-inline-dirs-test-${LOG_POSTFIX}.log"
> > +        RUN_LOG_FILE="`dirname ${LOG_OUT_DIR}`/`basename
> > ${LOG_OUT_DIR}`/run-${LOG_POSTFIX}.log"
> > +
> > +}
> > +
> > +f_do_mkfs_and_mount()
> > +{
> > +	echo -n "Mkfsing device:"|tee -a ${RUN_LOG_FILE}
> > +
> > +	echo y|${MKFS_BIN} --fs-features=inline-data -b ${BLOCKSIZE} -C
> > ${CLUSTERSIZE} -N 4 ${OCFS2_DEVICE} ${BLOCKNUMS}>>${RUN_LOG_FILE} 2>&1
> > +	RET=$?
> > +	echo_status ${RET} |tee -a ${RUN_LOG_FILE}
> > +	exit_or_not ${RET}
> > +
> > +	echo -n "Mounting device to ${MOUNT_POINT}:"|tee -a ${RUN_LOG_FILE}
> > +
> > +	${MOUNT_BIN} -t ocfs2 ${OCFS2_DEVICE}  ${MOUNT_POINT}>>${RUN_LOG_FILE}
> > 2>&1
> > +
> > +	RET=$?
> > +        echo_status ${RET} |tee -a ${RUN_LOG_FILE}
> > +        exit_or_not ${RET}
> > +} 
> > +
> > +f_run_data_test()
> > +{
> > +	echo >>${DATA_LOG_FILE}
> > +        echo
> > "==========================================================">>${DATA_LOG_FILE}
> > +        echo -ne "Functionality Test For Regular File:"|tee -a
> > ${RUN_LOG_FILE}
> > +        echo -ne "Functionality Test For Regular File:">>
> > ${DATA_LOG_FILE}
> > +        echo >>${DATA_LOG_FILE}
> > +        echo
> > "==========================================================">>${DATA_LOG_FILE}
> > +	echo -e "Testing Binary:\t\t${INLINE_DATA_BIN} -i 1 -d ${OCFS2_DEVICE}
> > ${MOUNT_POINT}">>${DATA_LOG_FILE}
> > +
> > +	${INLINE_DATA_BIN} -i 1 -d ${OCFS2_DEVICE}
> > ${MOUNT_POINT}>>${DATA_LOG_FILE} 2>&1
> I think maybe you can add 2 user parameters for data_bin and dir_bin so 
> that the user can give them directly to your script if they want to use 
> other similar programs.

that's something about the scope of applying ,the inline-data testing
binary did not like some other generic binaries,such as
fswreck,mkfs,..etc,it's a little bit specific and tricky,user may do not
care about which binary they're using,some basic info such as device
name,mount_point and workload are quite enough to lunch the test., I
mean, like something sricpt in ocfs2-test,this script just aims at
scheduling the inline-data test.


Tristan.


> 
> btw, I haven't run your program yet, maybe try it when you send a git 
> format one.
> 
> Regards,
> Tao




More information about the Ocfs2-tools-devel mailing list