Commit 83483bd4 authored by Alexander Hansen Færøy's avatar Alexander Hansen Færøy 💬
Browse files

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.
parent 90855083
Loading
Loading
Loading
Loading

changes/ticket40419

0 → 100644
+3 −0
Original line number Original line Diff line number Diff line
  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.
+13 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
#include "feature/nodelist/routerstatus_st.h"
#include "feature/nodelist/routerstatus_st.h"


#include "test/test.h"
#include "test/test.h"
#include "test/rng_test_helpers.h"


static networkstatus_t *dummy_ns = NULL;
static networkstatus_t *dummy_ns = NULL;
static networkstatus_t *
static networkstatus_t *
@@ -62,6 +63,10 @@ test_contains(void *arg)
  tor_addr_parse(&addr_v4, "42.42.42.42");
  tor_addr_parse(&addr_v4, "42.42.42.42");
  uint32_t ipv4h = tor_addr_to_ipv4h(&addr_v4);
  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
  /* Make it very big so the chance of failing the contain test will be
   * extremely rare. */
   * extremely rare. */
  set = address_set_new(1024);
  set = address_set_new(1024);
@@ -89,6 +94,8 @@ test_contains(void *arg)


 done:
 done:
  address_set_free(set);
  address_set_free(set);

  testing_disable_deterministic_rng();
}
}


static void
static void
@@ -108,6 +115,10 @@ test_nodelist(void *arg)
  MOCK(dirlist_add_trusted_dir_addresses,
  MOCK(dirlist_add_trusted_dir_addresses,
       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 = tor_malloc_zero(sizeof(*dummy_ns));
  dummy_ns->flavor = FLAV_MICRODESC;
  dummy_ns->flavor = FLAV_MICRODESC;
  dummy_ns->routerstatus_list = smartlist_new();
  dummy_ns->routerstatus_list = smartlist_new();
@@ -179,6 +190,8 @@ test_nodelist(void *arg)
  UNMOCK(networkstatus_get_latest_consensus_by_flavor);
  UNMOCK(networkstatus_get_latest_consensus_by_flavor);
  UNMOCK(get_estimated_address_per_node);
  UNMOCK(get_estimated_address_per_node);
  UNMOCK(dirlist_add_trusted_dir_addresses);
  UNMOCK(dirlist_add_trusted_dir_addresses);

  testing_disable_deterministic_rng();
}
}


/** Test that the no-reentry exit filter works as intended */
/** Test that the no-reentry exit filter works as intended */