Changeset 19 for trunk/test/testrun_2.sh
- Timestamp:
- Feb 12, 2006, 10:49:56 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/testrun_2.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 RUN CLIENT/SERVER __${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 # --with-database=postgresql 50 # export MYLIB=-L/usr/local/pgsql/lib 51 # export MYINC=-I/usr/local/pgsql/include 52 # export LD_LIBRARY_PATH=/usr/local/pgsql/lib 53 54 # --with-database=mysql 55 # export MYLIB=-L/usr/local/mysql/lib 56 # export MYINC=-I/usr/local/mysql/include 57 # export LD_LIBRARY_PATH=/usr/local/mysql/lib 58 59 testrun2 () 3 LOGFILE="$PW_DIR/.samhain_log"; export LOGFILE 4 RCFILE="$PW_DIR/testrc_2"; export RCFILE 5 6 7 do_test_1 () { 8 9 [ -z "$verbose" ] || { 10 echo; 11 echo "${S}Start Server${E}: ./yule -l info -p none &"; 12 echo; 13 } 14 ./yule -l info -p none >/dev/null 2>&1 & 15 PROC_Y=$! 16 sleep 5 17 18 [ -z "$verbose" ] || { 19 echo; 20 echo "${S}Start Client${E}: ./samhain.new -l none -p none -e info -t check"; 21 echo; 22 } 23 24 ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>&1 25 if test x$? = x0; then 26 [ -z "$verbose" ] || log_msg_ok "samhain.new -t check"; 27 else 28 [ -z "$quiet" ] && log_msg_fail "samhain.new -t check"; 29 kill $PROC_Y 30 return 1 31 fi 32 33 kill $PROC_Y 34 sleep 5 35 36 egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1 37 if [ $? -ne 0 ]; then 38 [ -z "$verbose" ] || log_msg_fail "Server start"; 39 return 1 40 fi 41 egrep "NEW CLIENT" $LOGFILE >/dev/null 2>&1 42 if [ $? -ne 0 ]; then 43 [ -z "$verbose" ] || log_msg_fail "Client connect"; 44 return 1 45 fi 46 egrep "remote_host.*Checking.*/bin" $LOGFILE >/dev/null 2>&1 47 if [ $? -ne 0 ]; then 48 [ -z "$verbose" ] || log_msg_fail "Client file check"; 49 return 1 50 fi 51 egrep "remote_host.*EXIT.*Samhain" $LOGFILE >/dev/null 2>&1 52 if [ $? -ne 0 ]; then 53 [ -z "$verbose" ] || log_msg_fail "Client exit"; 54 return 1 55 fi 56 egrep "EXIT.*Yule.*SIGTERM" $LOGFILE >/dev/null 2>&1 57 if [ $? -ne 0 ]; then 58 [ -z "$verbose" ] || log_msg_fail "Server exit"; 59 return 1 60 fi 61 62 63 return 0 64 } 65 66 do_test_2 () { 67 68 ORIGINAL="UseSeparateLogs=no" 69 REPLACEMENT="UseSeparateLogs=yes" 70 ex $RCFILE <<EOF 71 :%s/$ORIGINAL/$REPLACEMENT/g 72 :wq 73 EOF 74 # :%s is the "ex" substitution command. 75 # :wq is write-and-quit. 76 [ -z "$verbose" ] || { 77 echo; 78 echo "${S}Start Server${E}: ./yule -l info -p none &"; 79 echo; 80 } 81 82 rm -f $LOGFILE 83 84 ./yule -l info -p none >/dev/null 2>&1 & 85 PROC_Y=$! 86 sleep 5 87 88 [ -z "$verbose" ] || { 89 echo; 90 echo "${S}Start Client${E}: ./samhain.new -l none -p none -e info -t check"; 91 echo; 92 } 93 94 ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>&1 95 if test x$? = x0; then 96 [ -z "$verbose" ] || log_msg_ok "samhain.new -t check"; 97 else 98 [ -z "$quiet" ] && log_msg_fail "samhain.new -t check"; 99 kill $PROC_Y 100 return 1 101 fi 102 103 kill $PROC_Y 104 sleep 5 105 106 if [ -f ${LOGFILE}.${SH_LOCALHOST} ]; then 107 remhost=${SH_LOCALHOST} 108 else 109 remhost=`echo $SH_LOCALHOST | sed 's,\..*,,'` 110 fi 111 if [ -f ${LOGFILE}.${remhost} ]; then 112 CLIENTLOG="${LOGFILE}.${remhost}" 113 else 114 CLIENTLOG=`ls -1 ${LOGFILE}.* | tail -n 1` 115 fi 116 117 egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1 118 if [ $? -ne 0 ]; then 119 [ -z "$verbose" ] || log_msg_fail "Server start"; 120 return 1 121 fi 122 egrep "NEW CLIENT" $LOGFILE >/dev/null 2>&1 123 if [ $? -ne 0 ]; then 124 [ -z "$verbose" ] || log_msg_fail "Client connect"; 125 return 1 126 fi 127 egrep "remote_host.*Checking.*/bin" ${CLIENTLOG} >/dev/null 2>&1 128 if [ $? -ne 0 ]; then 129 [ -z "$verbose" ] || log_msg_fail "Client file check"; 130 return 1 131 fi 132 egrep "remote_host.*EXIT.*Samhain" ${CLIENTLOG} >/dev/null 2>&1 133 if [ $? -ne 0 ]; then 134 [ -z "$verbose" ] || log_msg_fail "Client exit"; 135 return 1 136 fi 137 egrep "EXIT.*Yule.*SIGTERM" $LOGFILE >/dev/null 2>&1 138 if [ $? -ne 0 ]; then 139 [ -z "$verbose" ] || log_msg_fail "Server exit"; 140 return 1 141 fi 142 143 rm -f ${LOGFILE}.${remhost} 144 return 0 145 } 146 147 do_test_3 () { 148 149 ORIGINAL_1="ExportSeverity=none" 150 REPLACEMENT_1="ExportSeverity=mark" 151 ORIGINAL_2="UseSeparateLogs=yes" 152 REPLACEMENT_2="UseSeparateLogs=no" 153 ORIGINAL_3="LogSeverity=none" 154 REPLACEMENT_3="LogSeverity=debug" 155 ORIGINAL_4="# SetClientTimeLimit=1800" 156 REPLACEMENT_4="SetClientTimeLimit=20" 157 ex $RCFILE <<EOF 158 :%s/${ORIGINAL_1}/${REPLACEMENT_1}/g 159 :%s/${ORIGINAL_2}/${REPLACEMENT_2}/g 160 :%s/${ORIGINAL_3}/${REPLACEMENT_3}/g 161 :%s/${ORIGINAL_4}/${REPLACEMENT_4}/g 162 :wq 163 EOF 164 # :%s is the "ex" substitution command. 165 # :wq is write-and-quit. 166 [ -z "$verbose" ] || { 167 echo; 168 echo "${S}Start Server${E}: ./yule -p none &"; 169 echo; 170 } 171 172 rm -f $LOGFILE 173 174 ./yule -p none >/dev/null 2>&1 & 175 PROC_Y=$! 176 sleep 5 177 178 [ -z "$verbose" ] || { 179 echo; 180 echo "${S}Start Client${E}: ./samhain.new -l none -p none -t check"; 181 echo; 182 } 183 184 ./samhain.new -t check -p none -l none --forever --bind-address=127.0.0.1 >/dev/null 2>&1 & 185 if test x$? = x0; then 186 PROC_S=$! 187 # echo "PID is ${PROC_S}" 188 [ -z "$verbose" ] || log_msg_ok "samhain.new -t check"; 189 sleep 5 190 # Redirect the shells (un-)helpful job monitoring messages. 191 # The 'disown' buildin is not portable. 192 { kill -9 ${PROC_S}; sleep 40; } >/dev/null 2>&1 193 else 194 [ -z "$quiet" ] && log_msg_fail "samhain.new -t check"; 195 kill $PROC_Y 196 return 1 197 fi 198 199 if [ -t 0 ]; then 200 # enable monitor mode again if interactive 201 set -m 202 fi 203 204 205 kill $PROC_Y 206 sleep 5 207 208 egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1 209 if [ $? -ne 0 ]; then 210 [ -z "$verbose" ] || log_msg_fail "Server start"; 211 return 1 212 fi 213 egrep "NEW CLIENT" $LOGFILE >/dev/null 2>&1 214 if [ $? -ne 0 ]; then 215 [ -z "$verbose" ] || log_msg_fail "Client connect"; 216 return 1 217 fi 218 egrep "remote_host.*File check completed.*" ${LOGFILE} >/dev/null 2>&1 219 if [ $? -ne 0 ]; then 220 [ -z "$verbose" ] || log_msg_fail "Client file check"; 221 return 1 222 fi 223 egrep "Time limit exceeded" ${LOGFILE} >/dev/null 2>&1 224 if [ $? -ne 0 ]; then 225 [ -z "$verbose" ] || log_msg_fail "Client dead detection"; 226 return 1 227 fi 228 egrep "EXIT.*Yule.*SIGTERM" $LOGFILE >/dev/null 2>&1 229 if [ $? -ne 0 ]; then 230 [ -z "$verbose" ] || log_msg_fail "Server exit"; 231 return 1 232 fi 233 234 rm -f ${LOGFILE}.${remhost} 235 return 0 236 } 237 238 testrun2_internal () 60 239 { 61 # 62 # test standalone compilation 63 # 64 echo "${S}Building client and server${E}"; echo; 240 [ -z "$verbose" ] || { 241 echo; 242 echo Working directory: $PW_DIR; echo MAKE is $MAKE; 243 echo; 244 } 245 # 246 # 247 [ -z "$verbose" ] || { echo; echo "${S}Building client and server${E}"; echo; } 65 248 # 66 249 if test -r "Makefile"; then … … 68 251 fi 69 252 # 70 ${TOP_SRCDIR}/configure --quiet $TRUST --enable- network=client --enable-xml-log --enable-login-watch --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$PW_DIR/testrc_2 --with-log-file=$PW_DIR/.samhain_log--with-pid-file=$PW_DIR/.samhain_lock --with-data-file=$PW_DIR/.samhain_file --enable-encrypt=271 # 72 if test x$? = x0; then 73 echo "configure completed, exit status 0"; echo;74 $MAKE > /dev/null 253 ${TOP_SRCDIR}/configure --quiet $TRUST --enable-debug --enable-network=client --enable-xml-log --enable-login-watch --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$RCFILE --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock --with-data-file=$PW_DIR/.samhain_file --enable-encrypt=2 254 # 255 if test x$? = x0; then 256 [ -z "$verbose" ] || log_msg_ok "configure..."; 257 $MAKE > /dev/null 2>>test_log 75 258 if test x$? = x0; then 76 echo "$MAKE completed, exit status $?"; echo;259 [ -z "$verbose" ] || log_msg_ok "make..."; 77 260 else 78 echo "${S}ERROR:${E} make failed, exit status $?"; echo;79 exit261 [ -z "$quiet" ] && log_msg_fail "make..."; 262 return 1 80 263 fi 81 264 82 265 else 83 echo "${S}ERROR:${E} configure failed, exit status $?"; echo;84 exit266 [ -z "$quiet" ] && log_msg_fail "configure..."; 267 return 1 85 268 fi 86 269 87 270 # save binary and build server 88 271 # 89 cp samhain samhain.build 90 make clean 91 92 ${TOP_SRCDIR}/configure --quiet $TRUST --enable-debug --enable-network=server --enable-xml-log --enable-login-watch --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$ PW_DIR/testrc_2 --with-log-file=$PW_DIR/.samhain_log--with-pid-file=$PW_DIR/.samhain_lock --with-data-file=$PW_DIR/.samhain_file --enable-identity=rainer --enable-encrypt=293 # 94 if test x$? = x0; then 95 echo "configure completed, exit status 0"; echo;96 $MAKE > /dev/null 272 cp samhain samhain.build || return 1 273 make clean >/dev/null || return 1 274 275 ${TOP_SRCDIR}/configure --quiet $TRUST --enable-debug --enable-network=server --enable-xml-log --enable-login-watch --prefix=$PW_DIR --localstatedir=$PW_DIR --with-config-file=$RCFILE --with-log-file=$LOGFILE --with-pid-file=$PW_DIR/.samhain_lock --with-data-file=$PW_DIR/.samhain_file --enable-identity=rainer --enable-encrypt=2 276 # 277 if test x$? = x0; then 278 [ -z "$verbose" ] || log_msg_ok "configure..."; 279 $MAKE > /dev/null 2>>test_log 97 280 if test x$? = x0; then 98 echo "$MAKE completed, exit status $?"; echo;281 [ -z "$verbose" ] || log_msg_ok "make..."; 99 282 else 100 echo "${S}ERROR:${E} make failed, exit status $?"; echo;101 exit283 [ -z "$quiet" ] && log_msg_fail "make..."; 284 return 1 102 285 fi 103 286 104 287 else 105 echo "${S}ERROR:${E} configure failed, exit status $?"; echo; 106 exit 107 fi 288 [ -z "$quiet" ] && log_msg_fail "configure..."; 289 return 1 290 fi 291 108 292 109 293 ##################################################################### 110 294 # 111 295 # 112 echo "${S}Initialize database${E}"; echo;113 114 296 rm -f ./.samhain_file 115 297 rm -f ./.samhain_log … … 118 300 cp ${SCRIPTDIR}/testrc_2.in testrc_2 119 301 120 echo "./samhain.build -t init" 121 ./samhain.build -t init 122 123 SHINI=$? 302 ./samhain.build -t init -p none 303 304 if test x$? = x0; then 305 [ -z "$verbose" ] || log_msg_ok "init..."; 306 else 307 [ -z "$quiet" ] && log_msg_fail "init..."; 308 return 1 309 fi 124 310 125 311 # Create a password … … 127 313 SHPW=`./yule -G` 128 314 if test x"$SHPW" = x; then 129 echo"password not generated -- aborting"130 exit1315 [ -z "$quiet" ] && log_msg_fail "password not generated -- aborting" 316 return 1 131 317 fi 132 318 133 319 # Set in client 134 320 135 echo "./samhain_setpwd samhain.build new $SHPW" 136 ./samhain_setpwd samhain.build new $SHPW 137 138 mv samhain.build.new samhain.new 321 ./samhain_setpwd samhain.build new $SHPW >/dev/null 322 323 if test x$? = x0; then 324 [ -z "$verbose" ] || log_msg_ok "./samhain_setpwd samhain.build new $SHPW"; 325 else 326 [ -z "$quiet" ] && log_msg_fail "./samhain_setpwd samhain.build new $SHPW"; 327 return 1 328 fi 329 330 mv samhain.build.new samhain.new || return 1 139 331 140 332 rm -f ./.samhain_log.* … … 143 335 SHCLT=`./yule -P $SHPW | sed s%HOSTNAME%${SH_LOCALHOST}%` 144 336 337 if test x$? = x0; then 338 [ -z "$verbose" ] || log_msg_ok "yule -P $SHPW"; 339 else 340 [ -z "$quiet" ] && log_msg_fail "yule -P $SHPW"; 341 return 1 342 fi 343 145 344 echo $SHCLT >> testrc_2 146 345 147 if test x$SHINI = x0; then 148 echo; echo "${S}Start Server${E}: ./yule &"; echo; 149 ./yule -l info & 150 PROC_Y=$! 151 sleep 5 152 153 echo; echo "${S}Start Client${E}: ./samhain.new -l none -p none -e info -t check"; 154 155 ./samhain.new -t check -p none -l none -e info 156 if test x$? = x0; then 157 echo "${S}check completed${E}" 158 else 159 echo "${S}ERROR:${E} -- check -- failed, exit status $?" 160 echo 161 kill $PROC_Y 162 exit 163 fi 164 165 kill $PROC_Y 166 sleep 5 167 else 168 echo "${S}ERROR:${E} -- init -- failed, exit status $SHINI"; 169 echo; 170 exit 171 fi 172 173 } 174 175 if test x$1 = x; then 176 echo 177 echo "Please provide the local hostname as argument." 178 echo 179 exit 8 346 do_test_1 347 if [ $? -eq 0 ]; then 348 [ -z "$quiet" ] && log_ok 1 ${MAXTEST} "Client logging"; 349 else 350 [ -z "$quiet" ] && log_fail 1 ${MAXTEST} "Client logging"; 351 fi 352 353 do_test_2 354 if [ $? -eq 0 ]; then 355 [ -z "$quiet" ] && log_ok 2 ${MAXTEST} "Client logging, seperate logfiles"; 356 else 357 [ -z "$quiet" ] && log_fail 2 ${MAXTEST} "Client logging, seperate logfiles"; 358 fi 359 360 do_test_3 361 if [ $? -eq 0 ]; then 362 [ -z "$quiet" ] && log_ok 3 ${MAXTEST} "Dead client detection"; 363 else 364 [ -z "$quiet" ] && log_fail 3 ${MAXTEST} "Dead client detection"; 365 fi 366 367 return $? 368 } 369 370 MAXTEST=3; export MAXTEST 371 372 testrun2 () 373 { 374 log_start "RUN CLIENT/SERVER" 375 376 if [ x"$1" = x ]; then 377 [ -z "$quiet" ] && log_msg_fail "Missing hostname" 180 378 fi 181 379 # 182 380 SH_LOCALHOST=$1; export SH_LOCALHOST 183 184 testrun2 185 186 187 echo; echo "${S}__ END TEST RUN CLIENT/SERVER __${E}"; echo; 188 189 exit 190 381 # 382 testrun2_internal 383 # 384 log_end "RUN CLIENT/SERVER" 385 386 return 0 387 } 388
Note:
See TracChangeset
for help on using the changeset viewer.