diff options
author | Nick Mathewson <nickm@torproject.org> | 2015-09-08 14:43:34 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-09-08 14:43:34 -0400 |
commit | c59257d3787a452b34bc8c608c2c123929bdad0d (patch) | |
tree | 14c898f6d882b11f76013f8b657dd12678ccc007 | |
parent | 7ffc048f0aeab1b0e828b546df71cb647da443e5 (diff) | |
parent | 036966e3ec02d48ff3f69403430cb6d019ac5bcf (diff) | |
download | tor-c59257d3787a452b34bc8c608c2c123929bdad0d.tar.gz tor-c59257d3787a452b34bc8c608c2c123929bdad0d.zip |
Merge remote-tracking branch 'teor/make-test-network-all'
-rw-r--r-- | Makefile.am | 39 | ||||
-rw-r--r-- | src/test/include.am | 7 | ||||
-rwxr-xr-x | src/test/test-network.sh | 6 |
3 files changed, 47 insertions, 5 deletions
diff --git a/Makefile.am b/Makefile.am index b5e71aad1e..c226113cc8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -36,13 +36,16 @@ EXTRA_DIST+= \ if COVERAGE_ENABLED TEST_CFLAGS=-fno-inline -fprofile-arcs -ftest-coverage TEST_CPPFLAGS=-DTOR_UNIT_TESTS -DTOR_COVERAGE -TEST_NETWORK_FLAGS="--coverage" +TEST_NETWORK_FLAGS=--coverage --hs-multi-client 1 else TEST_CFLAGS= TEST_CPPFLAGS=-DTOR_UNIT_TESTS -TEST_NETWORK_FLAGS= +TEST_NETWORK_FLAGS=--hs-multi-client 1 endif +TEST_NETWORK_ALL_LOG_DIR=$(top_builddir)/test_network_log +TEST_NETWORK_ALL_DRIVER_FLAGS=--color-tests yes + #install-data-local: # $(INSTALL) -m 755 -d $(LOCALSTATEDIR)/lib/tor @@ -88,6 +91,37 @@ need-chutney-path: test-network: need-chutney-path all $(top_srcdir)/src/test/test-network.sh $(TEST_NETWORK_FLAGS) +# Run all available tests using automake's test-driver +# only run IPv6 tests if we can ping6 ::1 (localhost) +# some IPv6 tests will fail without an IPv6 DNS server (see #16971 and #17011) +# only run mixed tests if we have a tor-stable binary +# see #17015 for autodetection of different tor versions +test-network-all: need-chutney-path all test-driver + mkdir -p $(TEST_NETWORK_ALL_LOG_DIR) + @flavors="$(TEST_CHUTNEY_FLAVORS)"; \ + if ping6 -q -o ::1 >/dev/null 2>&1; then \ + echo "ping6 ::1 succeeded, running IPv6 flavors: $(TEST_CHUTNEY_FLAVORS_IPV6)."; \ + flavors="$$flavors $(TEST_CHUTNEY_FLAVORS_IPV6)"; \ + else \ + echo "ping6 ::1 failed, skipping IPv6 flavors: $(TEST_CHUTNEY_FLAVORS_IPV6)."; \ + skip_flavors="$$skip_flavors $(TEST_CHUTNEY_FLAVORS_IPV6)"; \ + fi; \ + if command -v tor-stable >/dev/null 2>&1; then \ + echo "tor-stable found, running mixed flavors: $(TEST_CHUTNEY_FLAVORS_MIXED)."; \ + flavors="$$flavors $(TEST_CHUTNEY_FLAVORS_MIXED)"; \ + else \ + echo "tor-stable not found, skipping mixed flavors: $(TEST_CHUTNEY_FLAVORS_MIXED)."; \ + skip_flavors="$$skip_flavors $(TEST_CHUTNEY_FLAVORS_MIXED)"; \ + fi; \ + for f in $$skip_flavors; do \ + echo "SKIP: $$f"; \ + done; \ + for f in $$flavors; do \ + ./test-driver --test-name $$f --log-file $(TEST_NETWORK_ALL_LOG_DIR)/$$f.log --trs-file $(TEST_NETWORK_ALL_LOG_DIR)/$$f.trs $(TEST_NETWORK_ALL_DRIVER_FLAGS) $(top_srcdir)/src/test/test-network.sh --flavor $$f $(TEST_NETWORK_FLAGS); \ + done; \ + echo "Log and result files are available in $(TEST_NETWORK_ALL_LOG_DIR)."; \ + ! grep -q FAIL test_network_log/*.trs + need-stem-path: @if test ! -d "$$STEM_SOURCE_DIR"; then \ echo '$$STEM_SOURCE_DIR was not set.'; echo; \ @@ -173,3 +207,4 @@ mostlyclean-local: rm -f $(top_builddir)/src/*/*.gc{da,no} $(top_builddir)/src/*/*/*.gc{da,no} rm -rf $(HTML_COVER_DIR) rm -rf $(top_builddir)/doc/doxygen + rm -rf $(TEST_NETWORK_ALL_LOG_DIR) diff --git a/src/test/include.am b/src/test/include.am index ef2fd4fb8e..f7c0204832 100644 --- a/src/test/include.am +++ b/src/test/include.am @@ -8,6 +8,13 @@ endif TESTS += src/test/test src/test/test-slow src/test/test-memwipe \ src/test/test_workqueue src/test/test_keygen.sh $(TESTSCRIPTS) +# These flavors are run using automake's test-driver and test-network.sh +TEST_CHUTNEY_FLAVORS = basic-min bridges-min hs-min bridges+hs +# only run if we can ping6 ::1 (localhost) +TEST_CHUTNEY_FLAVORS_IPV6 = bridges+ipv6-min ipv6-exit-min +# only run if we can find a stable (or simply another) version of tor +TEST_CHUTNEY_FLAVORS_MIXED = mixed + ### This is a lovely feature, but it requires automake >= 1.12, and Tor ### doesn't require that yet. Below is a kludge to work around. ### diff --git a/src/test/test-network.sh b/src/test/test-network.sh index b5d7f7c42d..576fbed03b 100755 --- a/src/test/test-network.sh +++ b/src/test/test-network.sh @@ -3,9 +3,9 @@ ECHO_N="/bin/echo -n" use_coverage_binary=false -until [ -z $1 ] +until [ -z "$1" ] do - case $1 in + case "$1" in --chutney-path) export CHUTNEY_PATH="$2" shift @@ -86,7 +86,7 @@ export CHUTNEY_TOR_GENCERT="${TOR_DIR}/src/tools/${tor_gencert_name}" # Sleep some, waiting for the network to bootstrap. # TODO: Add chutney command 'bootstrap-status' and use that instead. -BOOTSTRAP_TIME=${BOOTSTRAP_TIME:-25} +BOOTSTRAP_TIME=${BOOTSTRAP_TIME:-30} $ECHO_N "$myname: sleeping for $BOOTSTRAP_TIME seconds" n=$BOOTSTRAP_TIME; while [ $n -gt 0 ]; do sleep 1; n=$(expr $n - 1); $ECHO_N . |