public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
From: mornfall@sourceware.org
To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org
Subject: LVM2/test harness.sh test-utils.sh
Date: Mon, 29 Sep 2008 15:59:00 -0000	[thread overview]
Message-ID: <20080929155923.16156.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mornfall@sourceware.org	2008-09-29 15:59:21

Added files:
	test           : harness.sh test-utils.sh 

Log message:
	Import new test utilities and a test harness.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/harness.sh.diff?cvsroot=lvm2&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/test-utils.sh.diff?cvsroot=lvm2&r1=NONE&r2=1.1

/cvs/lvm2/LVM2/test/harness.sh,v  -->  standard output
revision 1.1
--- LVM2/test/harness.sh
+++ -	2008-09-29 15:59:23.452628000 +0000
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+tests="$@"
+test -z "$tests" && tests=`echo t-*.sh`
+
+for t in $tests; do
+    printf "Running %-40s" "$t ..."
+    out=`sh ./$t 2>&1`
+    ret=$?
+    if test $ret = 0; then
+	echo " passed."
+    elif test $ret = 200; then
+	echo " skipped."
+    else
+	echo " FAILED!"
+	len=`echo $t | wc -c`
+	# fancy formatting...
+	printf -- "--- Output: $t -"
+	for i in `seq $(($len + 14)) 78`; do echo -n "-"; done; echo
+	printf "%s\n" "$out"
+	for i in `seq 1 78`; do echo -n "-"; done; echo
+	failed="$failed $t"
+    fi
+done
+
+if test -n "$failed"; then
+    echo "TESTS FAILED:"
+    for t in $failed; do
+	printf "\t%s\n" $t
+    done
+else
+    echo "All tests passed."
+fi
/cvs/lvm2/LVM2/test/test-utils.sh,v  -->  standard output
revision 1.1
--- LVM2/test/test-utils.sh
+++ -	2008-09-29 15:59:23.544074000 +0000
@@ -0,0 +1,146 @@
+# Copyright (C) 2008 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.
+#
+# 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+test_description="foo" # silence test-lib for now
+. ./test-lib.sh
+
+aux() {
+    # use just "$@" for verbose operation
+    "$@" > /dev/null 2> /dev/null
+}
+
+not () { "$@" && exit 1 || return 0; }
+
+teardown() {
+    echo $LOOP
+    echo $PREFIX
+
+    test -n "$PREFIX" && {
+	rm -rf /dev/$PREFIX*
+	while dmsetup table | grep -q ^$PREFIX; do
+            for s in `dmsetup table | grep ^$PREFIX| cut -f1 -d:`; do
+		dmsetup resume $s 2>/dev/null > /dev/null || true
+		dmsetup remove $s 2>/dev/null > /dev/null || true
+            done
+	done
+    }
+
+    test -n "$LOOP" && losetup -d $LOOP
+    test -n "$LOOPFILE" && rm -f $LOOPFILE
+
+    cleanup_ # user-overridable cleanup
+    testlib_cleanup_ # call test-lib cleanup routine, too
+}
+
+make_ioerror() {
+    echo 0 10000000 error | dmsetup create ioerror
+    dmsetup resume ioerror
+    ln -s /dev/mapper/ioerror /dev/ioerror
+}
+
+prepare_loop() {
+    size=$1
+    test -n "$size" || size=32
+
+    test -n "$LOOP" && return 0
+    trap "aux teardown" EXIT # don't forget to clean up
+
+    LOOPFILE=test.img
+    dd if=/dev/zero of=test.img bs=$((1024*1024)) count=1 seek=$(($size-1))
+    LOOP=`losetup -s -f test.img`
+}
+
+prepare_devs() {
+    local n="$1"
+    test -z "$n" && n=3
+    local devsize="$2"
+    test -z "$devsize" && devsize=33
+
+    prepare_loop $(($n*$devsize))
+
+    PREFIX="LVMTEST$$"
+
+    local loopsz=`blockdev --getsz $LOOP`
+    local size=$(($loopsz/$n))
+
+    for i in `seq 1 $n`; do
+	local name="${PREFIX}pv$i"
+	local dev="$G_dev_/mapper/$name"
+	eval "dev$i=$dev"
+	devs="$devs $dev"
+	echo 0 $size linear $LOOP $((($i-1)*$size)) > $name.table
+	dmsetup create $name $name.table
+	dmsetup resume $name
+    done
+
+    # set up some default names
+    vg=${PREFIX}vg
+    vg1=${PREFIX}vg1
+    vg2=${PREFIX}vg2
+    lv=LV
+    lv1=LV1
+    lv2=LV2
+}
+
+disable_dev() {
+    for dev in "$@"; do
+        # first we make the device inaccessible
+	echo 0 10000000 error | dmsetup load $dev
+	dmsetup resume $dev
+        # now let's try to get rid of it if it's unused
+        #dmsetup remove $dev
+    done
+}
+
+enable_dev() {
+    for dev in "$@"; do
+	local name=`echo "$dev" | sed -e 's,.*/,,'`
+	dmsetup create $name $name.table || dmsetup load $name $name.table
+	dmsetup resume $dev
+    done
+}
+
+prepare_pvs() {
+    prepare_devs "$@"
+    pvcreate $devs
+}
+
+prepare_vg() {
+    prepare_pvs "$@"
+    vgcreate $vg $devs
+}
+
+prepare_lvmconf() {
+  cat > $G_root_/etc/lvm.conf <<-EOF
+  devices {
+    dir = "$G_dev_"
+    scan = "$G_dev_"
+    filter = [ "a/dev\/mirror/", "a/dev\/mapper/", "r/.*/" ]
+    cache_dir = "$G_root_/etc"
+    sysfs_scan = 0
+  }
+  log {
+    verbose = $verboselevel
+    syslog = 0
+    indent = 1
+  }
+  backup {
+    backup = 0
+    archive = 0
+  }
+  global {
+    library_dir = "$G_root_/lib"
+  }
+EOF
+}
+
+set -vex
+aux prepare_lvmconf
+


             reply	other threads:[~2008-09-29 15:59 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-29 15:59 mornfall [this message]
2008-10-06 16:55 mornfall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080929155923.16156.qmail@sourceware.org \
    --to=mornfall@sourceware.org \
    --cc=lvm-devel@redhat.com \
    --cc=lvm2-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).