[Ocfs2-test-devel] [PATCH 1/1] Ocfs2-test: Add a common shell file for public use.
Marcos E. Matsunaga
Marcos.Matsunaga at oracle.com
Thu Feb 26 07:44:09 PST 2009
Looks good to me. I liked that you decided to name it o2tf... keeps more
consistent.
Signed-off-by: Marcos Matsunaga <Marcos.Matsunaga at oracle.com>
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:
> As the testing script for ocfs2-tests grows, we found it is the right
> time to abstract some generic functions from all shell scripts to a
> public utility file to avoid code redundancy. and it is going to keep
> growing with more generic funcs found.
>
> I named it after 'o2tf.sh', which looks quite like the python common file.
> Marcos,how do you think about it?
>
> Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
> ---
> programs/python_common/Makefile | 6 +-
> programs/python_common/o2tf.sh | 299 +++++++++++++++++++++++++++++++++++++++
> 2 files changed, 303 insertions(+), 2 deletions(-)
> create mode 100755 programs/python_common/o2tf.sh
>
> diff --git a/programs/python_common/Makefile b/programs/python_common/Makefile
> index a85deee..b95d675 100644
> --- a/programs/python_common/Makefile
> +++ b/programs/python_common/Makefile
> @@ -17,7 +17,8 @@ DIST_FILES = config_py.skel \
> multiple_run.sh \
> remote_mount.py \
> remote_umount.py \
> - command.py
> + command.py \
> + o2tf.sh
>
> BIN_EXTRA = config_py.skel \
> config_shell.skel \
> @@ -25,7 +26,8 @@ BIN_EXTRA = config_py.skel \
> single_run.sh \
> remote_mount.py \
> remote_umount.py \
> - command.py
> + command.py \
> + o2tf.sh
>
> post-install:
> include $(TOPDIR)/Postamble.make
> diff --git a/programs/python_common/o2tf.sh b/programs/python_common/o2tf.sh
> new file mode 100755
> index 0000000..c73f66c
> --- /dev/null
> +++ b/programs/python_common/o2tf.sh
> @@ -0,0 +1,299 @@
> +# *
> +# * o2tf.sh
> +# *
> +# * Collection of functions used by ocfs2-test shell programs.
> +# *
> +# * Copyright (C) 2008 Oracle. All rights reserved.
> +# *
> +# * This program is free software; you can redistribute it and/or
> +# * modify it under the terms of the GNU General Public
> +# * License version 2 as published by the Free Software Foundation.
> +# *
> +# * This program is distributed in the hope that it will be useful,
> +# * but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> +# * General Public License for more details.
> +# *
> +# * Author : Tristan Ye
> +#
> +# o2tf - OCFS2 Tests Functions.
> +#
> +
> +################################################################################
> +# Global Variables
> +################################################################################
> +PATH=$PATH:/sbin # Add /sbin to the path for ocfs2 tools
> +export PATH=$PATH:.
> +
> +. ./config.sh
> +
> +MKFS_BIN="`which sudo` -u root `which mkfs.ocfs2`"
> +MOUNT_BIN="`which sudo` -u root `which mount`"
> +UMOUNT_BIN="`which sudo` -u root `which umount`"
> +DEBUGFS_BIN="`which sudo` -u root `which debugfs.ocfs2`"
> +TUNEFS_BIN="`which sudo` -u root `which tunefs.ocfs2`"
> +REMOTE_MOUNT_BIN="${BINDIR}/remote_mount.py"
> +REMOTE_UMOUNT_BIN="${BINDIR}/remote_umount.py"
> +
> +TEE_BIN=`which tee`
> +RM_BIN=`which rm`
> +TAR_BIN=`which tar`
> +MKDIR_BIN=`which mkdir`
> +TOUCH_BIN=`which touch`
> +DIFF_BIN=`which diff`
> +MOVE_BIN=`which mv`
> +CP_BIN=`which cp`
> +SED_BIN=`which sed`
> +CUT_BIN=`which cut`
> +AWK_BIN=`which awk`
> +CHOWN_BIN=`which chown`
> +CHMOD_BIN=`which chmod`
> +
> +SUDO="`which sudo` -u root"
> +
> +USERNAME=`id -un`
> +GROUPNAME=`id -gn`
> +
> +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"
> +
> +################################################################################
> +# Utility Functions
> +################################################################################
> +function f_echo_success()
> +{
> + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
> + echo -n "["
> + [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
> + echo -n $" PASS "
> + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
> + echo -n "]"
> +
> + return 0
> +}
> +
> +function f_echo_failure()
> +{
> + [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
> + echo -n "["
> + [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
> + echo -n $"FAILED"
> + [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
> + echo -n "]"
> +
> + return 1
> +}
> +
> +function f_echo_status()
> +{
> + if [ "${1}" == "0" ];then
> + f_echo_success
> + echo
> + else
> + f_echo_failure
> + echo
> + exit 1
> + fi
> +}
> +
> +function f_exit_or_not()
> +{
> + if [ "${1}" != "0" ];then
> + exit 1;
> + fi
> +}
> +
> +function f_LogRunMsg()
> +{
> + #${1} specify the RUN_LOG_FILE
> + #Rest of params are log content
> +
> + local run_logfile=${1}
> +
> + shift 1
> +
> + echo -ne "$@"| ${TEE_BIN} -a ${run_logfile}
> +}
> +
> +function f_LogMsg()
> +{
> + #${1} specify the LOG_FILE
> + #Rest of params are log content
> +
> + local logfile=${1}
> +
> + shift 1
> +
> + echo "$(date +%Y/%m/%d,%H:%M:%S) $@" >>${logfile}
> +}
> +
> +function f_mkfs()
> +{
> + #${1} specify log file
> +
> + #${2} specify block size
> + #${3} specify cluster size
> + #${4} specify label name
> + #${5} specify max slot number
> + #${6} specify device name
> + #${7} specify fs features
> + #${8} specify journal size
> + #${9} specify volume size
> +
> + local slot_opts=""
> + if [ "${5}" == "0" ];then
> + slot_opts="-M local"
> + else
> + slot_opts="-N ${5}"
> + fi
> +
> + local journal_opts=""
> + if [ "${8}" != "0" ];then
> + journal_opts="-J size=${8}M"
> + fi
> +
> + local blocks=""
> + if [ "${9}" != "0" ];then
> + blocks="${9}"
> + fi
> +
> + local logfile=${1}
> +
> + local B=${2} #block size
> + local C=${3} #cluster size
> + local L=${4} #volume name
> + local D=${6} #device name
> + local O=${7} #fs featuers
> +
> + shift 9
> + R=${1} #Reserved options
> +
> + f_LogMsg ${logfile} "${MKFS_BIN} --fs-features=${O} -b ${B} -C ${C} -L ${L} ${slot_opts} ${journal_opts} ${R} ${D} ${blocks}"
> + echo "y"|${MKFS_BIN} --fs-features=${O} -b ${B} -C ${C} -L ${L} ${slot_opts} ${journal_opts} ${R} ${D} ${blocks}>>${logfile} 2>&1
> + RET=$?
> +
> + if [ "${RET}" != "0" ];then
> + f_LogMsg ${logfile} "Mkfs failed"
> + return 1
> + fi
> +
> + return 0
> +}
> +
> +function f_mount()
> +{
> + #${1} specify the logfile
> +
> + #${2} specify the device
> + #${3} specify the mount point
> +
> + #${4} specify fs type
> + #${5} specify mount options
> +
> + local logfile=${1}
> +
> + local D=${2}
> + local M=${3}
> +
> + local T=${4}
> + local fs_type="-t ${T}"
> +
> + shift 4
> +
> + local O=${@}
> + if [ ! -z "${O}" ];then
> + local mt_opts="-o ${O}"
> + fi
> +
> + f_LogMsg ${logfile} "${MOUNT_BIN} ${fs_type} ${mt_opts} ${D} ${M}"
> + ${MOUNT_BIN} ${fs_type} ${mt_opts} ${D} ${M} >>${logfile} 2>&1
> + RET=$?
> +
> + if [ "${RET}" != "0" ];then
> + f_LogMsg ${logfile} "Mount volume failed"
> + return 1
> + fi
> +
> + ${SUDO} ${CHMOD_BIN} -R 777 ${M} >>${logfile} 2>&1
> + ${SUDO} ${CHOWN_BIN} -R ${USERNAME}:${GROUPNAME} ${M} >>${logfile} 2>&1
> +
> + return 0
> +}
> +
> +function f_umount()
> +{
> + #${1} specify logfile
> + #${2} specify mount point
> +
> + local logfile=${1}
> + local M=${2}
> +
> + f_LogMsg ${logfile} "Umount Volume from ${M}"
> + ${UMOUNT_BIN} ${M} >>${logfile} 2>&1
> + RET=$?
> +
> + if [ "${RET}" != "0" ];then
> + f_LogMsg ${logfile} "Mount volume failed"
> + return 1
> + fi
> +
> + return 0
> +}
> +
> +function f_remote_mount()
> +{
> + #${1} specify logfile
> +
> + #${2} specify label name
> + #${3} specify mount point
> + #${4} specify MPI hosts, it's comma-spearated-value
> +
> + local logfile=${1}
> +
> + local L=${2}
> + local M=${3}
> + local MPIHOSTS=${4}
> +
> + f_LogMsg ${logfile} "${REMOTE_MOUNT_BIN} -l ${L} -m ${M} -n ${MPIHOSTS}"
> + ${REMOTE_MOUNT_BIN} -l ${L} -m ${M} -n ${MPIHOSTS}>>${logfile} 2>&1
> + RET=$?
> +
> + if [ "${RET}" != "0" ];then
> + f_LogMsg ${logfile} "Remote mount failed"
> + return ${RET}
> + fi
> +
> + ${SUDO} chown -R ${USERNAME}:${GROUPNAME} ${M}
> + ${SUDO} chmod -R 777 ${M}
> +
> + return 0
> +}
> +
> +function f_remote_umount()
> +{
> + #${1} specify logfile
> +
> + #${2} specify mount point
> + #${3} specify mpi hosts
> +
> + local logfile=${1}
> +
> + local M=${2}
> + local MPIHOSTS=${3}
> +
> + f_LogMsg ${logfile} "${REMOTE_UMOUNT_BIN} -m ${M} -n ${MPIHOSTS}"
> + ${REMOTE_UMOUNT_BIN} -m ${M} -n ${MPIHOSTS}>>${logfile} 2>&1
> + RET=$?
> +
> + if [ "${RET}" != "0" ];then
> + f_LogMsg ${logfile} "Remote umount failed"
> + return ${RET}
> + fi
> +
> + return 0
> +}
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://oss.oracle.com/pipermail/ocfs2-test-devel/attachments/20090226/dba7d023/attachment.html
More information about the Ocfs2-test-devel
mailing list