| OLD | NEW |
| 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 "net/log/trace_net_log_observer.h" | 5 #include "net/log/trace_net_log_observer.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "base/memory/ref_counted_memory.h" | 13 #include "base/memory/ref_counted_memory.h" |
| 14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
| 16 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
| 17 #include "base/trace_event/trace_event.h" | 17 #include "base/trace_event/trace_event.h" |
| 18 #include "base/trace_event/trace_event_impl.h" | 18 #include "base/trace_event/trace_event_impl.h" |
| 19 #include "base/values.h" | 19 #include "base/values.h" |
| 20 #include "net/log/captured_net_log_entry.h" |
| 20 #include "net/log/net_log.h" | 21 #include "net/log/net_log.h" |
| 21 #include "net/log/test_net_log.h" | 22 #include "net/log/test_net_log.h" |
| 22 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 23 | 24 |
| 24 using base::trace_event::TraceLog; | 25 using base::trace_event::TraceLog; |
| 25 | 26 |
| 26 namespace net { | 27 namespace net { |
| 27 | 28 |
| 28 namespace { | 29 namespace { |
| 29 | 30 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 trace_net_log_observer()->WatchForTraceStart(net_log()); | 150 trace_net_log_observer()->WatchForTraceStart(net_log()); |
| 150 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); | 151 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); |
| 151 | 152 |
| 152 EndTraceAndFlush(); | 153 EndTraceAndFlush(); |
| 153 trace_net_log_observer()->StopWatchForTraceStart(); | 154 trace_net_log_observer()->StopWatchForTraceStart(); |
| 154 | 155 |
| 155 EXPECT_EQ(0u, trace_events()->GetSize()); | 156 EXPECT_EQ(0u, trace_events()->GetSize()); |
| 156 } | 157 } |
| 157 | 158 |
| 158 TEST_F(TraceNetLogObserverTest, TraceEventCaptured) { | 159 TEST_F(TraceNetLogObserverTest, TraceEventCaptured) { |
| 159 TestNetLog::CapturedEntryList entries; | 160 CapturedNetLogEntry::List entries; |
| 160 net_log()->GetEntries(&entries); | 161 net_log()->GetEntries(&entries); |
| 161 EXPECT_TRUE(entries.empty()); | 162 EXPECT_TRUE(entries.empty()); |
| 162 | 163 |
| 163 trace_net_log_observer()->WatchForTraceStart(net_log()); | 164 trace_net_log_observer()->WatchForTraceStart(net_log()); |
| 164 EnableTraceLog(); | 165 EnableTraceLog(); |
| 165 BoundNetLog bound_net_log = | 166 BoundNetLog bound_net_log = |
| 166 BoundNetLog::Make(net_log(), net::NetLog::SOURCE_NONE); | 167 BoundNetLog::Make(net_log(), net::NetLog::SOURCE_NONE); |
| 167 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); | 168 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); |
| 168 bound_net_log.BeginEvent(NetLog::TYPE_URL_REQUEST_START_JOB); | 169 bound_net_log.BeginEvent(NetLog::TYPE_URL_REQUEST_START_JOB); |
| 169 bound_net_log.EndEvent(NetLog::TYPE_REQUEST_ALIVE); | 170 bound_net_log.EndEvent(NetLog::TYPE_REQUEST_ALIVE); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 EnableTraceLog(); | 217 EnableTraceLog(); |
| 217 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); | 218 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); |
| 218 TraceLog::GetInstance()->SetDisabled(); | 219 TraceLog::GetInstance()->SetDisabled(); |
| 219 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); | 220 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); |
| 220 EnableTraceLog(); | 221 EnableTraceLog(); |
| 221 net_log()->AddGlobalEntry(NetLog::TYPE_URL_REQUEST_START_JOB); | 222 net_log()->AddGlobalEntry(NetLog::TYPE_URL_REQUEST_START_JOB); |
| 222 | 223 |
| 223 EndTraceAndFlush(); | 224 EndTraceAndFlush(); |
| 224 trace_net_log_observer()->StopWatchForTraceStart(); | 225 trace_net_log_observer()->StopWatchForTraceStart(); |
| 225 | 226 |
| 226 TestNetLog::CapturedEntryList entries; | 227 CapturedNetLogEntry::List entries; |
| 227 net_log()->GetEntries(&entries); | 228 net_log()->GetEntries(&entries); |
| 228 EXPECT_EQ(3u, entries.size()); | 229 EXPECT_EQ(3u, entries.size()); |
| 229 EXPECT_EQ(2u, trace_events()->GetSize()); | 230 EXPECT_EQ(2u, trace_events()->GetSize()); |
| 230 const base::DictionaryValue* item1 = NULL; | 231 const base::DictionaryValue* item1 = NULL; |
| 231 ASSERT_TRUE(trace_events()->GetDictionary(0, &item1)); | 232 ASSERT_TRUE(trace_events()->GetDictionary(0, &item1)); |
| 232 const base::DictionaryValue* item2 = NULL; | 233 const base::DictionaryValue* item2 = NULL; |
| 233 ASSERT_TRUE(trace_events()->GetDictionary(1, &item2)); | 234 ASSERT_TRUE(trace_events()->GetDictionary(1, &item2)); |
| 234 | 235 |
| 235 TraceEntryInfo actual_item1 = GetTraceEntryInfoFromValue(*item1); | 236 TraceEntryInfo actual_item1 = GetTraceEntryInfoFromValue(*item1); |
| 236 TraceEntryInfo actual_item2 = GetTraceEntryInfoFromValue(*item2); | 237 TraceEntryInfo actual_item2 = GetTraceEntryInfoFromValue(*item2); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 256 TEST_F(TraceNetLogObserverTest, DestroyObserverWhileTracing) { | 257 TEST_F(TraceNetLogObserverTest, DestroyObserverWhileTracing) { |
| 257 trace_net_log_observer()->WatchForTraceStart(net_log()); | 258 trace_net_log_observer()->WatchForTraceStart(net_log()); |
| 258 EnableTraceLog(); | 259 EnableTraceLog(); |
| 259 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); | 260 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); |
| 260 trace_net_log_observer()->StopWatchForTraceStart(); | 261 trace_net_log_observer()->StopWatchForTraceStart(); |
| 261 set_trace_net_log_observer(NULL); | 262 set_trace_net_log_observer(NULL); |
| 262 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); | 263 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); |
| 263 | 264 |
| 264 EndTraceAndFlush(); | 265 EndTraceAndFlush(); |
| 265 | 266 |
| 266 TestNetLog::CapturedEntryList entries; | 267 CapturedNetLogEntry::List entries; |
| 267 net_log()->GetEntries(&entries); | 268 net_log()->GetEntries(&entries); |
| 268 EXPECT_EQ(2u, entries.size()); | 269 EXPECT_EQ(2u, entries.size()); |
| 269 EXPECT_EQ(1u, trace_events()->GetSize()); | 270 EXPECT_EQ(1u, trace_events()->GetSize()); |
| 270 | 271 |
| 271 const base::DictionaryValue* item1 = NULL; | 272 const base::DictionaryValue* item1 = NULL; |
| 272 ASSERT_TRUE(trace_events()->GetDictionary(0, &item1)); | 273 ASSERT_TRUE(trace_events()->GetDictionary(0, &item1)); |
| 273 | 274 |
| 274 TraceEntryInfo actual_item1 = GetTraceEntryInfoFromValue(*item1); | 275 TraceEntryInfo actual_item1 = GetTraceEntryInfoFromValue(*item1); |
| 275 EXPECT_EQ(kNetLogTracingCategory, actual_item1.category); | 276 EXPECT_EQ(kNetLogTracingCategory, actual_item1.category); |
| 276 EXPECT_EQ(base::StringPrintf("0x%d", entries[0].source.id), actual_item1.id); | 277 EXPECT_EQ(base::StringPrintf("0x%d", entries[0].source.id), actual_item1.id); |
| 277 EXPECT_EQ(std::string(1, TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT), | 278 EXPECT_EQ(std::string(1, TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT), |
| 278 actual_item1.phase); | 279 actual_item1.phase); |
| 279 EXPECT_EQ(NetLog::EventTypeToString(NetLog::TYPE_CANCELLED), | 280 EXPECT_EQ(NetLog::EventTypeToString(NetLog::TYPE_CANCELLED), |
| 280 actual_item1.name); | 281 actual_item1.name); |
| 281 EXPECT_EQ(NetLog::SourceTypeToString(entries[0].source.type), | 282 EXPECT_EQ(NetLog::SourceTypeToString(entries[0].source.type), |
| 282 actual_item1.source_type); | 283 actual_item1.source_type); |
| 283 } | 284 } |
| 284 | 285 |
| 285 TEST_F(TraceNetLogObserverTest, DestroyObserverWhileNotTracing) { | 286 TEST_F(TraceNetLogObserverTest, DestroyObserverWhileNotTracing) { |
| 286 trace_net_log_observer()->WatchForTraceStart(net_log()); | 287 trace_net_log_observer()->WatchForTraceStart(net_log()); |
| 287 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); | 288 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); |
| 288 trace_net_log_observer()->StopWatchForTraceStart(); | 289 trace_net_log_observer()->StopWatchForTraceStart(); |
| 289 set_trace_net_log_observer(NULL); | 290 set_trace_net_log_observer(NULL); |
| 290 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); | 291 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); |
| 291 net_log()->AddGlobalEntry(NetLog::TYPE_URL_REQUEST_START_JOB); | 292 net_log()->AddGlobalEntry(NetLog::TYPE_URL_REQUEST_START_JOB); |
| 292 | 293 |
| 293 EndTraceAndFlush(); | 294 EndTraceAndFlush(); |
| 294 | 295 |
| 295 TestNetLog::CapturedEntryList entries; | 296 CapturedNetLogEntry::List entries; |
| 296 net_log()->GetEntries(&entries); | 297 net_log()->GetEntries(&entries); |
| 297 EXPECT_EQ(3u, entries.size()); | 298 EXPECT_EQ(3u, entries.size()); |
| 298 EXPECT_EQ(0u, trace_events()->GetSize()); | 299 EXPECT_EQ(0u, trace_events()->GetSize()); |
| 299 } | 300 } |
| 300 | 301 |
| 301 TEST_F(TraceNetLogObserverTest, CreateObserverAfterTracingStarts) { | 302 TEST_F(TraceNetLogObserverTest, CreateObserverAfterTracingStarts) { |
| 302 set_trace_net_log_observer(NULL); | 303 set_trace_net_log_observer(NULL); |
| 303 EnableTraceLog(); | 304 EnableTraceLog(); |
| 304 set_trace_net_log_observer(new TraceNetLogObserver()); | 305 set_trace_net_log_observer(new TraceNetLogObserver()); |
| 305 trace_net_log_observer()->WatchForTraceStart(net_log()); | 306 trace_net_log_observer()->WatchForTraceStart(net_log()); |
| 306 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); | 307 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED); |
| 307 trace_net_log_observer()->StopWatchForTraceStart(); | 308 trace_net_log_observer()->StopWatchForTraceStart(); |
| 308 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); | 309 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); |
| 309 net_log()->AddGlobalEntry(NetLog::TYPE_URL_REQUEST_START_JOB); | 310 net_log()->AddGlobalEntry(NetLog::TYPE_URL_REQUEST_START_JOB); |
| 310 | 311 |
| 311 EndTraceAndFlush(); | 312 EndTraceAndFlush(); |
| 312 | 313 |
| 313 TestNetLog::CapturedEntryList entries; | 314 CapturedNetLogEntry::List entries; |
| 314 net_log()->GetEntries(&entries); | 315 net_log()->GetEntries(&entries); |
| 315 EXPECT_EQ(3u, entries.size()); | 316 EXPECT_EQ(3u, entries.size()); |
| 316 EXPECT_EQ(0u, trace_events()->GetSize()); | 317 EXPECT_EQ(0u, trace_events()->GetSize()); |
| 317 } | 318 } |
| 318 | 319 |
| 319 TEST_F(TraceNetLogObserverTest, EventsWithAndWithoutParameters) { | 320 TEST_F(TraceNetLogObserverTest, EventsWithAndWithoutParameters) { |
| 320 trace_net_log_observer()->WatchForTraceStart(net_log()); | 321 trace_net_log_observer()->WatchForTraceStart(net_log()); |
| 321 EnableTraceLog(); | 322 EnableTraceLog(); |
| 322 NetLog::ParametersCallback net_log_callback; | 323 NetLog::ParametersCallback net_log_callback; |
| 323 std::string param = "bar"; | 324 std::string param = "bar"; |
| 324 net_log_callback = NetLog::StringCallback("foo", ¶m); | 325 net_log_callback = NetLog::StringCallback("foo", ¶m); |
| 325 | 326 |
| 326 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED, net_log_callback); | 327 net_log()->AddGlobalEntry(NetLog::TYPE_CANCELLED, net_log_callback); |
| 327 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); | 328 net_log()->AddGlobalEntry(NetLog::TYPE_REQUEST_ALIVE); |
| 328 | 329 |
| 329 EndTraceAndFlush(); | 330 EndTraceAndFlush(); |
| 330 trace_net_log_observer()->StopWatchForTraceStart(); | 331 trace_net_log_observer()->StopWatchForTraceStart(); |
| 331 | 332 |
| 332 TestNetLog::CapturedEntryList entries; | 333 CapturedNetLogEntry::List entries; |
| 333 net_log()->GetEntries(&entries); | 334 net_log()->GetEntries(&entries); |
| 334 EXPECT_EQ(2u, entries.size()); | 335 EXPECT_EQ(2u, entries.size()); |
| 335 EXPECT_EQ(2u, trace_events()->GetSize()); | 336 EXPECT_EQ(2u, trace_events()->GetSize()); |
| 336 const base::DictionaryValue* item1 = NULL; | 337 const base::DictionaryValue* item1 = NULL; |
| 337 ASSERT_TRUE(trace_events()->GetDictionary(0, &item1)); | 338 ASSERT_TRUE(trace_events()->GetDictionary(0, &item1)); |
| 338 const base::DictionaryValue* item2 = NULL; | 339 const base::DictionaryValue* item2 = NULL; |
| 339 ASSERT_TRUE(trace_events()->GetDictionary(1, &item2)); | 340 ASSERT_TRUE(trace_events()->GetDictionary(1, &item2)); |
| 340 | 341 |
| 341 TraceEntryInfo actual_item1 = GetTraceEntryInfoFromValue(*item1); | 342 TraceEntryInfo actual_item1 = GetTraceEntryInfoFromValue(*item1); |
| 342 TraceEntryInfo actual_item2 = GetTraceEntryInfoFromValue(*item2); | 343 TraceEntryInfo actual_item2 = GetTraceEntryInfoFromValue(*item2); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 363 EXPECT_TRUE(item1->GetString("args.params.foo", &item1_params)); | 364 EXPECT_TRUE(item1->GetString("args.params.foo", &item1_params)); |
| 364 EXPECT_EQ("bar", item1_params); | 365 EXPECT_EQ("bar", item1_params); |
| 365 | 366 |
| 366 EXPECT_TRUE(item2->GetString("args.params", &item2_params)); | 367 EXPECT_TRUE(item2->GetString("args.params", &item2_params)); |
| 367 EXPECT_TRUE(item2_params.empty()); | 368 EXPECT_TRUE(item2_params.empty()); |
| 368 } | 369 } |
| 369 | 370 |
| 370 } // namespace | 371 } // namespace |
| 371 | 372 |
| 372 } // namespace net | 373 } // namespace net |
| OLD | NEW |