• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2
3
4##############################################################
5#
6#  Copyright (c) International Business Machines  Corp., 2003
7#
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.
12#
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.
17#
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21#
22#  FILE        : autofs1.sh
23#  USAGE       : autofs1.sh <disk_partition>
24#
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.
29#
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
37#
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
45#
46##############################################################
47
48
49##############################################################
50#
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.
55#
56##############################################################
57
58if [ $UID != 0 ]
59then
60	echo "FAILED: Must have root access to execute this script"
61	exit 1
62fi
63
64if [ $# != 1 ]
65then
66	echo "FAILED: Usage $0 <disk_partition>"
67        echo "Example: $0 /dev/hdc1"
68	exit 1
69else
70	disk_partition=$1
71	if [ ! -b $disk_partition ]
72	then
73		echo "FAILED: Usage $0 <block special disk_partition>"
74		exit 1
75	fi
76	mkfs -t ext2 $disk_partition
77fi
78
79rpm -q -a | grep autofs
80if [ $? != 0 ]
81then
82	echo "FAILED: autofs package is not installed"
83	exit 1
84fi
85
86grep autofs /proc/filesystems
87if [ $? != 0 ]
88then
89	echo "FAILED: autofs module is not built into the kernel or loaded"
90	exit 1
91fi
92
93
94##############################################################
95#
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.
101#
102##############################################################
103
104floppy_dev=`grep floppy /etc/fstab | awk '{print $1}'`
105
106echo "Found floppy device:$floppy_dev"
107
108if [ $floppy_dev != "" ]
109then
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
116	fi
117fi
118
119if [ ! -d /AUTOFS ]
120then
121	mkdir -m 777 /AUTOFS
122fi
123
124echo "/AUTOFS/MEDIA	/etc/auto.media" > /etc/auto.master
125echo "floppy	-fstype=ext2	:$floppy_dev" > /etc/auto.media
126
127
128##############################################################
129#
130# Verify that "/etc/init.d/autofs start|restart|stop|status|reload"
131# command works.
132#
133# If fails, cleanup and exit.
134#
135##############################################################
136
137/etc/init.d/autofs start
138if [ $? != 0 ]
139then
140	rm -rf /etc/auto.master /etc/auto.media /AUTOFS
141	echo "FAILED: "/etc/init.d/autofs start""
142	exit 1
143fi
144echo "Resuming test, please wait..."
145sleep 15
146
147/etc/init.d/autofs stop
148if [ $? != 0 ]
149then
150	rm -rf /etc/auto.master /etc/auto.media /AUTOFS
151	echo "FAILED: "/etc/init.d/autofs stop""
152	exit 1
153else
154	/etc/init.d/autofs start
155fi
156echo "Resuming test, please wait..."
157sleep 15
158
159/etc/init.d/autofs restart
160if [ $? != 0 ]
161then
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
166fi
167echo "Resuming test, please wait..."
168sleep 15
169
170/etc/init.d/autofs status
171if [ $? != 0 ]
172then
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
177fi
178
179/etc/init.d/autofs reload
180if [ $? != 0 ]
181then
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
186fi
187
188
189##############################################################
190#
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.
197#
198##############################################################
199
200echo "forcing error paths and conditions..."
201
202mkdir /AUTOFS/MEDIA/mydir >/dev/null 2>&1
203rm -rf /AUTOFS >/dev/null 2>&1
204
205mkdir /AUTOFS/MEDIA/floppy/test
206cp /etc/auto.master /etc/auto.media /AUTOFS/MEDIA/floppy/test
207sync; sync
208echo "Resuming test, please wait..."
209sleep 60
210mkdir /AUTOFS/MEDIA/mydir >/dev/null 2>&1
211rm -rf /AUTOFS >/dev/null 2>&1
212
213
214##############################################################
215#
216# Add an entry to the /etc/auto.master and reload.
217#
218##############################################################
219
220echo "/AUTOFS/DISK	/etc/auto.disk" >> /etc/auto.master
221echo "disk		-fstype=auto,rw,sync	:$disk_partition " > /etc/auto.disk
222/etc/init.d/autofs reload
223echo "Resuming test, please wait..."
224sleep 30
225
226
227
228mkdir /AUTOFS/DISK/disk/test
229cp /etc/auto.master /etc/auto.media /AUTOFS/DISK/disk/test
230sync; sync
231echo "Resuming test, please wait..."
232sleep 60
233
234
235if [ -e  /AUTOFS/DISK/disk/test ]; then
236  cd /AUTOFS/DISK/disk/test
237  umount /AUTOFS/DISK/disk/ >/dev/null 2>&1
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
244  fi
245  cd
246  umount /AUTOFS/DISK/disk/
247if [ $? != 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
253  fi
254fi
255#
256# Mount the disk partition somewhere else and then reference automount
257# point for disk partition.
258#
259mount -t ext2 $disk_partition /mnt/
260ls -l /AUTOFS/DISK/disk
261umount /mnt
262
263
264#######################################################
265#
266# Just before exit, stop autofs and cleanup.
267#
268#######################################################
269
270/etc/init.d/autofs stop
271rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
272echo "PASSED: $0 passed!"
273exit 0
274