PeerTest.cc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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(testGetId);
  9. CPPUNIT_TEST(testOperatorEqual);
  10. CPPUNIT_TEST(testCountSeeder);
  11. CPPUNIT_TEST_SUITE_END();
  12. private:
  13. SharedHandle<Peer> peer;
  14. public:
  15. void setUp() {
  16. peer.reset(new Peer("localhost", 6969));
  17. peer->allocateSessionResource(1024, 1024*1024);
  18. }
  19. void testPeerAllowedIndexSet();
  20. void testAmAllowedIndexSet();
  21. void testGetId();
  22. void testOperatorEqual();
  23. void testCountSeeder();
  24. };
  25. CPPUNIT_TEST_SUITE_REGISTRATION(PeerTest);
  26. void PeerTest::testPeerAllowedIndexSet() {
  27. CPPUNIT_ASSERT(!peer->isInPeerAllowedIndexSet(0));
  28. peer->addPeerAllowedIndex(0);
  29. CPPUNIT_ASSERT(peer->isInPeerAllowedIndexSet(0));
  30. }
  31. void PeerTest::testAmAllowedIndexSet() {
  32. CPPUNIT_ASSERT(!peer->isInAmAllowedIndexSet(0));
  33. peer->addAmAllowedIndex(0);
  34. CPPUNIT_ASSERT(peer->isInAmAllowedIndexSet(0));
  35. }
  36. void PeerTest::testGetId() {
  37. CPPUNIT_ASSERT_EQUAL(std::string("f05897fc14a41cb3400e283e189158656d7184da"),
  38. peer->getID());
  39. }
  40. void PeerTest::testOperatorEqual()
  41. {
  42. CPPUNIT_ASSERT(Peer("localhost", 6881) == Peer("localhost", 6881));
  43. {
  44. Peer p1("localhost", 6881);
  45. Peer p2("localhsot", 0);
  46. p2.port = 6881;
  47. CPPUNIT_ASSERT(p1 != p2);
  48. }
  49. }
  50. void PeerTest::testCountSeeder()
  51. {
  52. std::vector<SharedHandle<Peer> > peers(5);
  53. peers[0].reset(new Peer("192.168.0.1", 7000));
  54. peers[1].reset(new Peer("192.168.0.2", 7000));
  55. peers[2].reset(new Peer("192.168.0.3", 7000));
  56. peers[3].reset(new Peer("192.168.0.4", 7000));
  57. peers[4].reset(new Peer("192.168.0.5", 7000));
  58. for(std::vector<SharedHandle<Peer> >::iterator i = peers.begin();
  59. i != peers.end(); ++i) {
  60. (*i)->allocateSessionResource(1024, 1024*8);
  61. }
  62. unsigned char bitfield[] = { 0xff };
  63. peers[1]->setBitfield(bitfield, 1);
  64. peers[3]->setBitfield(bitfield, 1);
  65. peers[4]->setBitfield(bitfield, 1);
  66. CPPUNIT_ASSERT_EQUAL((size_t)3, countSeeder(peers.begin(), peers.end()));
  67. }
  68. } // namespace aria2