summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-06-01 13:31:23 +0000
committerTor Brede Vekterli <vekterli@oath.com>2018-06-01 13:31:23 +0000
commit32b8f90590cc440cb310f24f04e62e28d2a978fc (patch)
tree903c6f8c7e5bcc3df2f9f03e006b01e1cbcce189 /storage
parente02c10ca309d51955eccfbb89d27d70b31d0e7cd (diff)
Don't assume visitor threads immediately destroy visitors
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/visiting/visitormanagertest.cpp18
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