MCPcopy Create free account
hub / github.com/aria2/aria2 / testSerialize

Method testSerialize

test/DHTRoutingTableSerializerTest.cc:97–221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95}
96
97void DHTRoutingTableSerializerTest::testSerialize()
98{
99 std::shared_ptr<DHTNode> localNode(new DHTNode());
100
101 std::vector<std::shared_ptr<DHTNode>> nodes(3);
102 for (size_t i = 0; i < nodes.size(); ++i) {
103 nodes[i].reset(new DHTNode());
104 nodes[i]->setIPAddress("192.168.0." + util::uitos(i + 1));
105 nodes[i]->setPort(6881 + i);
106 }
107 nodes[1]->setIPAddress("non-numerical-name");
108
109 DHTRoutingTableSerializer s(AF_INET);
110 s.setLocalNode(localNode);
111 s.setNodes(nodes);
112
113 std::string filename =
114 A2_TEST_OUT_DIR "/aria2_DHTRoutingTableSerializerTest_testSerialize";
115 s.serialize(filename);
116
117 std::ifstream ss(filename.c_str(), std::ios::binary);
118
119 checkToLocalnode(ss, localNode);
120 size_t numNodes = 3;
121 checkNumNodes(ss, numNodes);
122
123 // 4bytes reserved
124 ss.read(buf, 4);
125 CPPUNIT_ASSERT(memcmp(zero, buf, 4) == 0);
126
127 // node[0]
128 // 1byte compatc peer format length
129 {
130 uint8_t len;
131 ss >> len;
132 CPPUNIT_ASSERT_EQUAL((uint8_t)6, len);
133 }
134 // 7bytes reserved
135 ss.read(buf, 7);
136 CPPUNIT_ASSERT(memcmp(zero, buf, 7) == 0);
137 // 6bytes compact peer info
138 ss.read(buf, 6);
139 {
140 std::pair<std::string, uint16_t> peer = bittorrent::unpackcompact(
141 reinterpret_cast<const unsigned char*>(buf), AF_INET);
142 CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), peer.first);
143 CPPUNIT_ASSERT_EQUAL((uint16_t)6881, peer.second);
144 }
145 // 2bytes reserved
146 ss.read(buf, 2);
147 CPPUNIT_ASSERT(memcmp(zero, buf, 2) == 0);
148 // 16bytes reserved
149 ss.read(buf, 16);
150 CPPUNIT_ASSERT(memcmp(zero, buf, 16) == 0);
151 // localnode ID
152 ss.read(buf, DHT_ID_LENGTH);
153 CPPUNIT_ASSERT(memcmp(nodes[0]->getID(), buf, DHT_ID_LENGTH) == 0);
154 // 4bytes reserved

Callers

nothing calls this directly

Calls 12

uitosFunction · 0.85
unpackcompactFunction · 0.85
setIPAddressMethod · 0.80
setNodesMethod · 0.80
serializeMethod · 0.80
getIDMethod · 0.80
eofMethod · 0.80
sizeMethod · 0.45
resetMethod · 0.45
setPortMethod · 0.45
setLocalNodeMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected