Whamcloud - gitweb
b=2605: fix conf-sanity test 9 (--ptldebug/--subsystem in lmc and lconf)
[fs/lustre-release.git] / lustre / tests / conf-sanity.sh
1 #!/bin/bash
2 # requirement:
3 #       add uml1 uml2 uml3 in your /etc/hosts
4
5 set -e
6
7 SRCDIR=`dirname $0`
8 PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH
9
10 LUSTRE=${LUSTRE:-`dirname $0`/..}
11 RLUSTRE=${RLUSTRE:-$LUSTRE}
12
13 . $LUSTRE/tests/test-framework.sh
14
15 init_test_env $@
16
17 . ${CONFIG:=$LUSTRE/tests/cfg/local.sh}
18
19 FORCE=${FORCE:-" --force"}
20
21 gen_config() {
22         rm -f $XMLCONFIG
23
24         add_mds mds --dev $MDSDEV --size $MDSSIZE
25         add_lov lov1 mds --stripe_sz $STRIPE_BYTES\
26             --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
27         add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
28         add_client client mds --lov lov1 --path $MOUNT
29 }
30
31 gen_second_config() {
32         rm -f $XMLCONFIG
33
34         add_mds mds2 --dev $MDSDEV --size $MDSSIZE
35         add_lov lov2 mds2 --stripe_sz $STRIPE_BYTES\
36             --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
37         add_ost ost2 --lov lov2 --dev $OSTDEV --size $OSTSIZE
38         add_client client mds2 --lov lov2 --path $MOUNT2
39 }
40
41 start_mds() {
42         echo "start mds service on `facet_active_host mds`"
43         start mds --reformat $MDSLCONFARGS > /dev/null || return 94
44 }
45 stop_mds() {
46         echo "stop mds service on `facet_active_host mds`"
47         stop mds $@ > /dev/null || return 97 
48 }
49
50 start_ost() {
51         echo "start ost service on `facet_active_host ost`"
52         start ost --reformat $OSTLCONFARGS > /dev/null || return 95
53 }
54
55 stop_ost() {
56         echo "stop ost service on `facet_active_host ost`"
57         stop ost $@ > /dev/null || return 98 
58 }
59
60 mount_client() {
61         local MOUNTPATH=$1
62         echo "mount lustre on ${MOUNTPATH}....."
63         zconf_mount $MOUNTPATH > /dev/null || return 96
64 }
65
66 umount_client() {
67         local MOUNTPATH=$1
68         echo "umount lustre on ${MOUNTPATH}....."
69         zconf_umount $MOUNTPATH > /dev/null || return 97
70 }
71
72 manual_umount_client(){
73         echo "manual umount lustre on ${MOUNTPATH}...."
74         do_facet  client "umount $MOUNT"
75 }
76
77 setup() {
78         start_ost
79         start_mds
80         mount_client $MOUNT 
81 }
82
83 cleanup() {
84         umount_client $MOUNT || return -200
85         stop_mds  || return -201
86         stop_ost || return -202
87 }
88
89 check_mount() {
90         do_facet client "touch $DIR/a" || return 71     
91         do_facet client "rm $DIR/a" || return 72        
92         echo "setup single mount lustre success"
93 }
94
95 check_mount2() {
96         do_facet client "touch $DIR/a" || return 71     
97         do_facet client "rm $DIR/a" || return 72        
98         do_facet client "touch $DIR2/a" || return 73    
99         do_facet client "rm $DIR2/a" || return 74       
100         echo "setup double mount lustre success"
101 }
102
103 build_test_filter
104
105 #create single point mountpoint
106
107 gen_config
108
109
110 test_0() {
111         start_ost
112         start_mds       
113         mount_client $MOUNT  
114         check_mount || return 41
115         cleanup  
116 }
117 run_test 0 "single mount setup"
118
119 test_1() {
120         start_ost
121         echo "start ost second time..."
122         start ost --reformat $OSTLCONFARGS > /dev/null 
123         start_mds       
124         mount_client $MOUNT
125         check_mount || return 42
126         cleanup 
127 }
128 run_test 1 "start up ost twice"
129
130 test_2() {
131         start_ost
132         start_mds       
133         echo "start mds second time.."
134         start mds --reformat $MDSLCONFARGS > /dev/null 
135         
136         mount_client $MOUNT  
137         check_mount || return 43
138         cleanup 
139 }
140 run_test 2 "start up mds twice"
141
142 test_3() {
143         setup
144         mount_client $MOUNT
145
146         check_mount || return 44
147         
148         umount_client $MOUNT    
149         cleanup  
150 }
151 run_test 3 "mount client twice"
152
153 test_4() {
154         setup
155         touch $DIR/$tfile || return 85
156         stop_ost ${FORCE}
157
158         # cleanup may return an error from the failed 
159         # disconnects; for now I'll consider this successful 
160         # if all the modules have unloaded.
161         if ! cleanup ; then
162             lsmod | grep -q portals && return 1
163         fi
164         return 0
165 }
166 run_test 4 "force cleanup ost, then cleanup"
167
168 test_5() {
169         setup
170         touch $DIR/$tfile || return 86
171         stop_mds ${FORCE} || return 98
172
173         # cleanup may return an error from the failed 
174         # disconnects; for now I'll consider this successful 
175         # if all the modules have unloaded.
176         if ! cleanup ; then
177             lsmod | grep -q portals && return 1
178         fi
179         return 0
180 }
181 run_test 5 "force cleanup mds, then cleanup"
182
183 test_6() {
184         setup
185         manual_umount_client
186         mount_client ${MOUNT} || return 87
187         touch $DIR/a || return 86
188         cleanup 
189 }
190 run_test 6 "manual umount, then mount again"
191
192 test_7() {
193         setup
194         manual_umount_client
195         cleanup 
196 }
197 run_test 7 "manual umount, then cleanup"
198
199 test_8() {
200         start_ost
201         start_mds
202
203         mount_client $MOUNT  
204         mount_client $MOUNT2 
205
206         check_mount2 || return 45
207         umount $MOUNT
208         umount_client $MOUNT2  
209         
210         stop_mds
211         stop_ost
212 }
213 run_test 8 "double mount setup"
214
215 test_9() {
216         # backup the old values of PTLDEBUG and SUBSYSTEM
217         OLDPTLDEBUG=$PTLDEBUG
218         OLDSUBSYSTEM=$SUBSYSTEM
219         
220         # generate new configuration file with lmc --ptldebug and --subsystem
221         PTLDEBUG="trace"
222         SUBSYSTEM="mdc"
223         gen_config
224
225         # check the result of lmc --ptldebug/subsystem
226         start_ost
227         start_mds
228         mount_client $MOUNT
229         CHECK_PTLDEBUG="`cat /proc/sys/portals/debug`"
230         if [ $CHECK_PTLDEBUG = "1" ]; then
231            echo "lmc --debug success"
232         else
233            echo "lmc --debug: want 1, have $CHECK_PTLDEBUG"
234            return 1
235         fi
236         CHECK_SUBSYSTEM="`cat /proc/sys/portals/subsystem_debug`"
237         if [ $CHECK_SUBSYSTEM = "2" ]; then
238            echo "lmc --subsystem success"
239         else
240            echo "lmc --subsystem: want 2, have $CHECK_SUBSYSTEM"
241            return 1
242         fi
243         check_mount || return 41
244         cleanup
245
246         # the new PTLDEBUG/SUBSYSTEM used for lconf --ptldebug/subsystem
247         PTLDEBUG="inode+trace"
248         SUBSYSTEM="mds+ost"
249
250         # check lconf --ptldebug/subsystem overriding lmc --ptldebug/subsystem
251         start_ost
252         start_mds
253         CHECK_PTLDEBUG="`do_facet mds cat /proc/sys/portals/debug`"
254         if [ $CHECK_PTLDEBUG = "3" ]; then
255            echo "lconf --debug success"
256         else
257            echo "lconf --debug: want 3, have $CHECK_PTLDEBUG"
258            return 1
259         fi
260         CHECK_SUBSYSTEM="`do_facet mds cat /proc/sys/portals/subsystem_debug`"
261         if [ $CHECK_SUBSYSTEM = "20" ]; then
262            echo "lconf --subsystem success"
263         else
264            echo "lconf --subsystem: want 20, have $CHECK_SUBSYSTEM"
265            return 1
266         fi
267         mount_client $MOUNT
268         check_mount || return 41
269         cleanup
270
271         # resume the old configuration
272         PTLDEBUG=$OLDPTLDEBUG
273         SUBSYSTEM=$OLDSUBSYSTEM
274         gen_config
275 }
276
277 run_test 9 "test --ptldebug and --subsystem for lmc and lconf"
278
279 test_10() {
280         OLDXMLCONFIG=$XMLCONFIG
281         XMLCONFIG="broken.xml"
282         [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG
283         SAMENAME="mds1"
284         do_lmc --add node --node $SAMENAME
285         do_lmc --add net --node $SAMENAME --nid $SAMENAME --nettype tcp
286         do_lmc --add mds --node $SAMENAME --mds $SAMENAME --nid $SAMENAME \
287                --fstype ext3 --dev /dev/mds1 || return $?
288         do_lmc --add lov --lov lov1 --mds $SAMENAME --stripe_sz 65536 \
289                --stripe_cnt 1 --stripe_pattern 0 || return $?
290         echo "Success!"
291         XMLCONFIG=$OLDXMLCONFIG
292 }
293 run_test 10 "use lmc with the same name for node and mds"
294
295 test_11() {
296         OLDXMLCONFIG=$XMLCONFIG
297         XMLCONFIG="conf11.xml"
298
299         [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG
300         add_mds mds --dev $MDSDEV --size $MDSSIZE
301         add_ost ost --dev $OSTDEV --size $OSTSIZE
302         add_client client mds --path $MOUNT --ost ost_svc || return $?
303         echo "Default lov config success!"
304         
305         [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG
306         add_mds mds --dev $MDSDEV --size $MDSSIZE
307         add_ost ost --dev $OSTDEV --size $OSTSIZE
308         add_client client mds --path $MOUNT && return $?
309         echo "--add mtpt with neither --lov nor --ost will return error"
310
311         echo ""
312         echo "Success!"
313         XMLCONFIG=$OLDXMLCONFIG
314 }
315 run_test 11 "use default lov configuration (should return error)"
316
317 equals_msg "Done"