aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_entrynodes.c
diff options
context:
space:
mode:
authorGeorge Kadianakis <desnacked@riseup.net>2019-02-14 17:39:34 +0200
committerGeorge Kadianakis <desnacked@riseup.net>2019-02-14 17:39:34 +0200
commit9bfe4ed6dd666bb276e35b6e5c8c3de0c218bce0 (patch)
tree3e7cb22f7289d2bb6c6af0ef3b75506c5af833af /src/test/test_entrynodes.c
parent6efc2a0e1f785e1e12fb8c7fd4b6aa4feceb647a (diff)
parent805f75182a87286a727df323be7c37add595bdff (diff)
downloadtor-9bfe4ed6dd666bb276e35b6e5c8c3de0c218bce0.tar.gz
tor-9bfe4ed6dd666bb276e35b6e5c8c3de0c218bce0.zip
Merge branch 'tor-github/pr/536' into maint-0.3.5
Diffstat (limited to 'src/test/test_entrynodes.c')
-rw-r--r--src/test/test_entrynodes.c98
1 files changed, 59 insertions, 39 deletions
diff --git a/src/test/test_entrynodes.c b/src/test/test_entrynodes.c
index 3f1056c320..8f0b960046 100644
--- a/src/test/test_entrynodes.c
+++ b/src/test/test_entrynodes.c
@@ -74,9 +74,10 @@ bfn_mock_nodelist_get_list(void)
}
static networkstatus_t *
-bfn_mock_networkstatus_get_live_consensus(time_t now)
+bfn_mock_networkstatus_get_reasonably_live_consensus(time_t now, int flavor)
{
(void)now;
+ (void)flavor;
return dummy_consensus;
}
@@ -118,7 +119,7 @@ big_fake_network_cleanup(const struct testcase_t *testcase, void *ptr)
UNMOCK(nodelist_get_list);
UNMOCK(node_get_by_id);
UNMOCK(get_or_state);
- UNMOCK(networkstatus_get_live_consensus);
+ UNMOCK(networkstatus_get_reasonably_live_consensus);
or_state_free(dummy_state);
dummy_state = NULL;
tor_free(dummy_consensus);
@@ -136,6 +137,12 @@ big_fake_network_setup(const struct testcase_t *testcase)
* that we need for entrynodes.c. */
const int N_NODES = 271;
+ const char *argument = testcase->setup_data;
+ int reasonably_live_consensus = 0;
+ if (argument) {
+ reasonably_live_consensus = strstr(argument, "reasonably-live") != NULL;
+ }
+
big_fake_net_nodes = smartlist_new();
for (i = 0; i < N_NODES; ++i) {
curve25519_secret_key_t curve25519_secret_key;
@@ -191,15 +198,23 @@ big_fake_network_setup(const struct testcase_t *testcase)
dummy_state = tor_malloc_zero(sizeof(or_state_t));
dummy_consensus = tor_malloc_zero(sizeof(networkstatus_t));
- dummy_consensus->valid_after = approx_time() - 3600;
- dummy_consensus->valid_until = approx_time() + 3600;
+ if (reasonably_live_consensus) {
+ /* Make the dummy consensus valid from 4 hours ago, but expired an hour
+ * ago. */
+ dummy_consensus->valid_after = approx_time() - 4*3600;
+ dummy_consensus->valid_until = approx_time() - 3600;
+ } else {
+ /* Make the dummy consensus valid for an hour either side of now. */
+ dummy_consensus->valid_after = approx_time() - 3600;
+ dummy_consensus->valid_until = approx_time() + 3600;
+ }
MOCK(nodelist_get_list, bfn_mock_nodelist_get_list);
MOCK(node_get_by_id, bfn_mock_node_get_by_id);
MOCK(get_or_state,
get_or_state_replacement);
- MOCK(networkstatus_get_live_consensus,
- bfn_mock_networkstatus_get_live_consensus);
+ MOCK(networkstatus_get_reasonably_live_consensus,
+ bfn_mock_networkstatus_get_reasonably_live_consensus);
/* Return anything but NULL (it's interpreted as test fail) */
return (void*)testcase;
}
@@ -2691,7 +2706,7 @@ test_entry_guard_upgrade_not_blocked_by_worse_circ_pending(void *arg)
}
static void
-test_enty_guard_should_expire_waiting(void *arg)
+test_entry_guard_should_expire_waiting(void *arg)
{
(void)arg;
circuit_guard_state_t *fake_state = tor_malloc_zero(sizeof(*fake_state));
@@ -3012,39 +3027,42 @@ static const struct testcase_setup_t upgrade_circuits = {
upgrade_circuits_setup, upgrade_circuits_cleanup
};
+#define NO_PREFIX_TEST(name) \
+ { #name, test_ ## name, 0, NULL, NULL }
+
+#define EN_TEST_BASE(name, fork, setup, arg) \
+ { #name, test_entry_guard_ ## name, fork, setup, (void*)(arg) }
+
+#define EN_TEST(name) EN_TEST_BASE(name, 0, NULL, NULL)
+#define EN_TEST_FORK(name) EN_TEST_BASE(name, TT_FORK, NULL, NULL)
+
#define BFN_TEST(name) \
- { #name, test_entry_guard_ ## name, TT_FORK, &big_fake_network, NULL }
+ EN_TEST_BASE(name, TT_FORK, &big_fake_network, NULL), \
+ { #name "_reasonably_live", test_entry_guard_ ## name, TT_FORK, \
+ &big_fake_network, (void*)("reasonably-live") }
-#define UPGRADE_TEST(name, arg) \
- { #name, test_entry_guard_ ## name, TT_FORK, &upgrade_circuits, \
- (void*)(arg) }
+#define UPGRADE_TEST(name, arg) \
+ EN_TEST_BASE(name, TT_FORK, &upgrade_circuits, arg), \
+ { #name "_reasonably_live", test_entry_guard_ ## name, TT_FORK, \
+ &upgrade_circuits, (void*)(arg " reasonably-live") }
struct testcase_t entrynodes_tests[] = {
- { "node_preferred_orport",
- test_node_preferred_orport,
- 0, NULL, NULL },
- { "entry_guard_describe", test_entry_guard_describe, 0, NULL, NULL },
- { "randomize_time", test_entry_guard_randomize_time, 0, NULL, NULL },
- { "encode_for_state_minimal",
- test_entry_guard_encode_for_state_minimal, 0, NULL, NULL },
- { "encode_for_state_maximal",
- test_entry_guard_encode_for_state_maximal, 0, NULL, NULL },
- { "parse_from_state_minimal",
- test_entry_guard_parse_from_state_minimal, 0, NULL, NULL },
- { "parse_from_state_maximal",
- test_entry_guard_parse_from_state_maximal, 0, NULL, NULL },
- { "parse_from_state_failure",
- test_entry_guard_parse_from_state_failure, 0, NULL, NULL },
- { "parse_from_state_partial_failure",
- test_entry_guard_parse_from_state_partial_failure, 0, NULL, NULL },
- { "parse_from_state_full",
- test_entry_guard_parse_from_state_full, TT_FORK, NULL, NULL },
- { "parse_from_state_broken",
- test_entry_guard_parse_from_state_broken, TT_FORK, NULL, NULL },
- { "get_guard_selection_by_name",
- test_entry_guard_get_guard_selection_by_name, TT_FORK, NULL, NULL },
- { "number_of_primaries",
- test_entry_guard_number_of_primaries, TT_FORK, NULL, NULL },
+ NO_PREFIX_TEST(node_preferred_orport),
+ NO_PREFIX_TEST(entry_guard_describe),
+
+ EN_TEST(randomize_time),
+ EN_TEST(encode_for_state_minimal),
+ EN_TEST(encode_for_state_maximal),
+ EN_TEST(parse_from_state_minimal),
+ EN_TEST(parse_from_state_maximal),
+ EN_TEST(parse_from_state_failure),
+ EN_TEST(parse_from_state_partial_failure),
+
+ EN_TEST_FORK(parse_from_state_full),
+ EN_TEST_FORK(parse_from_state_broken),
+ EN_TEST_FORK(get_guard_selection_by_name),
+ EN_TEST_FORK(number_of_primaries),
+
BFN_TEST(choose_selection_initial),
BFN_TEST(add_single_guard),
BFN_TEST(node_filter),
@@ -3058,7 +3076,9 @@ struct testcase_t entrynodes_tests[] = {
BFN_TEST(sample_reachable_filtered_empty),
BFN_TEST(retry_unreachable),
BFN_TEST(manage_primary),
- { "guard_preferred", test_entry_guard_guard_preferred, TT_FORK, NULL, NULL },
+
+ EN_TEST_FORK(guard_preferred),
+
BFN_TEST(select_for_circuit_no_confirmed),
BFN_TEST(select_for_circuit_confirmed),
BFN_TEST(select_for_circuit_highlevel_primary),
@@ -3081,8 +3101,8 @@ struct testcase_t entrynodes_tests[] = {
UPGRADE_TEST(upgrade_not_blocked_by_restricted_circ_pending,
"c2-done"),
UPGRADE_TEST(upgrade_not_blocked_by_worse_circ_pending, "c1-done"),
- { "should_expire_waiting", test_enty_guard_should_expire_waiting, TT_FORK,
- NULL, NULL },
+
+ EN_TEST_FORK(should_expire_waiting),
END_OF_TESTCASES
};