Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: components/device_event_log/device_event_log_impl_unittest.cc

Issue 1140643002: Fix device_event_log component build, make NonThreadSafe (Take 2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/device_event_log/device_event_log_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/device_event_log/device_event_log_impl.h" 5 #include "components/device_event_log/device_event_log_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string>
8 9
9 #include "base/basictypes.h" 10 #include "base/basictypes.h"
10 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
11 #include "base/format_macros.h" 12 #include "base/format_macros.h"
12 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
13 #include "base/strings/string_split.h" 14 #include "base/strings/string_split.h"
14 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
16 #include "base/test/test_simple_task_runner.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 18
17 namespace device_event_log { 19 namespace device_event_log {
18 20
19 namespace { 21 namespace {
20 22
21 const size_t kDefaultMaxEvents = 100; 23 const size_t kDefaultMaxEvents = 100;
22 LogLevel kDefaultLevel = LOG_LEVEL_EVENT; 24 LogLevel kDefaultLevel = LOG_LEVEL_EVENT;
23 LogType kDefaultType = LOG_TYPE_NETWORK; 25 LogType kDefaultType = LOG_TYPE_NETWORK;
26 const char kFileName[] = "file";
27
28 // Calls GetAsString on the task thread and sets s_string_result. Make sure
29 // that task_runner_->RunUntilIdle() is called before using s_string_result.
30 std::string s_string_result;
31 void CallGetAsString(DeviceEventLogImpl* impl,
32 StringOrder order,
33 const std::string& format,
34 const std::string& types,
35 LogLevel max_level,
36 size_t max_events) {
37 s_string_result =
38 impl->GetAsString(order, format, types, max_level, max_events);
39 }
24 40
25 } // namespace 41 } // namespace
26 42
27 class DeviceEventLogTest : public testing::Test { 43 class DeviceEventLogTest : public testing::Test {
28 public: 44 public:
29 DeviceEventLogTest() {} 45 DeviceEventLogTest() : task_runner_(new base::TestSimpleTaskRunner()) {}
30 46
31 void SetUp() override { 47 void SetUp() override {
32 impl_.reset(new DeviceEventLogImpl(kDefaultMaxEvents)); 48 impl_.reset(new DeviceEventLogImpl(task_runner_, kDefaultMaxEvents));
33 } 49 }
34 50
35 void TearDown() override { impl_.reset(); } 51 void TearDown() override { impl_.reset(); }
36 52
37 protected: 53 protected:
38 std::string SkipTime(const std::string& input) { 54 std::string SkipTime(const std::string& input) {
39 std::string output; 55 std::string output;
40 std::vector<std::string> lines; 56 std::vector<std::string> lines;
41 base::SplitString(input, '\n', &lines); 57 base::SplitString(input, '\n', &lines);
42 for (size_t i = 0; i < lines.size(); ++i) { 58 for (size_t i = 0; i < lines.size(); ++i) {
43 size_t n = lines[i].find(']'); 59 size_t n = lines[i].find(']');
44 if (n != std::string::npos) 60 if (n != std::string::npos)
45 output += "[time] " + lines[i].substr(n + 2) + '\n'; 61 output += "[time] " + lines[i].substr(n + 2) + '\n';
46 else 62 else
47 output += lines[i]; 63 output += lines[i];
48 } 64 }
49 return output; 65 return output;
50 } 66 }
51 67
52 size_t CountLines(const std::string& input) { 68 size_t CountLines(const std::string& input) {
53 return std::count(input.begin(), input.end(), '\n'); 69 return std::count(input.begin(), input.end(), '\n');
54 } 70 }
55 71
72 std::string GetAsString(StringOrder order,
73 const std::string& format,
74 const std::string& types,
75 LogLevel max_level,
76 size_t max_events) {
77 task_runner_->PostTask(
78 FROM_HERE,
79 base::Bind(&CallGetAsString,
80 impl_.get(), order, format, types, max_level, max_events));
81 task_runner_->RunUntilIdle();
82 return s_string_result;
83 }
84
56 std::string GetLogString(StringOrder order, 85 std::string GetLogString(StringOrder order,
57 const std::string& format, 86 const std::string& format,
58 LogLevel max_level, 87 LogLevel max_level,
59 size_t max_events) { 88 size_t max_events) {
60 return impl_->GetAsString(order, format, "", max_level, max_events); 89 return GetAsString(order, format, "", max_level, max_events);
61 } 90 }
62 91
63 std::string GetOrderedString(StringOrder order, size_t max_events) { 92 std::string GetOrderedString(StringOrder order, size_t max_events) {
64 return impl_->GetAsString(order, "file", "", kDefaultLevel, max_events); 93 return GetAsString(order, "file", "", kDefaultLevel, max_events);
65 } 94 }
66 95
67 std::string GetLogStringForType(const std::string& types) { 96 std::string GetLogStringForType(const std::string& types) {
68 return impl_->GetAsString(OLDEST_FIRST, "type", types, kDefaultLevel, 0); 97 return GetAsString(OLDEST_FIRST, "type", types, kDefaultLevel, 0);
69 } 98 }
70 99
71 void AddNetworkEntry(const char* file, 100 void AddNetworkEntry(const char* file,
72 int line, 101 int line,
73 LogLevel level, 102 LogLevel level,
74 const std::string& event) { 103 const std::string& event) {
75 impl_->AddEntry(file, line, kDefaultType, level, event); 104 impl_->AddEntry(file, line, kDefaultType, level, event);
105 task_runner_->RunUntilIdle();
76 } 106 }
77 107
78 void AddTestEvent(LogLevel level, const std::string& event) { 108 void AddTestEvent(LogLevel level, const std::string& event) {
79 AddNetworkEntry("file", 0, level, event); 109 AddNetworkEntry(kFileName, 0, level, event);
80 } 110 }
81 111
82 void AddEventType(LogType type, const std::string& event) { 112 void AddEventType(LogType type, const std::string& event) {
83 impl_->AddEntry("file", 0, type, kDefaultLevel, event); 113 impl_->AddEntry(kFileName, 0, type, kDefaultLevel, event);
114 task_runner_->RunUntilIdle();
84 } 115 }
85 116
86 size_t GetMaxEntries() const { return impl_->max_entries(); } 117 size_t GetMaxEntries() const { return impl_->max_entries(); }
87 118
119 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
88 scoped_ptr<DeviceEventLogImpl> impl_; 120 scoped_ptr<DeviceEventLogImpl> impl_;
89 121
90 private: 122 private:
91 DISALLOW_COPY_AND_ASSIGN(DeviceEventLogTest); 123 DISALLOW_COPY_AND_ASSIGN(DeviceEventLogTest);
92 }; 124 };
93 125
94 TEST_F(DeviceEventLogTest, TestNetworkEvents) { 126 TEST_F(DeviceEventLogTest, TestNetworkEvents) {
95 std::string output_none = GetOrderedString(OLDEST_FIRST, 0); 127 std::string output_none = GetOrderedString(OLDEST_FIRST, 0);
96 EXPECT_EQ("No Log Entries.", output_none); 128 EXPECT_EQ("No Log Entries.", output_none);
97 129
98 LogLevel level = kDefaultLevel; 130 LogLevel level = kDefaultLevel;
99 AddNetworkEntry("file1", 1, level, "event1"); 131 static const char kFile1[] = "file1";
100 AddNetworkEntry("file2", 2, level, "event2"); 132 static const char kFile2[] = "file2";
101 AddNetworkEntry("file3", 3, level, "event3"); 133 static const char kFile3[] = "file3";
102 AddNetworkEntry("file3", 3, level, "event3"); 134 AddNetworkEntry(kFile1, 1, level, "event1");
135 AddNetworkEntry(kFile2, 2, level, "event2");
136 AddNetworkEntry(kFile3, 3, level, "event3");
137 AddNetworkEntry(kFile3, 3, level, "event3");
103 138
104 const std::string expected_output_oldest_first( 139 const std::string expected_output_oldest_first(
105 "file1:1 event1\n" 140 "file1:1 event1\n"
106 "file2:2 event2\n" 141 "file2:2 event2\n"
107 "file3:3 event3 (2)\n"); 142 "file3:3 event3 (2)\n");
108 std::string output_oldest_first = GetOrderedString(OLDEST_FIRST, 0); 143 std::string output_oldest_first = GetOrderedString(OLDEST_FIRST, 0);
109 EXPECT_EQ(expected_output_oldest_first, output_oldest_first); 144 EXPECT_EQ(expected_output_oldest_first, output_oldest_first);
110 145
111 const std::string expected_output_oldest_first_short( 146 const std::string expected_output_oldest_first_short(
112 "file2:2 event2\n" 147 "file2:2 event2\n"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 251
217 EXPECT_EQ("event5\nerror4\nevent3\nerror2\n", 252 EXPECT_EQ("event5\nerror4\nevent3\nerror2\n",
218 GetLogString(NEWEST_FIRST, "", LOG_LEVEL_EVENT, 4)); 253 GetLogString(NEWEST_FIRST, "", LOG_LEVEL_EVENT, 4));
219 254
220 EXPECT_EQ("event5\nerror4\nevent3\nerror2\nevent1\n", 255 EXPECT_EQ("event5\nerror4\nevent3\nerror2\nevent1\n",
221 GetLogString(NEWEST_FIRST, "", LOG_LEVEL_EVENT, 5)); 256 GetLogString(NEWEST_FIRST, "", LOG_LEVEL_EVENT, 5));
222 } 257 }
223 258
224 TEST_F(DeviceEventLogTest, TestMaxErrors) { 259 TEST_F(DeviceEventLogTest, TestMaxErrors) {
225 const int kMaxTestEntries = 4; 260 const int kMaxTestEntries = 4;
226 impl_.reset(new DeviceEventLogImpl(kMaxTestEntries)); 261 impl_.reset(new DeviceEventLogImpl(task_runner_, kMaxTestEntries));
227 AddTestEvent(LOG_LEVEL_EVENT, "event1"); 262 AddTestEvent(LOG_LEVEL_EVENT, "event1");
228 AddTestEvent(LOG_LEVEL_ERROR, "error2"); 263 AddTestEvent(LOG_LEVEL_ERROR, "error2");
229 AddTestEvent(LOG_LEVEL_EVENT, "event3"); 264 AddTestEvent(LOG_LEVEL_EVENT, "event3");
230 AddTestEvent(LOG_LEVEL_ERROR, "error4"); 265 AddTestEvent(LOG_LEVEL_ERROR, "error4");
231 AddTestEvent(LOG_LEVEL_EVENT, "event5"); 266 AddTestEvent(LOG_LEVEL_EVENT, "event5");
232 AddTestEvent(LOG_LEVEL_EVENT, "event6"); 267 AddTestEvent(LOG_LEVEL_EVENT, "event6");
233 EXPECT_EQ("error2\nerror4\nevent5\nevent6\n", 268 EXPECT_EQ("error2\nerror4\nevent5\nevent6\n",
234 GetLogString(OLDEST_FIRST, "", LOG_LEVEL_DEBUG, 0)); 269 GetLogString(OLDEST_FIRST, "", LOG_LEVEL_DEBUG, 0));
235 } 270 }
236 271
(...skipping 15 matching lines...) Expand all
252 "Power: event2\n" 287 "Power: event2\n"
253 "Network: event3\n" 288 "Network: event3\n"
254 "Power: event4\n" 289 "Power: event4\n"
255 "Network: event5\n" 290 "Network: event5\n"
256 "Network: event6\n"); 291 "Network: event6\n");
257 EXPECT_EQ(all_events, GetLogStringForType("network,power")); 292 EXPECT_EQ(all_events, GetLogStringForType("network,power"));
258 EXPECT_EQ(all_events, GetLogStringForType("")); 293 EXPECT_EQ(all_events, GetLogStringForType(""));
259 } 294 }
260 295
261 } // namespace device_event_log 296 } // namespace device_event_log
OLDNEW
« no previous file with comments | « components/device_event_log/device_event_log_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698