Unit tests for proposal 271 client-side implementation

This commit is contained in:
Nick Mathewson 2016-09-13 09:45:55 -04:00
parent 08d2d7c404
commit 8fdf2f583c
3 changed files with 53 additions and 1 deletions

View File

@ -2731,7 +2731,7 @@ routerstatus_parse_guardfraction(const char *guardfraction_str,
*
* Parse according to the syntax used by the consensus flavor <b>flav</b>.
**/
static routerstatus_t *
STATIC routerstatus_t *
routerstatus_parse_entry_from_string(memarea_t *area,
const char **s, smartlist_t *tokens,
networkstatus_t *vote,

View File

@ -112,6 +112,14 @@ MOCK_DECL(STATIC dumped_desc_t *, dump_desc_populate_one_file,
STATIC void dump_desc_populate_fifo_from_directory(const char *dirname);
STATIC void dump_desc(const char *desc, const char *type);
STATIC void dump_desc_fifo_cleanup(void);
struct memarea_t;
STATIC routerstatus_t *routerstatus_parse_entry_from_string(
struct memarea_t *area,
const char **s, smartlist_t *tokens,
networkstatus_t *vote,
vote_routerstatus_t *vote_rs,
int consensus_method,
consensus_flavor_t flav);
#endif
#define ED_DESC_SIGNATURE_PREFIX "Tor router descriptor signature v1"

View File

@ -5390,6 +5390,49 @@ test_dir_find_dl_schedule(void* data)
mock_options = NULL;
}
static void
test_dir_assumed_flags(void *arg)
{
(void)arg;
smartlist_t *tokens = smartlist_new();
memarea_t *area = memarea_new();
routerstatus_t *rs = NULL;
/* First, we should always assume that the Running flag is set, even
* when it isn't listed, since the consensus method is always
* higher than 4. */
const char *str1 =
"r example hereiswhereyouridentitygoes 2015-08-30 12:00:00 "
"192.168.0.1 9001 0\n"
"m thisoneislongerbecauseitisa256bitmddigest33\n"
"s Fast Guard Stable\n";
const char *cp = str1;
rs = routerstatus_parse_entry_from_string(area, &cp, tokens, NULL, NULL,
23, FLAV_MICRODESC);
tt_assert(rs);
tt_assert(rs->is_flagged_running);
tt_assert(! rs->is_valid);
tt_assert(! rs->is_exit);
tt_assert(rs->is_fast);
routerstatus_free(rs);
/* With method 24 or later, we can assume "valid" is set. */
cp = str1;
rs = routerstatus_parse_entry_from_string(area, &cp, tokens, NULL, NULL,
24, FLAV_MICRODESC);
tt_assert(rs);
tt_assert(rs->is_flagged_running);
tt_assert(rs->is_valid);
tt_assert(! rs->is_exit);
tt_assert(rs->is_fast);
done:
smartlist_free(tokens);
memarea_drop_all(area);
routerstatus_free(rs);
}
#define DIR_LEGACY(name) \
{ #name, test_dir_ ## name , TT_FORK, NULL, NULL }
@ -5443,6 +5486,7 @@ struct testcase_t dir_tests[] = {
DIR_ARG(find_dl_schedule, TT_FORK, "ba"),
DIR_ARG(find_dl_schedule, TT_FORK, "cf"),
DIR_ARG(find_dl_schedule, TT_FORK, "ca"),
DIR(assumed_flags, 0),
END_OF_TESTCASES
};