DHTPeerAnnounceStorageTest.cc 2.1 KB

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