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