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 |