OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "net/log/net_log_unittest.h" | 5 #include "net/log/net_log_unittest.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
9 #include "base/synchronization/waitable_event.h" | 9 #include "base/synchronization/waitable_event.h" |
10 #include "base/threading/simple_thread.h" | 10 #include "base/threading/simple_thread.h" |
11 #include "base/values.h" | 11 #include "base/values.h" |
12 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
13 | 13 |
14 namespace net { | 14 namespace net { |
15 | 15 |
16 namespace { | 16 namespace { |
17 | 17 |
18 const int kThreads = 10; | 18 const int kThreads = 10; |
19 const int kEvents = 100; | 19 const int kEvents = 100; |
20 | 20 |
21 base::Value* NetLogLevelCallback(NetLog::LogLevel log_level) { | 21 base::Value* NetCaptureModeCallback(NetLogCaptureMode capture_mode) { |
22 base::DictionaryValue* dict = new base::DictionaryValue(); | 22 base::DictionaryValue* dict = new base::DictionaryValue(); |
23 dict->SetInteger("log_level", log_level); | 23 dict->SetInteger("log_level", capture_mode.level()); |
24 return dict; | 24 return dict; |
25 } | 25 } |
26 | 26 |
27 TEST(NetLogTest, Basic) { | 27 TEST(NetLogTest, Basic) { |
28 CapturingNetLog net_log; | 28 CapturingNetLog net_log; |
29 CapturingNetLog::CapturedEntryList entries; | 29 CapturingNetLog::CapturedEntryList entries; |
30 net_log.GetEntries(&entries); | 30 net_log.GetEntries(&entries); |
31 EXPECT_EQ(0u, entries.size()); | 31 EXPECT_EQ(0u, entries.size()); |
32 | 32 |
33 net_log.AddGlobalEntry(NetLog::TYPE_CANCELLED); | 33 net_log.AddGlobalEntry(NetLog::TYPE_CANCELLED); |
34 | 34 |
35 net_log.GetEntries(&entries); | 35 net_log.GetEntries(&entries); |
36 ASSERT_EQ(1u, entries.size()); | 36 ASSERT_EQ(1u, entries.size()); |
37 EXPECT_EQ(NetLog::TYPE_CANCELLED, entries[0].type); | 37 EXPECT_EQ(NetLog::TYPE_CANCELLED, entries[0].type); |
38 EXPECT_EQ(NetLog::SOURCE_NONE, entries[0].source.type); | 38 EXPECT_EQ(NetLog::SOURCE_NONE, entries[0].source.type); |
39 EXPECT_NE(NetLog::Source::kInvalidId, entries[0].source.id); | 39 EXPECT_NE(NetLog::Source::kInvalidId, entries[0].source.id); |
40 EXPECT_EQ(NetLog::PHASE_NONE, entries[0].phase); | 40 EXPECT_EQ(NetLog::PHASE_NONE, entries[0].phase); |
41 EXPECT_GE(base::TimeTicks::Now(), entries[0].time); | 41 EXPECT_GE(base::TimeTicks::Now(), entries[0].time); |
42 EXPECT_FALSE(entries[0].params); | 42 EXPECT_FALSE(entries[0].params); |
43 } | 43 } |
44 | 44 |
45 // Check that the correct LogLevel is sent to NetLog Value callbacks. | 45 // Check that the correct CaptureMode is sent to NetLog Value callbacks. |
46 TEST(NetLogTest, LogLevels) { | 46 TEST(NetLogTest, CaptureModes) { |
47 CapturingNetLog net_log; | 47 CapturingNetLog net_log; |
48 for (int log_level = NetLog::LOG_ALL; log_level < NetLog::LOG_NONE; | 48 |
49 ++log_level) { | 49 NetLogCaptureMode kModes[] = {NetLogCaptureMode::All(), |
50 net_log.SetLogLevel(static_cast<NetLog::LogLevel>(log_level)); | 50 NetLogCaptureMode::StripPrivateData(), |
51 EXPECT_EQ(log_level, net_log.GetLogLevel()); | 51 NetLogCaptureMode::AllButBytes()}; |
| 52 |
| 53 for (NetLogCaptureMode mode : kModes) { |
| 54 net_log.SetCaptureMode(mode); |
| 55 EXPECT_EQ(mode.level(), net_log.GetCaptureMode().level()); |
52 | 56 |
53 net_log.AddGlobalEntry(NetLog::TYPE_SOCKET_ALIVE, | 57 net_log.AddGlobalEntry(NetLog::TYPE_SOCKET_ALIVE, |
54 base::Bind(NetLogLevelCallback)); | 58 base::Bind(NetCaptureModeCallback)); |
55 | 59 |
56 CapturingNetLog::CapturedEntryList entries; | 60 CapturingNetLog::CapturedEntryList entries; |
57 net_log.GetEntries(&entries); | 61 net_log.GetEntries(&entries); |
58 | 62 |
59 ASSERT_EQ(1u, entries.size()); | 63 ASSERT_EQ(1u, entries.size()); |
60 EXPECT_EQ(NetLog::TYPE_SOCKET_ALIVE, entries[0].type); | 64 EXPECT_EQ(NetLog::TYPE_SOCKET_ALIVE, entries[0].type); |
61 EXPECT_EQ(NetLog::SOURCE_NONE, entries[0].source.type); | 65 EXPECT_EQ(NetLog::SOURCE_NONE, entries[0].source.type); |
62 EXPECT_NE(NetLog::Source::kInvalidId, entries[0].source.id); | 66 EXPECT_NE(NetLog::Source::kInvalidId, entries[0].source.id); |
63 EXPECT_EQ(NetLog::PHASE_NONE, entries[0].phase); | 67 EXPECT_EQ(NetLog::PHASE_NONE, entries[0].phase); |
64 EXPECT_GE(base::TimeTicks::Now(), entries[0].time); | 68 EXPECT_GE(base::TimeTicks::Now(), entries[0].time); |
65 | 69 |
66 int logged_log_level; | 70 int logged_capture_mode; |
67 ASSERT_TRUE(entries[0].GetIntegerValue("log_level", &logged_log_level)); | 71 ASSERT_TRUE(entries[0].GetIntegerValue("log_level", &logged_capture_mode)); |
68 EXPECT_EQ(log_level, logged_log_level); | 72 EXPECT_EQ(mode.level(), logged_capture_mode); |
69 | 73 |
70 net_log.Clear(); | 74 net_log.Clear(); |
71 } | 75 } |
72 } | 76 } |
73 | 77 |
74 class CountingObserver : public NetLog::ThreadSafeObserver { | 78 class CountingObserver : public NetLog::ThreadSafeObserver { |
75 public: | 79 public: |
76 CountingObserver() : count_(0) {} | 80 CountingObserver() : count_(0) {} |
77 | 81 |
78 ~CountingObserver() override { | 82 ~CountingObserver() override { |
(...skipping 25 matching lines...) Expand all Loading... |
104 values_.push_back(dict); | 108 values_.push_back(dict); |
105 } | 109 } |
106 | 110 |
107 size_t GetNumValues() const { return values_.size(); } | 111 size_t GetNumValues() const { return values_.size(); } |
108 base::DictionaryValue* GetValue(size_t index) const { return values_[index]; } | 112 base::DictionaryValue* GetValue(size_t index) const { return values_[index]; } |
109 | 113 |
110 private: | 114 private: |
111 ScopedVector<base::DictionaryValue> values_; | 115 ScopedVector<base::DictionaryValue> values_; |
112 }; | 116 }; |
113 | 117 |
114 base::Value* LogLevelToValue(NetLog::LogLevel log_level) { | 118 base::Value* CaptureModeToValue(NetLogCaptureMode capture_mode) { |
115 return new base::FundamentalValue(log_level); | 119 return new base::FundamentalValue(capture_mode.level()); |
116 } | 120 } |
117 | 121 |
118 void AddEvent(NetLog* net_log) { | 122 void AddEvent(NetLog* net_log) { |
119 net_log->AddGlobalEntry(NetLog::TYPE_CANCELLED, base::Bind(LogLevelToValue)); | 123 net_log->AddGlobalEntry(NetLog::TYPE_CANCELLED, |
| 124 base::Bind(CaptureModeToValue)); |
120 } | 125 } |
121 | 126 |
122 // A thread that waits until an event has been signalled before calling | 127 // A thread that waits until an event has been signalled before calling |
123 // RunTestThread. | 128 // RunTestThread. |
124 class NetLogTestThread : public base::SimpleThread { | 129 class NetLogTestThread : public base::SimpleThread { |
125 public: | 130 public: |
126 NetLogTestThread() | 131 NetLogTestThread() |
127 : base::SimpleThread("NetLogTest"), net_log_(NULL), start_event_(NULL) {} | 132 : base::SimpleThread("NetLogTest"), net_log_(NULL), start_event_(NULL) {} |
128 | 133 |
129 // We'll wait for |start_event| to be triggered before calling a subclass's | 134 // We'll wait for |start_event| to be triggered before calling a subclass's |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 public: | 178 public: |
174 AddRemoveObserverTestThread() {} | 179 AddRemoveObserverTestThread() {} |
175 | 180 |
176 ~AddRemoveObserverTestThread() override { EXPECT_TRUE(!observer_.net_log()); } | 181 ~AddRemoveObserverTestThread() override { EXPECT_TRUE(!observer_.net_log()); } |
177 | 182 |
178 private: | 183 private: |
179 void RunTestThread() override { | 184 void RunTestThread() override { |
180 for (int i = 0; i < kEvents; ++i) { | 185 for (int i = 0; i < kEvents; ++i) { |
181 ASSERT_FALSE(observer_.net_log()); | 186 ASSERT_FALSE(observer_.net_log()); |
182 | 187 |
183 net_log_->DeprecatedAddObserver(&observer_, NetLog::LOG_ALL_BUT_BYTES); | 188 net_log_->DeprecatedAddObserver(&observer_, |
| 189 NetLogCaptureMode::AllButBytes()); |
184 ASSERT_EQ(net_log_, observer_.net_log()); | 190 ASSERT_EQ(net_log_, observer_.net_log()); |
185 ASSERT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer_.log_level()); | 191 ASSERT_EQ(NetLogCaptureMode::AllButBytes(), observer_.capture_mode()); |
186 ASSERT_LE(net_log_->GetLogLevel(), NetLog::LOG_ALL_BUT_BYTES); | 192 ASSERT_GE(net_log_->GetCaptureMode().level(), |
| 193 NetLogCaptureMode::ALL_BUT_BYTES); |
187 | 194 |
188 net_log_->SetObserverLogLevel(&observer_, NetLog::LOG_ALL); | 195 net_log_->SetObserverCaptureMode(&observer_, NetLogCaptureMode::All()); |
189 ASSERT_EQ(net_log_, observer_.net_log()); | 196 ASSERT_EQ(net_log_, observer_.net_log()); |
190 ASSERT_EQ(NetLog::LOG_ALL, observer_.log_level()); | 197 ASSERT_EQ(NetLogCaptureMode::All(), observer_.capture_mode()); |
191 ASSERT_LE(net_log_->GetLogLevel(), NetLog::LOG_ALL); | 198 ASSERT_GE(net_log_->GetCaptureMode().level(), NetLogCaptureMode::ALL); |
192 | 199 |
193 net_log_->DeprecatedRemoveObserver(&observer_); | 200 net_log_->DeprecatedRemoveObserver(&observer_); |
194 ASSERT_TRUE(!observer_.net_log()); | 201 ASSERT_TRUE(!observer_.net_log()); |
195 } | 202 } |
196 } | 203 } |
197 | 204 |
198 CountingObserver observer_; | 205 CountingObserver observer_; |
199 | 206 |
200 DISALLOW_COPY_AND_ASSIGN(AddRemoveObserverTestThread); | 207 DISALLOW_COPY_AND_ASSIGN(AddRemoveObserverTestThread); |
201 }; | 208 }; |
(...skipping 17 matching lines...) Expand all Loading... |
219 } | 226 } |
220 | 227 |
221 // Makes sure that events on multiple threads are dispatched to all observers. | 228 // Makes sure that events on multiple threads are dispatched to all observers. |
222 TEST(NetLogTest, NetLogEventThreads) { | 229 TEST(NetLogTest, NetLogEventThreads) { |
223 NetLog net_log; | 230 NetLog net_log; |
224 | 231 |
225 // Attach some observers. Since they're created after |net_log|, they'll | 232 // Attach some observers. Since they're created after |net_log|, they'll |
226 // safely detach themselves on destruction. | 233 // safely detach themselves on destruction. |
227 CountingObserver observers[3]; | 234 CountingObserver observers[3]; |
228 for (size_t i = 0; i < arraysize(observers); ++i) | 235 for (size_t i = 0; i < arraysize(observers); ++i) |
229 net_log.DeprecatedAddObserver(&observers[i], NetLog::LOG_ALL); | 236 net_log.DeprecatedAddObserver(&observers[i], NetLogCaptureMode::All()); |
230 | 237 |
231 // Run a bunch of threads to completion, each of which will emit events to | 238 // Run a bunch of threads to completion, each of which will emit events to |
232 // |net_log|. | 239 // |net_log|. |
233 RunTestThreads<AddEventsTestThread>(&net_log); | 240 RunTestThreads<AddEventsTestThread>(&net_log); |
234 | 241 |
235 // Check that each observer saw the emitted events. | 242 // Check that each observer saw the emitted events. |
236 const int kTotalEvents = kThreads * kEvents; | 243 const int kTotalEvents = kThreads * kEvents; |
237 for (size_t i = 0; i < arraysize(observers); ++i) | 244 for (size_t i = 0; i < arraysize(observers); ++i) |
238 EXPECT_EQ(kTotalEvents, observers[i].count()); | 245 EXPECT_EQ(kTotalEvents, observers[i].count()); |
239 } | 246 } |
240 | 247 |
241 // Test adding and removing a single observer. | 248 // Test adding and removing a single observer. |
242 TEST(NetLogTest, NetLogAddRemoveObserver) { | 249 TEST(NetLogTest, NetLogAddRemoveObserver) { |
243 NetLog net_log; | 250 NetLog net_log; |
244 CountingObserver observer; | 251 CountingObserver observer; |
245 | 252 |
246 AddEvent(&net_log); | 253 AddEvent(&net_log); |
247 EXPECT_EQ(0, observer.count()); | 254 EXPECT_EQ(0, observer.count()); |
248 EXPECT_EQ(NULL, observer.net_log()); | 255 EXPECT_EQ(NULL, observer.net_log()); |
249 EXPECT_EQ(NetLog::LOG_NONE, net_log.GetLogLevel()); | 256 EXPECT_FALSE(net_log.GetCaptureMode().enabled()); |
250 | 257 |
251 // Add the observer and add an event. | 258 // Add the observer and add an event. |
252 net_log.DeprecatedAddObserver(&observer, NetLog::LOG_ALL_BUT_BYTES); | 259 net_log.DeprecatedAddObserver(&observer, NetLogCaptureMode::AllButBytes()); |
253 EXPECT_EQ(&net_log, observer.net_log()); | 260 EXPECT_EQ(&net_log, observer.net_log()); |
254 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer.log_level()); | 261 EXPECT_EQ(NetLogCaptureMode::AllButBytes(), observer.capture_mode()); |
255 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, net_log.GetLogLevel()); | 262 EXPECT_EQ(NetLogCaptureMode::AllButBytes(), net_log.GetCaptureMode()); |
256 | 263 |
257 AddEvent(&net_log); | 264 AddEvent(&net_log); |
258 EXPECT_EQ(1, observer.count()); | 265 EXPECT_EQ(1, observer.count()); |
259 | 266 |
260 // Change the observer's logging level and add an event. | 267 // Change the observer's logging level and add an event. |
261 net_log.SetObserverLogLevel(&observer, NetLog::LOG_ALL); | 268 net_log.SetObserverCaptureMode(&observer, NetLogCaptureMode::All()); |
262 EXPECT_EQ(&net_log, observer.net_log()); | 269 EXPECT_EQ(&net_log, observer.net_log()); |
263 EXPECT_EQ(NetLog::LOG_ALL, observer.log_level()); | 270 EXPECT_EQ(NetLogCaptureMode::All(), observer.capture_mode()); |
264 EXPECT_EQ(NetLog::LOG_ALL, net_log.GetLogLevel()); | 271 EXPECT_EQ(NetLogCaptureMode::All(), net_log.GetCaptureMode()); |
265 | 272 |
266 AddEvent(&net_log); | 273 AddEvent(&net_log); |
267 EXPECT_EQ(2, observer.count()); | 274 EXPECT_EQ(2, observer.count()); |
268 | 275 |
269 // Remove observer and add an event. | 276 // Remove observer and add an event. |
270 net_log.DeprecatedRemoveObserver(&observer); | 277 net_log.DeprecatedRemoveObserver(&observer); |
271 EXPECT_EQ(NULL, observer.net_log()); | 278 EXPECT_EQ(NULL, observer.net_log()); |
272 EXPECT_EQ(NetLog::LOG_NONE, net_log.GetLogLevel()); | 279 EXPECT_FALSE(net_log.GetCaptureMode().enabled()); |
273 | 280 |
274 AddEvent(&net_log); | 281 AddEvent(&net_log); |
275 EXPECT_EQ(2, observer.count()); | 282 EXPECT_EQ(2, observer.count()); |
276 | 283 |
277 // Add the observer a final time, and add an event. | 284 // Add the observer a final time, and add an event. |
278 net_log.DeprecatedAddObserver(&observer, NetLog::LOG_ALL); | 285 net_log.DeprecatedAddObserver(&observer, NetLogCaptureMode::All()); |
279 EXPECT_EQ(&net_log, observer.net_log()); | 286 EXPECT_EQ(&net_log, observer.net_log()); |
280 EXPECT_EQ(NetLog::LOG_ALL, observer.log_level()); | 287 EXPECT_EQ(NetLogCaptureMode::All(), observer.capture_mode()); |
281 EXPECT_EQ(NetLog::LOG_ALL, net_log.GetLogLevel()); | 288 EXPECT_EQ(NetLogCaptureMode::All(), net_log.GetCaptureMode()); |
282 | 289 |
283 AddEvent(&net_log); | 290 AddEvent(&net_log); |
284 EXPECT_EQ(3, observer.count()); | 291 EXPECT_EQ(3, observer.count()); |
285 } | 292 } |
286 | 293 |
287 // Test adding and removing two observers at different log levels. | 294 // Test adding and removing two observers at different log levels. |
288 TEST(NetLogTest, NetLogTwoObservers) { | 295 TEST(NetLogTest, NetLogTwoObservers) { |
289 NetLog net_log; | 296 NetLog net_log; |
290 LoggingObserver observer[2]; | 297 LoggingObserver observer[2]; |
291 | 298 |
292 // Add first observer. | 299 // Add first observer. |
293 net_log.DeprecatedAddObserver(&observer[0], NetLog::LOG_ALL_BUT_BYTES); | 300 net_log.DeprecatedAddObserver(&observer[0], NetLogCaptureMode::AllButBytes()); |
294 EXPECT_EQ(&net_log, observer[0].net_log()); | 301 EXPECT_EQ(&net_log, observer[0].net_log()); |
295 EXPECT_EQ(NULL, observer[1].net_log()); | 302 EXPECT_EQ(NULL, observer[1].net_log()); |
296 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer[0].log_level()); | 303 EXPECT_EQ(NetLogCaptureMode::AllButBytes(), observer[0].capture_mode()); |
297 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, net_log.GetLogLevel()); | 304 EXPECT_EQ(NetLogCaptureMode::AllButBytes(), net_log.GetCaptureMode()); |
298 | 305 |
299 // Add second observer observer. | 306 // Add second observer observer. |
300 net_log.DeprecatedAddObserver(&observer[1], NetLog::LOG_ALL); | 307 net_log.DeprecatedAddObserver(&observer[1], NetLogCaptureMode::All()); |
301 EXPECT_EQ(&net_log, observer[0].net_log()); | 308 EXPECT_EQ(&net_log, observer[0].net_log()); |
302 EXPECT_EQ(&net_log, observer[1].net_log()); | 309 EXPECT_EQ(&net_log, observer[1].net_log()); |
303 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer[0].log_level()); | 310 EXPECT_EQ(NetLogCaptureMode::AllButBytes(), observer[0].capture_mode()); |
304 EXPECT_EQ(NetLog::LOG_ALL, observer[1].log_level()); | 311 EXPECT_EQ(NetLogCaptureMode::All(), observer[1].capture_mode()); |
305 EXPECT_EQ(NetLog::LOG_ALL, net_log.GetLogLevel()); | 312 EXPECT_EQ(NetLogCaptureMode::All(), net_log.GetCaptureMode()); |
306 | 313 |
307 // Add event and make sure both observers receive it at their respective log | 314 // Add event and make sure both observers receive it at their respective log |
308 // levels. | 315 // levels. |
309 int param; | 316 int param; |
310 AddEvent(&net_log); | 317 AddEvent(&net_log); |
311 ASSERT_EQ(1U, observer[0].GetNumValues()); | 318 ASSERT_EQ(1U, observer[0].GetNumValues()); |
312 ASSERT_TRUE(observer[0].GetValue(0)->GetInteger("params", ¶m)); | 319 ASSERT_TRUE(observer[0].GetValue(0)->GetInteger("params", ¶m)); |
313 EXPECT_EQ(observer[0].log_level(), param); | 320 EXPECT_EQ(observer[0].capture_mode().level(), param); |
314 ASSERT_EQ(1U, observer[1].GetNumValues()); | 321 ASSERT_EQ(1U, observer[1].GetNumValues()); |
315 ASSERT_TRUE(observer[1].GetValue(0)->GetInteger("params", ¶m)); | 322 ASSERT_TRUE(observer[1].GetValue(0)->GetInteger("params", ¶m)); |
316 EXPECT_EQ(observer[1].log_level(), param); | 323 EXPECT_EQ(observer[1].capture_mode().level(), param); |
317 | 324 |
318 // Remove second observer. | 325 // Remove second observer. |
319 net_log.DeprecatedRemoveObserver(&observer[1]); | 326 net_log.DeprecatedRemoveObserver(&observer[1]); |
320 EXPECT_EQ(&net_log, observer[0].net_log()); | 327 EXPECT_EQ(&net_log, observer[0].net_log()); |
321 EXPECT_EQ(NULL, observer[1].net_log()); | 328 EXPECT_EQ(NULL, observer[1].net_log()); |
322 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer[0].log_level()); | 329 EXPECT_EQ(NetLogCaptureMode::AllButBytes(), observer[0].capture_mode()); |
323 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, net_log.GetLogLevel()); | 330 EXPECT_EQ(NetLogCaptureMode::AllButBytes(), net_log.GetCaptureMode()); |
324 | 331 |
325 // Add event and make sure only second observer gets it. | 332 // Add event and make sure only second observer gets it. |
326 AddEvent(&net_log); | 333 AddEvent(&net_log); |
327 EXPECT_EQ(2U, observer[0].GetNumValues()); | 334 EXPECT_EQ(2U, observer[0].GetNumValues()); |
328 EXPECT_EQ(1U, observer[1].GetNumValues()); | 335 EXPECT_EQ(1U, observer[1].GetNumValues()); |
329 | 336 |
330 // Remove first observer. | 337 // Remove first observer. |
331 net_log.DeprecatedRemoveObserver(&observer[0]); | 338 net_log.DeprecatedRemoveObserver(&observer[0]); |
332 EXPECT_EQ(NULL, observer[0].net_log()); | 339 EXPECT_EQ(NULL, observer[0].net_log()); |
333 EXPECT_EQ(NULL, observer[1].net_log()); | 340 EXPECT_EQ(NULL, observer[1].net_log()); |
334 EXPECT_EQ(NetLog::LOG_NONE, net_log.GetLogLevel()); | 341 EXPECT_FALSE(net_log.GetCaptureMode().enabled()); |
335 | 342 |
336 // Add event and make sure neither observer gets it. | 343 // Add event and make sure neither observer gets it. |
337 AddEvent(&net_log); | 344 AddEvent(&net_log); |
338 EXPECT_EQ(2U, observer[0].GetNumValues()); | 345 EXPECT_EQ(2U, observer[0].GetNumValues()); |
339 EXPECT_EQ(1U, observer[1].GetNumValues()); | 346 EXPECT_EQ(1U, observer[1].GetNumValues()); |
340 } | 347 } |
341 | 348 |
342 // Makes sure that adding and removing observers simultaneously on different | 349 // Makes sure that adding and removing observers simultaneously on different |
343 // threads works. | 350 // threads works. |
344 TEST(NetLogTest, NetLogAddRemoveObserverThreads) { | 351 TEST(NetLogTest, NetLogAddRemoveObserverThreads) { |
345 NetLog net_log; | 352 NetLog net_log; |
346 | 353 |
347 // Run a bunch of threads to completion, each of which will repeatedly add | 354 // Run a bunch of threads to completion, each of which will repeatedly add |
348 // and remove an observer, and set its logging level. | 355 // and remove an observer, and set its logging level. |
349 RunTestThreads<AddRemoveObserverTestThread>(&net_log); | 356 RunTestThreads<AddRemoveObserverTestThread>(&net_log); |
350 } | 357 } |
351 | 358 |
352 } // namespace | 359 } // namespace |
353 | 360 |
354 } // namespace net | 361 } // namespace net |
OLD | NEW |