aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2015-09-08 14:43:34 -0400
committerNick Mathewson <nickm@torproject.org>2015-09-08 14:43:34 -0400
commitc59257d3787a452b34bc8c608c2c123929bdad0d (patch)
tree14c898f6d882b11f76013f8b657dd12678ccc007
parent7ffc048f0aeab1b0e828b546df71cb647da443e5 (diff)
parent036966e3ec02d48ff3f69403430cb6d019ac5bcf (diff)
downloadtor-c59257d3787a452b34bc8c608c2c123929bdad0d.tar.gz
tor-c59257d3787a452b34bc8c608c2c123929bdad0d.zip
Merge remote-tracking branch 'teor/make-test-network-all'
-rw-r--r--Makefile.am39
-rw-r--r--src/test/include.am7
-rwxr-xr-xsrc/test/test-network.sh6
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 .