📄 functions.sh
字号:
NJARGS="$NJARGS "`setup_additional_hosts`# if [ "X$EXITONEMPTY" = "X--exitonempty" ]# then# NJARGS="$NJARGS -a"# fi rm -f OUTPUT${KLIPS_MODULE}/console.txt cmd="expect -f $UTILS/host-test.tcl -- -U $TESTHOST -u $HOST_START -i ${INIT_SCRIPT} -n $NJ $NJARGS" $NETJIGDEBUG && echo $cmd eval $cmd #uml_mconsole $TESTHOST halt pcap_filter private "$REF_PRIV_OUTPUT" "$PRIVOUTPUT" "$REF_PRIV_FILTER" pcap_filter public "$REF_PUB_OUTPUT" "$PUBOUTPUT" "$REF_PUB_FILTER" case $KERNVER in 26) if [ -n "$REF26_CONSOLE_OUTPUT" ] then consolediff "26" OUTPUT${KLIPS_MODULE}/console.txt $REF26_CONSOLE_OUTPUT fi;; *) if [ -n "$REF_CONSOLE_OUTPUT" ] then consolediff "" OUTPUT${KLIPS_MODULE}/console.txt $REF_CONSOLE_OUTPUT fi;; esac case "$success" in true) exit 0 ;; *) exit $failnum ;; esac}##################################### test type: klipstest##################################### test entry point:klipstest() { testdir=$1 testexpect=$2 echo '******* KLIPS RUNNING' $testdir${KLIPS_MODULE} '*******' export UML_BRAND="$$" ( preptest $testdir klipstest && netjigtest ) stat=$? recordresults $testdir "$testexpect" "$stat" $testdir${KLIPS_MODULE}}##################################### test type: ctltest - run the UML with no I/O####################################do_ctl_test() { success=true prerunsetup NJARGS="" if [ -n "${FINAL_SCRIPT}" ] then NJARGS="$NJARGS -I ${FINAL_SCRIPT}" fi if [ -n "$REF_CONSOLE_OUTPUT" ] then rm -f OUTPUT${KLIPS_MODULE}/console.txt NJARGS="$NJARGS -c OUTPUT${KLIPS_MODULE}/console.txt" fi if [ "X${NEEDS_DNS}" = "Xtrue" ] then NJARGS="$NJARGS -D $POOLSPACE/nic/start.sh" fi NJARGS="$NJARGS "`setup_additional_hosts` cmd="expect -f $UTILS/host-test.tcl -- -U $TESTHOST -u $HOST_START -i ${INIT_SCRIPT} -n $NJ $NJARGS" $NETJIGDEBUG && echo $cmd eval $cmd if [ -n "$REF_CONSOLE_OUTPUT" ] then consolediff "" OUTPUT${KLIPS_MODULE}/console.txt $REF_CONSOLE_OUTPUT fi case "$success" in true) exit 0 ;; *) exit 2 ;; esac}# test entry point:ctltest() { testdir=$1 testexpect=$2 echo '****** CONTROL RUNNING' $testdir${KLIPS_MODULE} '*******' export UML_BRAND="$$" ( preptest $testdir ctltest && do_ctl_test ) stat=$? recordresults $testdir "$testexpect" "$stat" $testdir${KLIPS_MODULE}}skiptest() { testdir=$1 testexpect=$2 export TEST_PURPOSE=regress UML_BRAND=0 recordresults $testdir "$testexpect" skipped $testdir${KLIPS_MODULE}}##################################### test type: mkinsttest####################################do_make_install_test() { rm -rf OUTPUT${KLIPS_MODULE}/root mkdir -p OUTPUT${KLIPS_MODULE}/root # locale affects sort order. LC_ALL=C export LC_ALL success=true instdir=`cd OUTPUT${KLIPS_MODULE}/root && pwd` prerunsetup if [ -n "$INSTALL_FLAGS" ] then $MAKE_INSTALL_TEST_DEBUG && echo make --no-print-directory DESTDIR=$instdir $INSTALL_FLAGS (cd $OPENSWANSRCDIR && eval make OPENSWANSRCDIR=`pwd` --no-print-directory DESTDIR=$instdir $INSTALL_FLAGS ) >OUTPUT${KLIPS_MODULE}/install1.txt 2>&1 || exit 1 fi if [ -n "$POSTINSTALL_SCRIPT" ] then $POSTINSTALL_SCRIPT $OPENSWANSRCDIR $instdir || exit 1 fi if [ -n "$INSTALL2_FLAGS" ] then $MAKE_INSTALL_TEST_DEBUG && echo make --no-print-directory DESTDIR=$instdir $INSTALL2_FLAGS (cd $OPENSWANSRCDIR && eval make OPENSWANSRCDIR=`pwd` --no-print-directory DESTDIR=$instdir $INSTALL2_FLAGS ) >OUTPUT${KLIPS_MODULE}/install2.txt 2>&1 || exit 1 fi if [ -n "$UNINSTALL_FLAGS" ] then $MAKE_INSTALL_TEST_DEBUG && echo make --no-print-directory DESTDIR=$instdir $UNINSTALL_FLAGS (cd $OPENSWANSRCDIR && eval make OPENSWANSRCDIR=`pwd` --no-print-directory DESTDIR=$instdir $UNINSTALL_FLAGS ) >OUTPUT${KLIPS_MODULE}/uninstall.txt 2>&1 || exit 1 fi if [ -n "$REF_MAKE_DOC_OUTPUT" ] then rm -f OUTPUT${KLIPS_MODULE}/$REF_MAKE_DOC_OUTPUT.txt (cd $OPENSWANSRCDIR/doc && eval make OPENSWANSRCDIR=$OPENSWANSRCDIR clean --no-print-directory && eval make OPENSWANSRCDIR=$OPENSWANSRCDIR --no-print-directory ) | sort >OUTPUT${KLIPS_MODULE}/$REF_MAKE_DOC_OUTPUT.txt if diff -u -w -b -B $REF_MAKE_DOC_OUTPUT.txt OUTPUT${KLIPS_MODULE}/$REF_MAKE_DOC_OUTPUT.txt >OUTPUT${KLIPS_MODULE}/$REF_MAKE_DOC_OUTPUT.diff then echo "make doc output matched" else echo "make doc output differed" success=false fi fi if [ -n "$REF_FIND_f_l_OUTPUT" ] then rm -f OUTPUT${KLIPS_MODULE}/$REF_FIND_f_l_OUTPUT (cd OUTPUT${KLIPS_MODULE}/root && find . \( -type f -or -type l \) -print ) | sort >OUTPUT${KLIPS_MODULE}/$REF_FIND_f_l_OUTPUT.txt if diff -u -w -b -B $REF_FIND_f_l_OUTPUT.txt OUTPUT${KLIPS_MODULE}/$REF_FIND_f_l_OUTPUT.txt >OUTPUT${KLIPS_MODULE}/$REF_FIND_f_l_OUTPUT.diff then echo "Install list file list matched" else echo "Install list file list differed" success=false fi fi if [ -n "$REF_FILE_CONTENTS" ] then cat $REF_FILE_CONTENTS | while read reffile samplefile do if diff -u -w -b -B $reffile $instdir/$samplefile >OUTPUT${KLIPS_MODULE}/$reffile.diff then echo "Reffile $samplefile matched" else echo "Reffile $samplefile differed" success=false fi done fi case "$success" in true) exit 0 ;; *) exit 1 ;; esac}# test entry point:mkinsttest() { testdir=$1 testexpect=$2 echo '**** Make Install RUNNING' $testdir${KLIPS_MODULE} '****' OPENSWANSRCDIR=`cd $OPENSWANSRCDIR && pwd` export OPENSWANSRCDIR export UML_BRAND="$$" ( preptest $testdir mkinsttest && do_make_install_test ) stat=$? recordresults $testdir "$testexpect" "$stat" $testdir${KLIPS_MODULE}}##################################### test type: rpm_build_install_test####################################do_rpm_install_test() { rm -rf OUTPUT${KLIPS_MODULE}/root mkdir -p OUTPUT${KLIPS_MODULE}/root success=true instdir=`cd OUTPUT${KLIPS_MODULE}/root && pwd` prerunsetup RPM_KERNEL_SOURCE=`eval echo $RPM_KERNEL_SOURCE` if [ -z "$RPM_KERNEL_SOURCE" ] then echo "Test must define \$RPM_KERNEL_SOURCE ($RPM_KERNEL_SOURCE)" success='missing $RPM_KERNEL_SOURCE' exit 99 fi if [ -z "$RPM_OMIT_BUILD" ] then echo "Building with kernel source $RPM_KERNEL_SOURCE"; (cd $OPENSWANSRCDIR/packaging/redhat && make clean --no-print-directory && make --no-print-directory RH_KERNELSRC=$RPM_KERNEL_SOURCE OPENSWANSRCDIR=$OPENSWANSRCDIR rpm ) fi mkdir OUTPUT${KLIPS_MODULE}/rpm cp $OPENSWANSRCDIR/packaging/redhat/rpms/RPMS/i386/*.rpm OUTPUT${KLIPS_MODULE}/rpm # while loop below winds up in sub-shell. Argh. successfile=OUTPUT${KLIPS_MODULE}/success echo "$success" >$successfile if [ -n "$REF_RPM_CONTENTS" ] then cat $REF_RPM_CONTENTS | while read rpmfile rpmcontents do if [ -z "$rpmfile" ] then continue; fi # expand $rpmfile, which may have wildcards! realfile=`eval echo OUTPUT${KLIPS_MODULE}/rpm/${rpmfile}` if [ ! -f $realfile ] then echo "RPM production failed to build anything to match $rpmfile" echo false >$successfile fi rpm2cpio $realfile | cpio -it >OUTPUT${KLIPS_MODULE}/$rpmcontents.txt if diff -u -w -b -B $rpmcontents.txt OUTPUT${KLIPS_MODULE}/$rpmcontents.txt >OUTPUT${KLIPS_MODULE}/$rpmcontents.diff then echo "Reffile ($rpmcontents) for $realfile matched" else echo "Reffile ($rpmcontents) for $realfile differed" echo false >$successfile fi done fi success=`cat $successfile` case "$success" in true) exit 0 ;; *) exit 1 ;; esac}# test entry point:rpm_build_install_test() { testdir=$1 testexpect=$2 echo '**** Make Install RUNNING' $testdir${KLIPS_MODULE} '****' OPENSWANSRCDIR=`cd $OPENSWANSRCDIR && pwd` export OPENSWANSRCDIR export UML_BRAND="$$" ( preptest $testdir rpm_build_install_test && do_rpm_install_test ) stat=$? if [ $stat = 99 ] then echo Test missing parts. stat='missing parts' fi recordresults $testdir "$testexpect" "$stat" $testdir${KLIPS_MODULE}}##################################### test type: ipkg_build_install_test####################################do_ipkg_install_test() { rm -rf OUTPUT${KLIPS_MODULE}/root mkdir -p OUTPUT${KLIPS_MODULE}/root success=true instdir=`cd OUTPUT${KLIPS_MODULE}/root && pwd` prerunsetup KERNEL_SOURCE=`eval echo $KERNEL_SOURCE` if [ -z "$KERNEL_SOURCE" ] then echo "Test must define \$KERNEL_SOURCE ($KERNEL_SOURCE)" success='missing $KERNEL_SOURCE' exit 99 fi if [ -z "$OMIT_BUILD" ] then echo "Building with kernel source $KERNEL_SOURCE"; (cd $OPENSWANSRCDIR && make clean --no-print-directory && make --no-print-directory KERNELSRC=$KERNEL_SOURCE OPENSWANSRCDIR=$OPENSWANSRCDIR DESTDIR=/tmp/ipkg ipkg ) fi mkdir OUTPUT${KLIPS_MODULE}/ipkg cp $OPENSWANSRCDIR/packaging/ipkg/ipkg/*.ipk OUTPUT${KLIPS_MODULE}/ipkg # while loop below winds up in sub-shell. Argh. successfile=OUTPUT${KLIPS_MODULE}/success echo "$success" >$successfile if [ -n "$REF_IPKG_CONTENTS" ] then cat $REF_IPKG_CONTENTS | while read ipkgfile ipkgcontents do if [ -z "$ipkgfile" ] then continue; fi # expand $ipkgfile, which may have wildcards! realfile=`eval echo OUTPUT${KLIPS_MODULE}/ipkg/${ipkgfile}` if [ ! -f $realfile ] then echo "IPKG production failed to build anything to match $ipkgfile" echo false >$successfile fi tar -tzvf $realfile >OUTPUT${KLIPS_MODULE}/$ipkgcontents.txt if diff -u -w -b -B $ipkgcontents.txt OUTPUT${KLIPS_MODULE}/$ipkgcontents.txt >OUTPUT${KLIPS_MODULE}/$ipkgcontents.diff then echo "Reffile ($ipkgcontents) for $realfile matched" else echo "Reffile ($ipkgcontents) for $realfile differed" echo false >$successfile fi done fi success=`cat $successfile` case "$success" in true) exit 0 ;; *) exit 1 ;; esac}# test entry point:ipkg_build_install_test() { testdir=$1 testexpect=$2 echo '**** Make Install RUNNING' $testdir${KLIPS_MODULE} '****' OPENSWANSRCDIR=`cd $OPENSWANSRCDIR && pwd` export OPENSWANSRCDIR export UML_BRAND="$$" ( preptest $testdir ipkg_build_install_test && do_ipkg_install_test ) stat=$? if [ $stat = 99 ] then echo Test missing parts. stat='missing parts' fi recordresults $testdir "$testexpect" "$stat" $testdir${KLIPS_MODULE}}##################################### test type: libtest##################################### test entry point:libtest() { testobj=$1 testexpect=$2 testsrc=$testobj.c CC=${CC-cc} echo '**** make libtest RUNNING' $testsrc '****' symbol=`echo $testobj | tr 'a-z' 'A-Z'`_MAIN if [ -f ./$testsrc ] then FILE=./$testsrc elif [ -f ${OPENSWANSRCDIR}/lib/libopenwan/$testsrc ] then FILE=${LIBOPENSWANDIR}/$testsrc elif [ -f ${OPENSWANSRCDIR}/lib/libopenwan/$testsrc ] then FILE=${OPENSWANSRCDIR}/lib/libopenswan/$testsrc elif [ -f ${OPENSWANSRCDIR}/linux/net/klips/$testsrc ] then FILE=${OPENSWANSRCDIR}/linux/net/klips/$testsrc elif [ -f ${OPENSWANSRCDIR}/linux/lib/libopenswan/$testsrc ] then FILE=${OPENSWANSRCDIR}/linux/lib/libopenswan/$testsrc elif [ -f ${OPENSWANSRCDIR}/linux/lib/libfreeswan/$testsrc ] then FILE=${OPENSWANSRCDIR}/linux/lib/libfreeswan/$testsrc elif [ -f ${OPENSWANSRCDIR}/linux/net/ipsec/$testsrc ] then FILE=${OPENSWANSRCDIR}/linux/net/ipsec/$testsrc fi #echo "LOOKING for " ./FLAGS.$testobj EXTRAFLAGS= EXTRALIBS= if [ -f ./FLAGS.$testobj ] then source ./FLAGS.$testobj fi stat=99 if [ -n "$FILE" -a -r "$FILE" ] then echo CC: ${CC} -g -o $testobj -D$symbol ${EXTRAFLAGS} -I${LIBOPENSWANDIR} -I${OPENSWANSRCDIR}/linux/include -I${OPENSWANSRCDIR} ${FILE} ${OPENSWANLIB} ${EXTRALIBS} ${CC} -g -o $testobj -D$symbol ${EXTRAFLAGS} -I${LIBOPENSWANDIR} -I${OPENSWANSRCDIR}/linux/include -I${OPENSWANSRCDIR} ${FILE} ${OPENSWANLIB} ${EXTRALIBS} rm -rf lib-$testobj/OUTPUT mkdir -p lib-$testobj/OUTPUT export TEST_PURPOSE=regress echo Running $testobj ( ulimit -c unlimited; cd lib-$testobj && ../$testobj -r >OUTPUT${KLIPS_MODULE}/$testobj.txt 2>&1 ) stat=$? echo Exit code $stat if [ $stat -gt 128 ] then stat="$stat core" else if [ -r OUTPUT.$testobj.txt ] then if diff -N -u -w -b -B lib-$testobj/OUTPUT${KLIPS_MODULE}/$testobj.txt OUTPUT.$testobj.txt > lib-$testobj/OUTPUT${KLIPS_MODULE}/$testobj.output.diff then echo "output matched" else echo "output differed" fi fi fi fi TEST_PURPOSE=regress UML_BRAND=0 recordresults lib-$testobj "$testexpect" $stat lib-$testobj}##################################### test type: umlplutotest##################################### If set, then the public and private packet output will be captured,# turned into ASCII with tcpdump, and diff'ed against these files.# REF_PUB_OUTPUT - for public side# REF_EAST_OUTPUT - for east private side# REF_WEST_OUTPUT - for west private side# TCPDUMPARGS - extra args for TCPDUMP.## If set, then the console output will be diff'ed against this file:# REF_EAST_CONSOLE_OUTPUT# REF_WEST_CONSOLE_OUTPUT## The console output may need to be sanitized. The list of fixups from# REF_CONSOLE_FIXUPS will be appled from "fixups". The extension is used to# determine what program to use.## Some additional options to control the network emulator# ARPREPLY=--arpreply - if ARPs should be answered# test entry point:umlplutotest() { testdir=$1 testexpect=$2 echo '***** UML PLUTO RUNNING' $testdir${KLIPS_MODULE} '*******' export UML_BRAND="$$" ( export XHOST_LIST="EAST WEST" preptest $testdir umlplutotest && do_umlX_test ) stat=$? recordresults $testdir "$testexpect" "$stat" $testdir${KLIPS_MODULE}}##################################### test type: kernel_patch_test####################################do_kernel_patch_test() { success=true set -e if [ -z "${KERNEL_VERSION}" ]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -