diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-08-07 14:15:21 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-08-07 14:15:21 +0000 |
| commit | 26d66923767581d63fdfc303525cddebf9125bde (patch) | |
| tree | 97eb6054d697b53c7296adfaeaa43fb8013de3f2 /test/DHTFindNodeReplyMessageTest.cc | |
| parent | be7012272dbd029a7843df43466f4cd83e6fb9e3 (diff) | |
2010-08-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added IPv6 DHT. Added --dht-entry-porint6, --dht-file-path6,
--dht-listen-addr6 and --enable-dht6 option. IPv6 DHT is disabled
by default. To use IPv6 DHT, you need to use --enable-dht6 and
specify a global unicast address to --dht-listen-addr6. IPv6 DHT
is highly experimental.
* src/BtSetup.cc
* src/DHTAutoSaveCommand.cc
* src/DHTAutoSaveCommand.h
* src/DHTConnectionImpl.cc
* src/DHTConnectionImpl.h
* src/DHTEntryPointNameResolveCommand.cc
* src/DHTFindNodeReplyMessage.cc
* src/DHTFindNodeReplyMessage.h
* src/DHTGetPeersMessage.cc
* src/DHTGetPeersReplyMessage.cc
* src/DHTGetPeersReplyMessage.h
* src/DHTMessageFactory.h
* src/DHTMessageFactoryImpl.cc
* src/DHTMessageFactoryImpl.h
* src/DHTMessageTracker.cc
* src/DHTRegistry.cc
* src/DHTRegistry.h
* src/DHTRoutingTableDeserializer.cc
* src/DHTRoutingTableDeserializer.h
* src/DHTRoutingTableSerializer.cc
* src/DHTRoutingTableSerializer.h
* src/DHTSetup.cc
* src/DHTSetup.h
* src/FtpConnection.cc
* src/LpdMessageReceiver.cc
* src/OptionHandlerFactory.cc
* src/OptionHandlerImpl.h
* src/PeerInteractionCommand.cc
* src/RequestGroup.cc
* src/SocketCore.cc
* src/SocketCore.h
* src/bittorrent_helper.cc
* src/bittorrent_helper.h
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/DHTConnectionImplTest.cc
* test/DHTFindNodeReplyMessageTest.cc
* test/DHTGetPeersMessageTest.cc
* test/DHTGetPeersReplyMessageTest.cc
* test/DHTMessageFactoryImplTest.cc
* test/DHTRoutingTableDeserializerTest.cc
* test/DHTRoutingTableSerializerTest.cc
* test/LpdMessageDispatcherTest.cc
* test/MockDHTMessageFactory.h
Diffstat (limited to 'test/DHTFindNodeReplyMessageTest.cc')
| -rw-r--r-- | test/DHTFindNodeReplyMessageTest.cc | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/test/DHTFindNodeReplyMessageTest.cc b/test/DHTFindNodeReplyMessageTest.cc index 1191e279..7a15b445 100644 --- a/test/DHTFindNodeReplyMessageTest.cc +++ b/test/DHTFindNodeReplyMessageTest.cc @@ -15,6 +15,7 @@ class DHTFindNodeReplyMessageTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(DHTFindNodeReplyMessageTest); CPPUNIT_TEST(testGetBencodedMessage); + CPPUNIT_TEST(testGetBencodedMessage6); CPPUNIT_TEST_SUITE_END(); public: void setUp() {} @@ -22,6 +23,8 @@ public: void tearDown() {} void testGetBencodedMessage(); + + void testGetBencodedMessage6(); }; @@ -36,7 +39,7 @@ void DHTFindNodeReplyMessageTest::testGetBencodedMessage() util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH); std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]); - DHTFindNodeReplyMessage msg(localNode, remoteNode, transactionID); + DHTFindNodeReplyMessage msg(AF_INET, localNode, remoteNode, transactionID); msg.setVersion("A200"); std::string compactNodeInfo; SharedHandle<DHTNode> nodes[8]; @@ -46,8 +49,8 @@ void DHTFindNodeReplyMessageTest::testGetBencodedMessage() nodes[i]->setPort(6881+i); unsigned char buf[COMPACT_LEN_IPV6]; - bittorrent::packcompact - (buf, nodes[i]->getIPAddress(), nodes[i]->getPort()); + CPPUNIT_ASSERT_EQUAL(COMPACT_LEN_IPV4, bittorrent::packcompact + (buf, nodes[i]->getIPAddress(), nodes[i]->getPort())); compactNodeInfo += std::string(&nodes[i]->getID()[0], &nodes[i]->getID()[DHT_ID_LENGTH])+ std::string(&buf[0], &buf[COMPACT_LEN_IPV4]); @@ -69,4 +72,46 @@ void DHTFindNodeReplyMessageTest::testGetBencodedMessage() CPPUNIT_ASSERT_EQUAL(bencode2::encode(&dict), msgbody); } +void DHTFindNodeReplyMessageTest::testGetBencodedMessage6() +{ + SharedHandle<DHTNode> localNode(new DHTNode()); + SharedHandle<DHTNode> remoteNode(new DHTNode()); + + unsigned char tid[DHT_TRANSACTION_ID_LENGTH]; + util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH); + std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]); + + DHTFindNodeReplyMessage msg(AF_INET6, localNode, remoteNode, transactionID); + msg.setVersion("A200"); + std::string compactNodeInfo; + SharedHandle<DHTNode> nodes[8]; + for(size_t i = 0; i < DHTBucket::K; ++i) { + nodes[i].reset(new DHTNode()); + nodes[i]->setIPAddress("2001::000"+util::uitos(i+1)); + nodes[i]->setPort(6881+i); + + unsigned char buf[COMPACT_LEN_IPV6]; + CPPUNIT_ASSERT_EQUAL(COMPACT_LEN_IPV6, bittorrent::packcompact + (buf, nodes[i]->getIPAddress(), nodes[i]->getPort())); + compactNodeInfo += + std::string(&nodes[i]->getID()[0], &nodes[i]->getID()[DHT_ID_LENGTH])+ + std::string(&buf[0], &buf[COMPACT_LEN_IPV6]); + } + msg.setClosestKNodes + (std::vector<SharedHandle<DHTNode> >(&nodes[0], &nodes[DHTBucket::K])); + + std::string msgbody = msg.getBencodedMessage(); + + Dict dict; + dict.put("t", transactionID); + dict.put("v", "A200"); + dict.put("y", "r"); + SharedHandle<Dict> rDict = Dict::g(); + rDict->put("id", String::g(localNode->getID(), DHT_ID_LENGTH)); + rDict->put("nodes6", compactNodeInfo); + dict.put("r", rDict); + + CPPUNIT_ASSERT_EQUAL(bencode2::encode(&dict), msgbody); +} + } // namespace aria2 |
