| #!/bin/sh |
| # Copyright (C) 2011-2015 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| |
| # set before test's clvmd is started, so it's passed in environ |
| export LVM_CLVMD_BINARY=clvmd |
| export LVM_BINARY=lvm |
| |
| SKIP_WITH_LVMLOCKD=1 |
| SKIP_WITHOUT_CLVMD=1 |
| SKIP_WITH_LVMPOLLD=1 |
| |
| . lib/inittest |
| |
| # only clvmd based test, skip otherwise |
| read LOCAL_CLVMD < LOCAL_CLVMD |
| |
| # TODO read from build, for now hardcoded |
| CLVMD_SOCKET="/var/run/lvm/clvmd.sock" |
| |
| restart_clvmd_() { |
| "$LVM_CLVMD_BINARY" -S |
| ls -la $CLVMD_SOCKET || true |
| |
| for i in $(seq 1 20) ; do |
| test -S "$CLVMD_SOCKET" && break |
| sleep .1 |
| done |
| # restarted clvmd has the same PID (no fork, only execvp) |
| NEW_LOCAL_CLVMD=$(pgrep clvmd) |
| test "$LOCAL_CLVMD" -eq "$NEW_LOCAL_CLVMD" |
| } |
| |
| aux prepare_vg |
| |
| lvcreate -an --zero n -n $lv1 -l1 $vg |
| lvcreate -an --zero n -n $lv2 -l1 $vg |
| lvcreate -l1 $vg |
| |
| lvchange -aey $vg/$lv1 |
| lvchange -aey $vg/$lv2 |
| |
| restart_clvmd_ |
| |
| # try restart once more |
| restart_clvmd_ |
| |
| # FIXME: Hmm - how could we test exclusivity is preserved in singlenode ? |
| lvchange -an $vg/$lv1 |
| lvchange -aey $vg/$lv1 |
| lvcreate -s -l3 -n snap $vg/$lv1 |
| |
| "$LVM_CLVMD_BINARY" -R |
| |
| vgchange -an $vg |
| |
| # Test what happens after 'reboot' |
| kill "$LOCAL_CLVMD" |
| while test -e "$CLVMD_PIDFILE"; do echo -n .; sleep .1; done # wait for the pid removal |
| aux prepare_clvmd |
| |
| vgchange -ay $vg |
| lvremove -f $vg/snap |
| |
| vgremove -ff $vg |