Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(866)

Side by Side Diff: net/base/load_log_unittest.cc

Issue 363025: Improve the display of LoadLogs when truncation occurs.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Change -1 to be a constant instead Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/base/load_log_event_type_list.h ('k') | net/base/load_log_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/base/load_log_unittest.h" 5 #include "net/base/load_log_unittest.h"
6 #include "testing/gtest/include/gtest/gtest.h" 6 #include "testing/gtest/include/gtest/gtest.h"
7 7
8 namespace net { 8 namespace net {
9 9
10 namespace { 10 namespace {
11 11
12 TEST(LoadLogTest, Nullable) { 12 TEST(LoadLogTest, Nullable) {
13 // Make sure that the static methods can be called with NULL (no-op). 13 // Make sure that the static methods can be called with NULL (no-op).
14 // (Should not crash). 14 // (Should not crash).
15 LoadLog::BeginEvent(NULL, LoadLog::TYPE_HOST_RESOLVER_IMPL); 15 LoadLog::BeginEvent(NULL, LoadLog::TYPE_HOST_RESOLVER_IMPL);
16 LoadLog::AddEvent(NULL, LoadLog::TYPE_HOST_RESOLVER_IMPL); 16 LoadLog::AddEvent(NULL, LoadLog::TYPE_HOST_RESOLVER_IMPL);
17 LoadLog::EndEvent(NULL, LoadLog::TYPE_HOST_RESOLVER_IMPL); 17 LoadLog::EndEvent(NULL, LoadLog::TYPE_HOST_RESOLVER_IMPL);
18 } 18 }
19 19
20 TEST(LoadLogTest, Basic) { 20 TEST(LoadLogTest, Basic) {
21 scoped_refptr<LoadLog> log(new LoadLog); 21 scoped_refptr<LoadLog> log(new LoadLog(10));
22 22
23 // Logs start off empty. 23 // Logs start off empty.
24 EXPECT_EQ(0u, log->events().size()); 24 EXPECT_EQ(0u, log->events().size());
25 EXPECT_EQ(0u, log->num_entries_truncated());
25 26
26 // Add 3 entries. 27 // Add 3 entries.
27 28
28 log->Add(MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, LoadLog::PHASE_BEGIN); 29 log->Add(MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, LoadLog::PHASE_BEGIN);
29 log->Add(MakeTime(2), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 30 log->Add(MakeTime(2), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
30 log->Add(MakeTime(11), LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART, 31 log->Add(MakeTime(11), LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART,
31 LoadLog::PHASE_END); 32 LoadLog::PHASE_END);
32 33
33 EXPECT_EQ(3u, log->events().size()); 34 EXPECT_EQ(3u, log->events().size());
35 EXPECT_EQ(0u, log->num_entries_truncated());
34 36
35 ExpectLogContains(log, 0, MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, 37 ExpectLogContains(log, 0, MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL,
36 LoadLog::PHASE_BEGIN); 38 LoadLog::PHASE_BEGIN);
37 39
38 ExpectLogContains(log, 1, MakeTime(2), LoadLog::TYPE_CANCELLED, 40 ExpectLogContains(log, 1, MakeTime(2), LoadLog::TYPE_CANCELLED,
39 LoadLog::PHASE_NONE); 41 LoadLog::PHASE_NONE);
40 42
41 ExpectLogContains(log, 2, MakeTime(11), 43 ExpectLogContains(log, 2, MakeTime(11),
42 LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART, 44 LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART,
43 LoadLog::PHASE_END); 45 LoadLog::PHASE_END);
44 } 46 }
45 47
46 // Test that the log's size is strictly bounded. 48 // Test that the log's size is strictly bounded.
47 TEST(LoadLogTest, Truncation) { 49 TEST(LoadLogTest, Truncation) {
48 scoped_refptr<LoadLog> log(new LoadLog); 50 size_t kMaxNumEntries = 10;
51 scoped_refptr<LoadLog> log(new LoadLog(kMaxNumEntries));
49 52
50 // Almost max it out. 53 // Max it out.
51 for (size_t i = 0; i < LoadLog::kMaxNumEntries - 1; ++i) { 54 for (size_t i = 0; i < kMaxNumEntries; ++i) {
52 log->Add(MakeTime(0), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 55 log->Add(MakeTime(i), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
53 } 56 }
54 EXPECT_EQ(LoadLog::kMaxNumEntries - 1,
55 static_cast<int>(log->events().size()));
56 EXPECT_EQ(LoadLog::TYPE_CANCELLED,
57 log->events()[LoadLog::kMaxNumEntries - 2].type);
58 57
59 // Max it out (none of these get appended to the log). 58 EXPECT_EQ(kMaxNumEntries, log->events().size());
59 EXPECT_EQ(0u, log->num_entries_truncated());
60
61 // Check the last entry.
62 ExpectLogContains(log, 9, MakeTime(9),
63 LoadLog::TYPE_CANCELLED,
64 LoadLog::PHASE_NONE);
65
66 // Add three entries while maxed out (will cause truncation)
60 log->Add(MakeTime(0), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 67 log->Add(MakeTime(0), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
61 log->Add(MakeTime(0), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 68 log->Add(MakeTime(1), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
62 log->Add(MakeTime(0), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 69 log->Add(MakeTime(2), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
63 70
64 EXPECT_EQ(LoadLog::kMaxNumEntries, log->events().size()); 71 EXPECT_EQ(kMaxNumEntries, log->events().size());
72 EXPECT_EQ(3u, log->num_entries_truncated());
65 73
66 // We terminated with a "truncation" event. 74 // Check the last entry -- it should be the final entry we added.
67 ExpectLogContains(log, LoadLog::kMaxNumEntries - 1, MakeTime(0), 75 ExpectLogContains(log, 9, MakeTime(2),
68 LoadLog::TYPE_LOG_TRUNCATED, LoadLog::PHASE_NONE); 76 LoadLog::TYPE_CANCELLED,
77 LoadLog::PHASE_NONE);
69 } 78 }
70 79
71 TEST(LoadLogTest, Append) { 80 TEST(LoadLogTest, Append) {
72 scoped_refptr<LoadLog> log1(new LoadLog); 81 scoped_refptr<LoadLog> log1(new LoadLog(10));
73 scoped_refptr<LoadLog> log2(new LoadLog); 82 scoped_refptr<LoadLog> log2(new LoadLog(10));
74 83
75 log1->Add(MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, 84 log1->Add(MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL,
76 LoadLog::PHASE_BEGIN); 85 LoadLog::PHASE_BEGIN);
77 86
78 log2->Add(MakeTime(3), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 87 log2->Add(MakeTime(3), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
79 log2->Add(MakeTime(9), LoadLog::TYPE_HOST_RESOLVER_IMPL, LoadLog::PHASE_END); 88 log2->Add(MakeTime(9), LoadLog::TYPE_HOST_RESOLVER_IMPL, LoadLog::PHASE_END);
80 89
81 log1->Append(log2); 90 log1->Append(log2);
82 91
83 // Add something else to log2 (should NOT be reflected in log1). 92 // Add something else to log2 (should NOT be reflected in log1).
84 log2->Add(MakeTime(19), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 93 log2->Add(MakeTime(19), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
85 94
86 EXPECT_EQ(3u, log1->events().size()); 95 EXPECT_EQ(3u, log1->events().size());
96 EXPECT_EQ(0u, log1->num_entries_truncated());
87 97
88 ExpectLogContains(log1, 0, MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL, 98 ExpectLogContains(log1, 0, MakeTime(0), LoadLog::TYPE_HOST_RESOLVER_IMPL,
89 LoadLog::PHASE_BEGIN); 99 LoadLog::PHASE_BEGIN);
90 100
91 ExpectLogContains(log1, 1, MakeTime(3), LoadLog::TYPE_CANCELLED, 101 ExpectLogContains(log1, 1, MakeTime(3), LoadLog::TYPE_CANCELLED,
92 LoadLog::PHASE_NONE); 102 LoadLog::PHASE_NONE);
93 103
94 ExpectLogContains(log1, 2, MakeTime(9), LoadLog::TYPE_HOST_RESOLVER_IMPL, 104 ExpectLogContains(log1, 2, MakeTime(9), LoadLog::TYPE_HOST_RESOLVER_IMPL,
95 LoadLog::PHASE_END); 105 LoadLog::PHASE_END);
96 } 106 }
97 107
98 TEST(LoadLogTest, AppendWithTruncation) { 108 TEST(LoadLogTest, AppendWithTruncation) {
99 // Append() should also respect the maximum number of entries bound. 109 // Append() should also respect the maximum number of entries bound.
100 // (This is basically the same test as LoadLogTest.Truncation). 110 // (This is basically the same test as LoadLogTest.Truncation).
101 111
102 // Create two load logs, which are 2/3 capcity. 112 // Create two load logs, which both have 6 out of 10 entries filled.
103 scoped_refptr<LoadLog> log1(new LoadLog); 113 size_t kMaxNumEntries = 10;
104 scoped_refptr<LoadLog> log2(new LoadLog); 114 scoped_refptr<LoadLog> log1(new LoadLog(kMaxNumEntries));
105 for (size_t i = 0; i < 2 * LoadLog::kMaxNumEntries / 3; ++i) { 115 scoped_refptr<LoadLog> log2(new LoadLog(kMaxNumEntries));
106 log1->Add(MakeTime(1), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 116 for (size_t i = 0; i < 6; ++i) {
107 log2->Add(MakeTime(2), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE); 117 log1->Add(MakeTime(i), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
118 log2->Add(MakeTime(2 * i), LoadLog::TYPE_CANCELLED, LoadLog::PHASE_NONE);
108 } 119 }
109 120
110 // Append log2 to log1. 121 // Append log2 to log1.
111 log1->Append(log2); 122 log1->Append(log2);
112 123
113 EXPECT_EQ(LoadLog::kMaxNumEntries, log1->events().size()); 124 // The combined log totalled 12 entries, so 2 must have been dropped.
125 EXPECT_EQ(10u, log1->events().size());
126 EXPECT_EQ(2u, log1->num_entries_truncated());
114 127
115 // We terminated with a "truncation" event. 128 // Combined log should end with the final entry of log2.
116 ExpectLogContains(log1, LoadLog::kMaxNumEntries - 1, MakeTime(2), 129 ExpectLogContains(log1, 9, MakeTime(10), LoadLog::TYPE_CANCELLED,
117 LoadLog::TYPE_LOG_TRUNCATED, LoadLog::PHASE_NONE); 130 LoadLog::PHASE_NONE);
118 } 131 }
119 132
120 TEST(LoadLogTest, EventTypeToString) { 133 TEST(LoadLogTest, EventTypeToString) {
121 EXPECT_STREQ("HOST_RESOLVER_IMPL", 134 EXPECT_STREQ("HOST_RESOLVER_IMPL",
122 LoadLog::EventTypeToString(LoadLog::TYPE_HOST_RESOLVER_IMPL)); 135 LoadLog::EventTypeToString(LoadLog::TYPE_HOST_RESOLVER_IMPL));
123 EXPECT_STREQ("HOST_RESOLVER_IMPL_OBSERVER_ONSTART", 136 EXPECT_STREQ("HOST_RESOLVER_IMPL_OBSERVER_ONSTART",
124 LoadLog::EventTypeToString( 137 LoadLog::EventTypeToString(
125 LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART)); 138 LoadLog::TYPE_HOST_RESOLVER_IMPL_OBSERVER_ONSTART));
126 } 139 }
127 140
128 } // namespace 141 } // namespace
129 } // namespace net 142 } // namespace net
OLDNEW
« no previous file with comments | « net/base/load_log_event_type_list.h ('k') | net/base/load_log_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698