source: trunk/test/testrun_2a.sh@ 461

Last change on this file since 461 was 460, checked in by katerina, 10 years ago

Better error message for update and fix for deadlock in UNIX entropy collector. 3.1.3 final.

File size: 8.5 KB
Line 
1#! /bin/sh
2
3#
4# Copyright Rainer Wichmann (2006)
5#
6# License Information:
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,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License 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., 675 Mass Ave, Cambridge, MA 02139, USA.
20#
21
22LOGFILE="$PW_DIR/.samhain_log"; export LOGFILE
23RCFILE="$PW_DIR/testrc_2"; export RCFILE
24
25SERVER_BUILDOPTS="--quiet $TRUST --enable-network=server --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$PW_DIR/testrc_2 --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=${SH_LOCALHOST} --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock"; export SERVER_BUILDOPTS
26
27CLIENT_BUILDOPTS="--quiet $TRUST --enable-network=client --enable-srp --prefix=$PW_DIR --with-tmp-dir=$PW_DIR --localstatedir=$PW_DIR --with-config-file=REQ_FROM_SERVER$RCFILE --with-data-file=REQ_FROM_SERVER$PW_DIR/.samhain_file --with-logserver=localhost --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock --enable-suidcheck"; export CLIENT_BUILDOPTS
28
29do_test_1_a () {
30
31 [ -z "$verbose" ] || {
32 echo;
33 echo "${S}Start Server${E}: ./yule -l info -p none &";
34 echo;
35 }
36 rm -f test_log_valgrind
37
38 ${VALGRIND} ./yule -l info -p none >/dev/null 2>>test_log_valgrind &
39 PROC_Y=$!
40 five_sec_sleep
41
42 [ -z "$verbose" ] || {
43 echo;
44 echo "${S}Start Client${E}: ./samhain.new -l none -p none -e info -t check";
45 echo;
46 }
47
48 ${VALGRIND} ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>>test_log_valgrind
49 if test x$? = x0; then
50 [ -z "$verbose" ] || log_msg_ok "samhain.new -t check";
51 else
52 [ -z "$quiet" ] && log_msg_fail "samhain.new -t check";
53 kill $PROC_Y
54 return 1
55 fi
56
57 kill $PROC_Y
58 five_sec_sleep
59
60 egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1
61 if [ $? -ne 0 ]; then
62 [ -z "$verbose" ] || log_msg_fail "Server start";
63 return 1
64 fi
65 egrep "NEW CLIENT" $LOGFILE >/dev/null 2>&1
66 if [ $? -ne 0 ]; then
67 [ -z "$verbose" ] || log_msg_fail "Client connect";
68 return 1
69 fi
70 egrep "Checking.*/etc" $LOGFILE >/dev/null 2>&1
71 if [ $? -ne 0 ]; then
72 [ -z "$verbose" ] || log_msg_fail "Client file check";
73 return 1
74 fi
75 egrep "EXIT.*Samhain" $LOGFILE >/dev/null 2>&1
76 if [ $? -ne 0 ]; then
77 [ -z "$verbose" ] || log_msg_fail "Client exit";
78 return 1
79 fi
80 egrep "EXIT.*Yule.*SIGTERM" $LOGFILE >/dev/null 2>&1
81 if [ $? -ne 0 ]; then
82 [ -z "$verbose" ] || log_msg_fail "Server exit";
83 return 1
84 fi
85
86 [ -z "$VALGRIND" ] || {
87 tmp=`cat test_log_valgrind 2>/dev/null | wc -l`;
88 if [ $tmp -ne 0 ]; then
89 [ -z "$verbose" ] || log_msg_fail "valgrind reports errors";
90 cat test_log_valgrind
91 return 1;
92 fi;
93 }
94
95 return 0
96}
97
98testrun2a_internal ()
99{
100 [ -z "$verbose" ] || {
101 echo;
102 echo Working directory: $PW_DIR; echo MAKE is $MAKE;
103 echo;
104 }
105 #
106 #
107 [ -z "$verbose" ] || { echo; echo "${S}Building client and server${E}"; echo; }
108 #
109 if test -r "Makefile"; then
110 $MAKE distclean
111 fi
112 #
113 ${TOP_SRCDIR}/configure ${CLIENT_BUILDOPTS}
114 #
115 # Limit suid check
116 #
117 BASE="${PW_DIR}"; export BASE
118 #
119 if test x$? = x0; then
120 [ -z "$verbose" ] || log_msg_ok "configure...";
121 $MAKE 'DBGDEF=-DSH_SUIDTESTDIR=\"${BASE}\"' > /dev/null 2>>test_log
122 if test x$? = x0; then
123 [ -z "$verbose" ] || log_msg_ok "make...";
124 else
125 [ -z "$quiet" ] && log_msg_fail "make...";
126 return 1
127 fi
128
129 else
130 [ -z "$quiet" ] && log_msg_fail "configure...";
131 return 1
132 fi
133
134 # save binary and build server
135 #
136 cp samhain samhain.build || return 1
137 $MAKE clean >/dev/null || return 1
138
139 ${TOP_SRCDIR}/configure ${SERVER_BUILDOPTS}
140 #
141 if test x$? = x0; then
142 [ -z "$verbose" ] || log_msg_ok "configure...";
143 $MAKE > /dev/null 2>>test_log
144 if test x$? = x0; then
145 [ -z "$verbose" ] || log_msg_ok "make...";
146 else
147 [ -z "$quiet" ] && log_msg_fail "make...";
148 return 1
149 fi
150
151 else
152 [ -z "$quiet" ] && log_msg_fail "configure...";
153 return 1
154 fi
155
156
157 #####################################################################
158 #
159 #
160 rm -f ./.samhain_file
161 rm -f ./.samhain_log
162 rm -f ./.samhain_lock
163 rm -f ./rc.${SH_LOCALHOST}
164 rm -f ./file.${SH_LOCALHOST}
165 rm -f "./rc.${ALTHOST}"
166 rm -f "./file.${ALTHOST}"
167
168 cp ${SCRIPTDIR}/testrc_2.in testrc_2
169
170 ./samhain.build -t init -p none
171
172 if test x$? = x0; then
173 [ -z "$verbose" ] || log_msg_ok "init...";
174 else
175 [ -z "$quiet" ] && log_msg_fail "init...";
176 return 1
177 fi
178
179 # Create a password
180
181 SHPW=`./yule -G`
182 if test x"$SHPW" = x; then
183 [ -z "$quiet" ] && log_msg_fail "password not generated -- aborting"
184 return 1
185 fi
186
187 # Set in client
188
189 ./samhain_setpwd samhain.build new $SHPW >/dev/null
190
191 if test x$? = x0; then
192 [ -z "$verbose" ] || log_msg_ok "./samhain_setpwd samhain.build new $SHPW";
193 else
194 [ -z "$quiet" ] && log_msg_fail "./samhain_setpwd samhain.build new $SHPW";
195 return 1
196 fi
197
198 mv samhain.build.new samhain.new || return 1
199
200 rm -f ./.samhain_log*
201 rm -f ./.samhain_lock
202
203 SHCLT=`./yule -P $SHPW`
204
205 if test x$? = x0; then
206 [ -z "$verbose" ] || log_msg_ok "yule -P $SHPW";
207 else
208 [ -z "$quiet" ] && log_msg_fail "yule -P $SHPW";
209 return 1
210 fi
211
212 SHCLT1=`echo "${SHCLT}" | sed s%HOSTNAME%${SH_LOCALHOST}%`
213 AHOST=`find_hostname`
214 SHCLT2=`echo "${SHCLT}" | sed s%HOSTNAME%${AHOST}%`
215
216
217 echo $SHCLT1 >> testrc_2
218 echo $SHCLT2 >> testrc_2
219
220
221 cp ./testrc_2 ./rc.${SH_LOCALHOST}
222 mv ./.samhain_file ./file.${SH_LOCALHOST}
223 chmod 644 ./rc.${SH_LOCALHOST}
224 chmod 644 ./file.${SH_LOCALHOST}
225
226 ALTHOST=`find_hostname`
227 cp ./testrc_2 "./rc.${ALTHOST}"
228 cp ./file.${SH_LOCALHOST} "./file.${ALTHOST}" 2>/dev/null
229 chmod 644 ./rc.${ALTHOST}
230 chmod 644 ./file.${ALTHOST}
231
232 echo $SHPW > ./testpw
233}
234
235MAXTEST=5; export MAXTEST
236
237testrun2a ()
238{
239 log_start "RUN FULL CLIENT/SERVER";
240 #
241 if [ x"$1" = x ]; then
242 [ -z "$quiet" ] && log_msg_fail "Missing hostname"
243 fi
244 #
245 SH_LOCALHOST=$1; export SH_LOCALHOST
246 #
247 testrun2a_internal
248 do_test_1_a
249 if [ $? -eq 0 ]; then
250 [ -z "$quiet" ] && log_ok 1 ${MAXTEST} "Client download+logging";
251 else
252 [ -z "$quiet" ] && log_fail 1 ${MAXTEST} "Client download+logging";
253 fi
254 ####### EXIT HERE FOR TESTING ######
255 #
256 exit 0
257 #
258 SERVER_BUILDOPTS_ORIG="${SERVER_BUILDOPTS}"
259 CLIENT_BUILDOPTS_ORIG="${CLIENT_BUILDOPTS}"
260 #
261 SERVER_BUILDOPTS="${SERVER_BUILDOPTS_ORIG} --disable-srp"; export SERVER_BUILDOPTS
262 CLIENT_BUILDOPTS="${CLIENT_BUILDOPTS_ORIG} --disable-srp"; export CLIENT_BUILDOPTS
263 #
264 testrun2a_internal
265 do_test_1_a
266 if [ $? -eq 0 ]; then
267 [ -z "$quiet" ] && log_ok 2 ${MAXTEST} "SRP disabled";
268 else
269 [ -z "$quiet" ] && log_fail 2 ${MAXTEST} "SRP disabled";
270 fi
271 #
272 SERVER_BUILDOPTS="${SERVER_BUILDOPTS_ORIG} --disable-encrypt"; export SERVER_BUILDOPTS
273 CLIENT_BUILDOPTS="${CLIENT_BUILDOPTS_ORIG} --disable-encrypt"; export CLIENT_BUILDOPTS
274 #
275 testrun2a_internal
276 do_test_1_a
277 if [ $? -eq 0 ]; then
278 [ -z "$quiet" ] && log_ok 3 ${MAXTEST} "Encryption disabled";
279 else
280 [ -z "$quiet" ] && log_fail 3 ${MAXTEST} "Encryption disabled";
281 fi
282 #
283 SERVER_BUILDOPTS="${SERVER_BUILDOPTS_ORIG} --enable-encrypt=1"; export SERVER_BUILDOPTS
284 CLIENT_BUILDOPTS="${CLIENT_BUILDOPTS_ORIG} --enable-encrypt=1"; export CLIENT_BUILDOPTS
285 #
286 testrun2a_internal
287 do_test_1_a
288 if [ $? -eq 0 ]; then
289 [ -z "$quiet" ] && log_ok 4 ${MAXTEST} "Encryption (v1)";
290 else
291 [ -z "$quiet" ] && log_fail 4 ${MAXTEST} "Encryption (v1)";
292 fi
293 #
294 SERVER_BUILDOPTS="${SERVER_BUILDOPTS_ORIG}"; export SERVER_BUILDOPTS
295 CLIENT_BUILDOPTS="${CLIENT_BUILDOPTS_ORIG} --enable-encrypt=1"; export CLIENT_BUILDOPTS
296 #
297 testrun2a_internal
298 do_test_1_a
299 if [ $? -eq 0 ]; then
300 [ -z "$quiet" ] && log_ok 5 ${MAXTEST} "Encryption backward compat";
301 else
302 [ -z "$quiet" ] && log_fail 5 ${MAXTEST} "Encryption backward compat";
303 fi
304 #
305 if [ -n "$cleanup" ]; then
306 rm -f ./rc.${SH_LOCALHOST}
307 rm -f ./file.${SH_LOCALHOST}
308 ALTHOST=`find_hostname`
309 rm -f "./file.${ALTHOST}"
310 rm -f "./rc.${ALTHOST}"
311 fi
312 #
313 log_end "RUN FULL CLIENT/SERVER"
314}
315
Note: See TracBrowser for help on using the repository browser.