• 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        : autofs4.sh
23#  USAGE       : autofs4.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#
33#  CODE COVERAGE: 26.8% - fs/autofs4 (Total Coverage)
34#
35#                 24.1% - fs/autofs4/expire.c
36#                 33.3% - fs/autofs4/init.c
37#                 24.0% - fs/autofs4/inode.c
38#                 29.9% - fs/autofs4/root.c
39#                  0.0% - fs/autofs4/symlink.c
40#                 29.1% - fs/autofs4/waitq.c
41#
42##############################################################
43
44
45##############################################################
46#
47# Make sure that uid=root is running this script.
48# Validate the command line argument as a block special device.
49# Make sure that autofs package has been installed.
50# Make sure that autofs module is built into the kernel or loaded.
51#
52##############################################################
53
54if [ $UID != 0 ]
55then
56	echo "FAILED: Must have root access to execute this script"
57	exit 1
58fi
59
60if [ $# != 1 ]
61then
62	echo "FAILED: Usage $0 <disk_partition>"
63	exit 1
64else
65	disk_partition=$1
66	if [ ! -b $disk_partition ]
67	then
68		echo "FAILED: Usage $0 <block special disk_partition>"
69		exit 1
70	fi
71	mkfs -t ext2 $disk_partition >/dev/null 2>&1
72fi
73
74rpm -q -a | grep autofs >/dev/null 2>&1
75if [ $? != 0 ]
76then
77	echo "FAILED: autofs package is not installed"
78	exit 1
79fi
80
81grep autofs /proc/filesystems >/dev/null 2>&1
82if [ $? != 0 ]
83then
84	echo "FAILED: autofs module is not built into the kernel or loaded"
85	exit 1
86fi
87
88
89##############################################################
90#
91# Pick the floppy device name from /etc/fstab
92# Format (mkfs -t ext2) the floppy to ext2 file system
93# Create the /etc/auto.master
94# Create the /etc/auto.media
95# Create /AUTOFS directory.
96#
97##############################################################
98
99floppy_dev=`grep floppy /etc/fstab | awk '{print $1}'`
100
101if [ $floppy_dev != "" ]
102then
103	/sbin/mkfs -t ext2 $floppy_dev >/dev/null 2>&1
104	if [ $? != 0 ]
105	then
106		echo "FAILED: mkfs -t ext2 $floppy_dev failed"
107		exit 1
108	fi
109fi
110
111if [ ! -d /AUTOFS ]
112then
113	mkdir -m 755 /AUTOFS
114fi
115
116echo "/AUTOFS/MEDIA	/etc/auto.media		" > /etc/auto.master
117echo "floppy	-fstype=ext2					:$floppy_dev" > /etc/auto.media
118
119
120##############################################################
121#
122# Verify that "/etc/init.d/autofs start|restart|stop|status|reload"
123# command works.
124#
125# If fails, cleanup and exit.
126#
127##############################################################
128
129/etc/init.d/autofs start >/dev/null 2>&1
130if [ $? != 0 ]
131then
132	rm -rf /etc/auto.master /etc/auto.media /AUTOFS
133	echo "FAILED: "/etc/init.d/autofs start""
134	exit 1
135fi
136echo "Resuming test, please wait..."
137sleep 15
138
139/etc/init.d/autofs stop >/dev/null 2>&1
140if [ $? != 0 ]
141then
142	rm -rf /etc/auto.master /etc/auto.media /AUTOFS
143	echo "FAILED: "/etc/init.d/autofs stop""
144	exit 1
145else
146	/etc/init.d/autofs start >/dev/null 2>&1
147fi
148sleep 15
149
150/etc/init.d/autofs restart >/dev/null 2>&1
151if [ $? != 0 ]
152then
153	/etc/init.d/autofs stop >/dev/null 2>&1
154	rm -rf /etc/auto.master /etc/auto.media /AUTOFS
155	echo "FAILED: "/etc/init.d/autofs restart""
156	exit 1
157fi
158echo "Resuming test, please wait..."
159sleep 15
160
161/etc/init.d/autofs status >/dev/null 2>&1
162if [ $? != 0 ]
163then
164	/etc/init.d/autofs stop >/dev/null 2>&1
165	rm -rf /etc/auto.master /etc/auto.media /AUTOFS
166	echo "FAILED: "/etc/init.d/autofs status""
167	exit 1
168fi
169
170/etc/init.d/autofs reload >/dev/null 2>&1
171if [ $? != 0 ]
172then
173	/etc/init.d/autofs stop >/dev/null 2>&1
174	rm -rf /etc/auto.master /etc/auto.media /AUTOFS
175	echo "FAILED: "/etc/init.d/autofs reload""
176	exit 1
177fi
178
179
180##############################################################
181#
182# Tryout some error code paths by:
183# (1) Write into automount directory
184# (2) Remove automount parent directory
185# (3) Automount the floppy disk
186# (4) Hit automounter timeout by sleep 60; then wakeup with error
187#     condition.
188#
189##############################################################
190
191mkdir /AUTOFS/MEDIA/mydir >/dev/null 2>&1
192rm -rf /AUTOFS >/dev/null 2>&1
193
194mkdir /AUTOFS/MEDIA/floppy/test
195cp /etc/auto.master /etc/auto.media /AUTOFS/MEDIA/floppy/test
196sync; sync
197echo "Resuming test, please wait..."
198sleep 60
199mkdir /AUTOFS/MEDIA/mydir >/dev/null 2>&1
200rm -rf /AUTOFS >/dev/null 2>&1
201
202
203##############################################################
204#
205# Add an entry to the /etc/auto.master and reload.
206#
207##############################################################
208
209echo "/AUTOFS/DISK	/etc/auto.disk		" >> /etc/auto.master
210echo "disk		-fstype=ext2					:$disk_partition " > /etc/auto.disk
211/etc/init.d/autofs reload >/dev/null 2>&1
212echo "Resuming test, please wait..."
213sleep 30
214
215mkdir /AUTOFS/DISK/disk/test
216cp /etc/auto.master /etc/auto.media /AUTOFS/DISK/disk/test
217sync; sync
218echo "Resuming test, please wait..."
219sleep 60
220
221cd /AUTOFS/DISK/disk/test
222umount /AUTOFS/DISK/disk/ >/dev/null 2>&1
223if [ $? = 0 ]
224then
225	/etc/init.d/autofs stop >/dev/null 2>&1
226	rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
227	echo "FAILED: unmounted a busy file system!"
228	exit 1
229fi
230cd
231
232umount /AUTOFS/DISK/disk/ >/dev/null 2>&1
233if [ $? != 0 ]
234then
235	/etc/init.d/autofs stop >/dev/null 2>&1
236	rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
237	echo "FAILED: Could not unmount automounted file system"
238	exit 1
239fi
240
241#
242# Mount the disk partition somewhere else and then reference automount
243# point for disk partition.
244#
245mount -t ext2 $disk_partition /mnt/
246ls -l /AUTOFS/DISK/disk
247umount /mnt
248
249
250#######################################################
251#
252# Just before exit, stop autofs and cleanup.
253#
254#######################################################
255
256/etc/init.d/autofs stop >/dev/null 2>&1
257rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
258echo "PASSED: $0 passed!"
259exit 0
260