3 # Copyright (C) 2011 Red Hat Inc.
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 # Test guestfish md-create and md-detail commands.
23 rm -f md-test1.img md-test2.img md-test3.img md-test4.img
25 ../fish/guestfish <<EOF
26 # Add four empty disks
27 sparse md-test1.img 100M
28 sparse md-test2.img 100M
29 sparse md-test3.img 100M
30 sparse md-test4.img 100M
33 # Create lots of test partitions.
34 part-init /dev/sda mbr
35 part-add /dev/sda p 4096 8191
36 part-add /dev/sda p 8192 12287
37 part-add /dev/sda p 12288 16383
38 part-add /dev/sda p 16384 20479
39 part-init /dev/sdb mbr
40 part-add /dev/sdb p 4096 8191
41 part-add /dev/sdb p 8192 12287
42 part-add /dev/sdb p 12288 16383
43 part-add /dev/sdb p 16384 20479
44 part-init /dev/sdc mbr
45 part-add /dev/sdc p 4096 8191
46 part-add /dev/sdc p 8192 12287
47 part-add /dev/sdc p 12288 16383
48 part-add /dev/sdc p 16384 20479
49 part-init /dev/sdd mbr
50 part-add /dev/sdd p 4096 8191
51 part-add /dev/sdd p 8192 12287
52 part-add /dev/sdd p 12288 16383
53 part-add /dev/sdd p 16384 20479
56 md-create r1t1 "/dev/sda1 /dev/sdb1"
57 md-create r1t2 "/dev/sdc1 /dev/sdd1" chunk:65536
60 md-create r5t1 "/dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2" \
61 missingbitmap:0x10 nrdevices:4 spare:1 level:5
63 md-create r5t2 "/dev/sda3 /dev/sdb3" missingbitmap:0x1 level:5
65 md-create r5t3 "/dev/sdc3 /dev/sdd3" \
66 missingbitmap:0x6 nrdevices:2 spare:2 level:5
68 # Make some filesystems and put some content on the
69 # new RAID devices to see if they work.
70 mkfs ext2 /dev/md/r1t1
71 mkfs ext2 /dev/md/r1t2
72 mkfs ext2 /dev/md/r5t1
73 mkfs ext2 /dev/md/r5t2
74 mkfs ext2 /dev/md/r5t3
77 mount /dev/md/r1t1 /r1t1
79 mount /dev/md/r1t2 /r1t2
81 mount /dev/md/r5t1 /r5t1
83 mount /dev/md/r5t2 /r5t2
85 mount /dev/md/r5t3 /r5t3
89 write /r5t1/foo "hello"
90 write /r5t2/bar "goodbye"
91 write /r5t3/baz "testing"
95 eval `../fish/guestfish --listen`
96 ../fish/guestfish --remote add-ro md-test1.img
97 ../fish/guestfish --remote add-ro md-test2.img
98 ../fish/guestfish --remote add-ro md-test3.img
99 ../fish/guestfish --remote add-ro md-test4.img
100 ../fish/guestfish --remote run
102 for md in `../fish/guestfish --remote list-md-devices`; do
103 ../fish/guestfish --remote md-detail "${md}" > md-detail.out
105 sed 's/:\s*/=/' md-detail.out > md-detail.out.sh
107 rm -f md-detail.out.sh
112 [ "$level" == "raid1" ] || error=1
113 [ "$devices" == "2" ] || error=1
117 [ "$level" == "raid1" ] || error=1
118 [ "$devices" == "2" ] || error=1
122 [ "$level" == "raid5" ] || error=1
123 [ "$devices" == "4" ] || error=1
127 [ "$level" == "raid5" ] || error=1
128 [ "$devices" == "3" ] || error=1
132 [ "$level" == "raid5" ] || error=1
133 [ "$devices" == "2" ] || error=1
140 [[ "$uuid" =~ ([0-9a-f]{8}:){3}[0-9a-f]{8} ]] || error=1
141 [ ! -z "$metadata" ] || error=1
143 if [ "$error" == "1" ]; then
144 echo "$0: Unexpected output from md-detail for device $md"
146 ../fish/guestfish --remote exit
151 ../fish/guestfish --remote exit
153 eval `../fish/guestfish --listen`
154 ../fish/guestfish --remote add-ro md-test1.img
155 ../fish/guestfish --remote add-ro md-test2.img
156 ../fish/guestfish --remote add-ro md-test3.img
157 ../fish/guestfish --remote add-ro md-test4.img
158 ../fish/guestfish --remote run
160 for md in `../fish/guestfish --remote list-md-devices`; do
161 ../fish/guestfish --remote md-stop "${md}"
164 ../fish/guestfish --remote exit
166 rm -f md-detail.out md-test1.img md-test2.img md-test3.img md-test4.img