Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/testrun_2.sh

    r19 r30  
    11#! /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#
    221
    322LOGFILE="$PW_DIR/.samhain_log"; export LOGFILE
    423RCFILE="$PW_DIR/testrc_2";  export RCFILE
     24HTML="$PW_DIR/yule.html";  export HTML
    525
    626
     
    1232            echo;
    1333        }
    14         ./yule -l info -p none >/dev/null 2>&1 &
     34
     35        rm -f test_log_valgrind
     36
     37        ${VALGRIND} ./yule.2 -l info -p none >/dev/null 2>>test_log_valgrind &
     38        PROC_Y2=$!
     39        sleep 5
     40
     41        [ -z "$verbose" ] || {
     42            echo;
     43            echo "${S}Start Server #2${E}: ./yule.2 -l info -p none &";
     44            echo;
     45        }
     46
     47        ${VALGRIND} ./yule -l info -p none -e info --bind-address=127.0.0.1 \
     48            --server-port=49778 >/dev/null 2>>test_log_valgrind &
    1549        PROC_Y=$!
    1650        sleep 5
     
    2256        }
    2357
    24         ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>&1
     58        ${VALGRIND} ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>>test_log_valgrind
    2559        if test x$? = x0; then
    2660            [ -z "$verbose" ] || log_msg_ok    "samhain.new -t check";
     
    2862            [ -z "$quiet" ]   && log_msg_fail  "samhain.new -t check";
    2963            kill $PROC_Y
     64            kill $PROC_Y2
    3065            return 1
    3166        fi
    3267
    3368        kill $PROC_Y
    34         sleep 5
     69        kill $PROC_Y2
     70        sleep 5
     71
     72        # cp ${LOGFILE}  triple_test
     73        # cp ${LOGFILE}2 triple_test_2
     74
     75        egrep "START(>|\").*Yule(>|\")" ${LOGFILE}2 >/dev/null 2>&1
     76        if [ $? -ne 0 ]; then
     77            [ -z "$verbose" ] || log_msg_fail "Server #2 start";
     78            return 1
     79        fi
     80        egrep "remote_host.*Checking.*/bin" ${LOGFILE}2 >/dev/null 2>&1
     81        if [ $? -ne 0 ]; then
     82            [ -z "$verbose" ] || log_msg_fail "Client file check (relayed)";
     83            return 1
     84        fi
     85        egrep "remote_host.*EXIT.*Samhain" ${LOGFILE}2 >/dev/null 2>&1
     86        if [ $? -ne 0 ]; then
     87            [ -z "$verbose" ] || log_msg_fail "Client exit (relayed)";
     88            return 1
     89        fi
     90        egrep "EXIT.*Yule.*SIGTERM" ${LOGFILE}2 >/dev/null 2>&1
     91        if [ $? -ne 0 ]; then
     92            [ -z "$verbose" ] || log_msg_fail "Server #2 exit";
     93            return 1
     94        fi
     95
    3596
    3697        egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1
     
    59120            return 1
    60121        fi
    61        
     122
     123        [ -z "$VALGRIND" ] || {
     124            tmp=`cat test_log_valgrind 2>/dev/null | wc -l`;
     125            if [ $tmp -ne 0 ]; then
     126                [ -z "$verbose" ] || log_msg_fail "valgrind reports errors";
     127                cat test_log_valgrind
     128                return 1;
     129            fi;
     130        }
    62131
    63132        return 0
     
    69138        REPLACEMENT="UseSeparateLogs=yes"
    70139        ex $RCFILE <<EOF
    71 :%s/$ORIGINAL/$REPLACEMENT/g
    72 :wq
     140%s/$ORIGINAL/$REPLACEMENT/g
     141wq
    73142EOF
    74143# :%s is the "ex" substitution command.
     
    81150
    82151        rm -f $LOGFILE
    83 
    84         ./yule -l info -p none >/dev/null 2>&1 &
     152        rm -f test_log_valgrind
     153
     154        ${VALGRIND} ./yule -l info -p none >/dev/null 2>>test_log_valgrind &
    85155        PROC_Y=$!
    86156        sleep 5
     
    92162        }
    93163
    94         ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>&1
     164        ${VALGRIND} ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>>test_log_valgrind
    95165        if test x$? = x0; then
    96166            [ -z "$verbose" ] || log_msg_ok    "samhain.new -t check";
     
    112182            CLIENTLOG="${LOGFILE}.${remhost}"
    113183        else
    114             CLIENTLOG=`ls -1 ${LOGFILE}.* | tail -n 1`
     184            tail -n 1 ${SCRIPTDIR}/test.sh >/dev/null 2>&1
     185            if [ $? -eq 0 ]; then
     186                CLIENTLOG=`ls -1 ${LOGFILE}.* 2>/dev/null | tail -n 1`
     187            else
     188                CLIENTLOG=`ls -1 ${LOGFILE}.* 2>/dev/null | tail -1`
     189            fi
    115190        fi
    116191
     
    140215            return 1
    141216        fi
     217
     218        [ -z "$VALGRIND" ] || {
     219            tmp=`cat test_log_valgrind 2>/dev/null | wc -l`;
     220            if [ $tmp -ne 0 ]; then
     221                [ -z "$verbose" ] || log_msg_fail "valgrind reports errors";
     222                cat test_log_valgrind
     223                return 1;
     224            fi;
     225        }
    142226       
    143227        rm -f ${LOGFILE}.${remhost}
     
    156240        REPLACEMENT_4="SetClientTimeLimit=20"
    157241        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
     242%s/${ORIGINAL_1}/${REPLACEMENT_1}/g
     243%s/${ORIGINAL_2}/${REPLACEMENT_2}/g
     244%s/${ORIGINAL_3}/${REPLACEMENT_3}/g
     245%s/${ORIGINAL_4}/${REPLACEMENT_4}/g
     246wq
    163247EOF
    164248# :%s is the "ex" substitution command.
     
    171255
    172256        rm -f $LOGFILE
    173 
    174         ./yule -p none >/dev/null 2>&1 &
     257        rm -f test_log_valgrind
     258
     259        ${VALGRIND} ./yule -p none -e none >/dev/null 2>>test_log_valgrind &
    175260        PROC_Y=$!
    176261        sleep 5
     
    182267        }
    183268
    184         ./samhain.new -t check -p none -l none --forever --bind-address=127.0.0.1 >/dev/null 2>&1 &
     269        ${VALGRIND} ./samhain.new -t check -p none -l none --forever --bind-address=127.0.0.1 >/dev/null 2>>test_log_valgrind &
    185270        if test x$? = x0; then
    186271            PROC_S=$!
     
    231316            return 1
    232317        fi
     318
     319        [ -z "$VALGRIND" ] || {
     320            tmp=`cat test_log_valgrind 2>/dev/null | wc -l`;
     321            if [ $tmp -ne 0 ]; then
     322                [ -z "$verbose" ] || log_msg_fail "valgrind reports errors";
     323                cat test_log_valgrind
     324                return 1;
     325            fi;
     326        }
    233327       
    234         rm -f ${LOGFILE}.${remhost}
     328        rm -f ${LOGFILE}
    235329        return 0
    236330}
     331
     332do_test_4 () {
     333
     334        # don't know what is supported on the test platform, so
     335        # prepare for both (password and socket credential)
     336
     337        # 'id -u' is posix
     338        me=`id -u`
     339
     340        ORIGINAL_1="SetSocketAllowUid=0"
     341        REPLACEMENT_1="SetSocketAllowUid=$me"
     342        ex $RCFILE <<EOF
     343%s/${ORIGINAL_1}/${REPLACEMENT_1}/g
     344wq
     345EOF
     346
     347        [ -z "$verbose" ] || {
     348            echo;
     349            echo "${S}Start Server${E}: ./yule -l info -p none &";
     350            echo;
     351        }
     352
     353        rm -f $LOGFILE
     354        rm -f test_log_valgrind
     355
     356        ${VALGRIND} ./yule -l info -p none -e none \
     357            >/dev/null 2>>test_log_valgrind &
     358        PROC_Y=$!
     359        sleep 5
     360
     361        [ -z "$verbose" ] || {
     362            echo;
     363            echo "${S}Start Client${E}: ./samhain.new -l none -p none -e info -t check";
     364            echo;
     365        }
     366
     367        $MAKE yulectl >/dev/null
     368        if [ $? -ne 0 ]; then
     369            [ -z "$verbose" ] || log_msg_fail "make yulectl";
     370            kill $PROC_Y
     371            return 1
     372        fi
     373
     374
     375        ./yulectl -v -c RELOAD foobar1 >test_log_yulectl 2>/dev/null
     376
     377        if [ $? -ne 0 ]; then
     378            YULECTL_PASSWORD=samhain; export YULECTL_PASSWORD
     379            ./yulectl -v -c RELOAD foobar1 >test_log_yulectl
     380            if [ $? -ne 0 ]; then
     381                kill ${PROC_Y}
     382                [ -z "$verbose" ] || log_msg_fail "yulectl";
     383                return 1
     384            fi
     385        fi
     386
     387        ./yulectl -v -c RELOAD foobar2 >test_yulectl_log
     388
     389        if [ $? -ne 0 ]; then
     390            kill ${PROC_Y}
     391            [ -z "$verbose" ] || log_msg_fail "yulectl";
     392            return 1
     393        fi
     394
     395        ./yulectl -v -c RELOAD foobar3 >test_log_yulectl
     396
     397        if [ $? -ne 0 ]; then
     398            kill ${PROC_Y}
     399            [ -z "$verbose" ] || log_msg_fail "yulectl";
     400            return 1
     401        fi
     402
     403        ./yulectl -v -c LISTALL dummy >test_log_yulectl
     404
     405        if [ $? -ne 0 ]; then
     406            kill ${PROC_Y}
     407            [ -z "$verbose" ] || log_msg_fail "yulectl";
     408            return 1
     409        fi
     410
     411        tmp=`cat test_log_yulectl | grep RELOAD | wc -l`
     412        if [ $tmp -ne 3 ]; then
     413            kill ${PROC_Y}
     414            [ -z "$verbose" ] || log_msg_fail "command confirmation";
     415            return 1
     416        fi
     417
     418        ./yulectl -v -c CANCEL foobar3 >test_log_yulectl
     419
     420        if [ $? -ne 0 ]; then
     421            kill ${PROC_Y}
     422            [ -z "$verbose" ] || log_msg_fail "yulectl";
     423            return 1
     424        fi
     425
     426        ./yulectl -v -c LISTALL dummy >test_log_yulectl
     427
     428        if [ $? -ne 0 ]; then
     429            kill ${PROC_Y}
     430            [ -z "$verbose" ] || log_msg_fail "yulectl";
     431            return 1
     432        fi
     433
     434        tmp=`cat test_log_yulectl | grep RELOAD | wc -l`
     435        if [ $tmp -ne 2 ]; then
     436            kill ${PROC_Y}
     437            [ -z "$verbose" ] || log_msg_fail "command confirmation";
     438            return 1
     439        fi
     440
     441        kill ${PROC_Y}
     442        sleep 2
     443        kill -9 ${PROC_Y} >/dev/null 2>&1
     444
     445        [ -z "$VALGRIND" ] || {
     446            tmp=`cat test_log_valgrind 2>/dev/null | wc -l`;
     447            if [ $tmp -ne 0 ]; then
     448                [ -z "$verbose" ] || log_msg_fail "valgrind reports errors";
     449                cat test_log_valgrind
     450                return 1;
     451            fi;
     452        }
     453       
     454        return 0
     455}
     456
     457do_test_5 () {
     458
     459        [ -z "$verbose" ] || {
     460            echo;
     461            echo "${S}Start Server${E}: ./yule -l info -p none &";
     462            echo;
     463        }
     464
     465( cat <<EOF
     466<!-- head -->
     467<html><head><title>test</title></head>
     468<body>
     469Current time: %T <br>
     470<table>
     471<!-- ehead -->
     472EOF
     473) >head.html
     474
     475( cat <<EOF
     476<!-- foot -->
     477</table>
     478</body>
     479<!-- efoot -->
     480EOF
     481) >foot.html
     482
     483( cat <<EOF
     484<!-- entry -->
     485<tr>
     486  <td>%H</td>
     487  <td>%S</td>
     488  <td>%T</td>
     489</tr>
     490<!-- eentry -->
     491EOF
     492) >entry.html
     493
     494        ${VALGRIND} ./yule -l info -p none -e none \
     495            >/dev/null 2>>test_log_valgrind &
     496        PROC_Y=$!
     497        sleep 5
     498
     499        egrep '<!-- head -->' $HTML >/dev/null 2>&1
     500        if [ $? -ne 0 ]; then
     501            # rm -f head.html; rm -f foot.html; rm -f entry.html;
     502            kill $PROC_Y
     503            [ -z "$verbose" ] || log_msg_fail "head.html (1)";
     504            return 1
     505        fi
     506
     507        egrep '<!-- foot -->' $HTML >/dev/null 2>&1
     508        if [ $? -ne 0 ]; then
     509            rm -f head.html; rm -f foot.html; rm -f entry.html;
     510            kill $PROC_Y
     511            [ -z "$verbose" ] || log_msg_fail "foot.html (1)";
     512            return 1
     513        fi
     514
     515        [ -z "$verbose" ] || {
     516            echo;
     517            echo "${S}Start Client${E}: ./samhain.new -l none -p none -e info -t check";
     518            echo;
     519        }
     520
     521        ${VALGRIND} ./samhain.new -t check -p none -l none -e info --bind-address=127.0.0.1 >/dev/null 2>>test_log_valgrind
     522        if test x$? = x0; then
     523            [ -z "$verbose" ] || log_msg_ok    "samhain.new -t check";
     524        else
     525            kill $PROC_Y
     526            [ -z "$quiet" ]   && log_msg_fail  "samhain.new -t check";
     527            return 1
     528        fi
     529
     530        kill $PROC_Y
     531        sleep 5
     532
     533        # rm -f head.html; rm -f foot.html; rm -f entry.html;
     534
     535        egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1
     536        if [ $? -ne 0 ]; then
     537            [ -z "$verbose" ] || log_msg_fail "Server start";
     538            return 1
     539        fi
     540        egrep "NEW CLIENT" $LOGFILE >/dev/null 2>&1
     541        if [ $? -ne 0 ]; then
     542            [ -z "$verbose" ] || log_msg_fail "Client connect";
     543            return 1
     544        fi
     545        egrep "remote_host.*Checking.*/bin" $LOGFILE >/dev/null 2>&1
     546        if [ $? -ne 0 ]; then
     547            [ -z "$verbose" ] || log_msg_fail "Client file check";
     548            return 1
     549        fi
     550        egrep "remote_host.*EXIT.*Samhain" $LOGFILE >/dev/null 2>&1
     551        if [ $? -ne 0 ]; then
     552            [ -z "$verbose" ] || log_msg_fail "Client exit";
     553            return 1
     554        fi
     555        egrep "EXIT.*Yule.*SIGTERM" $LOGFILE >/dev/null 2>&1
     556        if [ $? -ne 0 ]; then
     557            [ -z "$verbose" ] || log_msg_fail "Server exit";
     558            return 1
     559        fi
     560
     561        egrep '<!-- head -->' $HTML >/dev/null 2>&1
     562        if [ $? -ne 0 ]; then
     563            [ -z "$verbose" ] || log_msg_fail "head.html";
     564            return 1
     565        fi
     566        egrep '<!-- ehead -->' $HTML >/dev/null 2>&1
     567        if [ $? -ne 0 ]; then
     568            [ -z "$verbose" ] || log_msg_fail "end head.html";
     569            return 1
     570        fi
     571
     572        egrep '<!-- entry -->' $HTML >/dev/null 2>&1
     573        if [ $? -ne 0 ]; then
     574            [ -z "$verbose" ] || log_msg_fail "entry.html";
     575            return 1
     576        fi
     577        egrep '<!-- eentry -->' $HTML >/dev/null 2>&1
     578        if [ $? -ne 0 ]; then
     579            [ -z "$verbose" ] || log_msg_fail "end entry.html";
     580            return 1
     581        fi
     582
     583        egrep '<!-- foot -->' $HTML >/dev/null 2>&1
     584        if [ $? -ne 0 ]; then
     585            [ -z "$verbose" ] || log_msg_fail "foot.html";
     586            return 1
     587        fi
     588        egrep '<!-- efoot -->' $HTML >/dev/null 2>&1
     589        if [ $? -ne 0 ]; then
     590            [ -z "$verbose" ] || log_msg_fail "end foot.html";
     591            return 1
     592        fi
     593
     594        [ -z "$VALGRIND" ] || {
     595            tmp=`cat test_log_valgrind 2>/dev/null | wc -l`;
     596            if [ $tmp -ne 0 ]; then
     597                [ -z "$verbose" ] || log_msg_fail "valgrind reports errors";
     598                cat test_log_valgrind
     599                return 1;
     600            fi;
     601        }
     602
     603        return 0
     604}
     605
    237606
    238607testrun2_internal ()
     
    268637        fi
    269638
    270         # save binary and build server
     639        # save binary and build server2
    271640        #
    272641        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
     642        $MAKE clean >/dev/null || return 1
     643
     644        ${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}2  --with-log-file=${LOGFILE}2 --with-pid-file=$PW_DIR/.samhain_lock2 --with-html-file=${HTML}2 --with-state-dir=$PW_DIR --enable-encrypt=2 --with-port=49778
    276645        #
    277646        if test x$? = x0; then
     
    290659        fi
    291660
     661        # save binary and build server
     662        #
     663        cp yule yule.2 || return 1
     664        $MAKE clean >/dev/null || return 1
     665
     666        ${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-html-file=$HTML --with-state-dir=$PW_DIR --enable-encrypt=2
     667        #
     668        if test x$? = x0; then
     669                [ -z "$verbose" ] ||     log_msg_ok "configure...";
     670                $MAKE  > /dev/null 2>>test_log
     671                if test x$? = x0; then
     672                    [ -z "$verbose" ] || log_msg_ok "make...";
     673                else
     674                    [ -z "$quiet" ] &&   log_msg_fail "make...";
     675                    return 1
     676                fi
     677
     678        else
     679                [ -z "$quiet" ] &&       log_msg_fail "configure...";
     680                return 1
     681        fi
     682
    292683
    293684        #####################################################################
     
    330721        mv samhain.build.new  samhain.new || return 1
    331722
    332         rm -f ./.samhain_log.*
    333         rm -f ./.samhain_lock
    334 
    335         SHCLT=`./yule -P $SHPW | sed s%HOSTNAME%${SH_LOCALHOST}%`
     723        # Set in server
     724
     725        ./samhain_setpwd yule new $SHPW >/dev/null
     726
     727        if test x$? = x0; then
     728            [ -z "$verbose" ] || log_msg_ok    "./samhain_setpwd yule new $SHPW";
     729        else
     730            [ -z "$quiet" ]   && log_msg_fail  "./samhain_setpwd yule new $SHPW";
     731            return 1
     732        fi
     733
     734        mv yule.new yule || return 1
     735
     736        #
     737
     738        rm -f ./.samhain_log*
     739        rm -f ./.samhain_lock*
     740
     741        SHCLT=`./yule -P $SHPW`
    336742
    337743        if test x$? = x0; then
     
    342748        fi
    343749
    344         echo $SHCLT >> testrc_2
     750        SHCLT1=`echo "${SHCLT}"  | sed s%HOSTNAME%${SH_LOCALHOST}%`
     751        AHOST=`find_hostname`
     752        SHCLT2=`echo "${SHCLT}"  | sed s%HOSTNAME%${AHOST}%`
     753       
     754
     755        echo $SHCLT1 >> testrc_2
     756        echo $SHCLT2 >> testrc_2
     757        cp testrc_2 testrc_22
    345758
    346759        do_test_1
     
    353766        do_test_2
    354767        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";
     768            [ -z "$quiet" ] && log_ok   2 ${MAXTEST} "Client logging, separate logfiles";
     769        else
     770            [ -z "$quiet" ] && log_fail 2 ${MAXTEST} "Client logging, separate logfiles";
    358771        fi
    359772
     
    365778        fi
    366779
     780        do_test_4
     781        if [ $? -eq 0 ]; then
     782            [ -z "$quiet" ] && log_ok   4 ${MAXTEST} "Server command socket";
     783        else
     784            [ -z "$quiet" ] && log_fail 4 ${MAXTEST} "Server command socket";
     785        fi
     786
     787        do_test_5
     788        if [ $? -eq 0 ]; then
     789            [ -z "$quiet" ] && log_ok   5 ${MAXTEST} "Server status file";
     790        else
     791            [ -z "$quiet" ] && log_fail 5 ${MAXTEST} "Server status file";
     792        fi
     793
    367794        return $?
    368795}
    369796
    370 MAXTEST=3; export MAXTEST
     797MAXTEST=5; export MAXTEST
    371798
    372799testrun2 ()
Note: See TracChangeset for help on using the changeset viewer.