forked from premiere/premiere-libtorrent
add rename file test
This commit is contained in:
parent
19a5d9f989
commit
200b3c4965
|
@ -151,7 +151,7 @@ std::map<std::string, boost::int64_t> get_counters(libtorrent::session& s)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
alert const* wait_for_alert(lt::session& ses, int type, char const* name)
|
alert const* wait_for_alert(lt::session& ses, int type, char const* name, int num)
|
||||||
{
|
{
|
||||||
time_point end = libtorrent::clock_type::now() + seconds(10);
|
time_point end = libtorrent::clock_type::now() + seconds(10);
|
||||||
while (true)
|
while (true)
|
||||||
|
@ -169,12 +169,13 @@ alert const* wait_for_alert(lt::session& ses, int type, char const* name)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "%s: %s: [%s] %s\n", time_now_string(), name
|
fprintf(stdout, "%s: %s: [%s] %s\n", time_now_string(), name
|
||||||
, (*i)->what(), (*i)->message().c_str());
|
, (*i)->what(), (*i)->message().c_str());
|
||||||
if ((*i)->type() == type && !ret)
|
if ((*i)->type() == type)
|
||||||
{
|
{
|
||||||
ret = *i;
|
ret = *i;
|
||||||
|
--num;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ret) return ret;
|
if (num == 0) return ret;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ EXPORT libtorrent::sha1_hash rand_hash();
|
||||||
EXPORT std::map<std::string, boost::int64_t> get_counters(libtorrent::session& s);
|
EXPORT std::map<std::string, boost::int64_t> get_counters(libtorrent::session& s);
|
||||||
|
|
||||||
EXPORT libtorrent::alert const* wait_for_alert(
|
EXPORT libtorrent::alert const* wait_for_alert(
|
||||||
libtorrent::session& ses, int type, char const* name = "");
|
libtorrent::session& ses, int type, char const* name = "", int num = 1);
|
||||||
|
|
||||||
EXPORT void print_ses_rate(float time
|
EXPORT void print_ses_rate(float time
|
||||||
, libtorrent::torrent_status const* st1
|
, libtorrent::torrent_status const* st1
|
||||||
|
|
|
@ -116,11 +116,8 @@ void run_until(io_service& ios, bool const& done)
|
||||||
|
|
||||||
void nop() {}
|
void nop() {}
|
||||||
|
|
||||||
boost::shared_ptr<default_storage> setup_torrent(file_storage& fs
|
boost::shared_ptr<torrent_info> setup_torrent_info(file_storage& fs
|
||||||
, file_pool& fp
|
, std::vector<char>& buf)
|
||||||
, std::vector<char>& buf
|
|
||||||
, std::string const& test_path
|
|
||||||
, aux::session_settings& set)
|
|
||||||
{
|
{
|
||||||
fs.add_file(combine_path("temp_storage", "test1.tmp"), 8);
|
fs.add_file(combine_path("temp_storage", "test1.tmp"), 8);
|
||||||
fs.add_file(combine_path("temp_storage", combine_path("folder1", "test2.tmp")), 8);
|
fs.add_file(combine_path("temp_storage", combine_path("folder1", "test2.tmp")), 8);
|
||||||
|
@ -145,6 +142,17 @@ boost::shared_ptr<default_storage> setup_torrent(file_storage& fs
|
||||||
, ec.message().c_str());
|
, ec.message().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
boost::shared_ptr<default_storage> setup_torrent(file_storage& fs
|
||||||
|
, file_pool& fp
|
||||||
|
, std::vector<char>& buf
|
||||||
|
, std::string const& test_path
|
||||||
|
, aux::session_settings& set)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<torrent_info> info = setup_torrent_info(fs, buf);
|
||||||
|
|
||||||
storage_params p;
|
storage_params p;
|
||||||
p.files = &fs;
|
p.files = &fs;
|
||||||
p.pool = &fp;
|
p.pool = &fp;
|
||||||
|
@ -731,6 +739,68 @@ bool got_file_rename_alert(alert const* a)
|
||||||
|| alert_cast<libtorrent::file_rename_failed_alert>(a);
|
|| alert_cast<libtorrent::file_rename_failed_alert>(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TORRENT_TEST(rename_file)
|
||||||
|
{
|
||||||
|
std::vector<char> buf;
|
||||||
|
file_storage fs;
|
||||||
|
boost::shared_ptr<torrent_info> info = setup_torrent_info(fs, buf);
|
||||||
|
|
||||||
|
const int mask = alert::all_categories
|
||||||
|
& ~(alert::performance_warning
|
||||||
|
| alert::stats_notification);
|
||||||
|
|
||||||
|
settings_pack pack;
|
||||||
|
pack.set_bool(settings_pack::enable_lsd, false);
|
||||||
|
pack.set_bool(settings_pack::enable_natpmp, false);
|
||||||
|
pack.set_bool(settings_pack::enable_upnp, false);
|
||||||
|
pack.set_bool(settings_pack::enable_dht, false);
|
||||||
|
pack.set_int(settings_pack::alert_mask, mask);
|
||||||
|
pack.set_bool(settings_pack::disable_hash_checks, true);
|
||||||
|
lt::session ses(pack);
|
||||||
|
|
||||||
|
add_torrent_params p;
|
||||||
|
p.ti = info;
|
||||||
|
p.save_path = ".";
|
||||||
|
error_code ec;
|
||||||
|
torrent_handle h = ses.add_torrent(p, ec);
|
||||||
|
|
||||||
|
// make it a seed
|
||||||
|
std::vector<char> tmp(info->piece_length());
|
||||||
|
for (int i = 0; i < info->num_pieces(); ++i)
|
||||||
|
h.add_piece(i, &tmp[0]);
|
||||||
|
|
||||||
|
// wait for the files to have been written
|
||||||
|
alert const* pf = wait_for_alert(ses, piece_finished_alert::alert_type, "ses", info->num_pieces());
|
||||||
|
TEST_CHECK(pf);
|
||||||
|
|
||||||
|
// now rename them. This is the test
|
||||||
|
for (int i = 0; i < info->num_files(); ++i)
|
||||||
|
{
|
||||||
|
std::string name = fs.file_path(i);
|
||||||
|
h.rename_file(i, "__" + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// wait fir the files to have been renamed
|
||||||
|
alert const* fra = wait_for_alert(ses, file_renamed_alert::alert_type, "ses", info->num_files());
|
||||||
|
TEST_CHECK(fra);
|
||||||
|
|
||||||
|
TEST_CHECK(exists("__" + info->name()));
|
||||||
|
|
||||||
|
h.save_resume_data();
|
||||||
|
alert const* ra = wait_for_alert(ses, save_resume_data_alert::alert_type);
|
||||||
|
TEST_CHECK(ra);
|
||||||
|
if (!ra) return;
|
||||||
|
entry resume = *alert_cast<save_resume_data_alert>(ra)->resume_data;
|
||||||
|
|
||||||
|
std::cerr << resume.to_string() << "\n";
|
||||||
|
|
||||||
|
entry::list_type files = resume.dict().find("mapped_files")->second.list();
|
||||||
|
for (entry::list_type::iterator i = files.begin(); i != files.end(); ++i)
|
||||||
|
{
|
||||||
|
TEST_CHECK(i->string().substr(0, 2) == "__");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TORRENT_TEST(rename_file_fastresume)
|
TORRENT_TEST(rename_file_fastresume)
|
||||||
{
|
{
|
||||||
std::string test_path = current_working_directory();
|
std::string test_path = current_working_directory();
|
||||||
|
|
Loading…
Reference in New Issue