[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