From Peter Wu via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9174
authorEvan Huus <eapache@gmail.com>
Sun, 6 Oct 2013 12:44:10 +0000 (12:44 -0000)
committerEvan Huus <eapache@gmail.com>
Sun, 6 Oct 2013 12:44:10 +0000 (12:44 -0000)
Support running most tests out-of-tree. Use case is to have a source tree and
use a semi-unprivileged user to perform tests (to rule out interference).

From me:
- fix unit-test suite, it has to build the binaries it runs so it must
  more-or-less ignore the out-of-tree stuff
- fix name-res suite, just missing a path qualifier

svn path=/trunk/; revision=52397

test/config.sh
test/suite-decryption.sh
test/suite-io.sh
test/suite-nameres.sh
test/suite-unittests.sh
test/test.sh

index 872bdbfe3b822e783c51cfa19b48fd5d2d95d403..82acb9c71a8bf4edcac720533d967c2e49a26548 100755 (executable)
@@ -40,18 +40,24 @@ if [ $? -eq 0 ] ; then
        ENDIANNESS="big"
 fi
 
-# Path to the Wireshark binaries, only used for the settings below
-WS_BIN_PATH=..
+# Absolute path to the source tree
+SOURCE_DIR="$(cd "$(dirname "$0")" && cd .. && pwd)"
+
+# Absolute path to this test directory (for capture and config files)
+TESTS_DIR="$SOURCE_DIR/test"
 
 # Are we allowed to open interfaces or capture on this system?
 SKIP_CAPTURE=${SKIP_CAPTURE:-1}
 
 # Override the last two items if we're running Windows
 if [ "$WS_SYSTEM" = "Windows" ] ; then
-       WS_BIN_PATH=../wireshark-gtk2
+       WS_BIN_PATH=${WS_BIN_PATH:-$SOURCE_DIR/wireshark-gtk2}
        SKIP_CAPTURE=0
 fi
 
+# Path to the Wireshark binaries, default to source dir if unset
+WS_BIN_PATH=${WS_BIN_PATH:-$SOURCE_DIR}
+
 # Tweak the following to your liking.
 WIRESHARK=$WS_BIN_PATH/wireshark
 TSHARK=$WS_BIN_PATH/tshark
@@ -91,7 +97,7 @@ fi
 # Tell Wireshark to quit after capuring packets.
 export WIRESHARK_QUIT_AFTER_CAPTURE="True"
 
-CAPTURE_DIR="captures/"
+CAPTURE_DIR="$TESTS_DIR/captures/"
 
 # Configuration paths
 TEST_HOME="$PWD/fakehome"
index ba740a3b60e2c4956783f65a0a98014d7d7e7c2b..11e55d1438551d556967d1fc138d6ce38f19cd5f 100755 (executable)
@@ -49,7 +49,7 @@ UAT_FILES="
        ssl_keys
 "
 
-TEST_KEYS_DIR="$PWD/keys/"
+TEST_KEYS_DIR="$TESTS_DIR/keys/"
 if [ "$WS_SYSTEM" == "Windows" ] ; then
        TEST_KEYS_DIR="`cygpath -w $TEST_KEYS_DIR`"
 fi
