summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Færøy <ahf@torproject.org>2021-06-25 16:29:53 +0000
committerAlexander Færøy <ahf@torproject.org>2021-06-25 16:43:10 +0000
commit83483bd4f6326b519871208b3e5af4ae01f13179 (patch)
treee39eda0c5f4b1dcd8f2ba751d2ef82395503b04c
parent9085508310ab06c2b7ed0650e77dbe86023095f3 (diff)
downloadtor-83483bd4f6326b519871208b3e5af4ae01f13179.tar.gz
tor-83483bd4f6326b519871208b3e5af4ae01f13179.zip
Enable deterministic RNG for address set tests.
This patch enables the deterministic RNG for address set tests, including the tests which uses address set indirectly via the nodelist API. This should prevent random test failures in the highly unlikely case of a false positive which was seen in tor#40419. See: tpo/core/tor#40419.
-rw-r--r--changes/ticket404193
-rw-r--r--src/test/test_address_set.c13
2 files changed, 16 insertions, 0 deletions
diff --git a/changes/ticket40419 b/changes/ticket40419
new file mode 100644
index 0000000000..0004329662
--- /dev/null
+++ b/changes/ticket40419
@@ -0,0 +1,3 @@
+ o Minor features (testing):
+ - Enable the deterministic RNG for unit tests that covers the address set
+ bloomfilter-based API's. Fixes bug 40419; bugfix on 0.3.3.2-alpha.
diff --git a/src/test/test_address_set.c b/src/test/test_address_set.c
index a73fbab76a..37688f4c1d 100644
--- a/src/test/test_address_set.c
+++ b/src/test/test_address_set.c
@@ -17,6 +17,7 @@
#include "feature/nodelist/routerstatus_st.h"
#include "test/test.h"
+#include "test/rng_test_helpers.h"
static networkstatus_t *dummy_ns = NULL;
static networkstatus_t *
@@ -62,6 +63,10 @@ test_contains(void *arg)
tor_addr_parse(&addr_v4, "42.42.42.42");
uint32_t ipv4h = tor_addr_to_ipv4h(&addr_v4);
+ /* Use our deterministic RNG since the address set uses a bloom filter
+ * internally. */
+ testing_enable_deterministic_rng();
+
/* Make it very big so the chance of failing the contain test will be
* extremely rare. */
set = address_set_new(1024);
@@ -89,6 +94,8 @@ test_contains(void *arg)
done:
address_set_free(set);
+
+ testing_disable_deterministic_rng();
}
static void
@@ -108,6 +115,10 @@ test_nodelist(void *arg)
MOCK(dirlist_add_trusted_dir_addresses,
mock_dirlist_add_trusted_dir_addresses);
+ /* Use our deterministic RNG since the address set, used for
+ * nodelist_probably_contains_address() uses a bloom filter internally. */
+ testing_enable_deterministic_rng();
+
dummy_ns = tor_malloc_zero(sizeof(*dummy_ns));
dummy_ns->flavor = FLAV_MICRODESC;
dummy_ns->routerstatus_list = smartlist_new();
@@ -179,6 +190,8 @@ test_nodelist(void *arg)
UNMOCK(networkstatus_get_latest_consensus_by_flavor);
UNMOCK(get_estimated_address_per_node);
UNMOCK(dirlist_add_trusted_dir_addresses);
+
+ testing_disable_deterministic_rng();
}
/** Test that the no-reentry exit filter works as intended */