mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Add tests for parsing each routerstatus flag.
This commit is contained in:
parent
92af8e5113
commit
31a6d9f499
@ -6052,6 +6052,80 @@ test_dir_find_dl_min_delay(void* data)
|
|||||||
mock_options = NULL;
|
mock_options = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_dir_matching_flags(void *arg)
|
||||||
|
{
|
||||||
|
(void) arg;
|
||||||
|
routerstatus_t *rs_noflags = NULL;
|
||||||
|
routerstatus_t *rs = NULL;
|
||||||
|
char *s = NULL;
|
||||||
|
|
||||||
|
smartlist_t *tokens = smartlist_new();
|
||||||
|
memarea_t *area = memarea_new();
|
||||||
|
|
||||||
|
int expected_val_when_unused = 0;
|
||||||
|
|
||||||
|
const char *ex_noflags =
|
||||||
|
"r example hereiswhereyouridentitygoes 2015-08-30 12:00:00 "
|
||||||
|
"192.168.0.1 9001 0\n"
|
||||||
|
"m thisoneislongerbecauseitisa256bitmddigest33\n"
|
||||||
|
"s\n";
|
||||||
|
const char *cp = ex_noflags;
|
||||||
|
rs_noflags = routerstatus_parse_entry_from_string(
|
||||||
|
area, &cp,
|
||||||
|
cp + strlen(cp),
|
||||||
|
tokens, NULL, NULL,
|
||||||
|
MAX_SUPPORTED_CONSENSUS_METHOD, FLAV_MICRODESC);
|
||||||
|
tt_assert(rs_noflags);
|
||||||
|
|
||||||
|
#define FLAG(string, field) STMT_BEGIN { \
|
||||||
|
tor_asprintf(&s,\
|
||||||
|
"r example hereiswhereyouridentitygoes 2015-08-30 12:00:00 " \
|
||||||
|
"192.168.0.1 9001 0\n" \
|
||||||
|
"m thisoneislongerbecauseitisa256bitmddigest33\n" \
|
||||||
|
"s %s\n", string); \
|
||||||
|
cp = s; \
|
||||||
|
rs = routerstatus_parse_entry_from_string( \
|
||||||
|
area, &cp, \
|
||||||
|
cp + strlen(cp), \
|
||||||
|
tokens, NULL, NULL, \
|
||||||
|
MAX_SUPPORTED_CONSENSUS_METHOD, FLAV_MICRODESC); \
|
||||||
|
/* the field should usually be 0 when no flags are listed */ \
|
||||||
|
tt_int_op(rs_noflags->field, OP_EQ, expected_val_when_unused); \
|
||||||
|
/* the field should be 1 when this flags islisted */ \
|
||||||
|
tt_int_op(rs->field, OP_EQ, 1); \
|
||||||
|
tor_free(s); \
|
||||||
|
routerstatus_free(rs); \
|
||||||
|
} STMT_END
|
||||||
|
|
||||||
|
FLAG("Authority", is_authority);
|
||||||
|
FLAG("BadExit", is_bad_exit);
|
||||||
|
FLAG("Exit", is_exit);
|
||||||
|
FLAG("Fast", is_fast);
|
||||||
|
FLAG("Guard", is_possible_guard);
|
||||||
|
FLAG("HSDir", is_hs_dir);
|
||||||
|
FLAG("Stable", is_stable);
|
||||||
|
FLAG("StaleDesc", is_staledesc);
|
||||||
|
FLAG("V2Dir", is_v2_dir);
|
||||||
|
|
||||||
|
// These flags are assumed to be set whether they're declared or not.
|
||||||
|
expected_val_when_unused = 1;
|
||||||
|
FLAG("Running", is_flagged_running);
|
||||||
|
FLAG("Valid", is_valid);
|
||||||
|
expected_val_when_unused = 0;
|
||||||
|
|
||||||
|
// These flags are no longer used, but still parsed.
|
||||||
|
FLAG("Named", is_named);
|
||||||
|
FLAG("Unnamed", is_unnamed);
|
||||||
|
|
||||||
|
done:
|
||||||
|
tor_free(s);
|
||||||
|
routerstatus_free(rs);
|
||||||
|
routerstatus_free(rs_noflags);
|
||||||
|
memarea_drop_all(area);
|
||||||
|
smartlist_free(tokens);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_dir_assumed_flags(void *arg)
|
test_dir_assumed_flags(void *arg)
|
||||||
{
|
{
|
||||||
@ -6377,6 +6451,7 @@ struct testcase_t dir_tests[] = {
|
|||||||
DIR_ARG(find_dl_min_delay, TT_FORK, "cfr"),
|
DIR_ARG(find_dl_min_delay, TT_FORK, "cfr"),
|
||||||
DIR_ARG(find_dl_min_delay, TT_FORK, "car"),
|
DIR_ARG(find_dl_min_delay, TT_FORK, "car"),
|
||||||
DIR(assumed_flags, 0),
|
DIR(assumed_flags, 0),
|
||||||
|
DIR(matching_flags, 0),
|
||||||
DIR(networkstatus_compute_bw_weights_v10, 0),
|
DIR(networkstatus_compute_bw_weights_v10, 0),
|
||||||
DIR(platform_str, 0),
|
DIR(platform_str, 0),
|
||||||
DIR(networkstatus_consensus_has_ipv6, TT_FORK),
|
DIR(networkstatus_consensus_has_ipv6, TT_FORK),
|
||||||
|
Loading…
Reference in New Issue
Block a user