| Index: net/base/net_log_util_unittest.cc
|
| diff --git a/net/base/net_log_util_unittest.cc b/net/base/net_log_util_unittest.cc
|
| index e5cc3a33fb2479566b5d87f9f9496a2ce6dd226f..e052980b0882650b7cd564290fea1b1f95cec42c 100644
|
| --- a/net/base/net_log_util_unittest.cc
|
| +++ b/net/base/net_log_util_unittest.cc
|
| @@ -4,12 +4,17 @@
|
|
|
| #include "net/base/net_log_util.h"
|
|
|
| +#include <set>
|
| +
|
| +#include "base/files/file_path.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/values.h"
|
| +#include "net/base/capturing_net_log_observer.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/base/test_completion_callback.h"
|
| #include "net/http/http_cache.h"
|
| #include "net/http/http_transaction.h"
|
| +#include "net/test/spawned_test_server/spawned_test_server.h"
|
| #include "net/url_request/url_request_test_util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -49,6 +54,65 @@ TEST(NetLogUtil, GetNetInfo) {
|
| EXPECT_EQ(net_info_without_cache->size(), net_info_with_cache->size());
|
| }
|
|
|
| +// Make sure CreateNetLogEntriesForActiveObjects works for requests from a
|
| +// single URLRequestContext.
|
| +TEST(NetLogUtil, CreateNetLogEntriesForActiveObjectsOneContext) {
|
| + // Using same context for each iteration makes sure deleted requests don't
|
| + // appear in the list, or result in crashes.
|
| + TestURLRequestContext context(true);
|
| + NetLog net_log;
|
| + context.set_net_log(&net_log);
|
| + context.Init();
|
| + TestDelegate delegate;
|
| + for (size_t num_requests = 0; num_requests < 5; ++num_requests) {
|
| + ScopedVector<URLRequest> requests;
|
| + for (size_t i = 0; i < num_requests; ++i) {
|
| + requests.push_back(context.CreateRequest(
|
| + GURL("about:life"), DEFAULT_PRIORITY, &delegate, nullptr).release());
|
| + }
|
| + std::set<URLRequestContext*> contexts;
|
| + contexts.insert(&context);
|
| + CapturingNetLogObserver capturing_observer;
|
| + CreateNetLogEntriesForActiveObjects(contexts, &capturing_observer);
|
| + CapturedNetLogEntry::List entry_list;
|
| + capturing_observer.GetEntries(&entry_list);
|
| + ASSERT_EQ(num_requests, entry_list.size());
|
| +
|
| + for (size_t i = 0; i < num_requests; ++i) {
|
| + EXPECT_EQ(entry_list[i].source.id, requests[i]->net_log().source().id);
|
| + }
|
| + }
|
| +}
|
| +
|
| +// Make sure CreateNetLogEntriesForActiveObjects works with multiple
|
| +// URLRequestContexts.
|
| +TEST(NetLogUtil, CreateNetLogEntriesForActiveObjectsMultipleContexts) {
|
| + TestDelegate delegate;
|
| + for (size_t num_requests = 0; num_requests < 5; ++num_requests) {
|
| + ScopedVector<TestURLRequestContext> contexts;
|
| + ScopedVector<URLRequest> requests;
|
| + NetLog net_log;
|
| + std::set<URLRequestContext*> context_set;
|
| + for (size_t i = 0; i < num_requests; ++i) {
|
| + contexts.push_back(new TestURLRequestContext(true));
|
| + contexts[i]->set_net_log(&net_log);
|
| + contexts[i]->Init();
|
| + context_set.insert(contexts[i]);
|
| + requests.push_back(contexts[i]->CreateRequest(
|
| + GURL("about:hats"), DEFAULT_PRIORITY, &delegate, nullptr).release());
|
| + }
|
| + CapturingNetLogObserver capturing_observer;
|
| + CreateNetLogEntriesForActiveObjects(context_set, &capturing_observer);
|
| + CapturedNetLogEntry::List entry_list;
|
| + capturing_observer.GetEntries(&entry_list);
|
| + ASSERT_EQ(num_requests, entry_list.size());
|
| +
|
| + for (size_t i = 0; i < num_requests; ++i) {
|
| + EXPECT_EQ(entry_list[i].source.id, requests[i]->net_log().source().id);
|
| + }
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace net
|
|
|