DHTRoutingTableDeserializerTest.cc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "DHTRoutingTableDeserializer.h"
  2. #include "DHTRoutingTableSerializer.h"
  3. #include "Exception.h"
  4. #include "Util.h"
  5. #include "DHTNode.h"
  6. #include "a2functional.h"
  7. #include "DHTConstants.h"
  8. #include "PeerMessageUtil.h"
  9. #include <arpa/inet.h>
  10. #include <cstring>
  11. #include <sstream>
  12. #include <cppunit/extensions/HelperMacros.h>
  13. class DHTRoutingTableDeserializerTest:public CppUnit::TestFixture {
  14. CPPUNIT_TEST_SUITE(DHTRoutingTableDeserializerTest);
  15. CPPUNIT_TEST(testDeserialize);
  16. CPPUNIT_TEST_SUITE_END();
  17. public:
  18. void setUp() {}
  19. void tearDown() {}
  20. void testDeserialize();
  21. };
  22. CPPUNIT_TEST_SUITE_REGISTRATION(DHTRoutingTableDeserializerTest);
  23. void DHTRoutingTableDeserializerTest::testDeserialize()
  24. {
  25. DHTNodeHandle localNode = new DHTNode();
  26. DHTNodeHandle nodesSrc[] = { 0, 0, 0 };
  27. for(size_t i = 0; i < arrayLength(nodesSrc); ++i) {
  28. nodesSrc[i] = new DHTNode();
  29. nodesSrc[i]->setIPAddress("192.168.0."+Util::uitos(i+1));
  30. nodesSrc[i]->setPort(6881+i);
  31. }
  32. nodesSrc[1]->setIPAddress("non-numerical-name");
  33. DHTNodes nodes(&nodesSrc[0], &nodesSrc[arrayLength(nodesSrc)]);
  34. DHTRoutingTableSerializer s;
  35. s.setLocalNode(localNode);
  36. s.setNodes(nodes);
  37. stringstream ss;
  38. s.serialize(ss);
  39. DHTRoutingTableDeserializer d;
  40. d.deserialize(ss);
  41. CPPUNIT_ASSERT(memcmp(localNode->getID(), d.getLocalNode()->getID(),
  42. DHT_ID_LENGTH) == 0);
  43. cout << d.getSerializedTime().getTime() << endl;
  44. CPPUNIT_ASSERT_EQUAL((size_t)2, d.getNodes().size());
  45. const DHTNodes& dsnodes = d.getNodes();
  46. CPPUNIT_ASSERT_EQUAL(string("192.168.0.1"), dsnodes[0]->getIPAddress());
  47. CPPUNIT_ASSERT_EQUAL((uint16_t)6881, dsnodes[0]->getPort());
  48. CPPUNIT_ASSERT(memcmp(nodes[0]->getID(), dsnodes[0]->getID(), DHT_ID_LENGTH) == 0);
  49. CPPUNIT_ASSERT_EQUAL(string("192.168.0.3"), dsnodes[1]->getIPAddress());
  50. CPPUNIT_ASSERT_EQUAL((uint16_t)6883, dsnodes[1]->getPort());
  51. CPPUNIT_ASSERT(memcmp(nodes[2]->getID(), dsnodes[1]->getID(), DHT_ID_LENGTH) == 0);
  52. }