summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcypherpunks <cypherpunks@torproject.org>2015-03-05 09:03:06 +0100
committerNick Mathewson <nickm@torproject.org>2015-04-23 09:56:12 -0400
commit21e242530783f9f71bad3e94f6482ac100c710e8 (patch)
tree2d730f7aa1940354a41689bc722e5160e2146655
parent372aef8981f383db8962fbbe67f4d18b56d3740d (diff)
downloadtor-21e242530783f9f71bad3e94f6482ac100c710e8.tar.gz
tor-21e242530783f9f71bad3e94f6482ac100c710e8.zip
Integrate zero_length_keys test into the automake test suite.
The zero length keys test now requires the path to the Tor binary as the first parameter to ensure the correct Tor binary is used without hard coding a path. The wrapper script calls the zero length keys test for each test separately to ensure the correct shell is used (as configured by autoconf). Another solution would have been to place the tests into separate functions so multiple tests could be run internally. This would have made a diff of considerable size and frankly it is outside the scope of this fix.
-rw-r--r--.gitignore1
-rw-r--r--configure.ac1
-rw-r--r--src/test/include.am7
-rw-r--r--src/test/test_zero_length_keys.sh.in10
-rwxr-xr-xsrc/test/zero_length_keys.sh20
5 files changed, 30 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index 912b06e2c5..5fc000f1ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -174,6 +174,7 @@ cscope.*
/src/test/test-child.exe
/src/test/test-ntor-cl.exe
/src/test/test_workqueue.exe
+/src/test/test_zero_length_keys.sh
# /src/tools/
/src/tools/tor-checkkey
diff --git a/configure.ac b/configure.ac
index 2c9c7a343f..32afc1b6b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1662,6 +1662,7 @@ AC_CONFIG_FILES([
src/config/torrc.minimal
scripts/maint/checkOptionDocs.pl
scripts/maint/updateVersions.pl
+ src/test/test_zero_length_keys.sh
])
if test x$asciidoc = xtrue && test "$ASCIIDOC" = "none" ; then
diff --git a/src/test/include.am b/src/test/include.am
index c857ec2f89..eba13abd24 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -1,4 +1,8 @@
-TESTS += src/test/test src/test/test-slow src/test/test-memwipe
+TESTS += src/test/test src/test/test-slow src/test/test-memwipe \
+ src/test/test_zero_length_keys.sh
+
+TEST_EXTENSIONS = .sh
+SH_LOG_COMPILER = $(SHELL)
noinst_PROGRAMS+= src/test/bench
if UNITTESTS_ENABLED
@@ -170,7 +174,6 @@ if USEPYTHON
$(top_builddir)/src/test/test-bt-cl assert | $(PYTHON) $(top_srcdir)/src/test/bt_test.py
$(top_builddir)/src/test/test-bt-cl crash | $(PYTHON) $(top_srcdir)/src/test/bt_test.py
endif
- $(SHELL) $(top_srcdir)/src/test/zero_length_keys.sh
EXTRA_DIST += \
src/test/bt_test.py \
diff --git a/src/test/test_zero_length_keys.sh.in b/src/test/test_zero_length_keys.sh.in
new file mode 100644
index 0000000000..47467baa44
--- /dev/null
+++ b/src/test/test_zero_length_keys.sh.in
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Check that tor regenerates keys when key files are zero-length
+
+exitcode=0
+
+@SHELL@ @abs_top_srcdir@/src/test/zero_length_keys.sh "@builddir@/src/or/tor" -z || exitcode=1
+@SHELL@ @abs_top_srcdir@/src/test/zero_length_keys.sh "@builddir@/src/or/tor" -d || exitcode=1
+@SHELL@ @abs_top_srcdir@/src/test/zero_length_keys.sh "@builddir@/src/or/tor" -e || exitcode=1
+
+exit ${exitcode}
diff --git a/src/test/zero_length_keys.sh b/src/test/zero_length_keys.sh
index 2fd11d38bd..3c61f8d465 100755
--- a/src/test/zero_length_keys.sh
+++ b/src/test/zero_length_keys.sh
@@ -3,13 +3,13 @@
# Test for bug #13111 - Tor fails to start if onion keys are zero length
#
# Usage:
-# ./zero_length_keys.sh
+# ./zero_length_keys.sh PATH_TO_TOR
# Run all the tests below
-# ./zero_length_keys.sh -z
+# ./zero_length_keys.sh PATH_TO_TOR -z
# Check tor will launch and regenerate zero-length keys
-# ./zero_length_keys.sh -d
+# ./zero_length_keys.sh PATH_TO_TOR -d
# Check tor regenerates deleted keys (existing behaviour)
-# ./zero_length_keys.sh -e
+# ./zero_length_keys.sh PATH_TO_TOR -e
# Check tor does not overwrite existing keys (existing behaviour)
#
# Exit Statuses:
@@ -19,10 +19,16 @@
# 3: a command failed - the test could not be completed
#
-if [ $# -lt 1 ]; then
+if [ $# -eq 0 ] || [ ! -f ${1} ] || [ ! -x ${1} ]; then
+ echo "Usage: ${0} PATH_TO_TOR [-z|-d|-e]"
+ exit 1
+elif [ $# -eq 1 ]; then
echo "Testing that tor correctly handles zero-length keys"
- "$0" -z && "$0" -d && "$0" -e
+ "$0" "${1}" -z && "$0" "${1}" -d && "$0" "${1}" -e
exit $?
+else #[$# -gt 1 ]; then
+ TOR_BINARY="${1}"
+ shift
fi
DATA_DIR=`mktemp -d -t tor_zero_length_keys.XXXXXX`
@@ -40,7 +46,7 @@ touch "$DATA_DIR"/empty_torrc
# DisableNetwork means that the ORPort won't actually be opened.
# 'ExitRelay 0' suppresses a warning.
-TOR="./src/or/tor --hush --DisableNetwork 1 --ShutdownWaitLength 0 --ORPort 12345 --ExitRelay 0 -f $DATA_DIR/empty_torrc"
+TOR="${TOR_BINARY} --hush --DisableNetwork 1 --ShutdownWaitLength 0 --ORPort 12345 --ExitRelay 0 -f $DATA_DIR/empty_torrc"
if [ -s "$DATA_DIR"/keys/secret_id_key ] && [ -s "$DATA_DIR"/keys/secret_onion_key ] &&
[ -s "$DATA_DIR"/keys/secret_onion_key_ntor ]; then