summaryrefslogtreecommitdiffstats
path: root/storage/src/tests/storageserver
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-10-14 09:30:04 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-10-14 09:30:04 +0000
commit6184c299103e4967c4413939b2d50249a3c09258 (patch)
tree6d924e4ae77def30b47656813b80dbcf6cb1c27f /storage/src/tests/storageserver
parent8039539c2717ef46c58060533eab5019d1b2a72e (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.cpp25
-rw-r--r--storage/src/tests/storageserver/testvisitormessagesession.h7
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