<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000066" bgcolor="#ffffcc">
<tt>Tristan,<br>
<br>
I only have some questions about sendfiletest. If I remember correctly,
it requires interaction on the receiving node. I don't remember very
well as I used it a while ago. Also, on run_sendfiletest(), the error
message needs to be corrected. It shows as run_splice.<br>
<br>
<br>
Other than that, it all seems fine to me.<br>
</tt><br>
<pre class="moz-signature" cols="72">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.”
</pre>
<br>
On 06/29/2010 05:45 AM, Tristan Ye wrote:
<blockquote
cite="mid:1277804700-10012-1-git-send-email-tristan.ye@oracle.com"
type="cite">
<pre wrap="">The original intention here to grow the single_run-WIP.sh is for mainline
regression test, this patch tries to make all missing testcases present
into script for a comprehensive single-node testing.
Signed-off-by: Tristan Ye <a class="moz-txt-link-rfc2396E" href="mailto:tristan.ye@oracle.com"><tristan.ye@oracle.com></a>
---
programs/python_common/single_run-WIP.sh | 452 ++++++++++++++++++++++++++++++
1 files changed, 452 insertions(+), 0 deletions(-)
diff --git a/programs/python_common/single_run-WIP.sh b/programs/python_common/single_run-WIP.sh
index ca888cf..89dafe8 100755
--- a/programs/python_common/single_run-WIP.sh
+++ b/programs/python_common/single_run-WIP.sh
@@ -193,6 +193,115 @@ do_mkdir() {
        ${SUDO} ${CHOWN} -R ${USERID} $1
}
+run_create_and_open()
+{
+        log_message "run_create_and_open" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_create_and_open()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        workdir=${mountpoint}/create_and_open_test
+        blocksize=4096
+        clustersize=32768
+        features="sparse,unwritten,inline-data"
+
+        mountopts="defaults"
+
+        log_start "create_and_open"
+
+        do_format ${blocksize} ${clustersize} ${features} ${device}
+        do_mount ${device} ${mountpoint} ${mountopts}
+        do_mkdir ${workdir}
+
+        outlog=${logdir}/create_and_open.log
+
+        create_and_open ${workdir} >${outlog} 2>&1
+        RC=$?
+
+        do_umount ${mountpoint}
+
+        log_end ${RC}
+}
+
+run_extend_and_write()
+{
+        log_message "run_extend_and_write" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_extend_and_write()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        workfile=${mountpoint}/extend_and_write_testfile
+        blocksize=4096
+        clustersize=32768
+        features="sparse,unwritten,inline-data"
+
+        for mopt in writeback ordered;do
+
+                mountopts="data=${mopt}"
+
+                log_start "extend_and_write_test" ${mountopts}
+
+                do_format ${blocksize} ${clustersize} ${features} ${device}
+                do_mount ${device} ${mountpoint} ${mountopts}
+
+                outlog=${logdir}/extend_and_write.log
+
+                run_extend_and_write.py -f ${workfile} -l ${outlog} -n 1000 -s 4096
+                RC=$?
+
+                do_umount ${mountpoint}
+
+                log_end ${RC}
+        done
+}
+
+run_directaio()
+{
+        log_message "run_directaio" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_directaio()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        workfile=${mountpoint}/directaio_testfile
+        blocksize=4096
+        clustersize=32768
+        features="sparse,unwritten,inline-data"
+
+        for mopt in writeback ordered
+        do
+                mountopts="data=${mopt}"
+
+                log_start "direct-aio" ${mountopts}
+
+                do_format ${blocksize} ${clustersize} ${features} ${device}
+                do_mount ${device} ${mountpoint} ${mountopts}
+
+                outlog=${logdir}/directaio_${mopt}.log
+
+                partial_aio_direct ${workfile} >${outlog} 2>&1
+                RC=$?
+
+                do_umount ${mountpoint}
+        
+                log_end ${RC}
+        done
+}
+
# run_aiostress ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
run_aiostress()
{
@@ -495,6 +604,323 @@ run_renamewriterace()
        done
}
+run_splice()
+{
+        log_message "run_splice" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_splice()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        workdir=${mountpoint}/testme
+        blocksize=4096
+        clustersize=32768
+        features="sparse,unwritten,inline-data"
+
+        for mopt in writeback ordered
+        do
+                mountopts="data=${mopt}"
+
+                log_start "splice" ${mountopts}
+
+                do_format ${blocksize} ${clustersize} ${features} ${device}
+                do_mount ${device} ${mountpoint} ${mountopts}
+                do_mkdir ${workdir}
+
+ outlog=${logdir}/splice_${mopt}.log
+
+                splice_test.py -d ${workdir} -c 1000 -f splice_test.dat >${outlog} 2>&1
+                RC=$?
+
+                do_umount ${mountpoint}
+
+                log_end ${RC}
+        done
+}
+
+run_sendfile()
+{
+        log_message "run_sendfile" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_splice()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        workfile=${mountpoint}/ocfs2_sendfile_data
+        verifyfile=/tmp/sendfile_verify
+        
+        blocksize=4096
+        clustersize=32768
+        features="sparse,unwritten,inline-data"
+        port=8001
+
+        for mopt in writeback ordered
+        do
+                mountopts="data=${mopt}"
+
+                log_start "sendfile" ${mountopts}
+
+                do_format ${blocksize} ${clustersize} ${features} ${device}
+                do_mount ${device} ${mountpoint} ${mountopts}
+
+                # Generate original date file
+                dd if=/dev/random of=${workfile} bs=${clustersize} count=4
+ outlog=${logdir}/sendfile_${mopt}.log
+
+                nc -l ${port} >${verifyfile} &
+                sendfiletest ${workfile} `hostname` >${outlog} 2>&1
+                RC=$?
+
+                md51=`md5sum ${workfile}|cut -d' ' -f1`
+                md52=`md5sum ${verifyfile}|cut -d' ' -f1`
+
+                if [ "${md51}" != "${md52}" ];then
+                        log_message "md5sum verification failed."
+                        RC=1
+                fi
+
+                do_umount ${mountpoint}
+
+                log_end ${RC}
+        done
+}
+
+run_mmap()
+{
+        log_message "run_mmap" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_mmap()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        workfile=${mountpoint}/mmap_testfile
+        features="sparse,unwritten,inline-data"
+
+        for blocksize in 512 1024 2048 4096;do
+                for clustersize in 4096 32768 1048576;do
+                        for mopt in writeback ordered;do
+                                mountopts="data=${mopt}"
+
+                                log_start "mmap" ${blocksize} ${clustersize} ${features} ${mountopts}
+
+                                do_format ${blocksize} ${clustersize} ${features} ${device}
+                                do_mount ${device} ${mountpoint} ${mountopts}
+
+                                outlog=${logdir}/mmap_${mopt}_${blocksize}_${clustersize}.log
+
+                                dd if=/dev/zero of=${workfile} bs=1M count=1024
+                                mmap_test ${workfile} >${outlog} 2>&1
+                                RC=$?
+
+                                do_umount ${mountpoint}
+
+                                log_end ${RC}
+                        done
+                done
+        done
+}
+
+run_reserve_space()
+{
+        log_message "run_reserve_space" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_reserve_space()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        workfile=${mountpoint}/reserve_space_testfile
+        features="sparse,unwritten,inline-data"
+        space_free=
+        iter=1000
+
+        for blocksize in 512 1024 2048 4096;do
+                for clustersize in 4096 32768 1048576;do
+                        for mopt in writeback ordered;do
+                                mountopts="data=${mopt}"
+
+                                log_start "reserve_space" ${blocksize} ${clustersize} ${features} ${mountopts}
+
+                                do_format ${blocksize} ${clustersize} ${features} ${device}
+                                do_mount ${device} ${mountpoint} ${mountopts}
+
+                                outlog=${logdir}/reserve_space_${mopt}_${blocksize}_${clustersize}.log
+                                space_free=`df|grep ${device}|awk '{print $4}'`
+                                space_free=$((${space_free}*1024))
+
+                                for i in `seq ${iter}`;do
+                                        r_whence=0
+                                        r_start=$((${RANDOM}%${space_free}))
+                                        r_len=$((${RANDOM}%(${space_free}-${r_start})))
+
+                                        reserve_space ${workfile} resv ${r_whence} ${r_start} ${r_len} >>${outlog} 2>&1 || {
+                                                RC=$?
+                                                break
+                                        }
+                                
+                                        reserve_space ${workfile} unresv ${r_whence} ${r_start} ${r_len} >>${outlog} 2>&1 || {
+                                                RC=$?
+                                                break
+                                        }
+                                done
+
+                                do_umount ${mountpoint}
+
+                                log_end ${RC}
+                        done
+                done
+        done
+}
+
+run_inline_data()
+{
+        log_message "run_inline_data" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_inline_data()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        log_start "inline_data_test"
+        single-inline-run.sh -o ${logdir} -d ${device} ${mountpoint}
+        RC=$?
+        log_end ${RC}
+}
+
+run_dx_dir()
+{
+        log_message "run_dx_dir" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_dx_dir()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+ kernelsrc=$4
+
+        log_start "index_dir_test"
+        index_dir_run.sh -o ${logdir} -d ${device} -t ${kernelsrc} ${mountpoint}
+        RC=$?
+        log_end ${RC}
+}
+
+run_xattr_test()
+{
+        log_message "run_xattr_test" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_xattr_test()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        log_start "xattr_test"
+        xattr-single-run.sh -c -o ${logdir} -d ${device} ${mountpoint}
+        RC=$?
+
+        log_end ${RC}
+}
+
+run_reflink_test()
+{
+        log_message "run_reflink_test" $@
+ if [ "$#" -lt "3" ]; then
+ echo "Error in run_reflink()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+        mountpoint=$3
+
+        #ordered mount option
+        log_start "reflink_test" "ordered"
+        ./reflink_test_run.sh -o ${logdir} -d ${device} ${mountpoint} || {
+                RC=$?
+                log_end ${RC}
+        }
+
+        #writeback mount option
+        log_start "reflink_test" "writeback"
+        ./reflink_test_run.sh -W -o ${logdir} -d ${device} ${mountpoint}
+        RC=$?
+        log_end ${RC}
+}
+
+# Following cases aim to test tools
+run_mkfs()
+{
+        log_message "run_mkfs" $@
+ if [ "$#" -lt "2" ]; then
+ echo "Error in run_mkfs()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+
+        log_start "mkfs_test"
+        mkfs-test.sh -o ${logdir} -d ${device}
+        RC=$?
+        log_end ${RC}
+}
+
+run_tunefs()
+{
+        log_message "run_tunefs" $@
+ if [ "$#" -lt "2" ]; then
+ echo "Error in run_tunefs()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+
+        log_start "tunefs_test"
+        tunefs-test.sh --with-mkfs=/sbin/mkfs.ocfs2 --log-dir=${logdir} ${device}
+        RC=$?
+        log_end ${RC}
+}
+
+run_backup_super()
+{
+        log_message "run_backup_super" $@
+ if [ "$#" -lt "2" ]; then
+ echo "Error in run_backup_super()"
+ exit 1
+ fi
+
+        logdir=$1
+        device=$2
+
+        log_start "backup_super_test"
+        test_backup_super.sh --with-mkfs=/sbin/mkfs.ocfs2 --log-dir=${logdir} ${device}
+        RC=$?
+        log_end ${RC}
+}
+
#
#
# MAIN
@@ -561,6 +987,10 @@ log_message "*** Start Single Node test ***"
${ECHO} "Output log is ${LOGFILE}"
+run_create_and_open ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
+run_directaio ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
run_fillverifyholes ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
run_renamewriterace ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
@@ -573,6 +1003,28 @@ run_mmaptruncate ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
run_buildkernel ${LOGDIR} ${DEVICE} ${MOUNTPOINT} ${KERNELSRC}
+run_splice ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
+run_sendfile ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
+run_mmap ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
+run_reserve_space ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
+run_inline_data ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
+run_xattr_test ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
+run_reflink_test ${LOGDIR} ${DEVICE} ${MOUNTPOINT}
+
+# For tools test.
+
+run_mkfs ${LOGDIR} ${DEVICE}
+
+run_tunefs ${LOGDIR} ${DEVICE}
+
+run_backup_super ${LOGDIR} ${DEVICE}
+
ENDRUN=$(date +%s)
DIFF=$(( ${ENDRUN} - ${STARTRUN} ))
</pre>
</blockquote>
</body>
</html>