Changeset 19 for trunk/test/testtimesrv.sh
- Timestamp:
- Feb 12, 2006, 10:49:56 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/testtimesrv.sh
r1 r19 1 1 #! /bin/sh 2 2 3 4 # The following two are the ANSI sequences for start and end embolden 5 case $TERM in 6 vt*|ansi*|con*|xterm*|linux*|screen*) 7 S=[1m 8 E=[m 9 ;; 10 *) 11 S= 12 E= 13 ;; 14 esac 15 16 PW_DIR=`pwd` 17 18 if test x$UID != x; then 19 TRUST="--with-trusted=0,2,$UID" 20 else 21 TRUST="--with-trusted=0,2" 22 fi 23 24 echo; echo "${S}__ STARTING TEST TIMESERVER OPTION __${E}"; echo; 25 echo Working directory: $PW_DIR 26 27 MAKE=`which gmake` 28 if test "x$?" = x1 ; then 29 MAKE="make -s" 30 else 31 MAKE=`which gmake | sed -e "s%\([a-z:]\) .*%\1%g"` 32 if test "x$MAKE" = x; then 33 MAKE="make -s" 34 elif test "x$MAKE" = xno; then 35 MAKE="make -s" 36 else 37 if test "x$MAKE" = "xwhich:"; then 38 MAKE="make -s" 39 else 40 MAKE="gmake -s" 41 gmake -v >/dev/null 2>&1 || MAKE="make -s" 42 fi 43 fi 44 fi 45 46 echo MAKE is $MAKE 47 echo 48 49 50 testtime0 () 51 { 3 RCFILE="$PW_DIR/testrc_1.dyn"; export RCFILE 4 LOGFILE="$PW_DIR/.samhain_log"; export LOGFILE 5 PIDFILE="$PW_DIR/.samhain_lock"; export PIDFILE 6 7 BASE="${PW_DIR}/testrun_testdata"; export BASE 8 TDIRS="a b c a/a a/b a/c a/a/a a/a/b a/a/c a/a/a/a a/a/a/b a/a/a/c"; export TDIRS 9 TFILES="x y z"; export TFILES 10 11 prep_testdata () 12 { 13 chmod -R 0700 "${BASE}" || { 14 [ -z "$quiet" ] && log_msg_fail "chmod -R 0700 ${BASE}"; 15 return 1; 16 } 17 18 rm -rf "${BASE}" || { 19 [ -z "$quiet" ] && log_msg_fail "rm -rf ${BASE}"; 20 return 1; 21 } 22 23 mkdir "${BASE}" || { 24 [ -z "$quiet" ] && log_msg_fail "mkdir ${BASE}"; 25 return 1; 26 } 27 28 for ff in $TDIRS; do 29 mkdir "${BASE}/${ff}" || { 30 [ -z "$quiet" ] && log_msg_fail "mkdir ${BASE}/${ff}"; 31 return 1; 32 } 33 chmod 0755 "${BASE}/${ff}" 34 for gg in $TFILES; do 35 echo "This is a test file" > "${BASE}/${ff}/${gg}" 36 chmod 0644 "${BASE}/${ff}/${gg}" 37 done 38 done 39 } 40 41 mkconfig_misc () 42 { 43 test -f "${RCFILE}" || touch "${RCFILE}" 44 cat >> "${RCFILE}" <<End-of-data 45 [Misc] 46 Daemon=no 47 SetFilecheckTime=60 48 TrustedUser=uucp,fax,fnet 49 SetRecursionLevel=10 50 SetLoopTime=30 51 ReportFullDetail = no 52 ChecksumTest=check 53 54 End-of-data 55 } 56 57 mkconfig_log () 58 { 59 test -f "${RCFILE}" || touch "${RCFILE}" 60 cat >> "${RCFILE}" <<End-of-data 61 [Log] 62 MailSeverity=none 63 LogSeverity=warn 64 SyslogSeverity=none 65 PrintSeverity=info 66 MailSeverity=none 67 #Restrict to certain classes of messages 68 #LogClass=RUN 69 #PreludeSeverity=err 70 #ExportSeverity=none 71 72 End-of-data 73 } 74 75 mkconfig_sev () 76 { 77 test -f "${RCFILE}" || touch "${RCFILE}" 78 cat >> "${RCFILE}" <<End-of-data 79 [EventSeverity] 80 SeverityUser0=crit 81 SeverityUser1=crit 82 SeverityReadOnly=crit 83 SeverityLogFiles=crit 84 SeverityGrowingLogs=crit 85 SeverityIgnoreNone=crit 86 SeverityAttributes=crit 87 SeverityIgnoreAll=crit 88 SeverityFiles=err 89 SeverityDirs=err 90 SeverityNames=warn 91 92 End-of-data 93 } 94 95 prep_init () 96 { 97 rm -f ./.samhain_file 98 rm -f "${LOGFILE}" 99 rm -f ./.samhain_lock 100 101 rm -f "${RCFILE}" 102 mkconfig_sev 103 mkconfig_log 104 mkconfig_misc 105 } 106 107 TESTPOLICY=" 108 [ReadOnly] 109 dir=${BASE}/c 110 [Attributes] 111 dir=${BASE}/a 112 #dir=${BASE}/b 113 " 114 115 116 testtime0_int () 117 { 118 [ -z "$verbose" ] || echo Working directory: $PW_DIR 119 [ -z "$verbose" ] || { echo MAKE is $MAKE; echo; } 52 120 # 53 121 # standalone compilation 54 122 # 55 echo "${S}Building standalone agent w/timeserver${E}"; echo;123 [ -z "$verbose" ] || { echo; echo "${S}Building standalone agent w/timeserver${E}"; echo; } 56 124 # 57 125 if test -r "Makefile"; then 58 $MAKE distclean 126 $MAKE distclean >/dev/null 59 127 fi 60 128 # 61 ${TOP_SRCDIR}/configure --quiet --enable-debug -- prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$PW_DIR/test/testrc_1 --with-timeserver=www.foo.bar --with-alttimeserver=127.0.0.1 --with-log-file=$PW_DIR/.samhain_log --with-pid-file=$PW_DIR/.samhain_lock--with-data-file=$PW_DIR/.samhain_file129 ${TOP_SRCDIR}/configure --quiet --enable-debug --enable-xml-log --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$RCFILE --with-log-file=$LOGFILE --with-pid-file=$PIDFILE --with-data-file=$PW_DIR/.samhain_file 62 130 # 63 131 if test x$? = x0; then 64 echo "configure completed, exit status 0"; echo;132 [ -z "$verbose" ] || log_msg_ok "configure..."; 65 133 $MAKE > /dev/null 66 echo "$MAKE completed, exit status $?"; echo; 134 if test x$? = x0; then 135 [ -z "$verbose" ] || log_msg_ok "make..."; 136 else 137 [ -z "$quiet" ] && log_msg_fail "make..."; 138 return 1 139 fi 67 140 else 68 echo "ERROR: configure failed"; echo; 69 fi 70 71 72 rm -f $PW_DIR/.samhain_file $PW_DIR/.samhain_log $PW_DIR/.samhain_lock 73 74 ./samhain -t init 141 [ -z "$quiet" ] && log_msg_fail "configure..."; 142 return 1 143 fi 144 145 prep_init && prep_testdata && echo "$TESTPOLICY" >>$RCFILE 146 if [ $? -ne 0 ]; then 147 [ -z "$quiet" ] && log_msg_fail "prepare..."; 148 return 1 149 fi 150 151 ./samhain -t init -p none 75 152 76 153 if test x$? = x0; then 77 echo 78 echo "${S}init completed${E}" 79 echo 80 ./samhain -t check 81 if test x$? = x0; then 82 echo "${S}check completed${E}" 83 else 84 echo "${S}ERROR:${E} -- check -- failed, exit status $?" 85 echo 86 exit 87 fi 154 [ -z "$verbose" ] || log_msg_ok "init..."; 88 155 else 89 echo "${S}ERROR:${E} -- init -- failed, exit status $?"; echo; 90 exit 91 fi 92 93 } 94 95 96 97 testtime0 98 99 100 echo; echo "${S}__ END TEST TIMESERVER OPTION __${E}"; echo; 101 102 exit 103 156 [ -z "$quiet" ] && log_msg_fail "init..."; 157 return 1 158 fi 159 160 chmod 0555 "${BASE}/a/x" 161 chmod 0555 "${BASE}/b/x" 162 163 ./samhain -t check -p none -l info -D 164 165 count=0 166 until [ -f $PIDFILE ]; do 167 sleep 1 168 let "count = count + 1" >/dev/null 169 if [ $count -gt 12 ]; then 170 break; 171 fi 172 done 173 174 if test x$? = x0; then 175 [ -z "$verbose" ] || log_msg_ok "start daemon..."; 176 else 177 [ -z "$quiet" ] && log_msg_fail "start daemon..."; 178 return 1 179 fi 180 181 return 0 182 } 183 184 MAXTEST=14; export MAXTEST 185 186 die () { 187 test -z "$stoponerr" && return 0; 188 PID=`cat $PIDFILE` 189 kill -9 $PID 190 } 191 192 killdaemon () { 193 if [ -f $PIDFILE ]; then 194 PID=`cat $PIDFILE` 195 kill -9 $PID 196 fi 197 } 198 199 check_err () { 200 if [ ${2} -ne 0 ]; then 201 die; 202 [ -z "$quiet" ] && log_fail ${1} ${MAXTEST} "${3}"; 203 return 1 204 else 205 [ -z "$quiet" ] && log_ok ${1} ${MAXTEST} "${3}"; 206 fi 207 } 208 209 daemontest_started () { 210 PID=`cat $PIDFILE` 211 212 kill -0 $PID 213 check_err ${1} $? "started" 214 } 215 216 daemontest_sigterm () { 217 PID=`cat $PIDFILE` 218 219 kill -15 $PID 220 count=0 221 while [ `kill -0 $PID` ]; do 222 sleep 1 223 let "count = count + 1" >/dev/null 224 if [ $count -gt 12 ]; then 225 check_err ${1} 1 "sigterm" 226 return 1 227 fi 228 done 229 check_err ${1} 0 "sigterm" 230 } 231 232 daemontest_sigusr2 () { 233 PID=`cat $PIDFILE` 234 235 tmp=`grep 'File check completed' $LOGFILE | wc -l` 236 kill -USR2 $PID 237 kill -TTOU $PID 238 239 count=0 240 tmp2=`grep 'SUSPEND' $LOGFILE | wc -l` 241 while [ $tmp2 -ne $2 ]; do 242 sleep 1 243 let "count = count + 1" >/dev/null 244 if [ $count -gt 12 ]; then 245 check_err ${1} 1 "sigusr2: suspend" 246 return 1 247 fi 248 tmp2=`grep 'SUSPEND' $LOGFILE | wc -l` 249 done 250 251 kill -USR2 $PID 252 253 count=0 254 tmp2=$tmp 255 while [ $tmp2 -eq $tmp ]; do 256 sleep 1 257 let "count = count + 1" >/dev/null 258 if [ $count -gt 12 ]; then 259 check_err ${1} 1 "sigusr2: wakeup" 260 return 1 261 fi 262 tmp2=`grep 'File check completed' $LOGFILE | wc -l` 263 done 264 check_err ${1} 0 "sigusr2" 265 } 266 267 daemontest_sigttou () { 268 PID=`cat $PIDFILE` 269 270 tmp=`grep 'File check completed' $LOGFILE | wc -l` 271 kill -TTOU $PID 272 count=0 273 tmp2=$tmp 274 while [ $tmp2 -eq $tmp ]; do 275 sleep 1 276 let "count = count + 1" >/dev/null 277 if [ $count -gt 12 ]; then 278 check_err ${1} 1 "sigttou" 279 return 1 280 fi 281 tmp2=`grep 'File check completed' $LOGFILE | wc -l` 282 done 283 check_err ${1} 0 "sigttou" 284 } 285 286 daemontest_sighup () { 287 288 if [ $2 -eq 1 ]; then 289 echo "dir=${BASE}/b" >>$RCFILE 290 tmp=`grep CRIT $LOGFILE | grep -v Runtime | wc -l` 291 if [ $tmp -ne 1 ]; then 292 [ -z "$verbose" ] || log_msg_fail "policy count (before)"; 293 return 1 294 fi 295 fi 296 297 PID=`cat $PIDFILE` 298 kill -HUP $PID 299 300 if [ $2 -eq 1 ]; then 301 kill -TTOU $PID 302 count=0 303 tmp=`grep CRIT $LOGFILE | grep -v Runtime | wc -l` 304 while [ $tmp -lt 2 ]; do 305 sleep 1 306 if [ $count -gt 12 ]; then 307 [ -z "$verbose" ] || log_msg_fail "policy count (after)"; 308 return 1 309 fi 310 tmp=`grep CRIT $LOGFILE | grep -v Runtime | wc -l` 311 done 312 fi 313 314 count=0 315 tmp2=0 316 while [ $tmp2 -ne $2 ]; do 317 sleep 1 318 let "count = count + 1" >/dev/null 319 if [ $count -gt 12 ]; then 320 check_err ${1} 1 "sighup" 321 return 1 322 fi 323 tmp2=`grep 'Runtime configuration reloaded' $LOGFILE | wc -l` 324 done 325 check_err ${1} 0 "sighup" 326 } 327 328 daemontest_sigabrt () { 329 PID=`cat $PIDFILE` 330 kill -ABRT $PID 331 332 count=0 333 while [ -f $LOGFILE.lock ]; do 334 sleep 1 335 let "count = count + 1" >/dev/null 336 if [ $count -gt 12 ]; then 337 check_err ${1} 1 "sigabrt" 338 return 1 339 fi 340 done 341 342 kill -TTOU $PID 343 344 sleep 4 345 346 if [ -f $LOGFILE.lock ]; then 347 tmp=`grep '<trail>' $LOGFILE | wc -l` 348 tst=$2; let "tst = tst + 2" >/dev/null; 349 if [ $tmp -eq $tst ]; then 350 check_err ${1} 0 "sigabrt" 351 return 0 352 fi 353 fi 354 check_err ${1} 1 "sigabrt" 355 } 356 357 testtime0 () { 358 log_start "DAEMON CONTROL" 359 360 testtime0_int; 361 362 tcount=1 363 364 trap 'killdaemon' 1 3 15 365 366 daemontest_started $tcount; 367 368 let "tcount = tcount + 1" >/dev/null 369 daemontest_sigttou $tcount; 370 let "tcount = tcount + 1" >/dev/null 371 daemontest_sigttou $tcount; 372 let "tcount = tcount + 1" >/dev/null 373 daemontest_sigttou $tcount; 374 375 let "tcount = tcount + 1" >/dev/null 376 daemontest_sigusr2 $tcount 1; 377 let "tcount = tcount + 1" >/dev/null 378 daemontest_sigusr2 $tcount 2; 379 let "tcount = tcount + 1" >/dev/null 380 daemontest_sigusr2 $tcount 3; 381 382 let "tcount = tcount + 1" >/dev/null 383 daemontest_sigabrt $tcount 1; 384 let "tcount = tcount + 1" >/dev/null 385 daemontest_sigabrt $tcount 2; 386 let "tcount = tcount + 1" >/dev/null 387 daemontest_sigabrt $tcount 3; 388 389 let "tcount = tcount + 1" >/dev/null 390 daemontest_sighup $tcount 1; 391 let "tcount = tcount + 1" >/dev/null 392 daemontest_sighup $tcount 2; 393 let "tcount = tcount + 1" >/dev/null 394 daemontest_sighup $tcount 3; 395 396 let "tcount = tcount + 1" >/dev/null 397 daemontest_sigterm $tcount; 398 399 log_end "DAEMON CONTROL" 400 } 401 402
Note:
See TracChangeset
for help on using the changeset viewer.