diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-14 09:30:04 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-14 09:30:04 +0000 |
commit | 6184c299103e4967c4413939b2d50249a3c09258 (patch) | |
tree | 6d924e4ae77def30b47656813b80dbcf6cb1c27f /storage/src/tests/storageserver | |
parent | 8039539c2717ef46c58060533eab5019d1b2a72e (diff) |
Use std::mutex/std::condition instead of vespalib::Monitor.
Diffstat (limited to 'storage/src/tests/storageserver')
-rw-r--r-- | storage/src/tests/storageserver/testvisitormessagesession.cpp | 25 | ||||
-rw-r--r-- | storage/src/tests/storageserver/testvisitormessagesession.h | 7 |
2 files changed, 14 insertions, 18 deletions
diff --git a/storage/src/tests/storageserver/testvisitormessagesession.cpp b/storage/src/tests/storageserver/testvisitormessagesession.cpp index 59a6fd93780..e0cf53d284b 100644 --- a/storage/src/tests/storageserver/testvisitormessagesession.cpp +++ b/storage/src/tests/storageserver/testvisitormessagesession.cpp @@ -25,17 +25,16 @@ TestVisitorMessageSession::TestVisitorMessageSession(VisitorThread& t, void TestVisitorMessageSession::reply(mbus::Reply::UP rep) { { - vespalib::MonitorGuard guard(_waitMonitor); + std::lock_guard guard(_waitMonitor); pendingCount--; } thread.handleMessageBusReply(std::move(rep), visitor); } mbus::Result -TestVisitorMessageSession::send( - std::unique_ptr<documentapi::DocumentMessage> message) +TestVisitorMessageSession::send(std::unique_ptr<documentapi::DocumentMessage> message) { - vespalib::MonitorGuard guard(_waitMonitor); + std::lock_guard guard(_waitMonitor); if (_autoReply) { pendingCount++; mbus::Reply::UP rep = message->createReply(); @@ -44,15 +43,12 @@ TestVisitorMessageSession::send( reply(std::move(rep)); return mbus::Result(); } else { - return mbus::Result(_autoReplyError, - std::unique_ptr<mbus::Message>(message.release())); + return mbus::Result(_autoReplyError, std::move(message)); } } else { pendingCount++; - sentMessages.push_back( - std::unique_ptr<documentapi::DocumentMessage>( - message.release())); - guard.broadcast(); + sentMessages.push_back(std::move(message)); + _waitCond.notify_all(); return mbus::Result(); } } @@ -60,18 +56,17 @@ TestVisitorMessageSession::send( void TestVisitorMessageSession::waitForMessages(unsigned int msgCount) { framework::defaultimplementation::RealClock clock; - framework::MilliSecTime endTime( - clock.getTimeInMillis() + framework::MilliSecTime(60 * 1000)); + vespalib::steady_time endTime = clock.getMonotonicTime() + 60s; - vespalib::MonitorGuard guard(_waitMonitor); + std::unique_lock guard(_waitMonitor); while (sentMessages.size() < msgCount) { - if (clock.getTimeInMillis() > endTime) { + if (clock.getMonotonicTime() > endTime) { throw vespalib::IllegalStateException( vespalib::make_string("Timed out waiting for %u messages " "in test visitor session", msgCount), VESPA_STRLOC); } - guard.wait(1000); + _waitCond.wait_for(guard, 1s); } }; diff --git a/storage/src/tests/storageserver/testvisitormessagesession.h b/storage/src/tests/storageserver/testvisitormessagesession.h index 1cea1c78d74..d43fb4ab90a 100644 --- a/storage/src/tests/storageserver/testvisitormessagesession.h +++ b/storage/src/tests/storageserver/testvisitormessagesession.h @@ -16,7 +16,8 @@ namespace storage { class TestVisitorMessageSession : public VisitorMessageSession { private: - vespalib::Monitor _waitMonitor; + std::mutex _waitMonitor; + std::condition_variable _waitCond; mbus::Error _autoReplyError; bool _autoReply; @@ -27,7 +28,7 @@ public: Visitor& visitor; std::atomic<uint32_t> pendingCount; - ~TestVisitorMessageSession(); + ~TestVisitorMessageSession() override; std::deque<std::unique_ptr<documentapi::DocumentMessage> > sentMessages; @@ -40,7 +41,7 @@ public: uint32_t pending() override { return pendingCount; } mbus::Result send(std::unique_ptr<documentapi::DocumentMessage> message) override; void waitForMessages(unsigned int msgCount); - vespalib::Monitor& getMonitor() { return _waitMonitor; } + std::mutex & getMonitor() { return _waitMonitor; } }; struct TestVisitorMessageSessionFactory : public VisitorMessageSessionFactory |