Add historic bwweight tests, comments, line len fixes

This commit is contained in:
Matt Traudt 2016-10-09 15:41:08 -04:00 committed by Nick Mathewson
parent 7ba0ae9426
commit 6629c5c3fe
2 changed files with 105 additions and 33 deletions

View File

@ -4,4 +4,4 @@
small testing networks) and causing an error. Fixes bug 14881. small testing networks) and causing an error. Fixes bug 14881.
o Minor features (unit tests): o Minor features (unit tests):
- Add test for networkstatus_compute_bw_weights_v10 - Add tests for networkstatus_compute_bw_weights_v10

View File

@ -1886,7 +1886,8 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
/* no case. one or more of the values is 0 */ /* no case. one or more of the values is 0 */
G = M = E = D = 0; G = M = E = D = 0;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 0); tt_int_op(ret, OP_EQ, 0);
tt_int_op(smartlist_len(chunks), OP_EQ, 0); tt_int_op(smartlist_len(chunks), OP_EQ, 0);
@ -1896,13 +1897,14 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
G = E = 10; G = E = 10;
M = D = 1; M = D = 1;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_int_op(smartlist_len(chunks), OP_EQ, 1); tt_int_op(smartlist_len(chunks), OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=3333 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=3333 "
"Wbe=3000 Wbg=3000 Wbm=10000 Wdb=10000 Web=10000 Wed=3333 Wee=7000 " "Wbe=3000 Wbg=3000 Wbm=10000 Wdb=10000 Web=10000 Wed=3333 Wee=7000 "
"Weg=3333 Wem=7000 Wgb=10000 Wgd=3333 Wgg=7000 Wgm=7000 Wmb=10000 Wmd=3333 " "Weg=3333 Wem=7000 Wgb=10000 Wgd=3333 Wgg=7000 Wgm=7000 Wmb=10000 "
"Wme=3000 Wmg=3000 Wmm=10000\n"); "Wmd=3333 Wme=3000 Wmg=3000 Wmm=10000\n");
smartlist_clear(chunks); smartlist_clear(chunks);
/* case 2a E scarce */ /* case 2a E scarce */
@ -1910,12 +1912,13 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
G = 20; G = 20;
E = D = 5; E = D = 5;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 "
"Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=10000 Wee=10000 Weg=10000 " "Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=10000 Wee=10000 Weg=10000 "
"Wem=10000 Wgb=10000 Wgd=0 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=0 Wme=0 Wmg=0 " "Wem=10000 Wgb=10000 Wgd=0 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=0 Wme=0 "
"Wmm=10000\n"); "Wmg=0 Wmm=10000\n");
smartlist_clear(chunks); smartlist_clear(chunks);
/* case 2a G scarce */ /* case 2a G scarce */
@ -1923,7 +1926,8 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
E = 20; E = 20;
G = D = 5; G = D = 5;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 "
"Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=0 Wee=10000 Weg=0 Wem=10000 " "Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=0 Wee=10000 Weg=0 Wem=10000 "
@ -1937,12 +1941,13 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
G = 10; G = 10;
D = 100; D = 100;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=4000 Wbe=0 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=4000 "
"Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=2000 Wee=10000 Weg=2000 Wem=10000 " "Wbe=0 Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=2000 Wee=10000 Weg=2000 "
"Wgb=10000 Wgd=4000 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=4000 Wme=0 Wmg=0 " "Wem=10000 Wgb=10000 Wgd=4000 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=4000 "
"Wmm=10000\n"); "Wme=0 Wmg=0 Wmm=10000\n");
smartlist_clear(chunks); smartlist_clear(chunks);
/* case 2b2 */ /* case 2b2 */
@ -1951,24 +1956,27 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
G = 10; G = 10;
D = 100; D = 100;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=666 Wbe=0 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=666 Wbe=0 "
"Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=3666 Wee=10000 Weg=3666 Wem=10000 " "Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=3666 Wee=10000 Weg=3666 "
"Wgb=10000 Wgd=5668 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=666 Wme=0 Wmg=0 " "Wem=10000 Wgb=10000 Wgd=5668 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=666 "
"Wmm=10000\n"); "Wme=0 Wmg=0 Wmm=10000\n");
smartlist_clear(chunks); smartlist_clear(chunks);
/* case 2b3 */ /* case 2b3 */
/* XXX I can't get a combination of values that hits this case without error, so /* XXX I can't get a combination of values that hits this case without error,
* this just tests that it fails. See #20285 */ * so this just tests that it fails. See #20285. Also see #20284 as 2b3 does
* not follow dir-spec. */
/* (E < T/3 && G < T/3) && (E+D>=G || G+D>=E) && (M > T/3) */ /* (E < T/3 && G < T/3) && (E+D>=G || G+D>=E) && (M > T/3) */
M = 80; M = 80;
E = 30; E = 30;
G = 30; G = 30;
D = 30; D = 30;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 0); tt_int_op(ret, OP_EQ, 0);
smartlist_clear(chunks); smartlist_clear(chunks);
@ -1978,12 +1986,13 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
G = 10; G = 10;
D = 5; D = 5;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=3333 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 "
"Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=0 Wee=6667 Weg=0 Wem=6667 " "Wbe=3333 Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=0 Wee=6667 Weg=0 "
"Wgb=10000 Wgd=10000 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=0 Wme=3333 Wmg=0 " "Wem=6667 Wgb=10000 Wgd=10000 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=0 "
"Wmm=10000\n"); "Wme=3333 Wmg=0 Wmm=10000\n");
smartlist_clear(chunks); smartlist_clear(chunks);
/* case 3a E scarce */ /* case 3a E scarce */
@ -1992,7 +2001,8 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
G = 30; G = 30;
D = 5; D = 5;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 "
"Wbg=3333 Wbm=10000 Wdb=10000 Web=10000 Wed=10000 Wee=10000 Weg=10000 " "Wbg=3333 Wbm=10000 Wdb=10000 Web=10000 Wed=10000 Wee=10000 Weg=10000 "
@ -2006,12 +2016,13 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
G = 10; G = 10;
D = 10; D = 10;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=3334 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 "
"Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=0 Wee=6666 Weg=0 Wem=6666 " "Wbe=3334 Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=0 Wee=6666 Weg=0 "
"Wgb=10000 Wgd=10000 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=0 Wme=3334 Wmg=0 " "Wem=6666 Wgb=10000 Wgd=10000 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=0 "
"Wmm=10000\n"); "Wme=3334 Wmg=0 Wmm=10000\n");
smartlist_clear(chunks); smartlist_clear(chunks);
/* case 3be */ /* case 3be */
@ -2020,13 +2031,74 @@ test_dir_networkstatus_compute_bw_weights_v10(void *arg)
G = 30; G = 30;
D = 10; D = 10;
T = G + M + E + D; T = G + M + E + D;
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T, weight_scale); ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_int_op(ret, OP_EQ, 1); tt_int_op(ret, OP_EQ, 1);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 " tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 "
"Wbg=3334 Wbm=10000 Wdb=10000 Web=10000 Wed=10000 Wee=10000 Weg=10000 " "Wbg=3334 Wbm=10000 Wdb=10000 Web=10000 Wed=10000 Wee=10000 Weg=10000 "
"Wem=10000 Wgb=10000 Wgd=0 Wgg=6666 Wgm=6666 Wmb=10000 Wmd=0 Wme=0 " "Wem=10000 Wgb=10000 Wgd=0 Wgg=6666 Wgm=6666 Wmb=10000 Wmd=0 Wme=0 "
"Wmg=3334 Wmm=10000\n"); "Wmg=3334 Wmm=10000\n");
smartlist_clear(chunks); smartlist_clear(chunks);
/* case from 21 Jul 2013 (3be) */
G = 5483409;
M = 1455379;
E = 980834;
D = 3385803;
T = 11305425;
tt_int_op(G+M+E+D, OP_EQ, T);
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=883 Wbe=0 "
"Wbg=3673 Wbm=10000 Wdb=10000 Web=10000 Wed=8233 Wee=10000 Weg=8233 "
"Wem=10000 Wgb=10000 Wgd=883 Wgg=6327 Wgm=6327 Wmb=10000 Wmd=883 Wme=0 "
"Wmg=3673 Wmm=10000\n");
smartlist_clear(chunks);
/* case from 04 Oct 2016 (3a E scarce) */
G=29322240;
M=4721546;
E=1522058;
D=9273571;
T=44839415;
tt_int_op(G+M+E+D, OP_EQ, T);
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=0 Wbe=0 "
"Wbg=4194 Wbm=10000 Wdb=10000 Web=10000 Wed=10000 Wee=10000 Weg=10000 "
"Wem=10000 Wgb=10000 Wgd=0 Wgg=5806 Wgm=5806 Wmb=10000 Wmd=0 Wme=0 "
"Wmg=4194 Wmm=10000\n");
smartlist_clear(chunks);
/* case from 04 Sep 2013 (2b1) */
G=3091352;
M=1838837;
E=2109300;
D=2469369;
T=9508858;
tt_int_op(G+M+E+D, OP_EQ, T);
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=317 "
"Wbe=5938 Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=9366 Wee=4061 "
"Weg=9366 Wem=4061 Wgb=10000 Wgd=317 Wgg=10000 Wgm=10000 Wmb=10000 "
"Wmd=317 Wme=5938 Wmg=0 Wmm=10000\n");
smartlist_clear(chunks);
/* explicitly test initializing weights to 1*/
G=1;
M=1;
E=1;
D=1;
T=4;
tt_int_op(G+M+E+D, OP_EQ, T);
ret = networkstatus_compute_bw_weights_v10(chunks, G, M, E, D, T,
weight_scale);
tt_str_op(smartlist_get(chunks, 0), OP_EQ, "bandwidth-weights Wbd=3333 "
"Wbe=0 Wbg=0 Wbm=10000 Wdb=10000 Web=10000 Wed=3333 Wee=10000 Weg=3333 "
"Wem=10000 Wgb=10000 Wgd=3333 Wgg=10000 Wgm=10000 Wmb=10000 Wmd=3333 "
"Wme=0 Wmg=0 Wmm=10000\n");
smartlist_clear(chunks);
done: done:
return; return;
} }