diff --git a/tests/peerdiscoverytester.cpp b/tests/peerdiscoverytester.cpp index 61ed48b92dc1b86b00bf9697f810776201540e6b..d3de94786aa2b0cae3b12d562080b026b355508a 100644 --- a/tests/peerdiscoverytester.cpp +++ b/tests/peerdiscoverytester.cpp @@ -57,53 +57,54 @@ void PeerDiscoveryTester::testTransmission() pdd.cha = 'a'; pdd.str = "apple"; - dht::PeerDiscovery test_n(MULTICAST_PORT); - dht::PeerDiscovery test_s(MULTICAST_PORT); - std::mutex lock; std::condition_variable cv; - std::unique_lock<std::mutex> l(lock); unsigned count_node {0}; unsigned count_test {0}; - test_s.startDiscovery<NodeInsertion>(type,[&](NodeInsertion&& v, dht::SockAddr&& add){ - CPPUNIT_ASSERT_EQUAL(v.node_port, adc.node_port); - CPPUNIT_ASSERT_EQUAL(v.nodeid, adc.nodeid); - CPPUNIT_ASSERT_EQUAL(v.nid, adc.nid); - { - std::lock_guard<std::mutex> l(lock); - count_node++; - } - cv.notify_all(); - }); - - test_s.startDiscovery(test_type,[&](msgpack::object&& obj, dht::SockAddr&& add){ - auto v = obj.as<TestPack>(); - CPPUNIT_ASSERT_EQUAL(v.num, pdd.num); - CPPUNIT_ASSERT_EQUAL(v.cha, pdd.cha); - CPPUNIT_ASSERT_EQUAL(v.str, pdd.str); - { - std::lock_guard<std::mutex> l(lock); - count_test++; - } - cv.notify_all(); - }); - - test_n.startPublish(type, adc); - CPPUNIT_ASSERT(cv.wait_for(l, std::chrono::seconds(5), [&]{ - return count_node > 0; - })); - - test_n.startPublish(test_type, pdd); - CPPUNIT_ASSERT(cv.wait_for(l, std::chrono::seconds(5), [&]{ - return count_node > 1 and count_test > 0; - })); - l.unlock(); - - test_n.stopPublish(type); - test_n.stopPublish(test_type); - test_n.stopDiscovery(type); - test_n.stopDiscovery(test_type); + { + std::unique_lock<std::mutex> l(lock); + dht::PeerDiscovery test_n(MULTICAST_PORT); + dht::PeerDiscovery test_s(MULTICAST_PORT); + + test_s.startDiscovery<NodeInsertion>(type,[&](NodeInsertion&& v, dht::SockAddr&& add){ + CPPUNIT_ASSERT_EQUAL(adc.node_port, v.node_port); + CPPUNIT_ASSERT_EQUAL(adc.nodeid, v.nodeid); + CPPUNIT_ASSERT_EQUAL(adc.nid, v.nid); + { + std::lock_guard<std::mutex> l(lock); + count_node++; + } + cv.notify_all(); + }); + + test_s.startDiscovery(test_type,[&](msgpack::object&& obj, dht::SockAddr&& add){ + auto v = obj.as<TestPack>(); + CPPUNIT_ASSERT_EQUAL(pdd.num, v.num); + CPPUNIT_ASSERT_EQUAL(pdd.cha, v.cha); + CPPUNIT_ASSERT_EQUAL(pdd.str, v.str); + { + std::lock_guard<std::mutex> l(lock); + count_test++; + } + cv.notify_all(); + }); + + test_n.startPublish(type, adc); + CPPUNIT_ASSERT(cv.wait_for(l, std::chrono::seconds(5), [&]{ + return count_node > 0; + })); + + test_n.startPublish(test_type, pdd); + CPPUNIT_ASSERT(cv.wait_for(l, std::chrono::seconds(5), [&]{ + return count_node > 1 and count_test > 0; + })); + l.unlock(); + test_n.stopPublish(type); + test_n.stopPublish(test_type); + test_s.stopDiscovery(type); + test_s.stopDiscovery(test_type); + } } void PeerDiscoveryTester::tearDown(){}