|
@@ -620,13 +620,81 @@ test_dir_param_voting(void)
|
|
|
test_eq(0, networkstatus_get_param(&vote4, "foobar", 0, -100, 8));
|
|
|
|
|
|
smartlist_add(votes, &vote1);
|
|
|
+
|
|
|
+ /* Do the first tests without adding all the other votes, for
|
|
|
+ * networks without many dirauths. */
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 11, 6);
|
|
|
+ test_streq(res, "ab=90 abcd=20 cw=50 x-yz=-99");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 2);
|
|
|
+ test_streq(res, "");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 1);
|
|
|
+ test_streq(res, "ab=90 abcd=20 cw=50 x-yz=-99");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
smartlist_add(votes, &vote2);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 11, 2);
|
|
|
+ test_streq(res, "ab=27 abcd=20 cw=5 x-yz=-99");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 2);
|
|
|
+ test_streq(res, "ab=27 cw=5 x-yz=-99");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 3);
|
|
|
+ test_streq(res, "ab=27 cw=5 x-yz=-99");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 6);
|
|
|
+ test_streq(res, "");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
smartlist_add(votes, &vote3);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 11, 3);
|
|
|
+ test_streq(res, "ab=27 abcd=20 c=60 cw=50 x-yz=-9 zzzzz=101");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 3);
|
|
|
+ test_streq(res, "ab=27 abcd=20 cw=50 x-yz=-9");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 5);
|
|
|
+ test_streq(res, "cw=50 x-yz=-9");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 9);
|
|
|
+ test_streq(res, "cw=50 x-yz=-9");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
smartlist_add(votes, &vote4);
|
|
|
|
|
|
- res = dirvote_compute_params(votes);
|
|
|
- test_streq(res,
|
|
|
- "ab=90 abcd=20 c=1 cw=50 x-yz=-9 zzzzz=101");
|
|
|
+ res = dirvote_compute_params(votes, 11, 4);
|
|
|
+ test_streq(res, "ab=90 abcd=20 c=1 cw=50 x-yz=-9 zzzzz=101");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 4);
|
|
|
+ test_streq(res, "ab=90 abcd=20 cw=50 x-yz=-9");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 5);
|
|
|
+ test_streq(res, "ab=90 abcd=20 cw=50 x-yz=-9");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ /* Test that the special-cased "at least three dirauths voted for
|
|
|
+ * this param" logic works as expected. */
|
|
|
+ res = dirvote_compute_params(votes, 12, 6);
|
|
|
+ test_streq(res, "ab=90 abcd=20 cw=50 x-yz=-9");
|
|
|
+ tor_free(res);
|
|
|
+
|
|
|
+ res = dirvote_compute_params(votes, 12, 10);
|
|
|
+ test_streq(res, "ab=90 abcd=20 cw=50 x-yz=-9");
|
|
|
+ tor_free(res);
|
|
|
|
|
|
done:
|
|
|
tor_free(res);
|
|
@@ -1049,7 +1117,7 @@ test_dir_v3_networkstatus(void)
|
|
|
"Running:Stable:V2Dir:Valid");
|
|
|
tor_free(cp);
|
|
|
cp = smartlist_join_strings(con->net_params, ":", 0, NULL);
|
|
|
- test_streq(cp, "bar=2000000000:circuitwindow=80:foo=660");
|
|
|
+ test_streq(cp, "circuitwindow=80:foo=660");
|
|
|
tor_free(cp);
|
|
|
|
|
|
test_eq(4, smartlist_len(con->voters)); /*3 voters, 1 legacy key.*/
|