diff --git a/tests/dhtrunnertester.cpp b/tests/dhtrunnertester.cpp index 78df451ab0a565311367f25553bbec85967dca0d..81c8c8861b23aad71cfa4abff4b23b35c3bb5e02 100644 --- a/tests/dhtrunnertester.cpp +++ b/tests/dhtrunnertester.cpp @@ -95,6 +95,11 @@ DhtRunnerTester::testListen() { std::mutex mutex; std::condition_variable cv; std::atomic_uint valueCount(0); + std::atomic_uint valueCounta(0); + std::atomic_uint valueCountb(0); + std::atomic_uint valueCountc(0); + std::atomic_uint valueCountd(0); + unsigned putCount(0); unsigned putOkCount1(0); unsigned putOkCount2(0); @@ -109,33 +114,34 @@ DhtRunnerTester::testListen() { auto ftokena = node1.listen(a, [&](const std::vector<std::shared_ptr<dht::Value>>& values, bool expired) { if (expired) - valueCount -= values.size(); + valueCounta -= values.size(); else - valueCount += values.size(); + valueCounta += values.size(); return true; }); - auto ftokenb = node1.listen(b, [&](const std::vector<std::shared_ptr<dht::Value>>& values, bool expired) { - if (expired) - valueCount -= values.size(); + auto ftokenb = node1.listen(b, [&](const std::shared_ptr<dht::Value>&) { + /*if (expired) + valueCountb -= values.size(); else - valueCount += values.size(); + valueCountb += values.size();*/ + valueCountb++; return false; }); auto ftokenc = node1.listen(c, [&](const std::vector<std::shared_ptr<dht::Value>>& values, bool expired) { if (expired) - valueCount -= values.size(); + valueCountc -= values.size(); else - valueCount += values.size(); + valueCountc += values.size(); return true; }); auto ftokend = node1.listen(d, [&](const std::vector<std::shared_ptr<dht::Value>>& values, bool expired) { if (expired) - valueCount -= values.size(); + valueCountd -= values.size(); else - valueCount += values.size(); + valueCountd += values.size(); return true; }); @@ -188,7 +194,10 @@ DhtRunnerTester::testListen() { CPPUNIT_ASSERT(tokena); CPPUNIT_ASSERT(tokenc); CPPUNIT_ASSERT(tokend); - CPPUNIT_ASSERT_EQUAL(N * 2u + 1u, valueCount.load()); + CPPUNIT_ASSERT_EQUAL(N, valueCounta.load()); + CPPUNIT_ASSERT_EQUAL(1u, valueCountb.load()); + CPPUNIT_ASSERT_EQUAL(N, valueCountc.load()); + CPPUNIT_ASSERT_EQUAL(0u, valueCountd.load()); node1.cancelListen(a, tokena); node1.cancelListen(b, std::move(ftokenb));