mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
coverage: Repeat the test for avoiding failed intro points
This test, in test_client_pick_intro(), will have different coverage depending on whether it selects a good intro point the first time or whether it has to try a few times. Since it produces the shorter coverage with P=1/4, repeat this test 64 times so that it only provides reduced coverage with P=1/2^128. The performance cost is negligible. Closes ticket 25996. This test was introduced in 0.3.2.1-alpha.
This commit is contained in:
parent
60fad8d41f
commit
a2b53c1d0b
5
changes/ticket25996
Normal file
5
changes/ticket25996
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
o Minor bugfixes (testing):
|
||||||
|
- Repeat part of the test in test_client_pick_intro() a number of times,
|
||||||
|
to give it consistent coverage. Fixes bug 25996; bugfix on
|
||||||
|
0.3.2.1-alpha.
|
||||||
|
|
@ -397,21 +397,25 @@ test_client_pick_intro(void *arg)
|
|||||||
} SMARTLIST_FOREACH_END(ip);
|
} SMARTLIST_FOREACH_END(ip);
|
||||||
|
|
||||||
/* Try to get a random intro: Should return the chosen one! */
|
/* Try to get a random intro: Should return the chosen one! */
|
||||||
|
/* (We try several times, to make sure this behavior is consistent, and to
|
||||||
|
* cover the different cases of client_get_random_intro().) */
|
||||||
|
for (int i = 0; i < 64; ++i) {
|
||||||
extend_info_t *ip = client_get_random_intro(&service_kp.pubkey);
|
extend_info_t *ip = client_get_random_intro(&service_kp.pubkey);
|
||||||
tor_assert(ip);
|
tor_assert(ip);
|
||||||
tt_assert(!tor_mem_is_zero((char*)ip->identity_digest, DIGEST_LEN));
|
tt_assert(!tor_mem_is_zero((char*)ip->identity_digest, DIGEST_LEN));
|
||||||
tt_mem_op(ip->identity_digest, OP_EQ, chosen_intro_ei->identity_digest,
|
tt_mem_op(ip->identity_digest, OP_EQ, chosen_intro_ei->identity_digest,
|
||||||
DIGEST_LEN);
|
DIGEST_LEN);
|
||||||
|
extend_info_free(ip);
|
||||||
|
}
|
||||||
|
|
||||||
extend_info_free(chosen_intro_ei);
|
extend_info_free(chosen_intro_ei);
|
||||||
extend_info_free(ip);
|
|
||||||
|
|
||||||
/* Now also mark the chosen one as failed: See that we can't get any intro
|
/* Now also mark the chosen one as failed: See that we can't get any intro
|
||||||
points anymore. */
|
points anymore. */
|
||||||
hs_cache_client_intro_state_note(&service_kp.pubkey,
|
hs_cache_client_intro_state_note(&service_kp.pubkey,
|
||||||
&chosen_intro_point->auth_key_cert->signed_key,
|
&chosen_intro_point->auth_key_cert->signed_key,
|
||||||
INTRO_POINT_FAILURE_TIMEOUT);
|
INTRO_POINT_FAILURE_TIMEOUT);
|
||||||
ip = client_get_random_intro(&service_kp.pubkey);
|
extend_info_t *ip = client_get_random_intro(&service_kp.pubkey);
|
||||||
tor_assert(!ip);
|
tor_assert(!ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user