remove randomness from test_dht, to make it pass consistently

This commit is contained in:
Arvid Norberg 2013-09-24 08:14:50 +00:00
parent 4991a601c6
commit e6f41c0d16
1 changed files with 19 additions and 16 deletions

View File

@ -105,14 +105,6 @@ sha1_hash generate_next()
return ret; return ret;
} }
node_id random_id()
{
node_id ret;
for (int i = 0; i < 20; ++i)
ret[i] = rand();
return ret;
}
boost::array<char, 64> generate_key() boost::array<char, 64> generate_key()
{ {
boost::array<char, 64> ret; boost::array<char, 64> ret;
@ -326,6 +318,8 @@ struct print_alert : alert_dispatcher
// TODO: 3 test find_data, obfuscated_get_peers and bootstrap // TODO: 3 test find_data, obfuscated_get_peers and bootstrap
int test_main() int test_main()
{ {
libtorrent::random_seed(1936584);
dht_settings sett; dht_settings sett;
sett.max_torrents = 4; sett.max_torrents = 4;
sett.max_dht_items = 4; sett.max_dht_items = 4;
@ -750,16 +744,21 @@ int test_main()
{ {
sett.extended_routing_table = false; sett.extended_routing_table = false;
routing_table tbl(random_id(), 8, sett); node_id id = to_hash("1234876923549721020394873245098347598635");
node_id diff = to_hash("15764f7459456a9453f8719b09547c11d5f34061");
routing_table tbl(id, 8, sett);
// insert 256 nodes evenly distributed across the ID space. // insert 256 nodes evenly distributed across the ID space.
// we expect to fill the top 5 buckets // we expect to fill the top 5 buckets
for (int i = 0; i < 256; ++i) for (int i = 0; i < 256; ++i)
{ {
node_id id = random_id(); // test a node with the same IP:port changing ID
add_and_replace(id, diff);
id[0] = i; id[0] = i;
tbl.node_seen(id, rand_ep(), libtorrent::random() % 20 + 20); tbl.node_seen(id, rand_ep(), 20 + (id[19] & 0xff));
} }
printf("num_active_buckets: %d\n", tbl.num_active_buckets());
TEST_EQUAL(tbl.num_active_buckets(), 6); TEST_EQUAL(tbl.num_active_buckets(), 6);
#if defined TORRENT_DHT_VERBOSE_LOGGING || defined TORRENT_DEBUG #if defined TORRENT_DHT_VERBOSE_LOGGING || defined TORRENT_DEBUG
@ -769,12 +768,15 @@ int test_main()
{ {
sett.extended_routing_table = true; sett.extended_routing_table = true;
routing_table tbl(random_id(), 8, sett); node_id id = to_hash("1234876923549721020394873245098347598635");
node_id diff = to_hash("15764f7459456a9453f8719b09547c11d5f34061");
routing_table tbl(id, 8, sett);
for (int i = 0; i < 256; ++i) for (int i = 0; i < 256; ++i)
{ {
node_id id = random_id(); add_and_replace(id, diff);
id[0] = i; id[0] = i;
tbl.node_seen(id, rand_ep(), libtorrent::random() % 20 + 20); tbl.node_seen(id, rand_ep(), 20 + (id[19] & 0xff));
} }
TEST_EQUAL(tbl.num_active_buckets(), 6); TEST_EQUAL(tbl.num_active_buckets(), 6);
@ -1003,10 +1005,11 @@ int test_main()
nodes.clear(); nodes.clear();
for (int i = 0; i < 7000; ++i) for (int i = 0; i < 7000; ++i)
{ {
table.node_seen(tmp, udp::endpoint(rand_v4(), rand()), libtorrent::random() % 20 + 20); table.node_seen(tmp, udp::endpoint(rand_v4(), rand()), 20 + (tmp[19] & 0xff));
add_and_replace(tmp, diff); add_and_replace(tmp, diff);
} }
TEST_EQUAL(table.num_active_buckets(), 11); printf("active buckets: %d\n", table.num_active_buckets());
TEST_EQUAL(table.num_active_buckets(), 10);
TEST_CHECK(table.size().get<0>() > 10 * 10); TEST_CHECK(table.size().get<0>() > 10 * 10);
//#error test num_global_nodes //#error test num_global_nodes
//#error test need_refresh //#error test need_refresh