From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18727 invoked by alias); 29 Sep 2008 16:02:53 -0000 Received: (qmail 18713 invoked by uid 9699); 29 Sep 2008 16:02:53 -0000 Date: Mon, 29 Sep 2008 16:02:00 -0000 Message-ID: <20080929160253.18711.qmail@sourceware.org> From: mornfall@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/test t-lvcreate-pvtags.sh t-lvmcache-exer ... Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2008-09/txt/msg00037.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: mornfall@sourceware.org 2008-09-29 16:02:50 Modified files: test : t-lvcreate-pvtags.sh t-lvmcache-exercise.sh t-lvresize-usage.sh t-mirror-lvconvert.sh t-mirror-vgreduce-removemissing.sh t-000-basic.sh t-pool-labels.sh t-metadata.sh t-covercmd.sh t-pvcreate-operation.sh t-vgrename-usage.sh Log message: Update a bunch of tests to use functionality from test-utils.sh. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvcreate-pvtags.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvmcache-exercise.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvresize-usage.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-lvconvert.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-mirror-vgreduce-removemissing.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-000-basic.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-pool-labels.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-metadata.sh.diff?cvsroot=lvm2&r1=1.1&r2=1.2 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-covercmd.sh.diff?cvsroot=lvm2&r1=1.3&r2=1.4 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-pvcreate-operation.sh.diff?cvsroot=lvm2&r1=1.9&r2=1.10 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-vgrename-usage.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3 --- LVM2/test/t-lvcreate-pvtags.sh 2007/10/09 13:13:06 1.3 +++ LVM2/test/t-lvcreate-pvtags.sh 2008/09/29 16:02:49 1.4 @@ -1,5 +1,4 @@ -#!/bin/sh -# Copyright (C) 2007 Red Hat, Inc. All rights reserved. +# 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 @@ -9,81 +8,33 @@ # 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="ensure that lvcreate's select-by-tag code works" -privileges_required_=1 +. ./test-utils.sh -. ./test-lib.sh +aux prepare_pvs 3 -dmsetup_has_dm_devdir_support_ || -{ - say "Your version of dmsetup lacks support for changing DM_DEVDIR." - say "Skipping this test" - exit 0 -} - -cleanup_() -{ - test -n "$vg" && { - lvremove -ff $vg - vgremove $vg - } > /dev/null - test -n "$pvs" && { - pvremove $pvs > /dev/null - for d in $pvs; do - dmsetup remove $(basename $d) - done - } - losetup -d $lodev - rm -f $lofile -} - -nr_pvs=3 -pvsize=$((200 * 1024 * 2)) - -test_expect_success \ - 'set up temp file and loopback device' \ - 'lofile=$(pwd)/lofile && lodev=$(loop_setup_ "$lofile")' - -offset=0 -pvs= -for n in $(seq 1 $nr_pvs); do - test_expect_success \ - "create pv$n" \ - 'echo "0 $pvsize linear $lodev $offset" > in && - dmsetup create pv$n < in' - offset=$(($offset + $pvsize)) -done - -for n in $(seq 1 $nr_pvs); do - pvs="$pvs $G_dev_/mapper/pv$n" -done - -test_expect_success \ - "Run this: pvcreate $pvs" \ - 'pvcreate $pvs' - -vg=lvcreate-pvtags-vg-$$ -test_expect_success \ - 'set up a VG with tagged PVs' \ - 'vgcreate $vg $pvs && - pvchange --addtag fast $pvs' - -test_expect_success '3 stripes with 3 PVs (selected by tag, @fast) is fine' \ - 'lvcreate -l3 -i3 $vg @fast' -test_expect_failure 'too many stripes(4) for 3 PVs' \ - 'lvcreate -l4 -i4 $vg @fast' -test_expect_failure '2 stripes is too many with just one PV' \ - 'lvcreate -l2 -i2 $vg $G_dev_/mapper/pv1' - -test_expect_success 'lvcreate mirror' \ - 'lvcreate -l1 -m1 $vg @fast' -test_expect_success 'lvcreate mirror w/corelog' \ - 'lvcreate -l1 -m2 --corelog $vg @fast' -test_expect_failure 'lvcreate mirror w/no free PVs' \ - 'lvcreate -l1 -m2 $vg @fast' -test_expect_failure 'lvcreate mirror (corelog, w/no free PVs)' \ - 'lvcreate -l1 -m3 --corelog $vg @fast' -test_expect_failure 'lvcreate mirror with a single PV arg' \ - 'lvcreate -l1 -m1 --corelog $vg $G_dev_/mapper/pv1' +vgcreate $vg $devs +pvchange --addtag fast $devs -test_done +# 3 stripes with 3 PVs (selected by tag, @fast) is fine +lvcreate -l3 -i3 $vg @fast + +# too many stripes(4) for 3 PVs +not lvcreate -l4 -i4 $vg @fast + +# 2 stripes is too many with just one PV +not lvcreate -l2 -i2 $vg $G_dev_/mapper/pv1 + +# lvcreate mirror +lvcreate -l1 -m1 $vg @fast + +# lvcreate mirror w/corelog +lvcreate -l1 -m2 --corelog $vg @fast + +# lvcreate mirror w/no free PVs +not lvcreate -l1 -m2 $vg @fast + +# lvcreate mirror (corelog, w/no free PVs) +not lvcreate -l1 -m3 --corelog $vg @fast + +# lvcreate mirror with a single PV arg +not lvcreate -l1 -m1 --corelog $vg $dev1 --- LVM2/test/t-lvmcache-exercise.sh 2008/06/09 15:31:58 1.1 +++ LVM2/test/t-lvmcache-exercise.sh 2008/09/29 16:02:49 1.2 @@ -1,5 +1,4 @@ -#!/bin/sh -# Copyright (C) 2007 Red Hat, Inc. All rights reserved. +# 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 @@ -9,53 +8,16 @@ # 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='Test lvmcache operation' -privileges_required_=1 +. ./test-utils.sh -. ./test-lib.sh +aux prepare_pvs 5 -cleanup_() -{ - test -n "$d1" && losetup -d "$d1" - test -n "$d2" && losetup -d "$d2" - test -n "$d3" && losetup -d "$d3" - test -n "$d4" && losetup -d "$d4" - test -n "$d5" && losetup -d "$d5" - rm -f "$f1" "$f2" "$f3" "$f4" "$f5" -} +vgcreate $vg1 $dev1 +vgcreate $vg2 $dev3 -# FIXME: paramaterize lvm1 vs lvm2 metadata; most of these tests should run -# fine with lvm1 metadata as well; for now, just add disks 5 and 6 as lvm1 -# metadata -test_expect_success \ - 'set up temp files, loopback devices, PVs, vgnames' \ - 'f1=$(pwd)/1 && d1=$(loop_setup_ "$f1") && - f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") && - f3=$(pwd)/3 && d3=$(loop_setup_ "$f3") && - f4=$(pwd)/4 && d4=$(loop_setup_ "$f4") && - f5=$(pwd)/5 && d5=$(loop_setup_ "$f5") && - vg1=$(this_test_)-test-vg1-$$ && - vg2=$(this_test_)-test-vg2-$$ && - lv1=$(this_test_)-test-lv1-$$ && - lv2=$(this_test_)-test-lv2-$$ && - lv3=$(this_test_)-test-lv3-$$ && - pvcreate $d1 $d2 $d3 $d4 $d5' - -# -# Duplicate vg name should cause warnings (but not segfault!) -# -test_expect_success \ - "Duplicate vg name might cause warnings but should succeed" \ - 'vgcreate $vg1 $d1 && - vgcreate $vg2 $d3 && - losetup -d $d1 && - vgcreate $vg1 $d2 && - losetup $d1 $f1 && - pvs && - pvs' - -test_done - -# Local Variables: -# indent-tabs-mode: nil -# End: +disable_dev $dev1 +pvscan +vgcreate $vg1 $dev2 +enable_dev $dev1 +pvs +pvs --- LVM2/test/t-lvresize-usage.sh 2008/04/10 19:59:43 1.2 +++ LVM2/test/t-lvresize-usage.sh 2008/09/29 16:02:49 1.3 @@ -1,4 +1,3 @@ -#!/bin/sh # Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -9,47 +8,13 @@ # 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='Test lvresize command options for validity' -privileges_required_=1 +. ./test-utils.sh -. ./test-lib.sh +aux prepare_vg 2 -cleanup_() -{ - test -n "$vg" && { - vgchange -an "$vg" - lvremove -ff "$vg" - vgremove "$vg" - } > "$test_dir_/cleanup.log" - test -n "$d1" && losetup -d "$d1" - test -n "$d2" && losetup -d "$d2" - rm -f "$f1" "$f2" -} +lvcreate -L 10M -n lv -i2 $vg +lvresize -l +4 $vg/lv +lvremove -ff $vg -test_expect_success \ - 'set up temp files, loopback devices, PVs, and a VG' \ - 'f1=$(pwd)/1 && d1=$(loop_setup_ "$f1") && - f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") && - pvcreate $d1 $d2 && - vg=$(this_test_)-test-vg-$$ && - vgcreate $vg $d1 $d2' - -lv=lvresize-usage-$$ - -test_expect_success \ - 'lvresize normal operation succeeds' \ - 'lvcreate -L 64M -n $lv -i2 $vg && - lvresize -l +4 $vg/$lv && - lvremove -ff $vg' - -test_expect_success \ - 'lvresize rejects an invalid vgname' \ - 'lvcreate -L 64M -n $lv -i2 $vg && - lvresize -v -l +4 xxx/$lv && - echo status=$?; test $? = 5 && - lvremove -ff $vg' - -test_done -# Local Variables: -# indent-tabs-mode: nil -# End: +lvcreate -L 64M -n $lv -i2 $vg +not lvresize -v -l +4 xxx/$lv --- LVM2/test/t-mirror-lvconvert.sh 2008/04/23 18:27:59 1.3 +++ LVM2/test/t-mirror-lvconvert.sh 2008/09/29 16:02:49 1.4 @@ -1,4 +1,3 @@ -#!/bin/sh # Copyright (C) 2007 Red Hat, Inc. All rights reserved. # Copyright (C) 2007 NEC Corporation # @@ -10,57 +9,9 @@ # 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="ensure that lvconvert for mirrored LV works" -privileges_required_=1 +. ./test-utils.sh -. ./test-lib.sh - -dmsetup_has_dm_devdir_support_ || -{ - say "Your version of dmsetup lacks support for changing DM_DEVDIR." - say "Skipping this test" - exit 0 -} - -cleanup_() -{ - test -n "$vg" && { - lvremove -ff $vg - vgremove $vg - } > /dev/null - test -n "$pvs" && { - pvremove $pvs > /dev/null - for d in $pvs; do - dmsetup remove $(basename $d) - done - } - losetup -d $lodev - rm -f $lofile -} - -# --------------------------------------------------------------------- -# config - -nr_pvs=5 -pvsize=$((80 * 1024 * 2)) - -vg=mirror-lvconvert-vg-$$ -lv1=lv1 -lv2=lv2 -lv3=lv3 - -# --------------------------------------------------------------------- -# Utilities - -pv_() -{ - echo "$G_dev_/mapper/pv$1" -} - -lvdev_() -{ - echo "$G_dev_/$1/$2" -} +dmsetup_has_dm_devdir_support_ || exit 200 mimages_are_redundant_ () { @@ -90,17 +41,6 @@ return 0 } -lv_is_clung_ () -{ - local lv=$1 - - # if any duplication is found, it's not redundant - [ $(lvs -a -odevices --noheadings $lv | sed 's/([^)]*)//g' | \ - sort | uniq | wc -l) -ne 1 ] && return 1 - - return 0 -} - mimages_are_contiguous_ () { local vg=$1 @@ -114,26 +54,13 @@ return 0 } -mimages_are_clung_ () -{ - local vg=$1 - local lv=$vg/$2 - local i - - for i in $(lvs -odevices --noheadings $lv | sed 's/([^)]*)//g; s/,/ /g'); do - lv_is_clung_ $vg/$i || return 1 - done - - return 0 -} - mirrorlog_is_on_() { local lv="$1"_mlog shift 1 lvs -a -odevices --noheadings $lv | sed 's/,/\n/g' > out for d in $*; do grep "$d(" out || return 1; done - for d in $*; do grep -v "$d(" out > out2; mv out2 out; done + for d in $*; do grep -v "$d(" out > out2 || true; mv out2 out; done grep . out && return 1 return 0 } @@ -176,53 +103,24 @@ ! grep tmp out } -# --------------------------------------------------------------------- -# Initialize PVs and VGs - -test_expect_success \ - 'set up temp file and loopback device' \ - 'lofile=$(pwd)/lofile && lodev=$(loop_setup_ "$lofile")' - -offset=0 -pvs= -for n in $(seq 1 $nr_pvs); do - test_expect_success \ - "create pv$n" \ - 'echo "0 $pvsize linear $lodev $offset" > in && - dmsetup create pv$n < in' - offset=$(($offset + $pvsize)) -done - -for n in $(seq 1 $nr_pvs); do - pvs="$pvs $(pv_ $n)" -done - -test_expect_success \ - "Run this: pvcreate $pvs" \ - 'pvcreate $pvs' - -test_expect_success \ - 'set up a VG' \ - 'vgcreate $vg $pvs' +aux prepare_vg 5 # --------------------------------------------------------------------- # Common environment setup/cleanup for each sub testcases prepare_lvs_() { - lvremove -ff $vg; - : + lvremove -ff $vg } check_and_cleanup_lvs_() { - lvs -a -o+devices $vg && + lvs -a -o+devices $vg lvremove -ff $vg } -test_expect_success "check environment setup/cleanup" \ - 'prepare_lvs_ && - check_and_cleanup_lvs_' +prepare_lvs_ +check_and_cleanup_lvs_ # --------------------------------------------------------------------- # mirrored LV tests @@ -230,48 +128,48 @@ # --- # add mirror to mirror -test_expect_success "add 1 mirror" \ - 'prepare_lvs_ && - lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 && - check_mirror_count_ $vg/$lv1 2 && - check_mirror_log_ $vg/$lv1 && - lvconvert -m+1 -i1 $vg/$lv1 $(pv_ 4) && - check_no_tmplvs_ $vg/$lv1 && - check_mirror_count_ $vg/$lv1 3 && - mimages_are_redundant_ $vg $lv1 && - mirrorlog_is_on_ $vg/$lv1 $(pv_ 3) && - check_and_cleanup_lvs_' - -test_expect_success "add 2 mirrors" \ - 'prepare_lvs_ && - lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 && - check_mirror_count_ $vg/$lv1 2 && - check_mirror_log_ $vg/$lv1 && - lvconvert -m+2 -i1 $vg/$lv1 $(pv_ 4) $(pv_ 5) && - check_no_tmplvs_ $vg/$lv1 && - check_mirror_count_ $vg/$lv1 4 && - mimages_are_redundant_ $vg $lv1 && - mirrorlog_is_on_ $vg/$lv1 $(pv_ 3) && - check_and_cleanup_lvs_' - -test_expect_success "add 1 mirror to core log mirror" \ - 'prepare_lvs_ && - lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $(pv_ 1) $(pv_ 2) && - check_mirror_count_ $vg/$lv1 2 && - !(check_mirror_log_ $vg/$lv1) && - lvconvert -m+1 -i1 --mirrorlog core $vg/$lv1 $(pv_ 4) && - check_no_tmplvs_ $vg/$lv1 && - check_mirror_count_ $vg/$lv1 3 && - !(check_mirror_log_ $vg/$lv1) && - mimages_are_redundant_ $vg $lv1 && - check_and_cleanup_lvs_' +# add 1 mirror +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +check_mirror_count_ $vg/$lv1 2 +check_mirror_log_ $vg/$lv1 +lvconvert -m+1 -i1 $vg/$lv1 $dev4 +check_no_tmplvs_ $vg/$lv1 +check_mirror_count_ $vg/$lv1 3 +mimages_are_redundant_ $vg $lv1 +mirrorlog_is_on_ $vg/$lv1 $dev3 +check_and_cleanup_lvs_ + +# add 2 mirrors +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +check_mirror_count_ $vg/$lv1 2 +check_mirror_log_ $vg/$lv1 +lvconvert -m+2 -i1 $vg/$lv1 $dev4 $dev5 +check_no_tmplvs_ $vg/$lv1 +check_mirror_count_ $vg/$lv1 4 +mimages_are_redundant_ $vg $lv1 +mirrorlog_is_on_ $vg/$lv1 $dev3 +check_and_cleanup_lvs_ + +# add 1 mirror to core log mirror +prepare_lvs_ +lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2 +check_mirror_count_ $vg/$lv1 2 +!(check_mirror_log_ $vg/$lv1) +lvconvert -m+1 -i1 --mirrorlog core $vg/$lv1 $dev4 && +check_no_tmplvs_ $vg/$lv1 && +check_mirror_count_ $vg/$lv1 3 && +!(check_mirror_log_ $vg/$lv1) && +mimages_are_redundant_ $vg $lv1 && +check_and_cleanup_lvs_ test_expect_success "add 2 mirrors to core log mirror" \ 'prepare_lvs_ && - lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $(pv_ 1) $(pv_ 2) && + lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2 && check_mirror_count_ $vg/$lv1 2 && !(check_mirror_log_ $vg/$lv1) && - lvconvert -m+2 -i1 --mirrorlog core $vg/$lv1 $(pv_ 4) $(pv_ 5) && + lvconvert -m+2 -i1 --mirrorlog core $vg/$lv1 $dev4 $dev5 && check_no_tmplvs_ $vg/$lv1 && check_mirror_count_ $vg/$lv1 4 && !(check_mirror_log_ $vg/$lv1) && @@ -281,118 +179,118 @@ # --- # add to converting mirror -test_expect_success "add 1 mirror then add 1 more mirror during conversion" \ - 'prepare_lvs_ && - lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 && - check_mirror_count_ $vg/$lv1 2 && - check_mirror_log_ $vg/$lv1 && - lvconvert -m+1 -b -i100 $vg/$lv1 $(pv_ 4) && - lvconvert -m+1 -i3 $vg/$lv1 $(pv_ 5) && - check_no_tmplvs_ $vg/$lv1 && - check_mirror_count_ $vg/$lv1 4 && - mimages_are_redundant_ $vg $lv1 && - mirrorlog_is_on_ $vg/$lv1 $(pv_ 3) && - check_and_cleanup_lvs_' +# add 1 mirror then add 1 more mirror during conversion +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +check_mirror_count_ $vg/$lv1 2 +check_mirror_log_ $vg/$lv1 +lvconvert -m+1 -b -i100 $vg/$lv1 $dev4 +lvconvert -m+1 -i3 $vg/$lv1 $dev5 +check_no_tmplvs_ $vg/$lv1 +check_mirror_count_ $vg/$lv1 4 +mimages_are_redundant_ $vg $lv1 +mirrorlog_is_on_ $vg/$lv1 $dev3 +check_and_cleanup_lvs_ # --- # add mirror and disk log test_expect_success "add 1 mirror and disk log" \ 'prepare_lvs_ && - lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $(pv_ 1) $(pv_ 2) && + lvcreate -l2 -m1 --mirrorlog core -n $lv1 $vg $dev1 $dev2 && check_mirror_count_ $vg/$lv1 2 && !(check_mirror_log_ $vg/$lv1) && - lvconvert -m+1 --mirrorlog disk -i1 $vg/$lv1 $(pv_ 4) $(pv_ 3):0-1 && + lvconvert -m+1 --mirrorlog disk -i1 $vg/$lv1 $dev4 $dev3:0-1 && check_no_tmplvs_ $vg/$lv1 && check_mirror_count_ $vg/$lv1 3 && check_mirror_log_ $vg/$lv1 && mimages_are_redundant_ $vg $lv1 && - mirrorlog_is_on_ $vg/$lv1 $(pv_ 3) && + mirrorlog_is_on_ $vg/$lv1 $dev3 && check_and_cleanup_lvs_' # --- # check polldaemon restarts -test_expect_success "convert inactive mirror and start polling" \ - 'prepare_lvs_ && - lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 && - check_mirror_count_ $vg/$lv1 2 && - lvchange -an $vg/$lv1 && - lvconvert -m+1 $vg/$lv1 $(pv_ 4) && - lvchange -ay $vg/$lv1 && - wait_conversion_ $vg/$lv1 && - lvs -a && - check_no_tmplvs_ $vg/$lv1 && - check_and_cleanup_lvs_' +# convert inactive mirror and start polling +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 +check_mirror_count_ $vg/$lv1 2 +lvchange -an $vg/$lv1 +lvconvert -m+1 $vg/$lv1 $dev4 +lvchange -ay $vg/$lv1 +wait_conversion_ $vg/$lv1 +lvs -a +check_no_tmplvs_ $vg/$lv1 +check_and_cleanup_lvs_ # --------------------------------------------------------------------- # removal during conversion test_expect_success "remove newly added mirror" \ 'prepare_lvs_ && - lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 && + lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 && check_mirror_count_ $vg/$lv1 2 && check_mirror_log_ $vg/$lv1 && - lvconvert -m+1 -b -i100 $vg/$lv1 $(pv_ 4) && - lvconvert -m-1 $vg/$lv1 $(pv_ 4) && + lvconvert -m+1 -b -i100 $vg/$lv1 $dev4 && + lvconvert -m-1 $vg/$lv1 $dev4 && wait_conversion_ $vg/$lv1 && check_no_tmplvs_ $vg/$lv1 && check_mirror_count_ $vg/$lv1 2 && mimages_are_redundant_ $vg $lv1 && - mirrorlog_is_on_ $vg/$lv1 $(pv_ 3) && + mirrorlog_is_on_ $vg/$lv1 $dev3 && check_and_cleanup_lvs_' test_expect_success "remove one of newly added mirrors" \ 'prepare_lvs_ && - lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 && + lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 && check_mirror_count_ $vg/$lv1 2 && check_mirror_log_ $vg/$lv1 && - lvconvert -m+2 -b -i100 $vg/$lv1 $(pv_ 4) $(pv_ 5) && - lvconvert -m-1 $vg/$lv1 $(pv_ 4) && + lvconvert -m+2 -b -i100 $vg/$lv1 $dev4 $dev5 && + lvconvert -m-1 $vg/$lv1 $dev4 && lvconvert -i1 $vg/$lv1 && wait_conversion_ $vg/$lv1 && check_no_tmplvs_ $vg/$lv1 && check_mirror_count_ $vg/$lv1 3 && mimages_are_redundant_ $vg $lv1 && - mirrorlog_is_on_ $vg/$lv1 $(pv_ 3) && + mirrorlog_is_on_ $vg/$lv1 $dev3 && check_and_cleanup_lvs_' test_expect_success "remove from original mirror (the original is still mirror)" \ 'prepare_lvs_ && - lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 5) $(pv_ 3):0-1 && + lvcreate -l2 -m2 -n $lv1 $vg $dev1 $dev2 $dev5 $dev3:0-1 && check_mirror_count_ $vg/$lv1 3 && check_mirror_log_ $vg/$lv1 && - lvconvert -m+1 -b -i100 $vg/$lv1 $(pv_ 4) && - lvconvert -m-1 $vg/$lv1 $(pv_ 2) && + lvconvert -m+1 -b -i100 $vg/$lv1 $dev4 && + lvconvert -m-1 $vg/$lv1 $dev2 && lvconvert -i1 $vg/$lv1 && wait_conversion_ $vg/$lv1 && check_no_tmplvs_ $vg/$lv1 && check_mirror_count_ $vg/$lv1 3 && mimages_are_redundant_ $vg $lv1 && - mirrorlog_is_on_ $vg/$lv1 $(pv_ 3) && + mirrorlog_is_on_ $vg/$lv1 $dev3 && check_and_cleanup_lvs_' test_expect_success "remove from original mirror (the original becomes linear)" \ 'prepare_lvs_ && - lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 && + lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0-1 && check_mirror_count_ $vg/$lv1 2 && check_mirror_log_ $vg/$lv1 && - lvconvert -m+1 -b -i100 $vg/$lv1 $(pv_ 4) && - lvconvert -m-1 $vg/$lv1 $(pv_ 2) && + lvconvert -m+1 -b -i100 $vg/$lv1 $dev4 && + lvconvert -m-1 $vg/$lv1 $dev2 && lvconvert -i1 $vg/$lv1 && wait_conversion_ $vg/$lv1 && check_no_tmplvs_ $vg/$lv1 && check_mirror_count_ $vg/$lv1 2 && mimages_are_redundant_ $vg $lv1 && - mirrorlog_is_on_ $vg/$lv1 $(pv_ 3) && + mirrorlog_is_on_ $vg/$lv1 $dev3 && check_and_cleanup_lvs_' test_expect_success "rhbz440405: lvconvert -m0 incorrectly fails if all PEs allocated" \ 'prepare_lvs_ && - lvcreate -l`pvs --noheadings -ope_count $(pv_ 1)` -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0 && + lvcreate -l`pvs --noheadings -ope_count $dev1` -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 && check_mirror_count_ $vg/$lv1 2 && check_mirror_log_ $vg/$lv1 && - lvconvert -m0 $vg/$lv1 $(pv_ 1) && + lvconvert -m0 $vg/$lv1 $dev1 && check_no_tmplvs_ $vg/$lv1 && check_mirror_count_ $vg/$lv1 1 && check_and_cleanup_lvs_' --- LVM2/test/t-mirror-vgreduce-removemissing.sh 2008/09/19 16:10:46 1.2 +++ LVM2/test/t-mirror-vgreduce-removemissing.sh 2008/09/29 16:02:49 1.3 @@ -1,4 +1,3 @@ -#!/bin/sh # Copyright (C) 2007 Red Hat, Inc. All rights reserved. # Copyright (C) 2007 NEC Corporation # @@ -10,80 +9,12 @@ # 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="ensure that 'vgreduce --removemissing' works on mirrored LV" -privileges_required_=1 +. ./test-utils.sh -. ./test-lib.sh +dmsetup_has_dm_devdir_support_ || exit 200 -dmsetup_has_dm_devdir_support_ || -{ - say "Your version of dmsetup lacks support for changing DM_DEVDIR." - say "Skipping this test" - exit 0 -} - -cleanup_() -{ - test -n "$vg" && { - lvremove -ff $vg - vgremove $vg - } > /dev/null - test -n "$pvs" && { - pvremove $pvs > /dev/null - for d in $pvs; do - dmsetup remove $(basename $d) - done - } - losetup -d $lodev - rm -f $lofile -} - -# --------------------------------------------------------------------- -# config - -nr_pvs=5 -pvsize=$((80 * 1024 * 2)) - -vg=mirror-vgreduce-removemissing-vg-$$ -lv1=lv1 -lv2=lv2 -lv3=lv3 - -# --------------------------------------------------------------------- -# Utilities - -pv_() -{ - echo "$G_dev_/mapper/pv$1" -} - -fail_pv_() -{ - local map - local p - for p in $*; do - map=$(basename $p) - echo "Fail $map" - [ -e map_$map ] && return - dmsetup table "$map" > "map_$map" - echo "0 $pvsize error" | dmsetup load "$map" - dmsetup resume "$map" - done -} - -recover_pv_() -{ - local map - local p - - for p in $*; do - map=$(basename $p) - echo "Recover $map" - [ ! -e "map_$map" ] && return - cat "map_$map" | dmsetup load "$map" - dmsetup resume "$map" - rm "map_$map" - done +pv_() { + eval "echo \$dev$1" } lv_is_on_ () @@ -106,7 +37,7 @@ { local lv=$1 shift - local pvs=$* + local pvs="$*" local mimages local i @@ -135,6 +66,7 @@ lv_is_linear_() { echo "Check if $1 is linear LV (i.e. not a mirror)" + lvs -o stripes,attr --noheadings $vg/$1 | sed 's/ //g' lvs -o stripes,attr --noheadings $vg/$1 | sed 's/ //g' | grep -q '^1-' } @@ -155,31 +87,7 @@ # --------------------------------------------------------------------- # Initialize PVs and VGs -test_expect_success \ - 'set up temp file and loopback device' \ - 'lofile=$(pwd)/lofile && lodev=$(loop_setup_ "$lofile")' - -offset=1 -pvs= -for n in $(seq 1 $nr_pvs); do - test_expect_success \ - "create pv$n" \ - 'echo "0 $pvsize linear $lodev $offset" > in && - dmsetup create pv$n < in' - offset=$(($offset + $pvsize)) -done - -for n in $(seq 1 $nr_pvs); do - pvs="$pvs $(pv_ $n)" -done - -test_expect_success \ - "Run this: pvcreate $pvs" \ - 'pvcreate $pvs' - -test_expect_success \ - 'set up a VG' \ - 'vgcreate $vg $pvs' +aux prepare_vg 5 # --------------------------------------------------------------------- # Common environment setup/cleanup for each sub testcases @@ -198,7 +106,7 @@ recover_vg_() { - recover_pv_ $* && + enable_dev $* && pvcreate -ff $* && vgextend $vg $* && check_and_cleanup_lvs_ @@ -211,16 +119,17 @@ # --------------------------------------------------------------------- # one of mirror images has failed -test_expect_success "basic: fail the 2nd mirror image of 2-way mirrored LV" \ - 'prepare_lvs_ && - lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 && - lvchange -an $vg/$lv1 && - mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) && - mirrorlog_is_on_ $lv1 $(pv_ 3) && - fail_pv_ $(pv_ 2) && - vgreduce --removemissing --force $vg && - lv_is_linear_ $lv1 && - lv_is_on_ $lv1 $(pv_ 1)' +# basic: fail the 2nd mirror image of 2-way mirrored LV +prepare_lvs_ +lvcreate -l2 -m1 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3):0-1 +lvchange -an $vg/$lv1 +aux mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) +mirrorlog_is_on_ $lv1 $(pv_ 3) +disable_dev $(pv_ 2) +vgreduce --removemissing --force $vg +lv_is_linear_ $lv1 +lv_is_on_ $lv1 $(pv_ 1) + test_expect_success "cleanup" \ 'recover_vg_ $(pv_ 2)' @@ -233,23 +142,23 @@ { local index=$1 - lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4):0-1 && - lvchange -an $vg/$lv1 && - mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) && - mirrorlog_is_on_ $lv1 $(pv_ 4) && - fail_pv_ $(pv_ $index) && - vgreduce --removemissing --force $vg && - lvs -a -o+devices $vg && - mimages_are_on_ $lv1 $(rest_pvs_ $index 3) && + lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4):0-1 + lvchange -an $vg/$lv1 + aux mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) + mirrorlog_is_on_ $lv1 $(pv_ 4) + disable_dev $(pv_ $index) + vgreduce --removemissing --force $vg + lvs -a -o+devices $vg + cat $G_root_/etc/lvm.conf + mimages_are_on_ $lv1 $(rest_pvs_ $index 3) mirrorlog_is_on_ $lv1 $(pv_ 4) } for n in $(seq 1 3); do - test_expect_success "fail mirror image $(($n - 1)) of 3-way mirrored LV" \ - "prepare_lvs_ && - test_3way_mirror_fail_1_ $n" - test_expect_success "cleanup" \ - "recover_vg_ $(pv_ $n)" + # fail mirror image $(($n - 1)) of 3-way mirrored LV" \ + prepare_lvs_ + test_3way_mirror_fail_1_ $n + recover_vg_ $(pv_ $n) done # --------------------------------------------------------------------- @@ -261,23 +170,23 @@ { local index=$1 - lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4):0-1 && - lvchange -an $vg/$lv1 && - mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) && - mirrorlog_is_on_ $lv1 $(pv_ 4) && - fail_pv_ $(rest_pvs_ $index 3) && - vgreduce --removemissing --force $vg && - lvs -a -o+devices $vg && - lv_is_linear_ $lv1 && + lvcreate -l2 -m2 -n $lv1 $vg $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4):0-1 + lvchange -an $vg/$lv1 + mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) + mirrorlog_is_on_ $lv1 $(pv_ 4) + rest_pvs_ $index 3 + disable_dev $(rest_pvs_ $index 3) + vgreduce --force --removemissing $vg + lvs -a -o+devices $vg + aux lv_is_linear_ $lv1 lv_is_on_ $lv1 $(pv_ $index) } for n in $(seq 1 3); do - test_expect_success "fail mirror images other than mirror image $(($n - 1)) of 3-way mirrored LV" \ - "prepare_lvs_ && - test_3way_mirror_fail_2_ $n" - test_expect_success "cleanup" \ - "recover_vg_ $(rest_pvs_ $n 3)" + # fail mirror images other than mirror image $(($n - 1)) of 3-way mirrored LV + prepare_lvs_ + test_3way_mirror_fail_2_ $n + recover_vg_ $(rest_pvs_ $n 3) done # --------------------------------------------------------------------- @@ -294,7 +203,7 @@ lvconvert -m+1 $vg/$lv1 $(pv_ 4) && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) && mirrorlog_is_on_ $lv1 $(pv_ 5) && - fail_pv_ $(pv_ $index) && + disable_dev $(pv_ $index) && vgreduce --removemissing --force $vg && lvs -a -o+devices $vg && mimages_are_on_ $lv1 $(rest_pvs_ $index 4) && @@ -323,7 +232,7 @@ lvconvert -m+1 $vg/$lv1 $(pv_ 4) && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) && mirrorlog_is_on_ $lv1 $(pv_ 5) && - fail_pv_ $(rest_pvs_ $index 4) && + disable_dev $(rest_pvs_ $index 4) && vgreduce --removemissing --force $vg && lvs -a -o+devices $vg && (mimages_are_on_ $lv1 $(pv_ $index) || lv_is_on_ $lv1 $(pv_ $index)) && @@ -352,7 +261,7 @@ lvconvert -m+2 $vg/$lv1 $(pv_ 3) $(pv_ 4) && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) && mirrorlog_is_on_ $lv1 $(pv_ 5) && - fail_pv_ $(pv_ $index) && + disable_dev $(pv_ $index) && vgreduce --removemissing --force $vg && lvs -a -o+devices $vg && mimages_are_on_ $lv1 $(rest_pvs_ $index 4) && @@ -381,7 +290,7 @@ lvconvert -m+2 $vg/$lv1 $(pv_ 3) $(pv_ 4) && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) $(pv_ 4) && mirrorlog_is_on_ $lv1 $(pv_ 5) && - fail_pv_ $(rest_pvs_ $index 4) && + disable_dev $(rest_pvs_ $index 4) && vgreduce --removemissing --force $vg && lvs -a -o+devices $vg && (mimages_are_on_ $lv1 $(pv_ $index) || lv_is_on_ $lv1 $(pv_ $index)) && @@ -405,7 +314,7 @@ lvchange -an $vg/$lv1 && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) && mirrorlog_is_on_ $lv1 $(pv_ 5) && - fail_pv_ $(pv_ 5) && + disable_dev $(pv_ 5) && vgreduce --removemissing --force $vg && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) && ! mirrorlog_is_on_ $lv1 $(pv_ 5)' @@ -419,7 +328,7 @@ lvconvert -m+1 $vg/$lv1 $(pv_ 3) && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) && mirrorlog_is_on_ $lv1 $(pv_ 5) && - fail_pv_ $(pv_ 5) && + disable_dev $(pv_ 5) && vgreduce --removemissing --force $vg && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) && ! mirrorlog_is_on_ $lv1 $(pv_ 5)' @@ -435,7 +344,7 @@ lvchange -an $vg/$lv1 && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) && mirrorlog_is_on_ $lv1 $(pv_ 5) && - fail_pv_ $(pv_ 1) $(pv_ 2) && + disable_dev $(pv_ 1) $(pv_ 2) && vgreduce --removemissing --force $vg && ! lvs $vg/$lv1' test_expect_success "cleanup" \ @@ -448,7 +357,7 @@ lvconvert -m+1 $vg/$lv1 $(pv_ 3) && mimages_are_on_ $lv1 $(pv_ 1) $(pv_ 2) $(pv_ 3) && mirrorlog_is_on_ $lv1 $(pv_ 5) && - fail_pv_ $(pv_ 1) $(pv_ 2) $(pv_ 3) && + disable_dev $(pv_ 1) $(pv_ 2) $(pv_ 3) && vgreduce --removemissing --force $vg && ! lvs $vg/$lv1' test_expect_success "cleanup" \ @@ -467,7 +376,7 @@ mimages_are_on_ $lv2 $(pv_ 3) $(pv_ 4) && mirrorlog_is_on_ $lv1 $(pv_ 5) && mirrorlog_is_on_ $lv2 $(pv_ 5) && - fail_pv_ $(pv_ 2) && + disable_dev $(pv_ 2) && vgreduce --removemissing --force $vg && mimages_are_on_ $lv2 $(pv_ 3) $(pv_ 4) && mirrorlog_is_on_ $lv2 $(pv_ 5) && @@ -486,8 +395,8 @@ mimages_are_on_ $lv2 $(pv_ 3) $(pv_ 4) && mirrorlog_is_on_ $lv1 $(pv_ 5) && mirrorlog_is_on_ $lv2 $(pv_ 5) && - fail_pv_ $(pv_ 2) && - fail_pv_ $(pv_ 4) && + disable_dev $(pv_ 2) && + disable_dev $(pv_ 4) && vgreduce --removemissing --force $vg && lv_is_linear_ $lv1 && lv_is_on_ $lv1 $(pv_ 1) && --- LVM2/test/t-000-basic.sh 2008/07/29 21:05:02 1.3 +++ LVM2/test/t-000-basic.sh 2008/09/29 16:02:49 1.4 @@ -1,4 +1,3 @@ -#!/bin/sh # Copyright (C) 2007 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -9,32 +8,18 @@ # 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='Basics: see if tools are built, etc.' +. ./test-utils.sh -. ./test-lib.sh - -lvm version >/dev/null 2>&1 -if test $? != 0; then - echo >&2 'You do not seem to have built lvm yet.' - exit 1 -fi +lvm version v=$abs_top_srcdir/tools/version.h -test_expect_success \ - "get version string from $v" \ - 'sed -n "/#define LVM_VERSION ./s///p" '"$v"'|sed "s/ .*//" > expected' - -test_expect_success \ - 'get version of a just-built binary, ensuring PATH is set properly' \ - 'lvm pvmove --version|sed -n "1s/.*: *\([0-9][^ ]*\) .*/\1/p" > actual' - -test_expect_success \ - 'ensure they are the same' \ - 'diff -u actual expected' +sed -n "/#define LVM_VERSION ./s///p" "$v" | sed "s/ .*//" > expected -# Need mdadm for some pvcreate tests -test_expect_success \ - 'verify mdadm is installed and in path (needed for pvcreate tests)' \ - 'which mdadm' +lvm pvmove --version|sed -n "1s/.*: *\([0-9][^ ]*\) .*/\1/p" > actual -test_done +# ensure they are the same +diff -u actual expected + +# Need mdadm for some pvcreate tests +# verify mdadm is installed and in path (needed for pvcreate tests) ... is it? +which mdadm --- LVM2/test/t-pool-labels.sh 2008/08/05 12:33:41 1.1 +++ LVM2/test/t-pool-labels.sh 2008/09/29 16:02:49 1.2 @@ -1,4 +1,3 @@ -#!/bin/sh # Copyright (C) 2007 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -9,41 +8,30 @@ # 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='Test lvm functionality with GFS pool labels' -privileges_required_=1 - -. ./test-lib.sh - -cleanup_() -{ - test -n "$d1" && losetup -d "$d1" - rm -f "$f1" "$f2" -} +. ./test-utils.sh # create the old GFS pool labeled linear devices create_pool_label_() { - echo -en "\x01\x16\x70\x06\x5f\xcf\xff\xb9\xf8\x24\x8apool1" | dd of=$2 bs=5 seek=1 conv=notrunc - echo -en "\x04\x01\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0$1\x68\x01\x16\x70\x00\x00\x00\x00\x00\x06\x5f\xd0" | dd of=$2 bs=273 seek=1 conv=notrunc + # FIXME + # echo -e is bashism, dash builtin sh doesn't do \xNN in printf either + # printf comes from coreutils, and is probably not posix either + env printf "\x01\x16\x70\x06\x5f\xcf\xff\xb9\xf8\x24\x8apool1" | dd of=$2 bs=5 seek=1 conv=notrunc + env printf "\x04\x01\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0$1\x68\x01\x16\x70\x00\x00\x00\x00\x00\x06\x5f\xd0" | dd of=$2 bs=273 seek=1 conv=notrunc } -test_expect_success "set up temp files, loopback devices, pool labels" \ - 'f1=$(pwd)/0 && d1=$(loop_setup_ "$f1") && - f2=$(pwd)/1 && d2=$(loop_setup_ "$f2") && - create_pool_label_ 0 "$d1" && - create_pool_label_ 1 "$d2"' - -test_expect_failure "check that pvcreate fails without -ff on the pool device" \ - 'pvcreate "$d1"' - -test_expect_success "check that vgdisplay and pvcreate -ff works with the pool device" \ - 'vgdisplay && - test -n "$d2" && losetup -d "$d2" && - vgdisplay && - pvcreate -ff -y "$d1"' - -test_done - -# Local Variables: -# indent-tabs-mode: nil -# End: +env printf "" || exit 200 # skip if printf is not available + +aux prepare_devs 2 + +create_pool_label_ 0 "$dev1" +create_pool_label_ 1 "$dev2" + +# check that pvcreate fails without -ff on the pool device +not pvcreate "$dev1" + +# check that vgdisplay and pvcreate -ff works with the pool device +vgdisplay +disable_dev "$dev2" +vgdisplay +pvcreate -ff -y "$dev1" --- LVM2/test/t-metadata.sh 2008/08/13 13:49:07 1.1 +++ LVM2/test/t-metadata.sh 2008/09/29 16:02:49 1.2 @@ -1,5 +1,4 @@ -#!/bin/sh -# Copyright (C) 2007 Red Hat, Inc. All rights reserved. +# 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 @@ -9,60 +8,28 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# tests basic functionality of read-ahead and ra regressions -# - -test_description='Test --metadatatype 1' -privileges_required_=1 +. ./test-utils.sh -. ./test-lib.sh +aux prepare_devs 5 -cleanup_() -{ - vgremove -f "$vg" - test -n "$d1" && losetup -d "$d1" - test -n "$d2" && losetup -d "$d2" - test -n "$d3" && losetup -d "$d3" - test -n "$d4" && losetup -d "$d4" - test -n "$d5" && losetup -d "$d5" - rm -f "$f1" "$f2" "$f3" "$f4" "$f5" -} - -test_expect_success "set up temp files, loopback devices" \ - 'f1=$(pwd)/1 && d1=$(loop_setup_ "$f1") && - f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") && - f3=$(pwd)/3 && d3=$(loop_setup_ "$f3") && - f4=$(pwd)/4 && d4=$(loop_setup_ "$f4") && - f5=$(pwd)/5 && d5=$(loop_setup_ "$f5") && - vg=$(this_test_)-test-vg-$$ && - lv=$(this_test_)-test-lv-$$ - pvcreate "$d1" && - pvcreate --metadatacopies 0 "$d2" && - pvcreate --metadatacopies 0 "$d3" && - pvcreate "$d4" && - pvcreate --metadatacopies 0 "$d5" && - vgcreate -c n "$vg" "$d1" "$d2" "$d3" "$d4" "$d5" && - lvcreate -n "$lv" -l 1%FREE -i5 -I256 "$vg"' - -test_expect_success "test medatasize 0" \ - 'pvchange -x n "$d1" && - pvchange -x y "$d1" && - vgchange -a n "$vg" && - pvchange --uuid "$d1" && - pvchange --uuid "$d2" && - vgremove -f "$vg"' - - -test_expect_success "test metadatatype 1" \ - 'pvcreate -M1 "$d1" && - pvcreate -M1 "$d2" && - pvcreate -M1 "$d3" && - vgcreate -M1 "$vg" "$d1" "$d2" "$d3" && - pvchange --uuid "$d1"' - -test_done - -# Local Variables: -# indent-tabs-mode: nil -# End: +pvcreate $dev1 +pvcreate --metadatacopies 0 $dev2 +pvcreate --metadatacopies 0 $dev3 +pvcreate $dev4 +pvcreate --metadatacopies 0 $dev5 + +vgcreate -c n "$vg" $devs +lvcreate -n $lv -l 1 -i5 -I256 $vg + +pvchange -x n $dev1 +pvchange -x y $dev1 +vgchange -a n $vg +pvchange --uuid $dev1 +pvchange --uuid $dev2 +vgremove -f $vg + +pvcreate -M1 $dev1 +pvcreate -M1 $dev2 +pvcreate -M1 $dev3 +vgcreate -M1 $vg $dev1 $dev2 $dev3 +pvchange --uuid $dev1 --- LVM2/test/t-covercmd.sh 2008/08/20 13:34:33 1.3 +++ LVM2/test/t-covercmd.sh 2008/09/29 16:02:50 1.4 @@ -1,4 +1,3 @@ -#!/bin/sh # Copyright (C) 2007 Red Hat, Inc. All rights reserved. # # This copyrighted material is made available to anyone wishing to use, @@ -13,21 +12,7 @@ # tests basic functionality of read-ahead and ra regressions # -test_description='Test coverage' -privileges_required_=1 - -. ./test-lib.sh - -cleanup_() -{ - vgremove -f "$vg" 2>/dev/null || true - test -n "$d1" && losetup -d "$d1" - test -n "$d2" && losetup -d "$d2" - test -n "$d3" && losetup -d "$d3" - test -n "$d4" && losetup -d "$d4" - test -n "$d5" && losetup -d "$d5" - rm -f "$f1" "$f2" "$f3" "$f4" "$f5" -} +. ./test-utils.sh get_lvs_() { @@ -37,63 +22,56 @@ esac } -test_expect_success "set up temp files, loopback devices" \ - 'f1=$(pwd)/1 && d1=$(loop_setup_ "$f1") && - f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") && - f3=$(pwd)/3 && d3=$(loop_setup_ "$f3") && - f4=$(pwd)/4 && d4=$(loop_setup_ "$f4") && - f5=$(pwd)/5 && d5=$(loop_setup_ "$f5") && - vg=$(this_test_)-test-vg-$$ && - lv=$(this_test_)-test-lv-$$ - pvcreate "$d1" && - pvcreate --metadatacopies 0 "$d2" && - pvcreate --metadatacopies 0 "$d3" && - pvcreate "$d4" && - pvcreate --metadatacopies 0 "$d5" && - vgcreate -c n "$vg" "$d1" "$d2" "$d3" "$d4" "$d5" && - lvcreate -n "$lv" -l 1%FREE -i5 -I256 "$vg"' - -test_expect_success "test *scan and *display tools" \ - 'pvscan && - vgscan && - lvscan && - lvmdiskscan && - vgdisplay --units k && - lvdisplay --units g && - for i in b k m g t p e H B K M G T P E ; do \ - pvdisplay --units "$i" "$d1" || return $? ; done' - -test_expect_success "test vgexport vgimport tools" \ - 'vgchange -an "$vg" && - vgexport "$vg" && - vgimport "$vg" && - vgchange -ay "$vg"' +prepare_devs 5 + +pvcreate $dev1 +pvcreate --metadatacopies 0 $dev2 +pvcreate --metadatacopies 0 $dev3 +pvcreate $dev4 +pvcreate --metadatacopies 0 $dev5 +vgcreate -c n $vg $devs +lvcreate -n $lv -l 5 -i5 -I256 $vg + +# test *scan and *display tools +pvscan +vgscan +lvscan +lvmdiskscan +vgdisplay --units k +lvdisplay --units g +for i in b k m g t p e H B K M G T P E ; do + pvdisplay --units "$i" "$dev1" +done + +# test vgexport vgimport tools +vgchange -an $vg +vgexport $vg +vgimport $vg +vgchange -ay $vg # "-persistent y --major 254 --minor 20" # "-persistent n" -test_expect_success "test various lvm utils" \ - 'for i in dumpconfig formats segtypes - do lvm "$i" || return $? ; done && - for i in pr "p rw" an ay "-monitor y" "-monitor n" \ - -resync -refresh "-addtag MYTAG" "-deltag MYETAG" - do lvchange -$i "$vg"/"$lv" || return $? ; done && - pvck "$d1" && - vgck "$vg" && - lvrename "$vg" "$lv" "$lv-rename" && - vgcfgbackup -f "$(pwd)/backup.$$" "$vg" && - vgchange -an "$vg" && - vgcfgrestore -f "$(pwd)/backup.$$" "$vg" && - vgremove -f "$vg" && - pvresize --setphysicalvolumesize 10M "$d1"' - -test_expect_failure "test various errors and obsoleted tools" \ - 'lvmchange || - lvrename "$vg" || - lvrename "$vg-xxx" || - lvrename "$vg" "$vg"/"$lv-rename" "$vg"/"$lv"' - -test_done - -# Local Variables: -# indent-tabs-mode: nil -# End: +# test various lvm utils +for i in dumpconfig formats segtypes; do + lvm "$i" +done + +for i in pr "p rw" an ay "-monitor y" "-monitor n" \ + -resync -refresh "-addtag MYTAG" "-deltag MYETAG"; do + lvchange -$i "$vg"/"$lv" +done + +pvck "$d1" +vgck "$vg" +lvrename "$vg" "$lv" "$lv-rename" +vgcfgbackup -f "$(pwd)/backup.$$" "$vg" +vgchange -an "$vg" +vgcfgrestore -f "$(pwd)/backup.$$" "$vg" +vgremove -f "$vg" +pvresize --setphysicalvolumesize 10M "$dev1" + +# test various errors and obsoleted tools +not lvmchange +not lvrename "$vg" +not lvrename "$vg-xxx" +not lvrename "$vg" "$vg"/"$lv-rename" "$vg"/"$lv" --- LVM2/test/t-pvcreate-operation.sh 2008/08/28 10:07:34 1.9 +++ LVM2/test/t-pvcreate-operation.sh 2008/09/29 16:02:50 1.10 @@ -1,5 +1,4 @@ -#!/bin/sh -# Copyright (C) 2007 Red Hat, Inc. All rights reserved. +# 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 @@ -9,134 +8,96 @@ # 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='Test pvcreate logic operation' -privileges_required_=1 +. ./test-utils.sh -. ./test-lib.sh - -cleanup_() -{ - test -n "$d1" && losetup -d "$d1" - test -n "$d2" && losetup -d "$d2" - test -n "$d3" && losetup -d "$d3" - test -n "$d4" && losetup -d "$d4" - rm -f "$f1" "$f2" "$f3" "$f4" -} - -test_expect_success \ - 'set up temp files, loopback devices, PVs, vgname' \ - 'f1=$(pwd)/1 && d1=$(loop_setup_ "$f1") && - f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") && - f3=$(pwd)/3 && d3=$(loop_setup_ "$f3") && - f4=$(pwd)/4 && d4=$(loop_setup_ "$f4") && - vg1=$(this_test_)-test-vg1-$$' +aux prepare_devs 4 for mdatype in 1 2 do -test_expect_success \ - "pvcreate (lvm$mdatype) succeeds when run repeatedly (pv not in a vg)" ' - pvcreate -M$mdatype $d1 && - pvcreate -M$mdatype $d1 && - pvremove -f $d1 -' - -test_expect_success \ - "pvcreate (lvm$mdatype) fails when PV belongs to VG" \ - 'pvcreate -M$mdatype $d1 && - vgcreate -M$mdatype $vg1 $d1 && - pvcreate -M$mdatype $d1; - status=$?; echo status=$status; test $status != 0 && - vgremove -f $vg1 && - pvremove -f $d1' - -test_expect_success \ - "pvcreate (lvm$mdatype) fails when PV1 does and PV2 does not belong to VG" \ - 'pvcreate -M$mdatype $d1 && - pvcreate -M$mdatype $d2 && - vgcreate -M$mdatype $vg1 $d1 && - echo pvcreate a second time on $d2 and $d1 && - pvcreate -M$mdatype $d2 $d1; - status=$?; echo status=$status; test $status != 0 && - vgremove -f $vg1 && - pvremove -f $d2 && - pvremove -f $d1' +# pvcreate (lvm$mdatype) succeeds when run repeatedly (pv not in a vg) + pvcreate -M$mdatype $dev1 + pvcreate -M$mdatype $dev1 + pvremove -f $dev1 + +# pvcreate (lvm$mdatype) fails when PV belongs to VG" \ + pvcreate -M$mdatype $dev1 + vgcreate -M$mdatype $vg1 $dev1 + not pvcreate -M$mdatype $dev1 + + vgremove -f $vg1 + pvremove -f $dev1 + +# pvcreate (lvm$mdatype) fails when PV1 does and PV2 does not belong to VG + pvcreate -M$mdatype $dev1 + pvcreate -M$mdatype $dev2 + vgcreate -M$mdatype $vg1 $dev1 + +# pvcreate a second time on $dev2 and $dev1 + not pvcreate -M$mdatype $dev2 $dev1 + + vgremove -f $vg1 + pvremove -f $dev2 + pvremove -f $dev1 # NOTE: Force pvcreate after test completion to ensure clean device #test_expect_success \ # "pvcreate (lvm$mdatype) fails on md component device" \ -# 'mdadm -C -l raid0 -n 2 /dev/md0 $d1 $d2 && -# pvcreate -M$mdatype $d1; +# 'mdadm -C -l raid0 -n 2 /dev/md0 $dev1 $dev2 && +# pvcreate -M$mdatype $dev1; # status=$?; echo status=$status; test $status != 0 && # mdadm --stop /dev/md0 && -# pvcreate -ff -y -M$mdatype $d1 $d2 && -# pvremove -f $d1 $d2' +# pvcreate -ff -y -M$mdatype $dev1 $dev2 && +# pvremove -f $dev1 $dev2' done -test_expect_success \ - 'pvcreate (lvm2) fails without -ff when PV with metadatacopies=0 belongs to VG' \ - 'pvcreate --metadatacopies 0 $d1 && - pvcreate --metadatacopies 1 $d2 && - vgcreate $vg1 $d1 $d2 && - pvcreate $d1; - status=$?; echo status=$status; test $status != 0 && - vgremove -f $vg1 && - pvremove -f $d2 && - pvremove -f $d1' +# pvcreate (lvm2) fails without -ff when PV with metadatacopies=0 belongs to VG +pvcreate --metadatacopies 0 $dev1 +pvcreate --metadatacopies 1 $dev2 +vgcreate $vg1 $dev1 $dev2 +not pvcreate $dev1 +vgremove -f $vg1 +pvremove -f $dev2 +pvremove -f $dev1 test_expect_success \ 'pvcreate (lvm2) succeeds with -ff when PV with metadatacopies=0 belongs to VG' \ - 'pvcreate --metadatacopies 0 $d1 && - pvcreate --metadatacopies 1 $d2 && - vgcreate $vg1 $d1 $d2 && - pvcreate -ff -y $d1 && + 'pvcreate --metadatacopies 0 $dev1 && + pvcreate --metadatacopies 1 $dev2 && + vgcreate $vg1 $dev1 $dev2 && + pvcreate -ff -y $dev1 && vgreduce --removemissing $vg1 && vgremove -ff $vg1 && - pvremove -f $d2 && - pvremove -f $d1' + pvremove -f $dev2 && + pvremove -f $dev1' for i in 0 1 2 3 do - test_expect_success \ - "pvcreate (lvm2) succeeds writing LVM label at sector $i" \ - 'pvcreate --labelsector $i $d1 && - dd if=$d1 bs=512 skip=$i count=1 status=noxfer 2>&1 | strings | grep -q LABELONE; - test $? == 0 && - pvremove -f $d1' +# pvcreate (lvm2) succeeds writing LVM label at sector $i + pvcreate --labelsector $i $dev1 + dd if=$dev1 bs=512 skip=$i count=1 status=noxfer 2>&1 | strings | grep -q LABELONE; + pvremove -f $dev1 done -test_expect_failure \ - "pvcreate (lvm2) fails writing LVM label at sector 4" \ - 'pvcreate --labelsector 4 $d1' +# pvcreate (lvm2) fails writing LVM label at sector 4 +not pvcreate --labelsector 4 $dev1 backupfile=mybackupfile-$(this_test_) uuid1=freddy-fred-fred-fred-fred-fred-freddy uuid2=freddy-fred-fred-fred-fred-fred-fredie bogusuuid=fred -test_expect_failure \ - 'pvcreate rejects uuid option with less than 32 characters' \ - 'pvcreate --uuid $bogusuuid $d1' - -test_expect_success \ - 'pvcreate rejects uuid already in use' \ - 'pvcreate --uuid $uuid1 $d1 && - pvcreate --uuid $uuid1 $d2; - status=$?; echo status=$status; test $status != 0' +# pvcreate rejects uuid option with less than 32 characters +not pvcreate --uuid $bogusuuid $dev1 -test_expect_success \ - 'pvcreate rejects non-existent file given with restorefile' \ - 'pvcreate --uuid $uuid1 --restorefile $backupfile $d1; - status=$?; echo status=$status; test $status != 0' - -test_expect_success \ - 'pvcreate rejects restorefile with uuid not found in file' \ - 'pvcreate --uuid $uuid1 $d1 && - vgcfgbackup -f $backupfile && - pvcreate --uuid $uuid2 --restorefile $backupfile $d2; - status=$?; echo status=$status; test $status != 0' - -test_done -# Local Variables: -# indent-tabs-mode: nil -# End: +# pvcreate rejects uuid already in use +pvcreate --uuid $uuid1 $dev1 +not pvcreate --uuid $uuid1 $dev2 + +# pvcreate rejects non-existent file given with restorefile +not pvcreate --uuid $uuid1 --restorefile $backupfile $dev1 + +# pvcreate rejects restorefile with uuid not found in file +pvcreate --uuid $uuid1 $dev1 +vgcfgbackup -f $backupfile +not pvcreate --uuid $uuid2 --restorefile $backupfile $dev2 --- LVM2/test/t-vgrename-usage.sh 2008/08/28 10:59:10 1.2 +++ LVM2/test/t-vgrename-usage.sh 2008/09/29 16:02:50 1.3 @@ -1,5 +1,4 @@ -#!/bin/sh -# Copyright (C) 2007 Red Hat, Inc. All rights reserved. +# 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 @@ -9,49 +8,22 @@ # 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='Exercise some vgrename diagnostics' -privileges_required_=1 +. ./test-utils.sh -. ./test-lib.sh - -cleanup_() -{ - test -n "$d1" && losetup -d "$d1" - test -n "$d2" && losetup -d "$d2" - test -n "$d3" && losetup -d "$d3" - test -n "$d4" && losetup -d "$d4" - rm -f "$f1" "$f2" "$f3" "$f4" -} - -test_expect_success \ - 'set up temp files, loopback devices, PVs, vgnames' \ - 'f1=$(pwd)/1 && d1=$(loop_setup_ "$f1") && - f2=$(pwd)/2 && d2=$(loop_setup_ "$f2") && - f3=$(pwd)/3 && d3=$(loop_setup_ "$f3") && - f4=$(pwd)/4 && d4=$(loop_setup_ "$f4") && - vg1=$(this_test_)-1-$$ && - vg2=$(this_test_)-2-$$ && - pvcreate $d1 $d2 && - pvcreate --metadatacopies 0 $d3 $d4' - -test_expect_success \ - 'vgrename normal operation - rename vg1 to vg2' \ - 'vgcreate $vg1 $d1 $d2 && - vgrename $vg1 $vg2 && - check_vg_field_ $vg2 vg_name $vg2 && - vgremove $vg2' - -test_expect_success \ - "vgrename by uuid (bz231187)" ' - vgcreate $vg1 $d1 $d3 && - UUID=$(vgs --noheading -o vg_uuid $vg1) && - check_vg_field_ $vg1 vg_uuid $UUID && - vgrename $UUID $vg2 && - check_vg_field_ $vg2 vg_name $vg2 && - vgremove $vg2 -' - -test_done -# Local Variables: -# indent-tabs-mode: nil -# End: +aux prepare_devs 4 +pvcreate $dev1 $dev2 +pvcreate --metadatacopies 0 $dev3 $dev4 + +# vgrename normal operation - rename vg1 to vg2 +vgcreate $vg1 $dev1 $dev2 +vgrename $vg1 $vg2 +check_vg_field_ $vg2 vg_name $vg2 +vgremove $vg2 + +# vgrename by uuid (bz231187) +vgcreate $vg1 $dev1 $dev3 +UUID=$(vgs --noheading -o vg_uuid $vg1) +check_vg_field_ $vg1 vg_uuid $UUID +vgrename $UUID $vg2 +check_vg_field_ $vg2 vg_name $vg2 +vgremove $vg2