diff options
author | Nick Mathewson <nickm@torproject.org> | 2016-08-19 18:04:02 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2016-09-26 10:56:49 -0700 |
commit | c1be8f9d574dace9941c532ce5d612c315bc74c7 (patch) | |
tree | 75e5731d0e46c6f662ac6118ffd1bf4fa8f017c5 /src/test/test_protover.c | |
parent | 7f718c46f355e194fb6ae8c8aabb72d2492c4d3f (diff) | |
download | tor-c1be8f9d574dace9941c532ce5d612c315bc74c7.tar.gz tor-c1be8f9d574dace9941c532ce5d612c315bc74c7.zip |
Basic backend for the protocol-versions voting algorithm.
[This is a brute-force method that potentially uses way too much
RAM. Need to rethink this a little. Right now you can DOS an
authority by saying "Foo=1-4294967295".]
Diffstat (limited to 'src/test/test_protover.c')
-rw-r--r-- | src/test/test_protover.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/test/test_protover.c b/src/test/test_protover.c index 606ca57b1b..2c72282a5c 100644 --- a/src/test/test_protover.c +++ b/src/test/test_protover.c @@ -80,12 +80,43 @@ test_protover_parse(void *arg) tor_free(re_encoded); } +static void +test_protover_vote(void *arg) +{ + (void) arg; + + smartlist_t *lst = smartlist_new(); + char *result = compute_protover_vote(lst, 1); + + tt_str_op(result, OP_EQ, ""); + tor_free(result); + + smartlist_add(lst, (void*) "Foo=1-10,500 Bar=1,3-7,8"); + result = compute_protover_vote(lst, 1); + tt_str_op(result, OP_EQ, "Bar=1,3-8 Foo=1-10,500"); + tor_free(result); + + smartlist_add(lst, (void*) "Quux=123-456,78 Bar=2-6,8 Foo=9"); + result = compute_protover_vote(lst, 1); + tt_str_op(result, OP_EQ, "Bar=1-8 Foo=1-10,500 Quux=78,123-456"); + tor_free(result); + + result = compute_protover_vote(lst, 2); + tt_str_op(result, OP_EQ, "Bar=3-6,8 Foo=9"); + tor_free(result); + + done: + tor_free(result); + smartlist_free(lst); +} + #define PV_TEST(name, flags) \ { #name, test_protover_ ##name, (flags), NULL, NULL } struct testcase_t protover_tests[] = { PV_TEST(parse, 0), + PV_TEST(vote, 0), END_OF_TESTCASES }; |