Index: components/device_event_log/device_event_log_impl_unittest.cc |
diff --git a/components/device_event_log/device_event_log_impl_unittest.cc b/components/device_event_log/device_event_log_impl_unittest.cc |
index b6eff23fce12858cfb311b44918ff67d29ccf178..706039d9c647986cbaa2b029683288b9e8ceec56 100644 |
--- a/components/device_event_log/device_event_log_impl_unittest.cc |
+++ b/components/device_event_log/device_event_log_impl_unittest.cc |
@@ -5,6 +5,7 @@ |
#include "components/device_event_log/device_event_log_impl.h" |
#include <algorithm> |
+#include <string> |
#include "base/basictypes.h" |
#include "base/compiler_specific.h" |
@@ -12,6 +13,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/strings/string_split.h" |
#include "base/strings/stringprintf.h" |
+#include "base/test/test_simple_task_runner.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace device_event_log { |
@@ -21,15 +23,29 @@ namespace { |
const size_t kDefaultMaxEvents = 100; |
LogLevel kDefaultLevel = LOG_LEVEL_EVENT; |
LogType kDefaultType = LOG_TYPE_NETWORK; |
+const char kFileName[] = "file"; |
+ |
+// Calls GetAsString on the task thread and sets s_string_result. Make sure |
+// that task_runner_->RunUntilIdle() is called before using s_string_result. |
+std::string s_string_result; |
+void CallGetAsString(DeviceEventLogImpl* impl, |
+ StringOrder order, |
+ const std::string& format, |
+ const std::string& types, |
+ LogLevel max_level, |
+ size_t max_events) { |
+ s_string_result = |
+ impl->GetAsString(order, format, types, max_level, max_events); |
+} |
} // namespace |
class DeviceEventLogTest : public testing::Test { |
public: |
- DeviceEventLogTest() {} |
+ DeviceEventLogTest() : task_runner_(new base::TestSimpleTaskRunner()) {} |
void SetUp() override { |
- impl_.reset(new DeviceEventLogImpl(kDefaultMaxEvents)); |
+ impl_.reset(new DeviceEventLogImpl(task_runner_, kDefaultMaxEvents)); |
} |
void TearDown() override { impl_.reset(); } |
@@ -53,19 +69,32 @@ class DeviceEventLogTest : public testing::Test { |
return std::count(input.begin(), input.end(), '\n'); |
} |
+ std::string GetAsString(StringOrder order, |
+ const std::string& format, |
+ const std::string& types, |
+ LogLevel max_level, |
+ size_t max_events) { |
+ task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&CallGetAsString, |
+ impl_.get(), order, format, types, max_level, max_events)); |
+ task_runner_->RunUntilIdle(); |
+ return s_string_result; |
+ } |
+ |
std::string GetLogString(StringOrder order, |
const std::string& format, |
LogLevel max_level, |
size_t max_events) { |
- return impl_->GetAsString(order, format, "", max_level, max_events); |
+ return GetAsString(order, format, "", max_level, max_events); |
} |
std::string GetOrderedString(StringOrder order, size_t max_events) { |
- return impl_->GetAsString(order, "file", "", kDefaultLevel, max_events); |
+ return GetAsString(order, "file", "", kDefaultLevel, max_events); |
} |
std::string GetLogStringForType(const std::string& types) { |
- return impl_->GetAsString(OLDEST_FIRST, "type", types, kDefaultLevel, 0); |
+ return GetAsString(OLDEST_FIRST, "type", types, kDefaultLevel, 0); |
} |
void AddNetworkEntry(const char* file, |
@@ -73,18 +102,21 @@ class DeviceEventLogTest : public testing::Test { |
LogLevel level, |
const std::string& event) { |
impl_->AddEntry(file, line, kDefaultType, level, event); |
+ task_runner_->RunUntilIdle(); |
} |
void AddTestEvent(LogLevel level, const std::string& event) { |
- AddNetworkEntry("file", 0, level, event); |
+ AddNetworkEntry(kFileName, 0, level, event); |
} |
void AddEventType(LogType type, const std::string& event) { |
- impl_->AddEntry("file", 0, type, kDefaultLevel, event); |
+ impl_->AddEntry(kFileName, 0, type, kDefaultLevel, event); |
+ task_runner_->RunUntilIdle(); |
} |
size_t GetMaxEntries() const { return impl_->max_entries(); } |
+ scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
scoped_ptr<DeviceEventLogImpl> impl_; |
private: |
@@ -96,10 +128,13 @@ TEST_F(DeviceEventLogTest, TestNetworkEvents) { |
EXPECT_EQ("No Log Entries.", output_none); |
LogLevel level = kDefaultLevel; |
- AddNetworkEntry("file1", 1, level, "event1"); |
- AddNetworkEntry("file2", 2, level, "event2"); |
- AddNetworkEntry("file3", 3, level, "event3"); |
- AddNetworkEntry("file3", 3, level, "event3"); |
+ static const char kFile1[] = "file1"; |
+ static const char kFile2[] = "file2"; |
+ static const char kFile3[] = "file3"; |
+ AddNetworkEntry(kFile1, 1, level, "event1"); |
+ AddNetworkEntry(kFile2, 2, level, "event2"); |
+ AddNetworkEntry(kFile3, 3, level, "event3"); |
+ AddNetworkEntry(kFile3, 3, level, "event3"); |
const std::string expected_output_oldest_first( |
"file1:1 event1\n" |
@@ -223,7 +258,7 @@ TEST_F(DeviceEventLogTest, TestMaxEvents) { |
TEST_F(DeviceEventLogTest, TestMaxErrors) { |
const int kMaxTestEntries = 4; |
- impl_.reset(new DeviceEventLogImpl(kMaxTestEntries)); |
+ impl_.reset(new DeviceEventLogImpl(task_runner_, kMaxTestEntries)); |
AddTestEvent(LOG_LEVEL_EVENT, "event1"); |
AddTestEvent(LOG_LEVEL_ERROR, "error2"); |
AddTestEvent(LOG_LEVEL_EVENT, "event3"); |