split up the tests in test_pe_crypto into multiple test cases, to improve output on failure

This commit is contained in:
arvidn 2015-06-17 21:55:27 -04:00
parent ab2d187001
commit 184a1aa422
1 changed files with 85 additions and 22 deletions

View File

@ -190,14 +190,19 @@ void test_enc_handler(libtorrent::crypto_plugin* a, libtorrent::crypto_plugin* b
}
}
#endif
void print_key(char const* key)
{
for (int i = 0;i < 96; ++i)
{
printf("%02x ", unsigned(key[i]));
}
printf("\n");
}
TORRENT_TEST(test_pe_crypto)
TORRENT_TEST(diffie_hellman)
{
using namespace libtorrent;
#if !defined(TORRENT_DISABLE_ENCRYPTION) && !defined(TORRENT_DISABLE_EXTENSIONS)
#ifdef TORRENT_USE_VALGRIND
const int repcount = 10;
#else
@ -212,13 +217,26 @@ TORRENT_TEST(test_pe_crypto)
DH2.compute_secret(DH1.get_local_key());
TEST_CHECK(std::equal(DH1.get_secret(), DH1.get_secret() + 96, DH2.get_secret()));
if (!std::equal(DH1.get_secret(), DH1.get_secret() + 96, DH2.get_secret()))
{
printf("DH1 local: ");
print_key(DH1.get_local_key());
printf("DH2 local: ");
print_key(DH2.get_local_key());
printf("DH1 shared_secret: ");
print_key(DH1.get_secret());
printf("DH2 shared_secret: ");
print_key(DH2.get_secret());
}
}
}
dh_key_exchange DH1, DH2;
DH1.compute_secret(DH2.get_local_key());
DH2.compute_secret(DH1.get_local_key());
TEST_CHECK(std::equal(DH1.get_secret(), DH1.get_secret() + 96, DH2.get_secret()));
TORRENT_TEST(rc4)
{
using namespace libtorrent;
sha1_hash test1_key = hasher("test1_key",8).final();
sha1_hash test2_key = hasher("test2_key",8).final();
@ -231,6 +249,7 @@ TORRENT_TEST(test_pe_crypto)
rc42.set_incoming_key(&test1_key[0], 20);
rc42.set_outgoing_key(&test2_key[0], 20);
test_enc_handler(&rc41, &rc42);
}
#ifdef TORRENT_USE_VALGRIND
const int timeout = 10;
@ -238,19 +257,63 @@ TORRENT_TEST(test_pe_crypto)
const int timeout = 5;
#endif
TORRENT_TEST(pe_disabled)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_disabled, timeout);
test_transfer(settings_pack::pe_forced, timeout, settings_pack::pe_plaintext);
test_transfer(settings_pack::pe_forced, timeout, settings_pack::pe_rc4);
test_transfer(settings_pack::pe_forced, timeout, settings_pack::pe_both, false);
test_transfer(settings_pack::pe_forced, timeout, settings_pack::pe_both, true);
test_transfer(settings_pack::pe_enabled, timeout, settings_pack::pe_plaintext);
test_transfer(settings_pack::pe_enabled, timeout, settings_pack::pe_rc4);
test_transfer(settings_pack::pe_enabled, timeout, settings_pack::pe_both, false);
test_transfer(settings_pack::pe_enabled, timeout, settings_pack::pe_both, true);
#else
fprintf(stderr, "PE test not run because it's disabled\n");
#endif
}
TORRENT_TEST(forced_plaintext)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_forced, timeout, settings_pack::pe_plaintext);
}
TORRENT_TEST(forced_rc4)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_forced, timeout, settings_pack::pe_rc4);
}
TORRENT_TEST(forced_both)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_forced, timeout, settings_pack::pe_both, false);
}
TORRENT_TEST(forced_both_prefer_rc4)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_forced, timeout, settings_pack::pe_both, true);
}
TORRENT_TEST(enabled_plaintext)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_enabled, timeout, settings_pack::pe_plaintext);
}
TORRENT_TEST(enabled_rc4)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_enabled, timeout, settings_pack::pe_rc4);
}
TORRENT_TEST(enabled_both)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_enabled, timeout, settings_pack::pe_both, false);
}
TORRENT_TEST(enabled_both_prefer_rc4)
{
using namespace libtorrent;
test_transfer(settings_pack::pe_enabled, timeout, settings_pack::pe_both, true);
}
#else
TORRENT_TEST(disabled)
{
fprintf(stderr, "PE test not run because it's disabled\n");
}
#endif