DHTPeerAnnounceEntryTest.cc 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include "DHTPeerAnnounceEntry.h"
  2. #include <cstring>
  3. #include <cppunit/extensions/HelperMacros.h>
  4. #include "Exception.h"
  5. #include "util.h"
  6. #include "FileEntry.h"
  7. #include "Peer.h"
  8. namespace aria2 {
  9. class DHTPeerAnnounceEntryTest : public CppUnit::TestFixture {
  10. CPPUNIT_TEST_SUITE(DHTPeerAnnounceEntryTest);
  11. CPPUNIT_TEST(testRemoveStalePeerAddrEntry);
  12. CPPUNIT_TEST(testEmpty);
  13. CPPUNIT_TEST(testAddPeerAddrEntry);
  14. CPPUNIT_TEST(testGetPeers);
  15. CPPUNIT_TEST_SUITE_END();
  16. public:
  17. void testRemoveStalePeerAddrEntry();
  18. void testEmpty();
  19. void testAddPeerAddrEntry();
  20. void testGetPeers();
  21. };
  22. CPPUNIT_TEST_SUITE_REGISTRATION(DHTPeerAnnounceEntryTest);
  23. void DHTPeerAnnounceEntryTest::testRemoveStalePeerAddrEntry()
  24. {
  25. unsigned char infohash[DHT_ID_LENGTH];
  26. memset(infohash, 0xff, DHT_ID_LENGTH);
  27. DHTPeerAnnounceEntry entry(infohash);
  28. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.1", 6881));
  29. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.2", 6882, Timer::zero()));
  30. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.3", 6883));
  31. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.4", 6884, Timer::zero()));
  32. entry.removeStalePeerAddrEntry(10_s);
  33. CPPUNIT_ASSERT_EQUAL((size_t)2, entry.countPeerAddrEntry());
  34. const std::vector<PeerAddrEntry>& peerAddrEntries =
  35. entry.getPeerAddrEntries();
  36. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"),
  37. peerAddrEntries[0].getIPAddress());
  38. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.3"),
  39. peerAddrEntries[1].getIPAddress());
  40. }
  41. void DHTPeerAnnounceEntryTest::testEmpty()
  42. {
  43. unsigned char infohash[DHT_ID_LENGTH];
  44. memset(infohash, 0xff, DHT_ID_LENGTH);
  45. {
  46. DHTPeerAnnounceEntry entry(infohash);
  47. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.1", 6881));
  48. CPPUNIT_ASSERT(!entry.empty());
  49. }
  50. {
  51. DHTPeerAnnounceEntry entry(infohash);
  52. CPPUNIT_ASSERT(entry.empty());
  53. }
  54. }
  55. void DHTPeerAnnounceEntryTest::testAddPeerAddrEntry()
  56. {
  57. unsigned char infohash[DHT_ID_LENGTH];
  58. memset(infohash, 0xff, DHT_ID_LENGTH);
  59. DHTPeerAnnounceEntry entry(infohash);
  60. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.1", 6881, Timer::zero()));
  61. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.1", 6882));
  62. CPPUNIT_ASSERT_EQUAL((size_t)2, entry.countPeerAddrEntry());
  63. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.1", 6881));
  64. CPPUNIT_ASSERT_EQUAL((size_t)2, entry.countPeerAddrEntry());
  65. CPPUNIT_ASSERT(!entry.getPeerAddrEntries()[0].getLastUpdated().isZero());
  66. }
  67. void DHTPeerAnnounceEntryTest::testGetPeers()
  68. {
  69. unsigned char infohash[DHT_ID_LENGTH];
  70. memset(infohash, 0xff, DHT_ID_LENGTH);
  71. DHTPeerAnnounceEntry entry(infohash);
  72. {
  73. std::vector<std::shared_ptr<Peer>> peers;
  74. entry.getPeers(peers);
  75. CPPUNIT_ASSERT_EQUAL((size_t)0, peers.size());
  76. }
  77. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.1", 6881, Timer::zero()));
  78. entry.addPeerAddrEntry(PeerAddrEntry("192.168.0.2", 6882));
  79. {
  80. std::vector<std::shared_ptr<Peer>> peers;
  81. entry.getPeers(peers);
  82. CPPUNIT_ASSERT_EQUAL((size_t)2, peers.size());
  83. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peers[0]->getIPAddress());
  84. CPPUNIT_ASSERT_EQUAL((uint16_t)6881, peers[0]->getPort());
  85. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.2"), peers[1]->getIPAddress());
  86. CPPUNIT_ASSERT_EQUAL((uint16_t)6882, peers[1]->getPort());
  87. }
  88. }
  89. } // namespace aria2