make queue_testutils logging thread-safe and test it
Change-Id: I0d1ed4831cb3cfde4a172839bcc1f2b02756f5f3
diff --git a/aos/common/queue_testutils.cc b/aos/common/queue_testutils.cc
index d71d023..a40b5e9 100644
--- a/aos/common/queue_testutils.cc
+++ b/aos/common/queue_testutils.cc
@@ -10,6 +10,7 @@
#include "aos/common/queue.h"
#include "aos/common/logging/logging_impl.h"
#include "aos/common/once.h"
+#include "aos/common/mutex.h"
using ::aos::logging::LogMessage;
@@ -31,11 +32,13 @@
// Clears out all of the messages already recorded.
void ClearMessages() {
+ ::aos::MutexLocker locker(&messages_mutex_);
messages_.clear();
}
// Prints out all of the messages (like when a test fails).
void PrintAllMessages() {
+ ::aos::MutexLocker locker(&messages_mutex_);
for (auto it = messages_.begin(); it != messages_.end(); ++it) {
logging::internal::PrintMessage(stdout, *it);
}
@@ -66,6 +69,7 @@
}
virtual void HandleMessage(const LogMessage &message) override {
+ ::aos::MutexLocker locker(&messages_mutex_);
if (message.level == FATAL || print_as_messages_come_in_) {
logging::internal::PrintMessage(output_file_, message);
}
@@ -76,6 +80,7 @@
::std::vector<LogMessage> messages_;
bool print_as_messages_come_in_ = false;
FILE *output_file_ = stdout;
+ ::aos::Mutex messages_mutex_;
};
class MyTestEventListener : public ::testing::EmptyTestEventListener {