This is an automated email from the git hooks/post-receive script.

jforbes pushed a commit to branch master
in repository kernel-tests.

commit 59821e8afb643d3413a85b081d8c3d509db29b7e
Author: Josh Boyer <jwbo...@redhat.com>
Date:   Wed Jun 13 14:04:25 2012 -0400

    Add cachedrop test
    
    Adapted from a similar test originally authored by Zhouping Liu
---
 default/cachedrop/drop_caches.sh | 123 +++++++++++++++++++++++++++++++++++++++
 default/cachedrop/runtest.sh     |  16 +++++
 2 files changed, 139 insertions(+)

diff --git a/default/cachedrop/drop_caches.sh b/default/cachedrop/drop_caches.sh
new file mode 100755
index 0000000..b6f0bf5
--- /dev/null
+++ b/default/cachedrop/drop_caches.sh
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+# Copyright (c) 2011 Red Hat, Inc. All rights reserved. This copyrighted 
material 
+# is made available to anyone wishing to use, modify, copy, or
+# redistribute it subject to the terms and conditions of the GNU General
+# Public License v.2.
+#
+# 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
USA.
+#
+# Author: Zhouping Liu <z...@redhat.com>
+
+TMP_FILE=`mktemp /tmp/drop_XXXXXX`
+TUNE_FILE=/proc/sys/vm/drop_caches
+
+function verify_tune_value()
+{
+       if [ $# -ne 2 ]; then
+               echo "Usage: verify_tune [TUNE_FILE] [TUNE_VALUE]"
+               exit -1;
+       fi
+
+       TUNE_FILE=$1
+       TUNE_VALUE=$2
+
+       TEST_TUNE=`cat ${TUNE_FILE}`
+       if [ ${TEST_TUNE} -ne ${TUNE_VALUE} ]; then
+               echo "TestError: Set value to ${TUNE_FILE} Failed"
+               exit -1
+       fi
+}
+
+function free_pagecache()
+{
+       dd if=/dev/zero of=${TMP_FILE} bs=1024k count=100 > /dev/null
+       sleep 1
+       original_cache=`vmstat | awk '{print $6}'| sed -n '3p'`
+
+       sync
+       echo 1 > ${TUNE_FILE}
+       verify_tune_value ${TUNE_FILE} 1
+
+       sleep 1
+       new_pagecache=`vmstat | awk '{print $6}'| sed -n '3p'`
+       if [ ${new_pagecache} -gt ${original_cache} ]; then
+               echo "TestError: Can't free pagecache"
+               echo "${new_cache} ${original_cache}"
+               exit -1
+       fi
+
+       rm -rf ${TMP_FILE}
+}
+
+function free_dentries_inodes()
+{
+       for X in `seq 1 20`; do
+               touch ${TMP_FILE}$X
+               echo "TEST" > ${TMP_FILE}$X
+       done
+       sleep 2
+       original_cache=`vmstat | awk '{print $6}'| sed -n '3p'`
+       
+       sync
+       echo 2 > ${TUNE_FILE}
+       verify_tune_value ${TUNE_FILE} 2
+       sleep 2
+
+       new_cache=`vmstat | awk '{print $6}'| sed -n '3p'`
+       if [ ${new_cache} -gt ${original_cache} ]; then
+               echo "TestError: Can't free dentries and inodes"
+               echo "${new_cache} ${original_cache}"
+               exit -1
+       fi
+
+       rm -rf ${TMP_FILE}*
+}
+
+function free_pagecache_dentries_inodes()
+{
+       dd if=/dev/zero of=${TMP_FILE} bs=1024k count=10 > /dev/null
+       for X in `seq 1 10`; do
+               touch ${TMP_FILE}$X
+               echo "TEST" > ${TMP_FILE}$X
+       done
+       sleep 2
+
+       original_cache=`vmstat | awk '{print $6}'| sed -n '3p'`
+
+       sync
+       echo 3 > ${TUNE_FILE}
+       verify_tune_value ${TUNE_FILE} 3
+       sleep 1
+       
+       new_cache=`vmstat | awk '{print $6}'| sed -n '3p'`
+       if [ ${new_cache} -gt ${original_cache} ]; then
+               echo "TestError: Can't free dentries and inodes and pagecache"
+               echo "${new_cache} ${original_cache}"
+               exit -1
+       fi
+
+       rm -rf ${TMP_FILE}*
+}
+
+function main()
+{
+       if ! [ -f ${TUNE_FILE} ]; then
+               echo "Could not locate ${TUNE_FILE}"
+               exit -1
+       fi
+
+       free_pagecache
+       free_dentries_inodes
+       free_pagecache_dentries_inodes
+
+       echo "TestPASS: ${TUNE_FILE} PASS"
+}
+
+main
diff --git a/default/cachedrop/runtest.sh b/default/cachedrop/runtest.sh
new file mode 100755
index 0000000..e565dea
--- /dev/null
+++ b/default/cachedrop/runtest.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+source ../../utils/root-check.sh
+
+check_root
+is_root=$?
+if [ "$is_root" -ne "0" ]; then
+       exit 3
+fi
+
+# Run
+./drop_caches.sh
+if [ "$?" -ne "0" ]; then
+       echo "Could not run tests"
+       exit -1
+fi

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
kernel mailing list
kernel@lists.fedoraproject.org
https://lists.fedoraproject.org/admin/lists/kernel@lists.fedoraproject.org

Reply via email to