@@ -71,7 +71,7 @@ decryption_step_80211_wpa_psk() {
        env $TS_DC_ENV $TSHARK $TS_DC_ARGS \
                -o "wlan.enable_decryption: TRUE" \
                -Tfields -e http.request.uri \
-               -r captures/wpa-Induction.pcap.gz \
+               -r "$CAPTURE_DIR/wpa-Induction.pcap.gz" \
                -Y http \
                | grep favicon.ico > /dev/null 2>&1
        RETURNVALUE=$?
@@ -87,7 +87,7 @@ decryption_step_80211_wpa_psk() {
 decryption_step_dtls() {
        env $TS_DC_ENV $TSHARK $TS_DC_ARGS \
                -Tfields -e data.data \
-               -r captures/snakeoil-dtls.pcap -Y http \
+               -r "$CAPTURE_DIR/snakeoil-dtls.pcap" -Y http \
                | grep "69:74:20:77:6f:72:6b:20:21:0a" > /dev/null 2>&1
        RETURNVALUE=$?
        if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
@@ -100,7 +100,9 @@ decryption_step_dtls() {
 # SSL
 # http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=view&target=snakeoil2_070531.tgz
 decryption_step_ssl() {
-       env $TS_DC_ENV $TSHARK $TS_DC_ARGS -Tfields -e http.request.uri -r captures/rsasnakeoil2.pcap -Y http | grep favicon.ico > /dev/null 2>&1
+       env $TS_DC_ENV $TSHARK $TS_DC_ARGS -Tfields -e http.request.uri \
+               -r "$CAPTURE_DIR/rsasnakeoil2.pcap" -Y http \
+               | grep favicon.ico > /dev/null 2>&1
        RETURNVALUE=$?
        if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
                test_step_failed "Failed to decrypt SSL"
@@ -113,7 +115,7 @@ decryption_step_ssl() {
 # https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7022
 decryption_step_zigbee() {
        env $TS_DC_ENV $TSHARK $TS_DC_ARGS \
-               -r captures/sample_control4_2012-03-24.pcap \
+               -r "$CAPTURE_DIR/sample_control4_2012-03-24.pcap" \
                -Tfields -e data.data \
                -Y zbee_aps \
                | grep "30:67:63:63:38:65:20:63:34:2e:64:6d:2e:74:76:20" > /dev/null 2>&1
@@ -152,7 +154,7 @@ decryption_prep_step() {
                        test_remark_add "$WS_BIN_PATH/$UAT exists. One or more tests may fail."
                else
                        echo "# Created by $DC_ID" > $WS_BIN_PATH/$UAT
-                       sed -e "s|TEST_KEYS_DIR|${TEST_KEYS_DIR//\\/\\\\x5c}|" < ./config/$UAT.tmpl >> $WS_BIN_PATH/$UAT
+                       sed -e "s|TEST_KEYS_DIR|${TEST_KEYS_DIR//\\/\\\\x5c}|" < "$TESTS_DIR/config/$UAT.tmpl" >> "$WS_BIN_PATH/$UAT"
                fi
        done
 }
index 1c9dffd5727d506cfc1256453081897c9d406700..b85032e9c92033bed324b50e45c360174c9e12b3 100755 (executable)
@@ -29,7 +29,7 @@ EXIT_OK=0
 EXIT_COMMAND_LINE=1
 EXIT_ERROR=2
 
-IO_RAWSHARK_DHCP_PCAP_BASELINE=./baseline/io-rawshark-dhcp-pcap.txt
+IO_RAWSHARK_DHCP_PCAP_BASELINE="$TESTS_DIR/baseline/io-rawshark-dhcp-pcap.txt"
 IO_RAWSHARK_DHCP_PCAP_TESTOUT=./io-rawshark-dhcp-pcap-testout.txt
 
 # input of file
index 7366e278e2bc46aca1ef157aa3ae4666ddebbbf8..672ac651140dd880f386685e93a22ef22514fe91 100755 (executable)
@@ -29,13 +29,13 @@ EXIT_COMMAND_LINE=1
 EXIT_ERROR=2
 
 #TS_ARGS="-Tfields -e frame.number -e frame.time_epoch -e frame.time_delta"
-TS_NR_ARGS="-r captures/dns+icmp.pcapng.gz"
+TS_NR_ARGS="-r $CAPTURE_DIR/dns+icmp.pcapng.gz"
 TS_NR_ENV="WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 ${HOME_ENV}=${TEST_HOME}"
 
 if [ "$WS_SYSTEM" == "Windows" ] ; then
-       CONF_PATH="fakehome/Wireshark"
+       CONF_PATH="$TEST_HOME/Wireshark"
 else
-       CONF_PATH="fakehome/.wireshark"
+       CONF_PATH="$TEST_HOME/.wireshark"
 fi
 
 CUSTOM_PROFILE_NAME="Custom-$$"
@@ -169,9 +169,9 @@ name_resolution_cleanup_step() {
 name_resolution_prep_step() {
        name_resolution_cleanup_step
        mkdir -p "$CUSTOM_PROFILE_PATH"
-       cp hosts.global $WS_BIN_PATH/hosts
-       cp hosts.personal "$CONF_PATH/hosts"
-       cp hosts.custom "$CUSTOM_PROFILE_PATH/hosts"
+       cp "$TESTS_DIR/hosts.global" "$WS_BIN_PATH/hosts"
+       cp "$TESTS_DIR/hosts.personal" "$CONF_PATH/hosts"
+       cp "$TESTS_DIR/hosts.custom" "$CUSTOM_PROFILE_PATH/hosts"
 }
 
 name_resolution_suite() {
index 8629ccb5fe2bed78ffe4c4d86ed1d624f36422d0..5e847fca39f6bd0442a8990917b579875b5a9421 100755 (executable)
@@ -64,25 +64,25 @@ unittests_step_test() {
 
 
 unittests_step_exntest() {
-       DUT=../epan/exntest
+       DUT=$SOURCE_DIR/epan/exntest
        ARGS=
        unittests_step_test
 }
 
 unittests_step_reassemble_test() {
-       DUT=../epan/reassemble_test
+       DUT=$SOURCE_DIR/epan/reassemble_test
        ARGS=
        unittests_step_test
 }
 
 unittests_step_tvbtest() {
-       DUT=../epan/tvbtest
+       DUT=$SOURCE_DIR/epan/tvbtest
        ARGS=
        unittests_step_test
 }
 
 unittests_step_wmem_test() {
-       DUT=../epan/wmem/wmem_test
+       DUT=$SOURCE_DIR/epan/wmem/wmem_test
        ARGS=--verbose
        unittests_step_test
 }
index af8ae075a18f18a3dd6785950d2f15ffb351aefd..47e2465655d0513ba6d9c91c1fc516d8da005584 100755 (executable)
@@ -73,6 +73,25 @@ source suite-fileformats.sh
 source suite-decryption.sh
 source suite-nameres.sh
 
+# needed by some tests
+TEST_OUTDIR=$(mktemp -d)
+TEST_OUTDIR_CLEAN=${TEST_OUTDIR_CLEAN:-1}
+if [ -z "$TEST_OUTDIR" ] || ! cd "$TEST_OUTDIR"; then
+       # If for any reason the temporary tests output directory cannot be created...
+       TEST_OUTDIR=.
+       TEST_OUTDIR_CLEAN=0
+fi
+
+test_cleanup() {
+       if [ $TEST_OUTDIR_CLEAN = 1 ]; then
+               # display contents of test outputs
+               grep -r . .
+               rm -rf "$TEST_OUTDIR"
+       else
+               echo "Test results are available in $TEST_OUTDIR"
+       fi
+}
+trap test_cleanup EXIT
 
 #check prerequisites
 test_step_prerequisites() {