DHTPeerAnnounceStorageTest.cc 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "DHTPeerAnnounceStorage.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "Exception.h"
  4. #include "Util.h"
  5. #include "MockBtContext.h"
  6. #include "MockPeerStorage.h"
  7. #include "DHTConstants.h"
  8. #include "Peer.h"
  9. #include "FileEntry.h"
  10. namespace aria2 {
  11. class DHTPeerAnnounceStorageTest:public CppUnit::TestFixture {
  12. CPPUNIT_TEST_SUITE(DHTPeerAnnounceStorageTest);
  13. CPPUNIT_TEST(testAddAnnounce);
  14. CPPUNIT_TEST(testRemovePeerAnnounce);
  15. CPPUNIT_TEST_SUITE_END();
  16. public:
  17. void testAddAnnounce();
  18. void testRemovePeerAnnounce();
  19. };
  20. CPPUNIT_TEST_SUITE_REGISTRATION(DHTPeerAnnounceStorageTest);
  21. void DHTPeerAnnounceStorageTest::testAddAnnounce()
  22. {
  23. unsigned char infohash1[DHT_ID_LENGTH];
  24. memset(infohash1, 0xff, DHT_ID_LENGTH);
  25. unsigned char infohash2[DHT_ID_LENGTH];
  26. memset(infohash2, 0xf0, DHT_ID_LENGTH);
  27. DHTPeerAnnounceStorage storage;
  28. storage.addPeerAnnounce(infohash1, "192.168.0.1", 6881);
  29. storage.addPeerAnnounce(infohash1, "192.168.0.2", 6882);
  30. storage.addPeerAnnounce(infohash2, "192.168.0.3", 6883);
  31. storage.addPeerAnnounce(infohash2, "192.168.0.4", 6884);
  32. std::deque<SharedHandle<Peer> > peers;
  33. storage.getPeers(peers, infohash2);
  34. CPPUNIT_ASSERT_EQUAL((size_t)2, peers.size());
  35. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.3"), peers[0]->ipaddr);
  36. CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.4"), peers[1]->ipaddr);
  37. }
  38. void DHTPeerAnnounceStorageTest::testRemovePeerAnnounce()
  39. {
  40. unsigned char infohash1[DHT_ID_LENGTH];
  41. memset(infohash1, 0xff, DHT_ID_LENGTH);
  42. unsigned char infohash2[DHT_ID_LENGTH];
  43. memset(infohash2, 0xf0, DHT_ID_LENGTH);
  44. DHTPeerAnnounceStorage storage;
  45. SharedHandle<MockBtContext> ctx1(new MockBtContext());
  46. ctx1->setInfoHash(infohash1);
  47. SharedHandle<MockPeerStorage> peerStorage1(new MockPeerStorage());
  48. SharedHandle<MockBtContext> ctx2(new MockBtContext());
  49. ctx2->setInfoHash(infohash2);
  50. SharedHandle<MockPeerStorage> peerStorage2(new MockPeerStorage());
  51. storage.addPeerAnnounce(infohash1, "192.168.0.1", 6881);
  52. storage.addPeerAnnounce(ctx1->getInfoHash(), peerStorage1);
  53. storage.addPeerAnnounce(ctx2->getInfoHash(), peerStorage2);
  54. storage.removeLocalPeerAnnounce(ctx2->getInfoHash());
  55. CPPUNIT_ASSERT(!storage.contains(infohash2));
  56. storage.removeLocalPeerAnnounce(ctx1->getInfoHash());
  57. CPPUNIT_ASSERT(storage.contains(infohash1));
  58. }
  59. } // namespace aria2