From bed6d5c233d323dd589472639be02d0656cfa863 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Wed, 3 Sep 2014 03:17:47 +0000 Subject: [PATCH] fix test builds without deprecated functions --- include/libtorrent/session.hpp | 7 +- src/bt_peer_connection.cpp | 2 +- test/setup_transfer.cpp | 21 +++ test/setup_transfer.hpp | 2 + test/test_block_cache.cpp | 250 +++++++++++++++++--------------- test/test_web_seed_redirect.cpp | 10 +- test/web_seed_suite.cpp | 9 +- 7 files changed, 169 insertions(+), 132 deletions(-) diff --git a/include/libtorrent/session.hpp b/include/libtorrent/session.hpp index a14367451..ed4d14ba3 100644 --- a/include/libtorrent/session.hpp +++ b/include/libtorrent/session.hpp @@ -368,9 +368,10 @@ namespace libtorrent // included. This flag is on by default. See add_torrent_params. void post_torrent_updates(); - // This function will post a session_stats_alert object, containing a snapshot of - // the performance counters from the internals of libtorrent. To interpret these counters, - // query the session via session_stats_metrics(). + // This function will post a session_stats_alert object, containing a + // snapshot of the performance counters from the internals of libtorrent. + // To interpret these counters, query the session via + // session_stats_metrics(). // // For more information, see the session-statistics_ section. void post_session_stats(); diff --git a/src/bt_peer_connection.cpp b/src/bt_peer_connection.cpp index baf03c02d..d6e7c90ea 100644 --- a/src/bt_peer_connection.cpp +++ b/src/bt_peer_connection.cpp @@ -3331,7 +3331,7 @@ namespace libtorrent // disconnect if the peer has the same peer-id as ourself // since it most likely is ourself then - if (pid == m_ses.get_peer_id()) + if (pid == m_our_peer_id) { if (peer_info_struct()) t->ban_peer(peer_info_struct()); disconnect(errors::self_connection, op_bittorrent, 1); diff --git a/test/setup_transfer.cpp b/test/setup_transfer.cpp index e57f9e387..7787a5429 100644 --- a/test/setup_transfer.cpp +++ b/test/setup_transfer.cpp @@ -121,6 +121,27 @@ int print_failures() return tests_failure; } +std::map get_counters(libtorrent::session& s) +{ + using namespace libtorrent; + s.post_session_stats(); + + std::map ret; + std::auto_ptr a = wait_for_alert(s, session_stats_alert::alert_type + , "get_counters()"); + + TEST_CHECK(a.get()); + if (!a.get()) return ret; + + session_stats_alert* sa = alert_cast(a.get()); + if (!sa) return ret; + + static std::vector metrics = session_stats_metrics(); + for (int i = 0; i < metrics.size(); ++i) + ret[metrics[i].name] = sa->values[metrics[i].value_index]; + return ret; +} + std::auto_ptr wait_for_alert(lt::session& ses, int type, char const* name) { std::auto_ptr ret; diff --git a/test/setup_transfer.hpp b/test/setup_transfer.hpp index 9428f9abd..e443a6e76 100644 --- a/test/setup_transfer.hpp +++ b/test/setup_transfer.hpp @@ -59,6 +59,8 @@ libtorrent::address EXPORT rand_v6(); libtorrent::tcp::endpoint EXPORT rand_tcp_ep(); libtorrent::udp::endpoint EXPORT rand_udp_ep(); +std::map EXPORT get_counters(libtorrent::session& s); + std::auto_ptr EXPORT wait_for_alert( libtorrent::session& ses, int type, char const* name = ""); diff --git a/test/test_block_cache.cpp b/test/test_block_cache.cpp index 716f9b2ab..f59ee340d 100644 --- a/test/test_block_cache.cpp +++ b/test/test_block_cache.cpp @@ -34,9 +34,11 @@ POSSIBILITY OF SUCH DAMAGE. #include "libtorrent/block_cache.hpp" #include "libtorrent/io_service.hpp" #include "libtorrent/alert.hpp" +#include "libtorrent/alert_types.hpp" #include "libtorrent/disk_io_thread.hpp" #include "libtorrent/storage.hpp" #include "libtorrent/alert_dispatcher.hpp" +#include "libtorrent/session.hpp" #include #include @@ -116,7 +118,6 @@ void nop() {} wj.storage = pm; \ cached_piece_entry* pe = NULL; \ int ret = 0; \ - cache_status status; \ file::iovec_t iov[1] #define WRITE_BLOCK(p, b) \ @@ -166,21 +167,23 @@ void test_write() // write block (0,0) WRITE_BLOCK(0, 0); - bc.get_stats(&status); - TEST_EQUAL(status.blocks_read_hit, 0); - TEST_EQUAL(status.write_cache_size, 1); - TEST_EQUAL(status.read_cache_size, 0); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 0); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 1); - TEST_EQUAL(status.arc_volatile_size, 0); + counters c; + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 1); + TEST_EQUAL(c[counters::read_cache_blocks], 0); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 0); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 1); + TEST_EQUAL(c[counters::arc_volatile_size], 0); // try to read it back READ_BLOCK(0, 0, 1); TEST_EQUAL(bc.pinned_blocks(), 1); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::pinned_blocks], 1); // it's supposed to be a cache hit TEST_CHECK(ret >= 0); @@ -188,6 +191,8 @@ void test_write() // return the reference to the buffer we just read RETURN_BUFFER; TEST_EQUAL(bc.pinned_blocks(), 0); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::pinned_blocks], 0); // try to read block (1, 0) READ_BLOCK(1, 0, 1); @@ -195,6 +200,8 @@ void test_write() // that's supposed to be a cache miss TEST_CHECK(ret < 0); TEST_EQUAL(bc.pinned_blocks(), 0); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::pinned_blocks], 0); // just in case it wasn't we're supposed to return the reference // to the buffer @@ -225,17 +232,17 @@ void test_insert() INSERT(0, 0); - bc.get_stats(&status); - TEST_EQUAL(status.blocks_read_hit, 0); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 1); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 1); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + counters c; + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 1); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 1); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); tailqueue jobs; bc.clear(jobs); @@ -247,17 +254,17 @@ void test_evict() INSERT(0, 0); - bc.get_stats(&status); - TEST_EQUAL(status.blocks_read_hit, 0); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 1); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 1); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + counters c; + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 1); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 1); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); tailqueue jobs; // this should make it not be evicted @@ -265,32 +272,30 @@ void test_evict() ++pe->piece_refcount; bc.evict_piece(pe, jobs); - bc.get_stats(&status); - TEST_EQUAL(status.blocks_read_hit, 0); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 0); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 1); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 0); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 1); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); --pe->piece_refcount; bc.evict_piece(pe, jobs); - bc.get_stats(&status); - TEST_EQUAL(status.blocks_read_hit, 0); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 0); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 0); - TEST_EQUAL(status.arc_mru_ghost_size, 1); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 0); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 0); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 1); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); bc.clear(jobs); } @@ -303,53 +308,59 @@ void test_arc_promote() INSERT(0, 0); - bc.get_stats(&status); - TEST_EQUAL(status.blocks_read_hit, 0); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 1); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 1); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + counters c; + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 1); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 1); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); READ_BLOCK(0, 0, 1); TEST_EQUAL(bc.pinned_blocks(), 1); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::pinned_blocks], 1); + // it's supposed to be a cache hit TEST_CHECK(ret >= 0); // return the reference to the buffer we just read RETURN_BUFFER; - bc.get_stats(&status); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 1); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 1); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 1); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 1); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); READ_BLOCK(0, 0, 2); TEST_EQUAL(bc.pinned_blocks(), 1); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::pinned_blocks], 1); + // it's supposed to be a cache hit TEST_CHECK(ret >= 0); // return the reference to the buffer we just read RETURN_BUFFER; - bc.get_stats(&status); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 1); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 0); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 1); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 1); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 0); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 1); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); tailqueue jobs; bc.clear(jobs); @@ -361,47 +372,48 @@ void test_arc_unghost() INSERT(0, 0); - bc.get_stats(&status); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 1); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 1); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + counters c; + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 1); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 1); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); tailqueue jobs; bc.evict_piece(pe, jobs); - bc.get_stats(&status); - TEST_EQUAL(status.write_cache_size, 0); - TEST_EQUAL(status.read_cache_size, 0); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 0); - TEST_EQUAL(status.arc_mru_ghost_size, 1); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); + TEST_EQUAL(c[counters::read_cache_blocks], 0); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 0); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 1); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); // the block is now a ghost. If we cache-hit it, // it should be promoted back to the main list bc.cache_hit(pe, (void*)1, false); - bc.get_stats(&status); - TEST_EQUAL(status.write_cache_size, 0); + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::write_cache_blocks], 0); // we didn't actually read in any blocks, so the cache size // is still 0 - TEST_EQUAL(status.read_cache_size, 0); - TEST_EQUAL(status.pinned_blocks, 0); - TEST_EQUAL(status.arc_mru_size, 1); - TEST_EQUAL(status.arc_mru_ghost_size, 0); - TEST_EQUAL(status.arc_mfu_size, 0); - TEST_EQUAL(status.arc_mfu_ghost_size, 0); - TEST_EQUAL(status.arc_write_size, 0); - TEST_EQUAL(status.arc_volatile_size, 0); + TEST_EQUAL(c[counters::read_cache_blocks], 0); + TEST_EQUAL(c[counters::pinned_blocks], 0); + TEST_EQUAL(c[counters::arc_mru_size], 1); + TEST_EQUAL(c[counters::arc_mru_ghost_size], 0); + TEST_EQUAL(c[counters::arc_mfu_size], 0); + TEST_EQUAL(c[counters::arc_mfu_ghost_size], 0); + TEST_EQUAL(c[counters::arc_write_size], 0); + TEST_EQUAL(c[counters::arc_volatile_size], 0); bc.clear(jobs); } @@ -433,6 +445,10 @@ void test_unaligned_read() // unaligned reads copies the data into a new buffer // rather than TEST_EQUAL(bc.pinned_blocks(), 0); + counters c; + bc.update_stats_counters(c); + TEST_EQUAL(c[counters::pinned_blocks], 0); + // it's supposed to be a cache hit TEST_CHECK(ret >= 0); // return the reference to the buffer we just read diff --git a/test/test_web_seed_redirect.cpp b/test/test_web_seed_redirect.cpp index 03bd8c9b3..908ef1113 100644 --- a/test/test_web_seed_redirect.cpp +++ b/test/test_web_seed_redirect.cpp @@ -37,7 +37,7 @@ POSSIBILITY OF SUCH DAMAGE. using namespace libtorrent; -const int proxy = libtorrent::proxy_settings::none; +const int proxy = libtorrent::settings_pack::none; //static unsigned char random_byte() //{ return std::rand() & 0xff; } @@ -92,10 +92,10 @@ int test_main() { libtorrent::session ses(fingerprint(" ", 0,0,0,0), 0); - session_settings settings; - settings.max_queued_disk_bytes = 256 * 1024; - ses.set_settings(settings); - ses.set_alert_mask(~(alert::progress_notification | alert::stats_notification)); + settings_pack settings; + settings.set_int(settings_pack::max_queued_disk_bytes, 256 * 1024); + settings.set_int(settings_pack::alert_mask, ~(alert::progress_notification | alert::stats_notification)); + ses.apply_settings(settings); // disable keep-alive because otherwise the test will choke on seeing // the disconnect (from the redirect) diff --git a/test/web_seed_suite.cpp b/test/web_seed_suite.cpp index 2974ef62b..03cc745a0 100644 --- a/test/web_seed_suite.cpp +++ b/test/web_seed_suite.cpp @@ -154,8 +154,6 @@ void test_transfer(lt::session& ses, boost::shared_ptr torrent_fil float rate_sum = 0.f; float ses_rate_sum = 0.f; - cache_status cs; - file_storage const& fs = torrent_file->files(); int pad_file_size = 0; for (int i = 0; i < fs.num_files(); ++i) @@ -173,10 +171,6 @@ void test_transfer(lt::session& ses, boost::shared_ptr torrent_fil rate_sum += s.download_payload_rate; ses_rate_sum += ss.payload_download_rate; - ses.get_cache_info(&cs); - if (cs.blocks_read < 1) cs.blocks_read = 1; - if (cs.blocks_written < 1) cs.blocks_written = 1; - print_ses_rate(i / 10.f, &s, NULL); print_alerts(ses, " >> ses", test_ban, false, false, &on_alert); @@ -215,6 +209,9 @@ void test_transfer(lt::session& ses, boost::shared_ptr torrent_fil // the url seed (i.e. banned it) TEST_CHECK(!test_ban || (th.url_seeds().empty() && th.http_seeds().empty())); + cache_status cs; + ses.get_cache_info(&cs); + // if the web seed senr corrupt data and we banned it, we probably didn't // end up using all the cache anyway if (!test_ban)