PeerTest.cc 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "Peer.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. namespace aria2 {
  4. class PeerTest : public CppUnit::TestFixture {
  5. CPPUNIT_TEST_SUITE(PeerTest);
  6. CPPUNIT_TEST(testPeerAllowedIndexSet);
  7. CPPUNIT_TEST(testAmAllowedIndexSet);
  8. CPPUNIT_TEST(testCountSeeder);
  9. CPPUNIT_TEST_SUITE_END();
  10. private:
  11. std::shared_ptr<Peer> peer;
  12. public:
  13. void setUp()
  14. {
  15. peer.reset(new Peer("localhost", 6969));
  16. peer->allocateSessionResource(1_k, 1_m);
  17. }
  18. void testPeerAllowedIndexSet();
  19. void testAmAllowedIndexSet();
  20. void testCountSeeder();
  21. };
  22. CPPUNIT_TEST_SUITE_REGISTRATION(PeerTest);
  23. void PeerTest::testPeerAllowedIndexSet()
  24. {
  25. CPPUNIT_ASSERT(!peer->isInPeerAllowedIndexSet(0));
  26. peer->addPeerAllowedIndex(0);
  27. CPPUNIT_ASSERT(peer->isInPeerAllowedIndexSet(0));
  28. }
  29. void PeerTest::testAmAllowedIndexSet()
  30. {
  31. CPPUNIT_ASSERT(!peer->isInAmAllowedIndexSet(0));
  32. peer->addAmAllowedIndex(0);
  33. CPPUNIT_ASSERT(peer->isInAmAllowedIndexSet(0));
  34. }
  35. void PeerTest::testCountSeeder()
  36. {
  37. std::vector<std::shared_ptr<Peer>> peers(5);
  38. peers[0].reset(new Peer("192.168.0.1", 7000));
  39. peers[1].reset(new Peer("192.168.0.2", 7000));
  40. peers[2].reset(new Peer("192.168.0.3", 7000));
  41. peers[3].reset(new Peer("192.168.0.4", 7000));
  42. peers[4].reset(new Peer("192.168.0.5", 7000));
  43. for (std::vector<std::shared_ptr<Peer>>::iterator i = peers.begin();
  44. i != peers.end(); ++i) {
  45. (*i)->allocateSessionResource(1_k, 8_k);
  46. }
  47. unsigned char bitfield[] = {0xff};
  48. peers[1]->setBitfield(bitfield, 1);
  49. peers[3]->setBitfield(bitfield, 1);
  50. peers[4]->setBitfield(bitfield, 1);
  51. CPPUNIT_ASSERT_EQUAL((size_t)3, countSeeder(peers.begin(), peers.end()));
  52. }
  53. } // namespace aria2