| 33 | CPPUNIT_TEST_SUITE_REGISTRATION(DHTMessageTrackerTest); |
| 34 | |
| 35 | void DHTMessageTrackerTest::testMessageArrived() |
| 36 | { |
| 37 | auto localNode = std::make_shared<DHTNode>(); |
| 38 | auto routingTable = make_unique<DHTRoutingTable>(localNode); |
| 39 | auto factory = make_unique<MockDHTMessageFactory>(); |
| 40 | factory->setLocalNode(localNode); |
| 41 | |
| 42 | auto r1 = std::make_shared<DHTNode>(); |
| 43 | r1->setIPAddress("192.168.0.1"); |
| 44 | r1->setPort(6881); |
| 45 | auto r2 = std::make_shared<DHTNode>(); |
| 46 | r2->setIPAddress("192.168.0.2"); |
| 47 | r2->setPort(6882); |
| 48 | auto r3 = std::make_shared<DHTNode>(); |
| 49 | r3->setIPAddress("192.168.0.3"); |
| 50 | r3->setPort(6883); |
| 51 | |
| 52 | auto m1 = make_unique<MockDHTMessage>(localNode, r1); |
| 53 | auto m2 = make_unique<MockDHTMessage>(localNode, r2); |
| 54 | auto m3 = make_unique<MockDHTMessage>(localNode, r3); |
| 55 | |
| 56 | DHTMessageTracker tracker; |
| 57 | tracker.setRoutingTable(routingTable.get()); |
| 58 | tracker.setMessageFactory(factory.get()); |
| 59 | tracker.addMessage(m1.get(), DHT_MESSAGE_TIMEOUT); |
| 60 | tracker.addMessage(m2.get(), DHT_MESSAGE_TIMEOUT); |
| 61 | tracker.addMessage(m3.get(), DHT_MESSAGE_TIMEOUT); |
| 62 | |
| 63 | { |
| 64 | Dict resDict; |
| 65 | resDict.put("t", m2->getTransactionID()); |
| 66 | |
| 67 | auto p = |
| 68 | tracker.messageArrived(&resDict, r2->getIPAddress(), r2->getPort()); |
| 69 | auto& reply = p.first; |
| 70 | |
| 71 | CPPUNIT_ASSERT(reply); |
| 72 | CPPUNIT_ASSERT(!tracker.getEntryFor(m2.get())); |
| 73 | CPPUNIT_ASSERT_EQUAL((size_t)2, tracker.countEntry()); |
| 74 | } |
| 75 | { |
| 76 | Dict resDict; |
| 77 | resDict.put("t", m3->getTransactionID()); |
| 78 | |
| 79 | auto p = |
| 80 | tracker.messageArrived(&resDict, r3->getIPAddress(), r3->getPort()); |
| 81 | auto& reply = p.first; |
| 82 | |
| 83 | CPPUNIT_ASSERT(reply); |
| 84 | CPPUNIT_ASSERT(!tracker.getEntryFor(m3.get())); |
| 85 | CPPUNIT_ASSERT_EQUAL((size_t)1, tracker.countEntry()); |
| 86 | } |
| 87 | { |
| 88 | Dict resDict; |
| 89 | resDict.put("t", m1->getTransactionID()); |
| 90 | |
| 91 | auto p = tracker.messageArrived(&resDict, "192.168.1.100", 6889); |
| 92 | auto& reply = p.first; |
nothing calls this directly
no test coverage detected