add test for updating a dht node's id (#953)
This commit is contained in:
parent
7caa99d6f1
commit
7a95ba636e
|
@ -473,11 +473,13 @@ struct obs : dht::dht_observer
|
||||||
{
|
{
|
||||||
void set_external_address(address const& addr
|
void set_external_address(address const& addr
|
||||||
, address const& source) override
|
, address const& source) override
|
||||||
{}
|
{
|
||||||
|
m_external_address = addr;
|
||||||
|
}
|
||||||
|
|
||||||
address external_address(udp proto) override
|
address external_address(udp proto) override
|
||||||
{
|
{
|
||||||
return addr4("236.0.0.1");
|
return m_external_address;
|
||||||
}
|
}
|
||||||
void get_peers(sha1_hash const& ih) override {}
|
void get_peers(sha1_hash const& ih) override {}
|
||||||
void outgoing_get_peers(sha1_hash const& target
|
void outgoing_get_peers(sha1_hash const& target
|
||||||
|
@ -500,6 +502,8 @@ struct obs : dht::dht_observer
|
||||||
bool on_dht_request(char const* query, int query_len
|
bool on_dht_request(char const* query, int query_len
|
||||||
, dht::msg const& request, entry& response) override { return false; }
|
, dht::msg const& request, entry& response) override { return false; }
|
||||||
|
|
||||||
|
address m_external_address = addr4("236.0.0.1");
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_LOGGING
|
#ifndef TORRENT_DISABLE_LOGGING
|
||||||
std::vector<std::string> m_log;
|
std::vector<std::string> m_log;
|
||||||
#endif
|
#endif
|
||||||
|
@ -2695,6 +2699,33 @@ TORRENT_TEST(routing_table_set_id)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TORRENT_TEST(node_set_id)
|
||||||
|
{
|
||||||
|
dht_test_setup t(udp::endpoint(rand_v4(), 20));
|
||||||
|
node_id old_nid = t.dht_node.nid();
|
||||||
|
t.observer.set_external_address(addr4("237.0.0.1"), rand_v4());
|
||||||
|
t.dht_node.update_node_id();
|
||||||
|
TEST_CHECK(old_nid != t.dht_node.nid());
|
||||||
|
// now that we've changed the node's id, make sure the id sent in outgoing messages
|
||||||
|
// reflects the change
|
||||||
|
|
||||||
|
bdecode_node response;
|
||||||
|
send_dht_request(t.dht_node, "ping", t.source, &response);
|
||||||
|
|
||||||
|
dht::key_desc_t const pong_desc[] = {
|
||||||
|
{ "y", bdecode_node::string_t, 1, 0 },
|
||||||
|
{ "t", bdecode_node::string_t, 2, 0 },
|
||||||
|
{ "r", bdecode_node::dict_t, 0, key_desc_t::parse_children },
|
||||||
|
{ "id", bdecode_node::string_t, 20, key_desc_t::last_child },
|
||||||
|
};
|
||||||
|
bdecode_node pong_keys[4];
|
||||||
|
bool ret = dht::verify_message(response, pong_desc, pong_keys, t.error_string
|
||||||
|
, sizeof(t.error_string));
|
||||||
|
TEST_CHECK(ret);
|
||||||
|
if (!ret) return;
|
||||||
|
|
||||||
|
TEST_EQUAL(node_id(pong_keys[3].string_ptr()), t.dht_node.nid());
|
||||||
|
}
|
||||||
|
|
||||||
TORRENT_TEST(read_only_node)
|
TORRENT_TEST(read_only_node)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue