diff --git a/tests/md/Makefile.am b/tests/md/Makefile.am index f6c5c48b4..42260af58 100644 --- a/tests/md/Makefile.am +++ b/tests/md/Makefile.am @@ -23,6 +23,7 @@ TESTS = \ test-list-filesystems.sh \ test-list-md-devices.sh \ test-lvm-on-md-device.sh \ + test-md-and-lvm-devices.sh \ test-mdadm.sh TESTS_ENVIRONMENT = $(top_builddir)/run --test diff --git a/tests/md/test-md-and-lvm-devices.sh b/tests/md/test-md-and-lvm-devices.sh new file mode 100755 index 000000000..5e82e3a4f --- /dev/null +++ b/tests/md/test-md-and-lvm-devices.sh @@ -0,0 +1,142 @@ +#!/bin/bash - +# libguestfs +# Copyright (C) 2018 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# 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. + +# Test guestfish finds: +# 1. md device created from physical block device and LV, +# 2. md device created from LVs +# 3. LV created on md device +# +# raid0 is used for md device because it is inoperable if one of its components +# is inaccessible so it is easy observable that md device is missing (raid1 in +# this case will be operable but in degraded state). + +set -e + +$TEST_FUNCTIONS +skip_if_skipped + +disk1=md-and-lvm-devices-1.img +disk2=md-and-lvm-devices-2.img + +rm -f $disk1 $disk2 + +# Clean up if the script is killed or exits early +cleanup () +{ + status=$? + set +e + + # Don't delete the output files if non-zero exit + if [ "$status" -eq 0 ]; then rm -f $disk1 $disk2; fi + + exit $status +} +trap cleanup INT QUIT TERM EXIT + +# Create 2 disks partitioned as: +# sda1: 20M MD (md127) +# sda2: 20M PV (vg1) +# sda3: 20M MD (md125) +# +# sdb1: 20M PV (vg0) +# sdb2: 20M PV (vg2) +# sdb3: 20M MD (md125) +# +# lv0 : LV (vg0) +# lv1 : LV (vg1) +# lv2 : LV (vg2) +# md127 : md (sda1, lv0) +# md126 : md (lv1, lv2) +# md125 : md (sda3, sdb3) +# vg3 : VG (md125) +# lv3 : LV (vg3) +# + +guestfish <