summaryrefslogtreecommitdiffstats
path: root/sanity/nightly_valgrind
diff options
context:
space:
mode:
Diffstat (limited to 'sanity/nightly_valgrind')
-rwxr-xr-xsanity/nightly_valgrind/nightly_valgrind.sh399
1 files changed, 399 insertions, 0 deletions
diff --git a/sanity/nightly_valgrind/nightly_valgrind.sh b/sanity/nightly_valgrind/nightly_valgrind.sh
new file mode 100755
index 0000000..b76f6c5
--- /dev/null
+++ b/sanity/nightly_valgrind/nightly_valgrind.sh
@@ -0,0 +1,399 @@
+#!/bin/bash
+
+ulimit -c unlimited
+set -x
+
+#set -u
+export PATH=$PATH:/opt/qa/tools:/usr/local/bin:/usr/local/sbin
+
+WORKSPACE_DIR="/opt/users/nightly_sanity_valgrind/glusterfs"
+WORKDIR="/mnt/nightly_valgrind"
+translator=$1
+VOLNAME=$translator
+SPECDIR="/etc/glusterd/vols/$VOLNAME"
+BUILDDIR="$WORKSPACE_DIR/build"
+
+LOGDIR="$WORKDIR/logs_$translator/`date +%F`"
+EXPORTDIR=$WORKDIR/data
+MOUNTDIR=$WORKDIR/mount/$translator
+RESULTDIR=/tmp/nightly_valgrind-results
+SYSCALLDIR="$WORKDIR/syscall"
+COREDIR="$WORKDIR/$translator"
+CORE_REPOSITORY="/opt/cores"
+
+echo "$COREDIR/core" > /proc/sys/kernel/core_pattern
+
+#EMAIL="dl-qa@gluster.com"
+EMAIL="lakshmipathi@shell.gluster.com:/home/lakshmipathi/nightly_valgrind/"
+RFILE="lakshmipathi@shell.gluster.com:/home/lakshmipathi/resultfile/"
+BINDIR="/opt/glusterfs/nightly_valgrind"
+TOOLDIR="/opt/qa/tools/tools.git/syscallbench"
+#WORKSPACE_DIR="/home/gluster/laks/new/glusterfs/"
+#WORKDIR="/mnt/nightly"
+#SPECDIR="/opt/users/vijay/nightly"
+#BUILDDIR="$WORKSPACE_DIR/build"
+
+#LOGDIR="$WORKDIR/logs/`date +%F`"
+#EXPORTDIR=$WORKDIR/data
+#MOUNTDIR=$WORKDIR/mount
+#RESULTDIR=/tmp/nightly-results
+
+#EMAIL="lakshmipathi@gluster.com"
+#BINDIR="/home/gluster/laks/new/glusterfs/build/build"
+
+VALGRIND="valgrind --error-limit=no --leak-check=full --show-reachable=yes --log-file="
+
+function update_git ()
+{
+ cd $WORKSPACE_DIR
+ echo "$WORKSPACE_DIR in there"
+ git pull
+}
+
+function prepare_dirs()
+{
+ if [ ! -d $EXPORTDIR ]
+ then
+ mkdir -p $EXPORTDIR;
+ fi
+
+ if [ ! -d $MOUNTDIR ]
+ then
+ mkdir -p $MOUNTDIR
+ fi
+
+
+ j=0;
+ #Create individual export_dirs
+ #cd $SPECDIR
+ #for i in `ls server*.vol`
+ #do
+ # let "j += 1"
+ # mkdir -p $EXPORTDIR/export$j
+ #done
+
+ #j=0
+ #for i in `ls client*.vol`
+ #do
+ # let "j += 1"
+ # mkdir -p $MOUNTDIR/client$j
+ #done
+
+ if [ ! -d $LOGDIR ]
+ then
+ mkdir -p $LOGDIR
+ fi
+
+ if [ ! -d $SYSCALLDIR ]
+ then
+ mkdir -p $SYSCALLDIR
+ fi
+
+ if [ ! -d $COREDIR ]
+ then
+ mkdir -p $COREDIR
+ fi
+}
+
+function install_glusterfs()
+{
+
+ cd $WORKSPACE_DIR
+ ./autogen.sh;
+# make distclean
+ if [ ! -d $BUILDDIR ]
+ then
+ mkdir $BUILDDIR;
+ fi
+ #cd $BUILDDIR;
+# make clean -j 32;
+ export CFLAGS="-g -O0"
+ ./configure --enable-libglusterfsclient --enable-fusermount --prefix=$BINDIR>/dev/null;
+# ../configure --prefix=$BINDIR>/dev/null;
+ make -j 32>/dev/null;
+ echo "Post make"
+ make install -j 32>/dev/null;
+
+}
+
+function start_glusterfs ()
+{
+ cd $SPECDIR;
+ HOSTNAME=`hostname`
+ j=0;
+ for i in `ls $VOLNAME.$HOSTNAME*.vol`
+ do
+ let "j += 1"
+ #bname=`basename $i .vol`
+ RUN_VALGRIND="$VALGRIND$LOGDIR/$i.val.log"
+ ( $RUN_VALGRIND $BINDIR/sbin/glusterfsd -f $SPECDIR/$i -l $LOGDIR/$i.log -p $LOGDIR/$i.pid "-N" ) &
+ sleep 30
+ #$BINDIR/sbin/glusterfsd -f $SPECDIR/$i -l $LOGDIR/$bname$j.log -p $LOGDIR/$bname$j.pid
+ done
+
+ j=0
+ for i in `ls $VOLNAME-fuse.vol`
+ do
+ #let "j += 1"
+ #bname=`basename $i .vol`
+ #$BINDIR/sbin/glusterfs -f $SPECDIR/$i -l $LOGDIR/$bname$j.log -p $LOGDIR/$bname$j.pid $MOUNTDIR/client$j
+ RUN_VALGRIND="$VALGRIND$LOGDIR/$i.val.log"
+ #( $RUN_VALGRIND $BINDIR/sbin/glusterfs -f $SPECDIR/$i -l $LOGDIR/$i.log -p $LOGDIR/client.pid $MOUNTDIR/client$j "-N" )&
+ ( $RUN_VALGRIND $BINDIR/sbin/glusterfs -f /etc/glusterd/vols/$translator/$VOLNAME-fuse.vol -l $LOGDIR/$i.log $MOUNTDIR/client0 "-N" )&
+ sleep 40
+ done
+
+}
+
+
+function run_tests ()
+{
+ cd $MOUNTDIR/client0;
+ #set +e;
+ /opt/qa/tools/system_light/run.sh -w $MOUNTDIR/client0 -l /tmp/runlog.$translator
+ #/opt/qa/tools/iozone -a -s 1024
+ x=$?;
+ if [ !x ]
+ then
+ echo "Sanity Passed!";
+ else
+ echo "Sanity Failed. Please check your changes!";
+ fi
+}
+
+function stop_glusterfs()
+{
+ cd $LOGDIR
+ j=0
+
+ #for i in `ls client*.pid`
+ #do
+ # let "j += 1"
+ umount $MOUNTDIR/client0
+ if [ $? -ne 0 ]; then
+ echo "client unmounting failed"
+ fi
+ #done
+ for i in `ls $VOLNAME*.pid`
+ do
+ cat $i | xargs kill
+ done
+
+}
+
+function cleanup()
+{
+
+ j=0;
+ for i in `ls $SPECDIR | grep server*.vol`
+ do
+ let "j += 1";
+ rm -rfv $EXPORTDIR/export$j
+ done
+
+ j=0
+ for i in `ls $SPECDIR | grep client*.vol`
+ do
+ let "j += 1"
+ rm -rfv $MOUNTDIR/client$j;
+ done
+}
+
+function pre_run()
+{
+ update_git;
+ prepare_dirs;
+ #set -e;
+ install_glusterfs;
+}
+
+function send_results()
+{
+ if [ ! -d $LOGDIR ]
+ then
+ mkdir $LOGDIR
+ fi
+ cd $LOGDIR;
+
+ if [ ! -d $RESULTDIR ]
+ then
+ mkdir $RESULTDIR
+ else
+ rm -rf $RESULTDIR/*
+ fi
+ cp $LOGDIR/* $RESULTDIR
+ #cp /tmp/runlog.$translator $RESULTDIR
+ rm -rf /tmp/runlog.$translator
+ mv /tmp/tests_failed $LOGDIR/tests_failed_$translator
+ echo $translator >> $LOGDIR/tests_failed_$translator
+
+ cnt=`ls -l $COREDIR/core* | wc -l`
+ if [ $cnt -gt 2 ]; then
+ echo "core generated for $translator" >> $LOGDIR/tests_failed_$translator
+ mv $COREDIR/core* $CORE_REPOSITORY/core*_$translator_`date +%F`
+ fi
+
+ tar cfz results_$translator.tgz $RESULTDIR;
+# mutt -a results_$translator.tgz -s "Sanity Results for `date +%F`" -i $LOGDIR/tests_failed $EMAIL <.;
+
+ scp results_$translator.tgz $RFILE
+ scp $LOGDIR/tests_failed_$translator $EMAIL
+}
+
+function clean_results()
+{
+ directory=`date +%F`
+ mkdir /tmp/old/$directory -p;
+ mv $RESULTDIR/* /tmp/old/$directory
+}
+
+function syscallbench_plot()
+{
+ cp /tmp/`date +%F` $SYSCALLDIR
+ cd $SYSCALLDIR
+ mv today yesterday
+ ln -s `date +%F` today
+ $TOOLDIR/syscallbench-plot today yesterday > $LOGDIR/plot.ps
+}
+
+
+function post_run()
+{
+ #set +e;
+ stop_glusterfs;
+ cleanup;
+ #syscallbench_plot;
+ send_results;
+ clean_results;
+}
+function start_glusterd()
+{
+ $BINDIR/sbin/glusterd
+ if [ $? -ne 0 ]; then
+ echo "glusterd could not be started. Returning"
+ return 11;
+ else
+ echo "glusterd started"
+ return 0;
+ fi
+}
+function create_volume ()
+{
+ vol_type=$1;
+ VOLNAME=$1;
+ #delete all
+ $BINDIR/sbin/gluster --mode=script volume delete afr
+ $BINDIR/sbin/gluster --mode=script volume delete dht
+ $BINDIR/sbin/gluster --mode=script volume delete stripe
+ rm -rf $EXPORTDIR/export[1-4]
+ mkdir -p $EXPORTDIR/export[1-4]
+ if [ $vol_type == "dht" ]; then
+
+ echo "Creating the distribute volume";
+ $BINDIR/sbin/gluster volume create $VOLNAME $(hostname):$EXPORTDIR/export1 $(hostname):$EXPORTDIR/export2 $(hostname):$EXPORTDIR/export3 $(hostname):$EXPORTDIR/export4;
+ if [ $? -ne 0 ]; then
+ echo "gluster volume create failed. Check glusterd log file";
+ return 11;
+ else
+ return 0;
+ fi
+ fi
+
+ if [ $vol_type == "afr" ]; then
+ echo "Creating the replicate volume"
+ $BINDIR/sbin/gluster volume create $VOLNAME replica 2 $(hostname):$EXPORTDIR/export1 $(hostname):$EXPORTDIR/export2;
+ if [ $? -ne 0 ]; then
+ echo "gluster volume create failed. Check glusterd log file";
+ return 11;
+ else
+ return 0;
+ fi
+ fi
+
+ if [ $vol_type == "stripe" ]; then
+ echo "Creating the stripe volume";
+ $BINDIR/sbin/gluster volume create $VOLNAME stripe 4 $(hostname):$EXPORTDIR/export1 $(hostname):$EXPORTDIR/export2 $(hostname):$EXPORTDIR/export3 $(hostname):$EXPORTDIR/export4;
+ if [ $? -ne 0 ]; then
+ echo "gluster volume create failed. Check glusterd log file";
+ return 11;
+ else
+ return 0;
+ fi
+ fi
+ $BINDIR/sbin/gluster volume start $VOLNAME
+ killall glusterfs glusterfsd
+
+}
+function stop_glusterd()
+{
+killall glusterd
+}
+function edit_client_volfile()
+{
+translator=$1
+awk -v port=8000 '{print} /option remote-host dev-sanity-test/ {printf("option remote-port %d\n", port++)}' /etc/glusterd/vols/$translator/$translator-fuse.vol > /tmp/$translator-fuse.vol
+cp /tmp/$translator-fuse.vol /etc/glusterd/vols/$translator/
+}
+
+function edit_server_volfile()
+{
+translator=$1
+HOSTNAME=`hostname`
+FNAME="/etc/glusterd/vols/$translator/$translator.$HOSTNAME.mnt-nightly_valgrind"
+#.dev-sanity-test.mnt-nightly_valgrind-data-export1.vol
+if [ $translator == afr ];
+then
+awk -v port=8000 '{print} /option transport-type tcp/ {printf("option transport.socket.listen-port %d\n", port++)}' $FNAME"-data-export1.vol" > /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export1.vol
+rm -rf $FNAME"-data-export1.vol"
+cp /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export1.vol /etc/glusterd/vols/$translator/
+
+awk -v port=8001 '{print} /option transport-type tcp/ {printf("option transport.socket.listen-port %d\n", port++)}' $FNAME"-data-export2.vol" > /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export2.vol
+rm -rf $FNAME"-data-export2.vol"
+cp /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export2.vol /etc/glusterd/vols/$translator/
+else #for dht or stripe
+awk -v port=8000 '{print} /option transport-type tcp/ {printf("option transport.socket.listen-port %d\n", port++)}' $FNAME"-data-export1.vol" > /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export1.vol
+rm -rf $FNAME"-data-export1.vol"
+cp /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export1.vol /etc/glusterd/vols/$translator/
+
+awk -v port=8001 '{print} /option transport-type tcp/ {printf("option transport.socket.listen-port %d\n", port++)}' $FNAME"-data-export2.vol" > /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export2.vol
+rm -rf $FNAME"-data-export2.vol"
+cp /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export2.vol /etc/glusterd/vols/$translator/
+
+awk -v port=8002 '{print} /option transport-type tcp/ {printf("option transport.socket.listen-port %d\n", port++)}' $FNAME"-data-export3.vol" > /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export3.vol
+rm -rf $FNAME"-data-export3.vol"
+cp /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export3.vol /etc/glusterd/vols/$translator/
+
+awk -v port=8003 '{print} /option transport-type tcp/ {printf("option transport.socket.listen-port %d\n", port++)}' $FNAME"-data-export4.vol" > /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export4.vol
+rm -rf $FNAME"-data-export4.vol"
+cp /tmp/$translator.`hostname`-mnt-nightly_valgrind-data-export4.vol /etc/glusterd/vols/$translator/
+fi
+}
+function main()
+{
+ echo "In main";
+ translator=$1
+ #trap "post_run" INT TERM EXIT;
+ pre_run;
+ start_glusterd;
+ create_volume $translator;
+
+ edit_client_volfile $translator;
+ edit_server_volfile $translator;
+ stop_glusterd
+ start_glusterfs;
+ df
+ run_tests;
+ #trap - INT TERM EXIT
+ post_run;
+}
+
+
+#check for command line arg.
+if [ ! $# -eq 1 ]
+then
+echo "Usage: nightly_valgrind.sh afr/dht/stripe";
+exit;
+fi
+
+main "$@"
+