forked from premiere/premiere-libtorrent
split up test_storage into smaller test cases to improve output on failures
This commit is contained in:
parent
8b66fbe194
commit
7d2deb01db
|
@ -137,7 +137,7 @@ boost::shared_ptr<default_storage> setup_torrent(file_storage& fs
|
||||||
char buf_[4] = {0, 0, 0, 0};
|
char buf_[4] = {0, 0, 0, 0};
|
||||||
sha1_hash h = hasher(buf_, 4).final();
|
sha1_hash h = hasher(buf_, 4).final();
|
||||||
for (int i = 0; i < 6; ++i) t.set_hash(i, h);
|
for (int i = 0; i < 6; ++i) t.set_hash(i, h);
|
||||||
|
|
||||||
bencode(std::back_inserter(buf), t.generate());
|
bencode(std::back_inserter(buf), t.generate());
|
||||||
error_code ec;
|
error_code ec;
|
||||||
|
|
||||||
|
@ -254,7 +254,7 @@ void run_storage_tests(boost::shared_ptr<torrent_info> info
|
||||||
TEST_CHECK(ret == piece_size);
|
TEST_CHECK(ret == piece_size);
|
||||||
if (ret != piece_size) print_error("readv", ret, ec);
|
if (ret != piece_size) print_error("readv", ret, ec);
|
||||||
TEST_CHECK(std::equal(piece, piece + piece_size, piece1));
|
TEST_CHECK(std::equal(piece, piece + piece_size, piece1));
|
||||||
|
|
||||||
// do the same with piece 0 and 2 (in slot 1 and 2)
|
// do the same with piece 0 and 2 (in slot 1 and 2)
|
||||||
iov.iov_base = piece0;
|
iov.iov_base = piece0;
|
||||||
iov.iov_len = piece_size;
|
iov.iov_len = piece_size;
|
||||||
|
@ -292,7 +292,7 @@ void test_remove(std::string const& test_path, bool unbuffered)
|
||||||
if (ec && ec != boost::system::errc::no_such_file_or_directory)
|
if (ec && ec != boost::system::errc::no_such_file_or_directory)
|
||||||
std::cerr << "remove_all '" << combine_path(test_path, "temp_storage")
|
std::cerr << "remove_all '" << combine_path(test_path, "temp_storage")
|
||||||
<< "': " << ec.message() << std::endl;
|
<< "': " << ec.message() << std::endl;
|
||||||
TEST_CHECK(!exists(combine_path(test_path, "temp_storage")));
|
TEST_CHECK(!exists(combine_path(test_path, "temp_storage")));
|
||||||
|
|
||||||
file_storage fs;
|
file_storage fs;
|
||||||
std::vector<char> buf;
|
std::vector<char> buf;
|
||||||
|
@ -315,24 +315,24 @@ void test_remove(std::string const& test_path, bool unbuffered)
|
||||||
// all required directories)
|
// all required directories)
|
||||||
// files are created on first write
|
// files are created on first write
|
||||||
TEST_CHECK(!exists(combine_path(test_path, combine_path("temp_storage"
|
TEST_CHECK(!exists(combine_path(test_path, combine_path("temp_storage"
|
||||||
, combine_path("_folder3", combine_path("subfolder", "test5.tmp"))))));
|
, combine_path("_folder3", combine_path("subfolder", "test5.tmp"))))));
|
||||||
|
|
||||||
// this directory and file is created up-front because it's an empty file
|
// this directory and file is created up-front because it's an empty file
|
||||||
TEST_CHECK(exists(combine_path(test_path, combine_path("temp_storage"
|
TEST_CHECK(exists(combine_path(test_path, combine_path("temp_storage"
|
||||||
, combine_path("folder2", "test3.tmp")))));
|
, combine_path("folder2", "test3.tmp")))));
|
||||||
|
|
||||||
// this isn't
|
// this isn't
|
||||||
TEST_CHECK(!exists(combine_path(test_path, combine_path("temp_storage"
|
TEST_CHECK(!exists(combine_path(test_path, combine_path("temp_storage"
|
||||||
, combine_path("folder1", "test2.tmp")))));
|
, combine_path("folder1", "test2.tmp")))));
|
||||||
|
|
||||||
file::iovec_t b = {&buf[0], 4};
|
file::iovec_t b = {&buf[0], 4};
|
||||||
storage_error se;
|
storage_error se;
|
||||||
s->writev(&b, 1, 2, 0, 0, se);
|
s->writev(&b, 1, 2, 0, 0, se);
|
||||||
|
|
||||||
TEST_CHECK(exists(combine_path(test_path, combine_path("temp_storage"
|
TEST_CHECK(exists(combine_path(test_path, combine_path("temp_storage"
|
||||||
, combine_path("folder1", "test2.tmp")))));
|
, combine_path("folder1", "test2.tmp")))));
|
||||||
TEST_CHECK(!exists(combine_path(test_path, combine_path("temp_storage"
|
TEST_CHECK(!exists(combine_path(test_path, combine_path("temp_storage"
|
||||||
, combine_path("_folder3", combine_path("subfolder", "test5.tmp"))))));
|
, combine_path("_folder3", combine_path("subfolder", "test5.tmp"))))));
|
||||||
file_status st;
|
file_status st;
|
||||||
stat_file(combine_path(test_path, combine_path("temp_storage"
|
stat_file(combine_path(test_path, combine_path("temp_storage"
|
||||||
, combine_path("folder1", "test2.tmp"))), &st, ec);
|
, combine_path("folder1", "test2.tmp"))), &st, ec);
|
||||||
|
@ -341,7 +341,7 @@ void test_remove(std::string const& test_path, bool unbuffered)
|
||||||
s->writev(&b, 1, 4, 0, 0, se);
|
s->writev(&b, 1, 4, 0, 0, se);
|
||||||
|
|
||||||
TEST_CHECK(exists(combine_path(test_path, combine_path("temp_storage"
|
TEST_CHECK(exists(combine_path(test_path, combine_path("temp_storage"
|
||||||
, combine_path("_folder3", combine_path("subfolder", "test5.tmp"))))));
|
, combine_path("_folder3", combine_path("subfolder", "test5.tmp"))))));
|
||||||
stat_file(combine_path(test_path, combine_path("temp_storage"
|
stat_file(combine_path(test_path, combine_path("temp_storage"
|
||||||
, combine_path("_folder3", "test5.tmp"))), &st, ec);
|
, combine_path("_folder3", "test5.tmp"))), &st, ec);
|
||||||
TEST_EQUAL(st.file_size, 8);
|
TEST_EQUAL(st.file_size, 8);
|
||||||
|
@ -355,7 +355,7 @@ void test_remove(std::string const& test_path, bool unbuffered)
|
||||||
fprintf(stderr, "default_storage::delete_files %s: %d\n", se.ec.message().c_str(), int(se.file));
|
fprintf(stderr, "default_storage::delete_files %s: %d\n", se.ec.message().c_str(), int(se.file));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CHECK(!exists(combine_path(test_path, "temp_storage")));
|
TEST_CHECK(!exists(combine_path(test_path, "temp_storage")));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_rename(std::string const& test_path)
|
void test_rename(std::string const& test_path)
|
||||||
|
@ -365,7 +365,7 @@ void test_rename(std::string const& test_path)
|
||||||
if (ec && ec != boost::system::errc::no_such_file_or_directory)
|
if (ec && ec != boost::system::errc::no_such_file_or_directory)
|
||||||
std::cerr << "remove_all '" << combine_path(test_path, "temp_storage")
|
std::cerr << "remove_all '" << combine_path(test_path, "temp_storage")
|
||||||
<< "': " << ec.message() << std::endl;
|
<< "': " << ec.message() << std::endl;
|
||||||
TEST_CHECK(!exists(combine_path(test_path, "temp_storage")));
|
TEST_CHECK(!exists(combine_path(test_path, "temp_storage")));
|
||||||
|
|
||||||
file_storage fs;
|
file_storage fs;
|
||||||
std::vector<char> buf;
|
std::vector<char> buf;
|
||||||
|
@ -383,7 +383,7 @@ void test_rename(std::string const& test_path)
|
||||||
for (int i = 0; i < fs.num_files(); ++i)
|
for (int i = 0; i < fs.num_files(); ++i)
|
||||||
{
|
{
|
||||||
TEST_CHECK(!exists(combine_path(test_path, combine_path("temp_storage"
|
TEST_CHECK(!exists(combine_path(test_path, combine_path("temp_storage"
|
||||||
, fs.file_path(i)))));
|
, fs.file_path(i)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
storage_error se;
|
storage_error se;
|
||||||
|
@ -477,8 +477,9 @@ void test_check_files(std::string const& test_path
|
||||||
#define storage_mode_compact storage_mode_sparse
|
#define storage_mode_compact storage_mode_sparse
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void run_test(std::string const& test_path, bool unbuffered)
|
void run_test(bool unbuffered)
|
||||||
{
|
{
|
||||||
|
std::string test_path = current_working_directory();
|
||||||
std::cerr << "\n=== " << test_path << " ===\n" << std::endl;
|
std::cerr << "\n=== " << test_path << " ===\n" << std::endl;
|
||||||
|
|
||||||
boost::shared_ptr<torrent_info> info;
|
boost::shared_ptr<torrent_info> info;
|
||||||
|
@ -512,7 +513,7 @@ void run_test(std::string const& test_path, bool unbuffered)
|
||||||
t.set_hash(1, hasher(piece1, piece_size).final());
|
t.set_hash(1, hasher(piece1, piece_size).final());
|
||||||
t.set_hash(2, hasher(piece2, piece_size).final());
|
t.set_hash(2, hasher(piece2, piece_size).final());
|
||||||
t.set_hash(3, hasher(piece3, piece_size).final());
|
t.set_hash(3, hasher(piece3, piece_size).final());
|
||||||
|
|
||||||
std::vector<char> buf;
|
std::vector<char> buf;
|
||||||
bencode(std::back_inserter(buf), t.generate());
|
bencode(std::back_inserter(buf), t.generate());
|
||||||
info = boost::make_shared<torrent_info>(&buf[0], buf.size(), boost::ref(ec), 0);
|
info = boost::make_shared<torrent_info>(&buf[0], buf.size(), boost::ref(ec), 0);
|
||||||
|
@ -526,7 +527,7 @@ void run_test(std::string const& test_path, bool unbuffered)
|
||||||
fprintf(stderr, "base = \"%s\"\n", base.c_str());
|
fprintf(stderr, "base = \"%s\"\n", base.c_str());
|
||||||
TEST_EQUAL(file_size(combine_path(base, "test1.tmp")), 17);
|
TEST_EQUAL(file_size(combine_path(base, "test1.tmp")), 17);
|
||||||
TEST_EQUAL(file_size(combine_path(base, "test2.tmp")), 612);
|
TEST_EQUAL(file_size(combine_path(base, "test2.tmp")), 612);
|
||||||
|
|
||||||
// these files should have been allocated as 0 size
|
// these files should have been allocated as 0 size
|
||||||
TEST_CHECK(exists(combine_path(base, "test3.tmp")));
|
TEST_CHECK(exists(combine_path(base, "test3.tmp")));
|
||||||
TEST_CHECK(exists(combine_path(base, "test4.tmp")));
|
TEST_CHECK(exists(combine_path(base, "test4.tmp")));
|
||||||
|
@ -602,8 +603,9 @@ void run_test(std::string const& test_path, bool unbuffered)
|
||||||
test_rename(test_path);
|
test_rename(test_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_fastresume(std::string const& test_path)
|
TORRENT_TEST(fastresume)
|
||||||
{
|
{
|
||||||
|
std::string test_path = current_working_directory();
|
||||||
error_code ec;
|
error_code ec;
|
||||||
std::cout << "\n\n=== test fastresume ===" << std::endl;
|
std::cout << "\n\n=== test fastresume ===" << std::endl;
|
||||||
remove_all(combine_path(test_path, "tmp1"), ec);
|
remove_all(combine_path(test_path, "tmp1"), ec);
|
||||||
|
@ -622,8 +624,17 @@ void test_fastresume(std::string const& test_path)
|
||||||
|
|
||||||
entry resume;
|
entry resume;
|
||||||
{
|
{
|
||||||
|
const int mask = alert::all_categories
|
||||||
|
& ~(alert::progress_notification
|
||||||
|
| alert::performance_warning
|
||||||
|
| alert::stats_notification);
|
||||||
|
|
||||||
settings_pack pack;
|
settings_pack pack;
|
||||||
pack.set_int(settings_pack::alert_mask, alert::all_categories);
|
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);
|
||||||
lt::session ses(pack);
|
lt::session ses(pack);
|
||||||
|
|
||||||
error_code ec;
|
error_code ec;
|
||||||
|
@ -674,8 +685,17 @@ void test_fastresume(std::string const& test_path)
|
||||||
|
|
||||||
// make sure the fast resume check fails! since we removed the file
|
// make sure the fast resume check fails! since we removed the file
|
||||||
{
|
{
|
||||||
|
const int mask = alert::all_categories
|
||||||
|
& ~(alert::progress_notification
|
||||||
|
| alert::performance_warning
|
||||||
|
| alert::stats_notification);
|
||||||
|
|
||||||
settings_pack pack;
|
settings_pack pack;
|
||||||
pack.set_int(settings_pack::alert_mask, alert::all_categories);
|
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);
|
||||||
lt::session ses(pack);
|
lt::session ses(pack);
|
||||||
|
|
||||||
add_torrent_params p;
|
add_torrent_params p;
|
||||||
|
@ -704,8 +724,9 @@ bool got_file_rename_alert(alert const* a)
|
||||||
|| alert_cast<libtorrent::file_rename_failed_alert>(a);
|
|| alert_cast<libtorrent::file_rename_failed_alert>(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_rename_file_in_fastresume(std::string const& test_path)
|
TORRENT_TEST(rename_file_fastresume)
|
||||||
{
|
{
|
||||||
|
std::string test_path = current_working_directory();
|
||||||
error_code ec;
|
error_code ec;
|
||||||
std::cout << "\n\n=== test rename file in fastresume ===" << std::endl;
|
std::cout << "\n\n=== test rename file in fastresume ===" << std::endl;
|
||||||
remove_all(combine_path(test_path, "tmp2"), ec);
|
remove_all(combine_path(test_path, "tmp2"), ec);
|
||||||
|
@ -721,8 +742,17 @@ void test_rename_file_in_fastresume(std::string const& test_path)
|
||||||
|
|
||||||
entry resume;
|
entry resume;
|
||||||
{
|
{
|
||||||
|
const int mask = alert::all_categories
|
||||||
|
& ~(alert::progress_notification
|
||||||
|
| alert::performance_warning
|
||||||
|
| alert::stats_notification);
|
||||||
|
|
||||||
settings_pack pack;
|
settings_pack pack;
|
||||||
pack.set_int(settings_pack::alert_mask, alert::all_categories);
|
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);
|
||||||
lt::session ses(pack);
|
lt::session ses(pack);
|
||||||
|
|
||||||
add_torrent_params p;
|
add_torrent_params p;
|
||||||
|
@ -761,8 +791,17 @@ void test_rename_file_in_fastresume(std::string const& test_path)
|
||||||
|
|
||||||
// make sure the fast resume check succeeds, even though we renamed the file
|
// make sure the fast resume check succeeds, even though we renamed the file
|
||||||
{
|
{
|
||||||
|
const int mask = alert::all_categories
|
||||||
|
& ~(alert::progress_notification
|
||||||
|
| alert::performance_warning
|
||||||
|
| alert::stats_notification);
|
||||||
|
|
||||||
settings_pack pack;
|
settings_pack pack;
|
||||||
pack.set_int(settings_pack::alert_mask, alert::all_categories);
|
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);
|
||||||
lt::session ses(pack);
|
lt::session ses(pack);
|
||||||
|
|
||||||
add_torrent_params p;
|
add_torrent_params p;
|
||||||
|
@ -964,11 +1003,8 @@ TORRENT_TEST(storage)
|
||||||
p = std::strtok(0, ";");
|
p = std::strtok(0, ";");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::for_each(test_paths.begin(), test_paths.end(), boost::bind(&test_fastresume, _1));
|
|
||||||
std::for_each(test_paths.begin(), test_paths.end(), boost::bind(&test_rename_file_in_fastresume, _1));
|
|
||||||
|
|
||||||
std::for_each(test_paths.begin(), test_paths.end(), boost::bind(&run_test, _1, true));
|
|
||||||
std::for_each(test_paths.begin(), test_paths.end(), boost::bind(&run_test, _1, false));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TORRENT_TEST(unbuffered) { run_test(true); }
|
||||||
|
TORRENT_TEST(buffered) { run_test(false); }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue