blob: 00119a6043f84b325e4dccd5f79014432ac62aa4 [file] [log] [blame]
mridge06925cd2003-07-08 18:05:01 +00001#!/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
Wanlong Gao4548c6c2012-10-19 18:03:36 +080020# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
mridge06925cd2003-07-08 18:05:01 +000021#
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
Wei Jiangangdfe5cac2015-11-25 09:34:12 +080071 mkfs -t ext2 $disk_partition >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +000072fi
73
Wei Jiangangdfe5cac2015-11-25 09:34:12 +080074rpm -q -a | grep autofs >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +000075if [ $? != 0 ]
76then
77 echo "FAILED: autofs package is not installed"
78 exit 1
79fi
80
Wei Jiangangdfe5cac2015-11-25 09:34:12 +080081grep autofs /proc/filesystems >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +000082if [ $? != 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
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800103 /sbin/mkfs -t ext2 $floppy_dev >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000104 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
mridgea64d3222004-02-06 16:00:20 +0000116echo "/AUTOFS/MEDIA /etc/auto.media " > /etc/auto.master
mridge06925cd2003-07-08 18:05:01 +0000117echo "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
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800129/etc/init.d/autofs start >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000130if [ $? != 0 ]
131then
132 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
133 echo "FAILED: "/etc/init.d/autofs start""
134 exit 1
135fi
mridgea64d3222004-02-06 16:00:20 +0000136echo "Resuming test, please wait..."
mridge06925cd2003-07-08 18:05:01 +0000137sleep 15
138
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800139/etc/init.d/autofs stop >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000140if [ $? != 0 ]
141then
142 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
143 echo "FAILED: "/etc/init.d/autofs stop""
144 exit 1
145else
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800146 /etc/init.d/autofs start >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000147fi
148sleep 15
149
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800150/etc/init.d/autofs restart >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000151if [ $? != 0 ]
152then
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800153 /etc/init.d/autofs stop >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000154 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
155 echo "FAILED: "/etc/init.d/autofs restart""
156 exit 1
157fi
mridgea64d3222004-02-06 16:00:20 +0000158echo "Resuming test, please wait..."
mridge06925cd2003-07-08 18:05:01 +0000159sleep 15
160
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800161/etc/init.d/autofs status >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000162if [ $? != 0 ]
163then
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800164 /etc/init.d/autofs stop >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000165 rm -rf /etc/auto.master /etc/auto.media /AUTOFS
166 echo "FAILED: "/etc/init.d/autofs status""
167 exit 1
168fi
169
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800170/etc/init.d/autofs reload >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000171if [ $? != 0 ]
172then
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800173 /etc/init.d/autofs stop >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000174 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
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800191mkdir /AUTOFS/MEDIA/mydir >/dev/null 2>&1
192rm -rf /AUTOFS >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000193
194mkdir /AUTOFS/MEDIA/floppy/test
195cp /etc/auto.master /etc/auto.media /AUTOFS/MEDIA/floppy/test
196sync; sync
mridgea64d3222004-02-06 16:00:20 +0000197echo "Resuming test, please wait..."
mridge06925cd2003-07-08 18:05:01 +0000198sleep 60
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800199mkdir /AUTOFS/MEDIA/mydir >/dev/null 2>&1
200rm -rf /AUTOFS >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000201
202
203##############################################################
204#
205# Add an entry to the /etc/auto.master and reload.
206#
207##############################################################
208
mridgea64d3222004-02-06 16:00:20 +0000209echo "/AUTOFS/DISK /etc/auto.disk " >> /etc/auto.master
mridge06925cd2003-07-08 18:05:01 +0000210echo "disk -fstype=ext2 :$disk_partition " > /etc/auto.disk
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800211/etc/init.d/autofs reload >/dev/null 2>&1
mridgea64d3222004-02-06 16:00:20 +0000212echo "Resuming test, please wait..."
mridge06925cd2003-07-08 18:05:01 +0000213sleep 30
214
215mkdir /AUTOFS/DISK/disk/test
216cp /etc/auto.master /etc/auto.media /AUTOFS/DISK/disk/test
217sync; sync
mridgea64d3222004-02-06 16:00:20 +0000218echo "Resuming test, please wait..."
mridge06925cd2003-07-08 18:05:01 +0000219sleep 60
220
Chris Dearman37550cf2012-10-17 19:54:01 -0700221cd /AUTOFS/DISK/disk/test
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800222umount /AUTOFS/DISK/disk/ >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000223if [ $? = 0 ]
224then
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800225 /etc/init.d/autofs stop >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000226 rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
227 echo "FAILED: unmounted a busy file system!"
228 exit 1
229fi
Chris Dearman37550cf2012-10-17 19:54:01 -0700230cd
mridge06925cd2003-07-08 18:05:01 +0000231
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800232umount /AUTOFS/DISK/disk/ >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000233if [ $? != 0 ]
234then
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800235 /etc/init.d/autofs stop >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000236 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
Wei Jiangangdfe5cac2015-11-25 09:34:12 +0800256/etc/init.d/autofs stop >/dev/null 2>&1
mridge06925cd2003-07-08 18:05:01 +0000257rm -rf /etc/auto.master /etc/auto.media /etc/auto.disk /AUTOFS
258echo "PASSED: $0 passed!"
259exit 0