aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_address_set.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/test_address_set.c')
-rw-r--r--src/test/test_address_set.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/test/test_address_set.c b/src/test/test_address_set.c
index 4e55d71ff4..37688f4c1d 100644
--- a/src/test/test_address_set.c
+++ b/src/test/test_address_set.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2019, The Tor Project, Inc. */
+/* Copyright (c) 2017-2020, The Tor Project, Inc. */
/* See LICENSE for licensing information */
#include "core/or/or.h"
@@ -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
@@ -105,6 +112,12 @@ test_nodelist(void *arg)
mock_networkstatus_get_latest_consensus_by_flavor);
MOCK(get_estimated_address_per_node,
mock_get_estimated_address_per_node);
+ 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;
@@ -112,7 +125,6 @@ test_nodelist(void *arg)
tor_addr_t addr_v4, addr_v6, dummy_addr;
tor_addr_parse(&addr_v4, "42.42.42.42");
- uint32_t ipv4h = tor_addr_to_ipv4h(&addr_v4);
tor_addr_parse(&addr_v6, "1:2:3:4::");
memset(&dummy_addr, 'A', sizeof(dummy_addr));
@@ -120,7 +132,10 @@ test_nodelist(void *arg)
* (the_nodelist->node_addrs) so we will fail the contain test rarely. */
addr_per_node = 1024;
- /* No node no nothing. The lookups should be empty. */
+ /* No node no nothing. The lookups should be empty. We've mocked the
+ * dirlist_add_trusted_dir_addresses in order for _no_ authorities to be
+ * added to the filter else it makes this test to trigger many false
+ * positive. */
nodelist_set_consensus(dummy_ns);
/* The address set should be empty. */
@@ -143,9 +158,9 @@ test_nodelist(void *arg)
memcpy(rs->descriptor_digest, md->digest, DIGEST256_LEN);
/* Setup the rs, ri and md addresses. */
- rs->addr = ipv4h;
+ tor_addr_copy(&rs->ipv4_addr, &addr_v4);
tor_addr_parse(&rs->ipv6_addr, "1:2:3:4::");
- ri->addr = ipv4h;
+ tor_addr_copy(&ri->ipv4_addr, &addr_v4);
tor_addr_parse(&ri->ipv6_addr, "1:2:3:4::");
tor_addr_parse(&md->ipv6_addr, "1:2:3:4::");
@@ -174,6 +189,9 @@ test_nodelist(void *arg)
UNMOCK(networkstatus_get_latest_consensus);
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 */
@@ -222,11 +240,11 @@ test_exit_no_reentry(void *arg)
memcpy(rs->descriptor_digest, md->digest, DIGEST256_LEN);
/* Setup the rs, ri and md addresses. */
- rs->addr = tor_addr_to_ipv4h(&addr_v4);
- rs->or_port = 444;
+ tor_addr_copy(&rs->ipv4_addr, &addr_v4);
+ rs->ipv4_orport = 444;
tor_addr_parse(&rs->ipv6_addr, "1:2:3:4::");
rs->ipv6_orport = 666;
- ri->addr = tor_addr_to_ipv4h(&addr_v4);
+ tor_addr_copy(&ri->ipv4_addr, &addr_v4);
tor_addr_parse(&ri->ipv6_addr, "1:2:3:4::");
tor_addr_parse(&md->ipv6_addr, "1:2:3:4::");