Whamcloud - gitweb
b=2454
[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         [ "`cat /proc/sys/portals/debug`" = "1" ] && \
230            echo "lmc --debug success" || return 1
231         [ "`cat /proc/sys/portals/subsystem_debug`" = "16777216" ] && \
232            echo "lmc --subsystem success" || return 1
233         check_mount || return 41
234         cleanup
235
236         # the new PTLDEBUG/SUBSYSTEM used for lconf --ptldebug/subsystem
237         PTLDEBUG="inode"
238         SUBSYSTEM="mds"
239
240         # check lconf --ptldebug/subsystem overriding lmc --ptldebug/subsystem
241         start_ost
242         start_mds
243         mount_client $MOUNT
244         [ "`cat /proc/sys/portals/debug`" = "2" ] && \
245            echo "lconf --debug overriding success" || return 1
246         [ "`cat /proc/sys/portals/subsystem_debug`" = "33554432" ] && \
247            echo "lconf --subsystem overriding success" || return 1
248         check_mount || return 41
249         cleanup
250
251         # resume the old configuration
252         PTLDEBUG=$OLDPTLDEBUG
253         SUBSYSTEM=$OLDSUBSYSTEM
254         gen_config
255 }
256 run_test 9 "test --ptldebug and --subsystem for lmc"
257
258 test_10() {
259         OLDXMLCONFIG=$XMLCONFIG
260         XMLCONFIG="broken.xml"
261         [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG
262         SAMENAME="mds1"
263         do_lmc --add node --node $SAMENAME
264         do_lmc --add net --node $SAMENAME --nid $SAMENAME --nettype tcp
265         do_lmc --add mds --node $SAMENAME --mds $SAMENAME --nid $SAMENAME \
266                --fstype ext3 --dev /dev/mds1 || return $?
267         do_lmc --add lov --lov lov1 --mds $SAMENAME --stripe_sz 65536 \
268                --stripe_cnt 1 --stripe_pattern 0 || return $?
269         echo "Success!"
270         XMLCONFIG=$OLDXMLCONFIG
271 }
272 run_test 10 "use lmc with the same name for node and mds"
273
274 test_11() {
275         OLDXMLCONFIG=$XMLCONFIG
276         XMLCONFIG="conf11.xml"
277
278         [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG
279         add_mds mds --dev $MDSDEV --size $MDSSIZE
280         add_ost ost --dev $OSTDEV --size $OSTSIZE
281         add_client client mds --path $MOUNT --ost ost_svc || return $?
282         echo "Default lov config success!"
283         
284         [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG
285         add_mds mds --dev $MDSDEV --size $MDSSIZE
286         add_ost ost --dev $OSTDEV --size $OSTSIZE
287         add_client client mds --path $MOUNT && return $?
288         echo "--add mtpt with neither --lov nor --ost will return error"
289
290         echo ""
291         echo "Success!"
292         XMLCONFIG=$OLDXMLCONFIG
293 }
294 run_test 11 "use default lov configuration (should return error)"
295
296 equals_msg "Done"