| 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; |
| 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::All(), |
| 51 EXPECT_EQ(log_level, net_log.GetLogLevel()); | 55 NetLogCaptureMode::Default(), |
| 56 NetLogCaptureMode::IncludeCookiesAndCredentials()}; |
| 57 |
| 58 for (NetLogCaptureMode mode : kModes) { |
| 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_, NetLogCaptureMode::All()); |
| 189 ASSERT_EQ(net_log_, observer_.net_log()); | 197 ASSERT_EQ(net_log_, observer_.net_log()); |
| 190 ASSERT_EQ(NetLog::LOG_ALL, observer_.log_level()); | 198 ASSERT_EQ(NetLogCaptureMode::All(), observer_.capture_mode()); |
| 191 ASSERT_LE(net_log_->GetLogLevel(), NetLog::LOG_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( |
| 260 &observer, NetLogCaptureMode::IncludeCookiesAndCredentials()); |
| 253 EXPECT_EQ(&net_log, observer.net_log()); | 261 EXPECT_EQ(&net_log, observer.net_log()); |
| 254 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer.log_level()); | 262 EXPECT_EQ(NetLogCaptureMode::IncludeCookiesAndCredentials(), |
| 255 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, net_log.GetLogLevel()); | 263 observer.capture_mode()); |
| 264 EXPECT_EQ(NetLogCaptureMode::IncludeCookiesAndCredentials(), |
| 265 net_log.GetCaptureMode()); |
| 256 | 266 |
| 257 AddEvent(&net_log); | 267 AddEvent(&net_log); |
| 258 EXPECT_EQ(1, observer.count()); | 268 EXPECT_EQ(1, observer.count()); |
| 259 | 269 |
| 260 // Change the observer's logging level and add an event. | 270 // Change the observer's logging level and add an event. |
| 261 net_log.SetObserverLogLevel(&observer, NetLog::LOG_ALL); | 271 net_log.SetObserverCaptureMode(&observer, NetLogCaptureMode::All()); |
| 262 EXPECT_EQ(&net_log, observer.net_log()); | 272 EXPECT_EQ(&net_log, observer.net_log()); |
| 263 EXPECT_EQ(NetLog::LOG_ALL, observer.log_level()); | 273 EXPECT_EQ(NetLogCaptureMode::All(), observer.capture_mode()); |
| 264 EXPECT_EQ(NetLog::LOG_ALL, net_log.GetLogLevel()); | 274 EXPECT_EQ(NetLogCaptureMode::All(), net_log.GetCaptureMode()); |
| 265 | 275 |
| 266 AddEvent(&net_log); | 276 AddEvent(&net_log); |
| 267 EXPECT_EQ(2, observer.count()); | 277 EXPECT_EQ(2, observer.count()); |
| 268 | 278 |
| 269 // Remove observer and add an event. | 279 // Remove observer and add an event. |
| 270 net_log.DeprecatedRemoveObserver(&observer); | 280 net_log.DeprecatedRemoveObserver(&observer); |
| 271 EXPECT_EQ(NULL, observer.net_log()); | 281 EXPECT_EQ(NULL, observer.net_log()); |
| 272 EXPECT_EQ(NetLog::LOG_NONE, net_log.GetLogLevel()); | 282 EXPECT_FALSE(net_log.GetCaptureMode().enabled()); |
| 273 | 283 |
| 274 AddEvent(&net_log); | 284 AddEvent(&net_log); |
| 275 EXPECT_EQ(2, observer.count()); | 285 EXPECT_EQ(2, observer.count()); |
| 276 | 286 |
| 277 // Add the observer a final time, and add an event. | 287 // Add the observer a final time, and add an event. |
| 278 net_log.DeprecatedAddObserver(&observer, NetLog::LOG_ALL); | 288 net_log.DeprecatedAddObserver(&observer, NetLogCaptureMode::All()); |
| 279 EXPECT_EQ(&net_log, observer.net_log()); | 289 EXPECT_EQ(&net_log, observer.net_log()); |
| 280 EXPECT_EQ(NetLog::LOG_ALL, observer.log_level()); | 290 EXPECT_EQ(NetLogCaptureMode::All(), observer.capture_mode()); |
| 281 EXPECT_EQ(NetLog::LOG_ALL, net_log.GetLogLevel()); | 291 EXPECT_EQ(NetLogCaptureMode::All(), net_log.GetCaptureMode()); |
| 282 | 292 |
| 283 AddEvent(&net_log); | 293 AddEvent(&net_log); |
| 284 EXPECT_EQ(3, observer.count()); | 294 EXPECT_EQ(3, observer.count()); |
| 285 } | 295 } |
| 286 | 296 |
| 287 // Test adding and removing two observers at different log levels. | 297 // Test adding and removing two observers at different log levels. |
| 288 TEST(NetLogTest, NetLogTwoObservers) { | 298 TEST(NetLogTest, NetLogTwoObservers) { |
| 289 NetLog net_log; | 299 NetLog net_log; |
| 290 LoggingObserver observer[2]; | 300 LoggingObserver observer[2]; |
| 291 | 301 |
| 292 // Add first observer. | 302 // Add first observer. |
| 293 net_log.DeprecatedAddObserver(&observer[0], NetLog::LOG_ALL_BUT_BYTES); | 303 net_log.DeprecatedAddObserver( |
| 304 &observer[0], NetLogCaptureMode::IncludeCookiesAndCredentials()); |
| 294 EXPECT_EQ(&net_log, observer[0].net_log()); | 305 EXPECT_EQ(&net_log, observer[0].net_log()); |
| 295 EXPECT_EQ(NULL, observer[1].net_log()); | 306 EXPECT_EQ(NULL, observer[1].net_log()); |
| 296 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer[0].log_level()); | 307 EXPECT_EQ(NetLogCaptureMode::IncludeCookiesAndCredentials(), |
| 297 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, net_log.GetLogLevel()); | 308 observer[0].capture_mode()); |
| 309 EXPECT_EQ(NetLogCaptureMode::IncludeCookiesAndCredentials(), |
| 310 net_log.GetCaptureMode()); |
| 298 | 311 |
| 299 // Add second observer observer. | 312 // Add second observer observer. |
| 300 net_log.DeprecatedAddObserver(&observer[1], NetLog::LOG_ALL); | 313 net_log.DeprecatedAddObserver(&observer[1], NetLogCaptureMode::All()); |
| 301 EXPECT_EQ(&net_log, observer[0].net_log()); | 314 EXPECT_EQ(&net_log, observer[0].net_log()); |
| 302 EXPECT_EQ(&net_log, observer[1].net_log()); | 315 EXPECT_EQ(&net_log, observer[1].net_log()); |
| 303 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer[0].log_level()); | 316 EXPECT_EQ(NetLogCaptureMode::IncludeCookiesAndCredentials(), |
| 304 EXPECT_EQ(NetLog::LOG_ALL, observer[1].log_level()); | 317 observer[0].capture_mode()); |
| 305 EXPECT_EQ(NetLog::LOG_ALL, net_log.GetLogLevel()); | 318 EXPECT_EQ(NetLogCaptureMode::All(), observer[1].capture_mode()); |
| 319 EXPECT_EQ(NetLogCaptureMode::All(), net_log.GetCaptureMode()); |
| 306 | 320 |
| 307 // Add event and make sure both observers receive it at their respective log | 321 // Add event and make sure both observers receive it at their respective log |
| 308 // levels. | 322 // levels. |
| 309 int param; | 323 int param; |
| 310 AddEvent(&net_log); | 324 AddEvent(&net_log); |
| 311 ASSERT_EQ(1U, observer[0].GetNumValues()); | 325 ASSERT_EQ(1U, observer[0].GetNumValues()); |
| 312 ASSERT_TRUE(observer[0].GetValue(0)->GetInteger("params", ¶m)); | 326 ASSERT_TRUE(observer[0].GetValue(0)->GetInteger("params", ¶m)); |
| 313 EXPECT_EQ(observer[0].log_level(), param); | 327 EXPECT_EQ(observer[0].capture_mode().ToInternalValueForTesting(), param); |
| 314 ASSERT_EQ(1U, observer[1].GetNumValues()); | 328 ASSERT_EQ(1U, observer[1].GetNumValues()); |
| 315 ASSERT_TRUE(observer[1].GetValue(0)->GetInteger("params", ¶m)); | 329 ASSERT_TRUE(observer[1].GetValue(0)->GetInteger("params", ¶m)); |
| 316 EXPECT_EQ(observer[1].log_level(), param); | 330 EXPECT_EQ(observer[1].capture_mode().ToInternalValueForTesting(), param); |
| 317 | 331 |
| 318 // Remove second observer. | 332 // Remove second observer. |
| 319 net_log.DeprecatedRemoveObserver(&observer[1]); | 333 net_log.DeprecatedRemoveObserver(&observer[1]); |
| 320 EXPECT_EQ(&net_log, observer[0].net_log()); | 334 EXPECT_EQ(&net_log, observer[0].net_log()); |
| 321 EXPECT_EQ(NULL, observer[1].net_log()); | 335 EXPECT_EQ(NULL, observer[1].net_log()); |
| 322 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, observer[0].log_level()); | 336 EXPECT_EQ(NetLogCaptureMode::IncludeCookiesAndCredentials(), |
| 323 EXPECT_EQ(NetLog::LOG_ALL_BUT_BYTES, net_log.GetLogLevel()); | 337 observer[0].capture_mode()); |
| 338 EXPECT_EQ(NetLogCaptureMode::IncludeCookiesAndCredentials(), |
| 339 net_log.GetCaptureMode()); |
| 324 | 340 |
| 325 // Add event and make sure only second observer gets it. | 341 // Add event and make sure only second observer gets it. |
| 326 AddEvent(&net_log); | 342 AddEvent(&net_log); |
| 327 EXPECT_EQ(2U, observer[0].GetNumValues()); | 343 EXPECT_EQ(2U, observer[0].GetNumValues()); |
| 328 EXPECT_EQ(1U, observer[1].GetNumValues()); | 344 EXPECT_EQ(1U, observer[1].GetNumValues()); |
| 329 | 345 |
| 330 // Remove first observer. | 346 // Remove first observer. |
| 331 net_log.DeprecatedRemoveObserver(&observer[0]); | 347 net_log.DeprecatedRemoveObserver(&observer[0]); |
| 332 EXPECT_EQ(NULL, observer[0].net_log()); | 348 EXPECT_EQ(NULL, observer[0].net_log()); |
| 333 EXPECT_EQ(NULL, observer[1].net_log()); | 349 EXPECT_EQ(NULL, observer[1].net_log()); |
| 334 EXPECT_EQ(NetLog::LOG_NONE, net_log.GetLogLevel()); | 350 EXPECT_FALSE(net_log.GetCaptureMode().enabled()); |
| 335 | 351 |
| 336 // Add event and make sure neither observer gets it. | 352 // Add event and make sure neither observer gets it. |
| 337 AddEvent(&net_log); | 353 AddEvent(&net_log); |
| 338 EXPECT_EQ(2U, observer[0].GetNumValues()); | 354 EXPECT_EQ(2U, observer[0].GetNumValues()); |
| 339 EXPECT_EQ(1U, observer[1].GetNumValues()); | 355 EXPECT_EQ(1U, observer[1].GetNumValues()); |
| 340 } | 356 } |
| 341 | 357 |
| 342 // Makes sure that adding and removing observers simultaneously on different | 358 // Makes sure that adding and removing observers simultaneously on different |
| 343 // threads works. | 359 // threads works. |
| 344 TEST(NetLogTest, NetLogAddRemoveObserverThreads) { | 360 TEST(NetLogTest, NetLogAddRemoveObserverThreads) { |
| 345 NetLog net_log; | 361 NetLog net_log; |
| 346 | 362 |
| 347 // Run a bunch of threads to completion, each of which will repeatedly add | 363 // Run a bunch of threads to completion, each of which will repeatedly add |
| 348 // and remove an observer, and set its logging level. | 364 // and remove an observer, and set its logging level. |
| 349 RunTestThreads<AddRemoveObserverTestThread>(&net_log); | 365 RunTestThreads<AddRemoveObserverTestThread>(&net_log); |
| 350 } | 366 } |
| 351 | 367 |
| 352 } // namespace | 368 } // namespace |
| 353 | 369 |
| 354 } // namespace net | 370 } // namespace net |
| OLD | NEW |