• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2################################################################################
3##                                                                            ##
4## Copyright (c) International Business Machines  Corp., 2001                 ##
5## Author:       Manoj Iyer, manjo@mail.utexas.edu                            ##
6##                                                                            ##
7## This program is free software;  you can redistribute it and#or modify      ##
8## it under the terms of the GNU General Public License as published by       ##
9## the Free Software Foundation; either version 2 of the License, or          ##
10## (at your option) any later version.                                        ##
11##                                                                            ##
12## This program is distributed in the hope that it will be useful, but        ##
13## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
14## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
15## for more details.                                                          ##
16##                                                                            ##
17## You should have received a copy of the GNU General Public License          ##
18## along with this program;  if not, write to the Free Software               ##
19## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
20##                                                                            ##
21################################################################################
22#
23# Description:  Test basic functionality of gzip and gunzip command
24#		- Test #1:  Test that gzip -r will travel directories and
25#			    compress all the files available.
26#
27#		- Test #2:  Test that gunzip -r will travel directories and
28#			    uncompress all the files available.
29#
30
31TST_ID="gzip"
32TST_CNT=2
33TST_TESTFUNC=test
34TST_NEEDS_TMPDIR=1
35TST_NEEDS_CMDS="gzip gunzip"
36. tst_test.sh
37
38creat_dirnfiles()
39{
40	local numdirs=$2
41	local numfiles=$3
42	local dirname=$4
43	local dircnt=0
44	local fcnt=0
45
46	tst_res TINFO "Test #$1: Creating $numdirs directories"
47	tst_res TINFO "Test #$1: filling each dir with $numfiles files"
48	while [ $dircnt -lt $numdirs ]; do
49		dirname=$dirname/d.$dircnt
50		ROD_SILENT mkdir -p $dirname
51
52		fcnt=0
53		while [ $fcnt -lt $numfiles ]; do
54			ROD_SILENT touch $dirname/f.$fcnt
55			fcnt=$(($fcnt+1))
56		done
57		dircnt=$(($dircnt+1))
58	done
59}
60
61creat_expout()
62{
63	local numdir=$1
64	local numfile=$2
65	local dirname=$3
66	local ext=$4
67	local dircnt=0
68	local fcnt=0
69
70	echo "$dirname:"  1> tst_gzip.exp
71	echo "d.$dircnt"  1>> tst_gzip.exp
72	while [ $dircnt -lt $numdirs ]; do
73		dirname=$dirname/d.$dircnt
74		dircnt=$(($dircnt+1))
75		echo "$dirname:"  1>> tst_gzip.exp
76		if [ $dircnt -lt $numdirs ]; then
77			echo "d.$dircnt"  1>> tst_gzip.exp
78		fi
79		fcnt=0
80		while [ $fcnt -lt $numfiles ]; do
81			echo "f.$fcnt$ext " 1>> tst_gzip.exp
82			fcnt=$(($fcnt+1))
83		done
84		printf "\n\n" 1>> tst_gzip.exp
85	done
86}
87
88test1()
89{
90	numdirs=10
91	numfiles=10
92	dircnt=0
93	fcnt=0
94
95	ROD_SILENT mkdir tst_gzip.tmp
96
97	tst_res TINFO "Test #1: gzip -r will recursively compress contents" \
98			"of directory"
99
100	creat_dirnfiles 1 $numdirs $numfiles tst_gzip.tmp
101
102	gzip -r tst_gzip.tmp > tst_gzip.err 2>&1
103	if [ $? -ne 0 ]; then
104		cat tst_gzip.err
105		tst_brk TFAIL "Test #1: gzip -r failed"
106	fi
107
108	tst_res TINFO "Test #1: creating output file"
109	ls -R tst_gzip.tmp > tst_gzip.out 2>&1
110
111	tst_res TINFO "Test #1: creating expected output file"
112	creat_expout $numdirs $numfiles tst_gzip.tmp .gz
113
114	diff -w -B tst_gzip.out tst_gzip.exp > tst_gzip.err 2>&1
115	if [ $? -ne 0 ]; then
116		cat tst_gzip.err
117		tst_res TFAIL "Test #1: gzip failed"
118	else
119		tst_res TPASS "Test #1: gzip -r success"
120	fi
121
122	ROD_SILENT rm -rf tst_gzip.tmp/
123}
124
125test2()
126{
127	numdirs=10
128	numfiles=10
129	dircnt=0
130	fcnt=0
131
132	ROD_SILENT mkdir tst_gzip.tmp
133
134	tst_res TINFO "Test #2: gunzip -r will recursively uncompress" \
135			"contents of directory"
136
137	creat_dirnfiles 2 $numdirs $numfiles tst_gzip.tmp
138
139	gzip -r tst_gzip.tmp > tst_gzip.err 2>&1
140	if [ $? -ne 0 ]; then
141		cat tst_gzip.err
142		tst_brk TBROK "Test #2: compressing directory tst_gzip.tmp" \
143				"failed"
144	fi
145
146	gunzip -r tst_gzip.tmp > tst_gzip.err 2>&1
147	if [ $? -ne 0 ]; then
148		cat tst_gzip.err
149		tst_brk TBROK "Test #2: uncompressing directory" \
150				" tst_gzip.tmp failed"
151	fi
152
153	tst_res TINFO "Test #2: creating output file"
154	ls -R tst_gzip.tmp > tst_gzip.out 2>&1
155
156	tst_res TINFO "Test #2: creating expected output file"
157	creat_expout $numdirs $numfiles tst_gzip.tmp
158
159	tst_res TINFO "Test #2: comparing expected out and actual output file"
160	diff -w -B tst_gzip.out tst_gzip.exp > tst_gzip.err 2>&1
161	if [ $? -ne 0 ]; then
162		cat tst_gzip.err
163		tst_res TFAIL "Test #2: gunzip failed"
164	else
165		tst_res TPASS "Test #2: gunzip -r success"
166	fi
167
168	ROD_SILENT rm -rf tst_gzip.tmp/
169}
170
171tst_run
172