diff options
author | Tor Brede Vekterli <vekterli@oath.com> | 2018-06-01 13:31:23 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@oath.com> | 2018-06-01 13:31:23 +0000 |
commit | 32b8f90590cc440cb310f24f04e62e28d2a978fc (patch) | |
tree | 903c6f8c7e5bcc3df2f9f03e006b01e1cbcce189 /storage/src | |
parent | e02c10ca309d51955eccfbb89d27d70b31d0e7cd (diff) |
Don't assume visitor threads immediately destroy visitors
Diffstat (limited to 'storage/src')
-rw-r--r-- | storage/src/tests/visiting/visitormanagertest.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/storage/src/tests/visiting/visitormanagertest.cpp b/storage/src/tests/visiting/visitormanagertest.cpp index 9eb1e6d2311..b9d4f24072d 100644 --- a/storage/src/tests/visiting/visitormanagertest.cpp +++ b/storage/src/tests/visiting/visitormanagertest.cpp @@ -26,6 +26,7 @@ using document::test::makeDocumentBucket; using document::test::makeBucketSpace; using documentapi::Priority; +using namespace std::chrono_literals; namespace storage { namespace { @@ -274,7 +275,7 @@ VisitorManagerTest::getSession(uint32_t n) throw vespalib::IllegalStateException( "Timed out waiting for visitor session", VESPA_STRLOC); } - std::this_thread::sleep_for(std::chrono::milliseconds(10)); + std::this_thread::sleep_for(10ms); } throw std::logic_error("unreachable"); } @@ -745,9 +746,11 @@ VisitorManagerTest::testVisitorCleanup() // Should get a reply for the visitor. verifyCreateVisitorReply(api::ReturnCode::INTERNAL_FAILURE); - // 2 pending - - CPPUNIT_ASSERT_EQUAL(2u, _manager->getActiveVisitorCount()); + // Wait until there are 2 pending. Visitor threads might not have completed + // cleanup of existing visitors yet. + while (_manager->getActiveVisitorCount() != 2) { + std::this_thread::sleep_for(10ms); + } // Start a bunch of more visitors for (uint32_t i=0; i<10; ++i) { @@ -774,15 +777,10 @@ VisitorManagerTest::testVisitorCleanup() CPPUNIT_ASSERT_EQUAL(api::ReturnCode::BUSY, reply->getResult().getResult()); } - // 4 still pending, need to clean up our stuff before tearing down. - CPPUNIT_ASSERT_EQUAL(4u, _manager->getActiveVisitorCount()); - for (uint32_t i = 0; i < 4; ++i) { getMessagesAndReply(1, getSession(i + 2), docs, docIds); verifyCreateVisitorReply(api::ReturnCode::OK); } - - CPPUNIT_ASSERT_EQUAL(0u, _manager->getActiveVisitorCount()); } void @@ -957,7 +955,6 @@ VisitorManagerTest::testPrioritizedVisitorQueing() for (auto session : pending_sessions) { finishAndWaitForVisitorSessionCompletion(session); } - CPPUNIT_ASSERT_EQUAL(0u, _manager->getActiveVisitorCount()); } void VisitorManagerTest::finishAndWaitForVisitorSessionCompletion(uint32_t sessionIndex) { @@ -1071,7 +1068,6 @@ VisitorManagerTest::testPrioritizedMaxConcurrentVisitors() { CPPUNIT_ASSERT(finishedVisitors.find(ids[11]) != finishedVisitors.end()); CPPUNIT_ASSERT(finishedVisitors.find(ids[14]) != finishedVisitors.end()); - CPPUNIT_ASSERT_EQUAL(0u, _manager->getActiveVisitorCount()); } void |