From bfa9c7bcfbc90b7aa5b241881cc3fc4160a05b57 Mon Sep 17 00:00:00 2001 From: Petr Rockai Date: Mon, 12 Apr 2010 19:02:59 +0000 Subject: [PATCH] Add a new helper script for the testsuite, that makes checking for various (lvm) properties easier and produces nicer output. --- test/Makefile.in | 6 +++- test/check.sh | 91 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 test/check.sh diff --git a/test/Makefile.in b/test/Makefile.in index 25cb48793..b70648cfd 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -55,7 +55,11 @@ bin/not: $(srcdir)/not.c .bin-dir-stamp bin/harness: $(srcdir)/harness.c .bin-dir-stamp $(CC) -o bin/harness $< -init.sh: $(srcdir)/Makefile.in .bin-dir-stamp bin/not bin/harness $(SCRIPTS) +bin/check: $(srcdir)/check.sh .bin-dir-stamp + cp $< bin/check + chmod +x bin/check + +init.sh: $(srcdir)/Makefile.in .bin-dir-stamp bin/not bin/check bin/harness $(SCRIPTS) rm -f $@-t $@ echo 'top_srcdir=$(top_srcdir)' >> $@-t echo 'abs_top_builddir=$(abs_top_builddir)' >> $@-t diff --git a/test/check.sh b/test/check.sh new file mode 100644 index 000000000..4084974ea --- /dev/null +++ b/test/check.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +set -e -o pipefail + +lvdevices() { + lvs -a -odevices --noheadings "$@" | sed 's/([^)]*)//g; s/,/ /g' +} + +mirror_images_redundant() +{ + vg=$1 + lv=$vg/$2 + + lvs -a $vg + for i in `lvdevices $lv`; do + echo "# $i:" + lvdevices $vg/$i | sort | uniq + done > check.tmp.all + + (grep -v ^# check.tmp.all || true) | sort | uniq -d > check.tmp + + test "`cat check.tmp | wc -l`" -eq 0 || { + echo "mirror images of $lv expected redundant, but are not:" + cat check.tmp.all + exit 1 + } +} + +mirror_log_on() +{ + lv="$1"_mlog + lvdevices $lv | grep -F "$2" || { + echo "mirror log $lv expected on $2 but found on:" >&2 + lvdevices $lv >&2 + exit 1 + } +} + +lv_is_contiguous() +{ + test `lvs -a --segments --noheadings $1 | wc -l` -eq 1 || { + echo "LV $1 expected to be contiguous, but is not:" + lvs -a --segments --noheadings $1 + exit 1 + } +} + +lv_is_clung() +{ + test `lvdevices $1 | sort | uniq | wc -l` -eq 1 || { + echo "LV $1 expected to be clung, but is not:" + lvdevices $! | sort | uniq + exit 1 + } +} + +mirror_images_contiguous() +{ + for i in `lvdevices $1/$2`; do + lv_is_contiguous $1/$i + done +} + +mirror_images_clung() +{ + for i in `lvdevices $1/$2`; do + lv_is_clung $1/$i + done +} + +mirror() { + lv="$1/$2" + lvs -oattr "$lv" | grep "m" || { + echo "$lv expected a mirror, but is not:" + lvs -a $lv + exit 1 + } + mirror_images_redundant "$1" "$2" + if test -n "$3"; then mirror_log_on "$lv" "$3"; fi +} + +linear() { + lv="$1/$2" + lvs -ostripes "$lv" | grep "1" || { + echo "$lv expected linear, but is not:" + lvs -a "$lv" -o+devices + exit 1 + } +} + +"$@" -- 2.43.5