Use a saner variant for computing the number of groups in cpuctl tests
[ltp-debian.git] / testscripts / autofs1.sh
blob9fa2fa00ff2e6a7a8defd2fbd5d9eaeb53105071
1 #!/bin/bash
4 ##############################################################
6 # Copyright (c) International Business Machines Corp., 2003
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
16 # the GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 # FILE : autofs1.sh
23 # USAGE : autofs1.sh <disk_partition>
25 # DESCRIPTION : A script that will test autofs on Linux system.
26 # REQUIREMENTS:
27 # 1) System with a floppy device with a floppy disk in it.
28 # 2) A spare (scratch) disk partition of 100MB or larger.
30 # HISTORY :
31 # 06/11/2003 Prakash Narayana (prakashn@us.ibm.com)
32 # 08/01/2005 Michael Reed (mreed10@us.ibm.com)
33 # - Added an check to see if a directory exists
34 # - This prevents unnessary failures
35 # - Correction to an echo statement
36 # - Added an additional error message if a floppy disk is not present
38 # CODE COVERAGE:
39 # 41.46% - fs/autofs/dirhash.c
40 # 33.33% - fs/autofs/init.c
41 # 27.70% - fs/autofs/inode.c
42 # 38.16% - fs/autofs/root.c
43 # 0.00% - fs/autofs/symlink.c
44 # 43.40% - fs/autofs/waitq.c
46 ##############################################################
49 ##############################################################
51 # Make sure that uid=root is running this script.
52 # Validate the command line argument as a block special device.
53 # Make sure that autofs package has been installed.
54 # Make sure that autofs module is built into the kernel or loaded.
56 ##############################################################
58 if [ $UID != 0 ]
59 then
60 echo "FAILED: Must have root access to execute this script"
61 exit 1
64 if [ $# != 1 ]
65 then
66 echo "FAILED: Usage $0 <disk_partition>"
67 echo "Example: $0 /dev/hdc1"
68 exit 1
69 else
70 disk_partition=$1
71 if [ ! -b $disk_partition ]
72 then
73 echo "FAILED: Usage $0 <block special disk_partition>"
74 exit 1
76 mkfs -t ext2 $disk_partition
79 rpm -q -a | grep autofs
80 if [ $? != 0 ]
81 then
82 echo "FAILED: autofs package is not installed"
83 exit 1
86 grep autofs /proc/filesystems
87 if [ $? != 0 ]
88 then
89 echo "FAILED: autofs module is not built into the kernel or loaded"
90 exit 1
94 ##############################################################
96 # Pick the floppy device name from /etc/fstab
97 # Format (mkfs -t ext2) the floppy to ext2 file system
98 # Create the /etc/auto.master
99 # Create the /etc/auto.media
100 # Create /AUTOFS directory.
102 ##############################################################
104 floppy_dev=`grep floppy /etc/fstab | awk '{print $1}'`
106 echo "Found floppy device:$floppy_dev"
108 if [ $floppy_dev != "" ]
109 then
110 /sbin/mkfs -t ext2 $floppy_dev
111 if [ $? != 0 ]
112 then
113 echo "FAILED: mkfs -t ext2 $floppy_dev failed"
114 echo "Insert a disk into the floppy drive"
115 exit 1
119 if [ ! -d /AUTOFS ]
120 then
121 mkdir -m 777 /AUTOFS
124 echo "/AUTOFS/MEDIA /etc/auto.media" > /etc/auto.master
125 echo "floppy -fstype=ext2 :$floppy_dev" > /etc/auto.media
128 ##############################################################
130 # Verify that "/etc/init.d/autofs start|restart|stop|status|reload"
131 # command works.
133 # If fails, cleanup and exit.
135 ##############################################################
137 /etc/init.d/autofs start
138 if [ $? != 0 ]
139 then
140 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
141 echo "FAILED: "/etc/init.d/autofs start""
142 exit 1
144 echo "Resuming test, please wait..."
145 sleep 15
147 /etc/init.d/autofs stop
148 if [ $? != 0 ]
149 then
150 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
151 echo "FAILED: "/etc/init.d/autofs stop""
152 exit 1
153 else
154 /etc/init.d/autofs start
156 echo "Resuming test, please wait..."
157 sleep 15
159 /etc/init.d/autofs restart
160 if [ $? != 0 ]
161 then
162 /etc/init.d/autofs stop
163 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
164 echo "FAILED: "/etc/init.d/autofs restart""
165 exit 1
167 echo "Resuming test, please wait..."
168 sleep 15
170 /etc/init.d/autofs status
171 if [ $? != 0 ]
172 then
173 /etc/init.d/autofs stop
174 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
175 echo "FAILED: "/etc/init.d/autofs status""
176 exit 1
179 /etc/init.d/autofs reload
180 if [ $? != 0 ]
181 then
182 /etc/init.d/autofs stop
183 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
184 echo "FAILED: "/etc/init.d/autofs reload""
185 exit 1
189 ##############################################################
191 # Tryout some error code paths by:
192 # (1) Write into automount directory
193 # (2) Remove automount parent directory
194 # (3) Automount the floppy disk
195 # (4) Hit automounter timeout by sleep 60; then wakeup with error
196 # condition.
198 ##############################################################
200 echo "forcing error paths and conditions..."
202 mkdir /AUTOFS/MEDIA/mydir 2>&1 > /dev/null
203 rm -rf /AUTOFS 2>&1 > /dev/null
205 mkdir /AUTOFS/MEDIA/floppy/test
206 cp /etc/auto.master /etc/auto.media /AUTOFS/MEDIA/floppy/test
207 sync; sync
208 echo "Resuming test, please wait..."
209 sleep 60
210 mkdir /AUTOFS/MEDIA/mydir 2>&1 > /dev/null
211 rm -rf /AUTOFS 2>&1 > /dev/null
214 ##############################################################
216 # Add an entry to the /etc/auto.master and reload.
218 ##############################################################
220 echo "/AUTOFS/DISK /etc/auto.disk" >> /etc/auto.master
221 echo "disk -fstype=auto,rw,sync :$disk_partition " > /etc/auto.disk
222 /etc/init.d/autofs reload
223 echo "Resuming test, please wait..."
224 sleep 30
228 mkdir /AUTOFS/DISK/disk/test
229 cp /etc/auto.master /etc/auto.media /AUTOFS/DISK/disk/test
230 sync; sync
231 echo "Resuming test, please wait..."
232 sleep 60
235 if [ -e /AUTOFS/DISK/disk/test ]; then
236 cd /AUTOFS/DISK/disk/test
237 umount /AUTOFS/DISK/disk/ 2>&1 > /dev/null
238 if [ $? = 0 ]
239 then
240 /etc/init.d/autofs stop
241 rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
242 echo "FAILED: unmounted a busy file system!"
243 exit 1
246 umount /AUTOFS/DISK/disk/
247 if [ $? != 0 ]
248 then
249 /etc/init.d/autofs stop
250 rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
251 echo "FAILED: Could not unmount automounted file system"
252 exit 1
256 # Mount the disk partition somewhere else and then reference automount
257 # point for disk partition.
259 mount -t ext2 $disk_partition /mnt/
260 ls -l /AUTOFS/DISK/disk
261 umount /mnt
264 #######################################################
266 # Just before exit, stop autofs and cleanup.
268 #######################################################
270 /etc/init.d/autofs stop
271 rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
272 echo "PASSED: $0 passed!"
273 exit 0